Compare commits

...

5869 commits

Author SHA1 Message Date
David Cernat
8aad93b904
Merge pull request #519 from TES3MP/0.7.0-alpha
[General] Update positions for dead players on other clients
2019-03-24 03:54:43 +02:00
David Cernat
3effd5f1ff [General] Update positions for dead players on other clients
Dead players will now show up at the correct cell and position for living players, making server scripts that allow players to revive each other much more functional.
2019-03-24 03:52:05 +02:00
David Cernat
4692f29b9d
Merge pull request #517 from uramer/0.7.0markers
update player map markers when client changes cell
2019-03-22 21:39:06 +02:00
David Cernat
03d377ec54
Merge pull request #518 from TES3MP/0.7.0-alpha
[General] Rename CellReplace packet into CellReset
2019-03-22 21:36:07 +02:00
David Cernat
8ff2d1b829 [General] Rename CellReplace packet into CellReset 2019-03-22 21:33:34 +02:00
David Cernat
cb82318c36 [General] Fix problems with Utils::getArchitectureType() 2019-03-22 03:09:11 +02:00
uramer
3b2098382b update player map markers when client changes cell 2019-03-21 16:27:15 +01:00
David Cernat
cb5e24e6c5
Merge pull request #516 from TES3MP/0.7.0-alpha
[Server] Add GetMillisecondsSinceServerStart() server function
2019-03-20 20:05:30 +02:00
David Cernat
91f82d845c [Server] Add GetMillisecondsSinceServerStart() server function 2019-03-20 20:02:31 +02:00
David Cernat
d35026bbf5
Merge pull request #515 from TES3MP/0.7.0-alpha
0.7.0 alpha
2019-03-20 18:58:31 +02:00
David Cernat
bd677726bf [Server] Add StatsFunctions that get/set damage to attributes/skills 2019-03-20 18:54:35 +02:00
David Cernat
9fc4c83858 [Client] Send skill/attribute packets when skills/attributes are damaged 2019-03-20 18:40:46 +02:00
David Cernat
ece39748de [Server] Fix typo causing recursion in deprecated actor list function 2019-03-20 17:01:21 +02:00
David Cernat
5c4d3df551 [Server] Deprecate DoesFileExist(), add DoesFilePathExist() 2019-03-19 04:52:58 +02:00
David Cernat
2cdabddc0e [Server] Move most MiscellaneousFunctions to ServerFunctions 2019-03-19 04:25:33 +02:00
David Cernat
b46767de6e [Server] Clean up recent additions to ServerFunctions 2019-03-19 03:57:16 +02:00
David Cernat
911079e0bc
Merge pull request #512 from TES3MP/0.7.0-alpha
0.7.0 alpha
2019-03-12 05:38:36 +02:00
David Cernat
331fa86844 [Server] Call OnServerPostInit after OnRequestDataFileList
This allows different actions to be taken in OnServerPostInit based on what the data files being used are.
2019-03-12 05:36:33 +02:00
David Cernat
a0ec9dfd2e [Server] Rename OnRequestPluginList into OnRequestDataFileList 2019-03-12 03:18:57 +02:00
David Cernat
986528c67d [Server] Add error message as argument to OnServerScriptCrash 2019-03-12 02:15:20 +02:00
David Cernat
552a94a0ca [Server] Add OnServerScriptCrash script event 2019-03-10 00:46:40 +02:00
David Cernat
a508a0faf8 [Server] Turn GetArguments() from ScriptFunctions into Utils function 2019-02-24 01:43:04 +02:00
David Cernat
dcbc9d1831 [Client] Print cells for actor deaths 2019-02-21 21:51:02 +02:00
David Cernat
828c52138f [Documentation] Update readme and credits
According to some legal advice I've received, the "TES3MP Team" is too ambiguous of a legal entity, so – with Koncord's agreement – the copyright is now assigned specifically to us, the project's developers.
2019-02-19 17:29:29 +02:00
David Cernat
69e7d3f2a7 [Documentation] Update credits 2019-02-14 13:07:54 +02:00
David Cernat
f3b8a5b909 [General] Check integrity of credits only on Windows clients
This avoids the problems that were encountered in Linux and macOS builds regarding this check while also still addressing the scenario where official Windows builds had their credits modified by people unrelated to the project.
2019-02-14 00:29:55 +02:00
David Cernat
a0ad0b29bc Merge branch '0.7.0' of https://github.com/TES3MP/openmw-tes3mp into 0.7.0 2019-02-13 21:57:24 +02:00
David Cernat
222837976c [Server] Fix type name warning for Player
The warning in Visual Studio was: "'Player': type name first seen using 'class' now seen using 'struct'"
2019-02-13 21:56:47 +02:00
Koncord
77386525f2 [General] Update Travis CI 2019-02-14 01:56:10 +08:00
David Cernat
c058dce346 [General] Clarify meaning of commit hash displayed on start 2019-01-31 13:39:06 +02:00
David Cernat
1df1515c7e [Client] Add logging for invalid enchantmentIds in RecordHelper 2019-01-23 01:04:59 +02:00
David Cernat
999ce857c7 [Client] Add logging for records ignored due to their invalid baseIds 2019-01-23 00:48:06 +02:00
David Cernat
db7e09f441 [Client] Use more consistent logging when reading dynamic record packets 2019-01-23 00:38:05 +02:00
David Cernat
0fa116b47d [Client] Remove useless lines in RecordHelper 2019-01-23 00:20:51 +02:00
Koncord
0df32accca [Server] Fix ARM build 2019-01-21 12:02:02 +08:00
David Cernat
fd40e8c971 [Client] Prevent ObjectState spam by not resending an already sent state 2019-01-15 14:26:00 +02:00
David Cernat
6e47b65205 [Client] Set attribute increases & level progress after correct packets
Originally, the PlayerSkill packet contained skills, attribute increases and level progress. In 78441c769a, the attribute increases were moved to the PlayerAttribute packet and the level progress was moved to the PlayerLevel packet, but – due to an oversight – attribute increases and level progress were still being applied to the local player only when a PlayerSkill packet was received, based on whatever values were stored from the last PlayerAttribute and PlayerLevel packets.
2019-01-11 14:26:13 +02: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
David Cernat
8a99f215f6 [Client] Add LocalPlayer::sendItemChange() variant with mwmp::Item arg 2019-01-11 12:54:47 +02:00
David Cernat
db9c1b9882 [Client] Add MechanicsHelper::getItem() for getting mwmp::Item from Ptr 2019-01-11 12:53:26 +02:00
David Cernat
799241e8c6 [Client] Use informative error message for RefData::setCount() issue 2019-01-11 08:16:29 +02:00
David Cernat
43f195f0c7 [Client] Use clearer debug for actor initializations 2019-01-05 23:27:35 +02:00
David Cernat
2e1d4a9449 [Server] Fix non-Windows builds 2019-01-05 22:11:58 +02:00
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.
2018-12-31 13:24:32 +02:00
David Cernat
d83160523f [Client] Add items required for item magic casting when they are missing 2018-12-31 06:55:35 +02:00
David Cernat
433a69a588 [Client] Send all data for newly initialized LocalActors at least once 2018-12-31 04:36:59 +02:00
David Cernat
e70fd2cf3a [Server] Accept clients with wrong password on servers with no password 2018-12-31 03:52:25 +02:00
David Cernat
eb52babf29 [Server] Print IP instead of name or PID for players unable to connect
The player name was always blank in such situations, providing no useful information. The PID was not useful in any way either.
2018-12-30 18:02:26 +02:00
David Cernat
e96091fd6b [General] Use more consistent variable names for password, address, etc. 2018-12-30 17:23:12 +02:00
David Cernat
906d2a837d [Client] Send PlayerInventory packets when recharging items w/ soulgems 2018-12-30 11:58:33 +02:00
David Cernat
71679934a1 [Client] Send PlayerInventory packets when repairing items 2018-12-30 09:39:46 +02:00
David Cernat
5d9893ee92 [Client] Set actor killer correctly for spells that do damage over time
Additionally, clean up comments related to other code that sets actor killers.
2018-12-30 07:40:11 +02:00
David Cernat
6e1504f0a1 [Server] Use clearer variable & function names in TimerAPI 2018-12-30 04:15:53 +02:00
David Cernat
42b5a8054f [Server] Remove unusable position functions for players 2018-12-30 03:17:37 +02:00
Koncord
4ce0331f1b [Server] Fix GCC build 2018-12-29 15:54:08 +08:00
Koncord
9343b8af2f [Server] Remove unused function 2018-12-29 14:02:08 +08:00
Koncord
c2230a8a21 [Server] Add MP flag to the server if enabled 2018-12-29 12:03:01 +08:00
Koncord
a0e89208a0 [General] Fix standalone server build 2018-12-29 11:58:49 +08:00
Koncord
55cea491ca [Server] Introduce MS VC++ 2017 support 2018-12-29 11:57:26 +08:00
Koncord
6af2400752 [Server] Remove usages of get/set env. Add GetModDir function 2018-12-29 11:40:31 +08:00
Koncord
b3456a8841 [Server] Fix invalidation of iterators 2018-12-29 11:10:20 +08:00
David Cernat
343dd8b5ea [Client] Fix addition of items to player inventories
Previously, multiple stacks of the same item ID could overwrite data in each other because of how the logic in ContainerStore::add() works. For example, a stack of 5 grand soul gems with no souls would get added to the player, then the attempt to add a grand soul gem with a particular soul would retrieve the previous stack first before setting all of it to that soul, resulting in 6 grand soul gems with that soul.
2018-12-26 13:41:19 +02:00
David Cernat
76ac905efc [Client] Send PlayerInventory packets when trapping souls in soulgems 2018-12-26 12:25:00 +02:00
David Cernat
f853368641 [Client] Fix loss of player items in ContainerStore::unstack()
Previously, unstacking items for a player led to a PlayerInventory packet being sent about the items' removal.

This change makes it so both a packet about their re-addition and their removal are sent instead, cancelling each other out, which is inelegant, but arguably preferable to complicating the sending of PlayerInventory packets again.
2018-12-26 12:24:26 +02:00
David Cernat
5e38e8abdb [Server] Add GetArchitectureType() script function
Additionally, bring GetOperatingSystem() up-to-date by making it use the renamed function in Utils.
2018-12-17 11:55:50 +02:00
David Cernat
9fe54aa8c6 [General] Add getArchitectureType() to multiplayer Utils
Additionally, rename getOperatingSystem() into getOperatingSystemType() for clarity.
2018-12-17 11:46:51 +02:00
David Cernat
fa1700e2ab [Server] Add GetOperatingSystemType() script function 2018-12-17 11:32:31 +02:00
David Cernat
da6b89c185 [General] Add getOperatingSystem() to multiplayer Utils 2018-12-17 10:47:34 +02:00
David Cernat
50714599d9 [Client] Spawn at exterior 0, -7 by default 2018-12-17 08:25:22 +02: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
David Cernat
a6c6db89fc [Client] Send object packets when scripts use PlaceItem/PlaceItemCell 2018-12-05 01:56:27 +02:00
David Cernat
d05a82a734 [Client] Avoid repetitive code when unequipping items in resurrection 2018-12-04 03:55:03 +02:00
David Cernat
b5b26c6685
Merge pull request #492 from terabyte25/patch-7
[Client] Disallow opening inventory menu when not logged in
2018-12-01 23:17:05 +02:00
terrabyte25
35755eb1f1
[Client] Disallow opening inventory menu when not logged in 2018-12-01 10:51:33 -06:00
David Cernat
b7090b2550 [Server] Add experimental option for not crashing from Lua script errors
Additionally, fix return type of GetPluginEnforcementState()
2018-12-01 03:03:39 +02:00
David Cernat
b39e3f518b [Client] Use correct log levels for inventory and dynamic record packets 2018-11-30 23:38:16 +02:00
David Cernat
d8ca268067 [Server] Move plugin enforcement functions to ServerFunctions 2018-11-30 22:43:10 +02:00
David Cernat
2933526995 [Server] Include errors related to Lua calls in server logs 2018-11-30 22:01:02 +02:00
David Cernat
ef80894c5c
Merge pull request #486 from testman42/patch-2
Use more descriptive terminology for chat modes
2018-11-17 23:19:17 +02:00
Testman
6b3f598837
Use more descriptive terminology for chat modes
Changed "Chat disabled" to "Chat hidden", "Chat enabled" to "Chat visible" and "Chat in hidden mode" to "Chat appearing when needed".
2018-11-17 16:54:14 +01:00
David Cernat
eb3ae95f0e [Documentation] Display build status for correct branch 2018-11-16 06:40:21 +02:00
David Cernat
d3eb106c3b [Documentation] Update readme for current situation 2018-11-16 04:49:14 +02:00
David Cernat
e834a4ec74 [Client] Find closest enchantmentCharge in getItemPtrFromStore()
Enchanted inventory items continuously recharge their enchantment charges, which getItemPtrFromStore() should account for.

Additionally, prevent framelistener errors caused by PlayerItemUse packets about non-existent items.
2018-11-13 20:36:31 +02:00
David Cernat
bc7bcae190
Merge pull request #484 from GrimKriegor/0.7.0
[General] Change the default plugins home location
2018-11-12 07:11:37 +02:00
Grim Kriegor
8f90f8a3b8 [General] Change the default plugins home location 2018-11-12 01:10:10 +00:00
Koncord
e162af0003 [Server] Disallow non void callbacks 2018-10-30 15:32:52 +08:00
Koncord
07a5f5296c [Server] Rework OnRequestPluginList callback. Add AddPluginHash function 2018-10-30 14:56:54 +08:00
Koncord
20a7619a4a [Server] Remove result from the OnPlayerConnect callback
Now it's recommended to use tes3mp.Kick() function
2018-10-30 13:18:32 +08:00
Koncord
f1e8569291 [Server] Remove result from the OnPlayerSendMessage callback 2018-10-30 13:13:07 +08:00
Koncord
efa362031e [Server] Remove unused Main callback 2018-10-30 13:03:37 +08:00
Koncord
b83e4056a8 [Server] Remove CallFF dependency as it not fully supported by Windows and MacOS 2018-10-30 12:59:47 +08:00
Koncord
585557ad8a [Server] Remove argument cast in the Call with va_args 2018-10-30 12:58:15 +08:00
Koncord
3101de5f02 [Server] Add kicked load status 2018-10-30 12:56:50 +08:00
Koncord
e5e13b21ae [Client] Fix crash on drag&drop 2018-10-28 16:56:04 +08:00
David Cernat
c65d6c1328 [Client] Disable mListener methods in mwworld/containerstore
This should put an end to frequent crashes until I can fix the problem properly.
2018-10-27 02:19:45 +03:00
David Cernat
1baf82db32 [Client] Avoid PlayerSpellbook packet spam in some mods 2018-10-26 19:07:35 +03:00
David Cernat
d9bc1abf48 [Client] Don't send ObjectScale packets if not logged in 2018-10-26 02:33:47 +03:00
David Cernat
a8cf1e02c4 [Client] Allow unilateral scripted container changes not from console
This prevents infinite loops in certain client scripts from mods that use while loops to determine that all items of a certain type have been removed from a container, such as in the script BCSwap2Arg from  Better_Clothes.
2018-10-25 22:38:45 +03:00
David Cernat
99f8ef88a5 [Server] Add SetObjectActivatingPid() script function 2018-10-22 16:25:50 +03:00
David Cernat
17f13872aa [Client] Use forceUpdate correctly in LocalPlayer::updateStatsDynamic()
Previously, the forceUpdate argument was useless, preventing dynamic stats from being sent by certain newly created characters.
2018-10-22 13:22:23 +03:00
David Cernat
bfd7c83c4d [Client] Fix backwards logic when setting type for AI attacks 2018-10-16 21:18:41 +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
David Cernat
66d666d60c [Client] Use less confusing terminology when displaying plugin mismatch 2018-10-13 14:40:49 +03:00
David Cernat
bb834748c5 [Server] Log player kicks 2018-10-13 09:34:29 +03:00
David Cernat
a3111fbcc1 [Server] Use clearer error message when failing to bind port 2018-10-13 08:35:07 +03:00
David Cernat
3d40a162bc
Merge pull request #476 from SamHellawell/0.7.0-fix-equipcrash-linux-cleanup
Cleanup fix for equip item crash on Linux
2018-10-11 22:52:24 +03:00
Sam Hellawell
df1667b6e4 Cleanup fix for equip item crash on Linux
Signed-off-by: Sam Hellawell <sshellawell@gmail.com>
2018-10-11 21:49:24 +01:00
David Cernat
db2b3e95b8
Merge pull request #475 from SamHellawell/0.7.0-fix-equipcrash-linux
Fix crash when equipping item on linux
2018-10-11 22:40:09 +03:00
Sam Hellawell
1e171ad9fd Fix crash when equipping item on linux
Signed-off-by: Sam Hellawell <sshellawell@gmail.com>
2018-10-11 20:13:22 +01:00
David Cernat
e402a17757 [Client] Don't cast non-weapons to weapons in isUsingRangedWeapon()
This makes lockpicks and probes work again.
2018-10-09 09:54:13 +03:00
David Cernat
292536439e [Server] Rename script functions for clearing packet vectors for players 2018-10-03 02:26:47 +03:00
David Cernat
c79660f721 [Server] Make inventory script functions consistent with others
Functions that add elements to a vector should not change the action. This fixes the last remaining oddity in Koncord's original implementation of inventory sync.
2018-10-01 18:29:50 +03:00
David Cernat
8c7e06293f [Documentation] Update changelog with attack synchronization details 2018-09-26 02:48:52 +03:00
David Cernat
b76e00c66e [Server] Call OnPlayerCellChange script event near start of cell change
This makes it possible to send custom records used by players for their equipment before the hardcoded exchange of equipment packets takes place.

Additionally, remove the check for dead players because it has no real use and can potentially cause problems.
2018-09-26 02:40:21 +03:00
David Cernat
f100a660d4 [General] Fix ranged attack sync when using last throwing weapon or ammo 2018-09-24 11:30:53 +03:00
David Cernat
3f304866fd [Client] Use clearer variable names in DedicatedPlayer::setEquipment() 2018-09-24 10:11:42 +03:00
David Cernat
995d20348f [General] Always use correct ranged weapon & ammo for ranged attack sync
Previously, the player's currently selected weapon was being used in ranged attacks as in the original melee-oriented attack sync, which meant that shooting one type of projectile and then equipping another while the old projectile was still in the air turned the old projectile into the new projectile upon impact.

Additionally, avoid running most of the code in MechanicsHelper::assignAttackTarget() for non-hitting melee and ranged attacks.
2018-09-23 02:30:31 +03:00
David Cernat
db39c62e89 [Documentation] Update credits 2018-09-21 10:23:54 +03:00
David Cernat
b04ca28ece
Merge pull request #471 from testman42/patch-1
Update credits
2018-09-21 09:35:14 +03:00
David Cernat
b5f46ada73 [General] Synchronize projectile speed for ranged attacks
This is done by including the final attackStrength used for ranged attacks in packets and then applying it in WeaponAnimation::releaseArrow() on other clients.
2018-09-18 01:13:48 +03:00
David Cernat
7281f9fc42 [Client] Prevent unilateral paralysis of dedicated players & actors
This is a temporary workaround until active effect synchronization is implemented.
2018-09-16 15:34:57 +03:00
Testman
770d36ef67
Update credits
Reflect recent role changes
2018-09-15 17:00:13 +02:00
David Cernat
33a0886790 [Client] Fix synchronization of knockdown states 2018-09-15 04:59:06 +03:00
David Cernat
490303dc0b [Client] Clean up MechanicsHelper::processAttack() slightly
The debug is now more descriptive and some code is now skipped for non-ranged attacks.
2018-09-15 04:11:43 +03:00
David Cernat
9d2dc96a2e [Client] Use RANGED type for ranged attacks that haven't hit a target 2018-09-14 13:23:43 +03:00
David Cernat
af49f711ca [Client] Add isUsingRangedWeapon() method to MechanicsHelper 2018-09-14 13:21:45 +03:00
David Cernat
3f6ca6f22b [Client] Bring drawState fallback for actors up-to-date w/ attack types 2018-09-11 15:12:11 +03:00
David Cernat
9d2cf6629b [Client] Fix logic for hand-to-hand attack sync 2018-09-11 15:07:44 +03:00
David Cernat
fcd31bf4a6 [General] Fix problems with the synchronization of ranged attacks
Projectile hits now send Attack packets with RANGED attacks, and their success or failure is now synchronized.

Strike enchantments no longer require a valid victim to be synchronized.

Additional debug messages have been added for attacks.
2018-09-11 11:56:45 +03:00
David Cernat
31a9b77f34 [Client] Reset hitPosition in MechanicsHelper::resetAttack() 2018-09-10 12:34:33 +03:00
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.
2018-09-10 12:02:21 +03:00
David Cernat
c9ad411dd3 [Client] Fix logic for setting applyProjectileEnchantment in attack sync 2018-09-09 22:33:48 +03:00
David Cernat
8012d0d7b7 [General] Include hit position in PlayerAttack and ActorAttack packets 2018-09-08 05:29:49 +03:00
David Cernat
dcd4478028 [Client] Always stop sending weather updates when moving to an interior 2018-09-07 08:37:22 +03:00
David Cernat
113002ca19 [Client] Return early when processing actors that can't be initialized 2018-09-05 20:03:35 +03:00
Koncord
48f4792bc1 [Server] Add GetMaxPlayers, GetPort and HasPassword functions to API 2018-09-05 18:19:34 +08: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
David Cernat
ee3fc4a303 [Documentation] Update changelog for 0.7.0 2018-08-25 16:04:22 +03:00
David Cernat
9e58cc82bd [Server] Set minimum updateRate when communicating with master server 2018-08-23 00:10:49 +03:00
David Cernat
be448e5b8e [General] Use more appropriate update rate in server config 2018-08-23 00:06:28 +03:00
David Cernat
d1fa57ac14 [General] Switch to new official master server port when using old one 2018-08-22 13:49:17 +03:00
David Cernat
0658d39eaa [General] Update ports used for master server in client & server config 2018-08-22 13:47:46 +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
75a64a69c7 [Server] Add GetInventoryChangesAction() script function
Additionally, fix a typo in the description of GetSpellBookChangesAction()
2018-08-21 10:06:40 +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
140e0ed52c [Client] Also clear aiActors when clearing ActorList 2018-08-20 20:54:34 +03:00
David Cernat
aed4ca2fd2 [Client] Allow use of baseId for more record types
Additionally, don't allow new enchantment records to be created if they have no effects, to avoid a crash.
2018-08-20 15:24:20 +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
David Cernat
7efee0e968 [Client] Fix GCC build 2018-08-20 10:15:30 +03:00
David Cernat
5bd2244898 [Client] Uninitialize DedicatedActors instantly in some situations
When LocalActors briefly become DedicatedActors as the result of a server script, the DedicatedActors are immediately uninitialized to avoid bugs like them jumping in place or rotating slightly.

Additionally, the playing of animations and sounds received in packets for DedicatedActors is no longer done during their next update, but is instead done instantly when the packets are received.
2018-08-16 03:50:41 +03:00
David Cernat
5fd4113978 [General] Implement sending of ActorSpeech packets from server scripts 2018-08-13 20:39:03 +03:00
David Cernat
338efdb705 [General] Fix issues with MechanicsHelper::getItemPtrFromStore() 2018-08-11 19:00:02 +03:00
David Cernat
aec0c5bd49 [Server] Make capitalization consistent for AI-related script functions 2018-08-11 18:57:36 +03:00
David Cernat
9598212aad [Client] Don't add bound items to inventory as a result of item packets
Additionally, don't include bound items when sending PlayerInventory packets.
2018-08-11 16:05:37 +03:00
David Cernat
a3b9274365 [Client] Make it possible to check if an item ID belongs to a bound item 2018-08-11 16:02:09 +03:00
David Cernat
a1933e7bc2 [Client] Don't declare variable twice in LocalPlayer's setEquipment()
The variable equipmentItem is identical to currentItem, so it should not have been added in commit 58a6a8c3bc

Addditionally, use a more descriptive variable name than "a" for item Ptrs.
2018-08-11 15:28:03 +03:00
Marc Zinnschlag
1cfc1f9bdb Merged pull request #1666 2018-08-10 12:23:17 +02:00
Marc Zinnschlag
0aedb3aada Merged puil request #1808 2018-08-10 12:22:13 +02:00
Marc Zinnschlag
b67b17010d Merged pull request #1826 2018-08-10 12:21:49 +02:00
Marc Zinnschlag
24212d58e8 Merged pull request #1861 2018-08-10 12:21:05 +02:00
Andrei Kortunov
ec9a1b0d05 Handle RootCollisionNode, attached to non-root node (bug #4311) 2018-08-10 11:11:40 +04:00
Andrei Kortunov
cde95979d0 Fix combat engagement for creatures 2018-08-10 09:29:01 +04:00
David Cernat
5d66a9bb66 [Client] Fix path to MechanicsHelper in ProcessorPlayerItemUse 2018-08-09 22:33:22 +03: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
Andrei Kortunov
780648b584 Do not reset idle animations if we do not have ammo 2018-08-09 16:39:46 +04:00
Andrei Kortunov
df577babe9 Increase priority of 1st-person weapon animations to avoid issues with animation blending 2018-08-09 16:39:20 +04:00
Andrei Kortunov
71bcc11ba5 Apply only crossbow reload animation to upper body 2018-08-09 16:37:08 +04:00
Andrei Kortunov
a0d0e5d2db Give jumping animations higher priority than movement ones 2018-08-09 16:19:03 +04:00
Andrei Kortunov
6a03aa6fdb Reduce jittering during turning animations for player 2018-08-09 16:19:00 +04:00
Andrei Kortunov
cd92014533 Do not touch GUI modes when taking screenshots (bug #4528) 2018-08-09 16:19:00 +04:00
Marc Zinnschlag
fe19d8ff35 Merged pull request #1857 2018-08-09 13:52:51 +02:00
Marc Zinnschlag
a2a57cf694 Merged pull request #1858 2018-08-09 13:51:31 +02:00
Marc Zinnschlag
0f510011b3 Merged pull request #1852 2018-08-09 13:49:50 +02:00
Marc Zinnschlag
cb62936949 Merged pull request #1853 2018-08-09 13:47:17 +02:00
Bret Curtis
03bf599426
Merge pull request #1856 from Capostrophic/hidden
Revert untextured shapes rendering changes
2018-08-09 12:36:03 +02:00
Bret Curtis
144f37f9b3
Merge pull request #1860 from akortunov/warningfix
Do not use fall-through to avoid GCC warnings
2018-08-09 10:00:09 +02:00
Andrei Kortunov
126b2fdd42 Use the isPlayer variable to do not check if the current actor is player every time 2018-08-09 11:16:19 +04:00
Bret Curtis
0d976f2c5e
Merge pull request #1859 from Capostrophic/debug
Fix a bunch of MSVC warnings
2018-08-09 09:12:41 +02:00
Andrei Kortunov
57e1462417 Do not use fall-through 2018-08-09 11:01:23 +04:00
Capostrophic
348c6f848e
Fix a bunch of MSVC warnings 2018-08-09 02:27:33 +03:00
Andrei Kortunov
51af729305 Do not use headtracking in the 1st-person view (bug #4573) 2018-08-08 23:29:03 +04:00
Andrei Kortunov
6202b4eca9 Do not touch GUI modes when taking screenshots (bug #4528) 2018-08-08 22:10:53 +04:00
Capostrophic
85208eff7f Revert untextured shapes rendering changes 2018-08-08 21:10:00 +03:00
Bret Curtis
0c0379c1ef
Merge pull request #1855 from OpenMW/allow_msvc2015_failure
Update appveyor.yml
2018-08-08 17:20:27 +02:00
Bret Curtis
97bc9954d0
Update appveyor.yml
allow msvc2015 to fail
2018-08-08 16:36:25 +02:00
Capostrophic
e9e9c0dd6b Fix guild guide fast travelling to exteriors time 2018-08-08 12:46:36 +03:00
Andrei Kortunov
b7859b3fa9 Cap underwater view distance (bug #4565) 2018-08-08 13:22:40 +04: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
Bret Curtis
a19d55e035
Merge pull request #1850 from Capostrophic/nodemask
Fix untextured shapes nodemask
2018-08-07 21:20:53 +02:00
Capostrophic
bda23c6ad6 Fix nodemask 2018-08-07 20:49:10 +03:00
Bret Curtis
a9729878d7
Merge pull request #1848 from Capostrophic/texturing
Don't render NiTriShapes without NiTexturingProperty (bug #4483)
2018-08-06 08:34:23 +02:00
Capostrophic
a1e3b2e586 Don't render NiTriShapes without NiTexturingProperty (bug #4483) 2018-08-05 16:24:24 +03:00
Marc Zinnschlag
b75b5d139a Merged pull request #1845 2018-08-05 12:28:38 +02:00
Marc Zinnschlag
7a93d118d2 Merged pull request #1846 2018-08-05 12:26:56 +02:00
Marc Zinnschlag
31491fdbde Merged pull request #1844 2018-08-05 12:25:10 +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
1f4dd3b393 Make partial binary search case insensitive, as it supposed to be (bug #4558) 2018-08-05 13:26:12 +04:00
David Cernat
888e1dfff8 [General] Allow setting of AI fight & dynamic stats in record packets
Additionally, allow the setting of the Autocalc flag for an NPC record based on an existing record.
2018-08-05 11:00:25 +03:00
Andrei Kortunov
b0f2e00e7f Make forcegreeting a non-op for non-actor objects (bug #4553) 2018-08-05 09:31:45 +04:00
Koncord
d03722b3f4 [Browser] Rework browser for improved stability & clarity
(cherry picked from commits 5c79e7106f, 57353cdfff, 15723adb9a, 01a5196a92, ed75563a94, 3839a2dcfd, 1fd16ba69c, 66283943c5, ba8613a179, 5b8f4f3e92, 35b771b19e, 043eb224e2, 05fac2f67d)
2018-08-05 07:20:12 +03:00
Marc Zinnschlag
452a706047 Merged pull request #1837 2018-08-04 10:26:44 +02:00
Marc Zinnschlag
b6a919a2d1 Merged pull request #1838 2018-08-04 10:26:18 +02:00
Marc Zinnschlag
99c03d55f0 Merged pull request #1841 2018-08-04 10:25:52 +02:00
Marc Zinnschlag
2a621fedd1 Merged pull request #1842 2018-08-04 10:08:11 +02:00
Capostrophic
d15dcaff68
Don't adjust weapon rating according to weapon condition twice 2018-08-03 19:22:58 +03:00
Andrei Kortunov
dd6cb85783 Remove redundant changelog entry 2018-08-03 19:31:10 +04:00
David Cernat
6498bcb22b [Server] Add script functions for getting player draw & sneak states 2018-08-03 18:26:44 +03:00
Andrei Kortunov
e2519226aa Move boost include 2018-08-03 17:04:07 +04:00
Andrei Kortunov
eeffe2e557 Check if item model exists inside drag and drop functions 2018-08-03 16:42:43 +04:00
Andrei Kortunov
e4f862c0b9 Check if next char exists 2018-08-03 16:42:43 +04:00
Andrei Kortunov
c2a175c2e0 Move crash catcher wrapper to separate file 2018-08-03 15:51:17 +04:00
Capostrophic
725a9323c4
Merge branch 'master' into sound 2018-08-03 14:16:51 +03:00
Capostrophic
1d1eedc001
Update changelog 2018-08-03 14:15:58 +03:00
Capostrophic
2f44acafe2
Fix changelog 2018-08-03 14:15:03 +03:00
Capostrophic
4c7f3cf626
Merge branch 'master' into weaponpriority 2018-08-03 14:07:11 +03:00
Capostrophic
433c24562e
Update changelog 2018-08-03 14:06:09 +03:00
Andrei Kortunov
ac98797999 Add missing file 2018-08-03 15:05:13 +04:00
Marc Zinnschlag
4d280add81 Merged pull request #1843 2018-08-03 12:56:17 +02:00
Marc Zinnschlag
d7718aae9b Merged pull request #1840 2018-08-03 12:54:56 +02:00
Marc Zinnschlag
eb5f558f6f Merged pull request #1839 2018-08-03 12:53:55 +02:00
Marc Zinnschlag
79aaf0163a Merged pull request #1833 2018-08-03 12:39:04 +02:00
Andrei Kortunov
712c9995db Rename mIsScripted variable because its name is ambiguous 2018-08-03 12:01:31 +04:00
Andrei Kortunov
c454f1bdad Use log file for editor (feature #4012) 2018-08-03 09:05:08 +04:00
Capostrophic
9d85b7c2d3
Use the actual damage for deducting weapon rating 2018-08-02 15:20:07 +03:00
Capostrophic
73d5496711
Revert addition change 2018-08-02 13:01:23 +03:00
Capostrophic
16af1a6c1c Replace 0 sound range values separately 2018-08-02 12:40:53 +03:00
Capostrophic
3ac030d75a
Handle explicit calls before handling quotes 2018-08-02 09:49:53 +03:00
Capostrophic
80f3bd9f86 Don't apply iWereWolfFleeMod to creatures 2018-08-02 08:36:15 +03:00
Capostrophic
fa6c205e5d Make tab autocompletion work with explicit reference calls 2018-08-02 03:24:31 +03:00
Capostrophic
bec47dfb7c Make ranged weapon bonus a distance-dependent multiplier 2018-08-01 19:57:05 +03:00
Andrei Kortunov
369ea7e177 Check if a temporary file was successfully closed 2018-08-01 20:36:29 +04:00
Capostrophic
382b68a081
Combat AI: take the actual hit chance in account when rating weapon 2018-08-01 19:27:19 +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
770d86f9bd Initialize cubeSize variable for 360 degrees screenshots correctly 2018-08-01 19:36:55 +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
Marc Zinnschlag
1c13256456 Merged pull request #1829 2018-08-01 16:17:37 +02:00
Marc Zinnschlag
0e75e3816a Merged pull request #1830 2018-08-01 16:16:30 +02:00
Marc Zinnschlag
8812f9ddfa Merged pull request #1831 2018-08-01 16:15:34 +02:00
Marc Zinnschlag
0c507b74bc Merge pull request #1832 2018-08-01 16:13:59 +02:00
Marc Zinnschlag
7c7af1da61 Merged pull request #1834 2018-08-01 15:47:09 +02:00
Marc Zinnschlag
e8139a5cc7 Merged pull request #1835 2018-08-01 15:46:31 +02:00
AnyOldName3
66c241337d
Merge pull request #1836 from OpenMW/water-shader-tabs
Sort out some tabs which snuck into the water shader
2018-08-01 14:08:16 +01:00
AnyOldName3
f717c9e56d
Sort out some tabs which snuck into the water shader 2018-08-01 14:07:02 +01:00
Capostrophic
4d48ede6f1 Add two missing gameplay settings to Advanced tab 2018-08-01 13:36:31 +03:00
Capostrophic
be2e7e9e09 Make casting caster-linked on-self effects no-op (bug #4378) 2018-08-01 02:41:57 +03:00
Andrei Kortunov
5b92910829 Limit difficulty scaling, as mentioned in docs 2018-07-31 21:14:16 +04:00
Marc Zinnschlag
aac580da6b Merged pull request #1828 2018-07-31 11:10:48 +02:00
Marc Zinnschlag
20d4e27f82 Merged pull request #1821 2018-07-31 10:51:32 +02:00
Andrei Kortunov
c07cc0dc40 Reset animation state after weapon unequipping 2018-07-30 22:24:25 +04:00
Andrei Kortunov
469bb29621 Do not try to handle shape controllers as node controllers 2018-07-30 21:45:17 +04:00
Andrei Kortunov
0f2c3ecb17 Rescale player avatar (bug #4539) 2018-07-30 17:41:43 +04:00
David Cernat
8c40010c87 [General] Add missing inventoryBaseId to creatures in RecordDynamic 2018-07-30 10:59:03 +03: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
c79f96d0d2 Implement ranged crits (feature #3703) 2018-07-29 19:42:44 +03:00
Andrei Kortunov
1d463d129d Finish AiTarget package, if destination is blocked by other actor 2018-07-29 19:41:31 +04:00
Andrei Kortunov
75835c8326 Prevent NPC from chosing farther pathgrid node 2018-07-29 18:18:05 +04:00
Marc Zinnschlag
9e6cba09a6 Merged pull request #1827 2018-07-29 12:52:51 +02:00
Marc Zinnschlag
84de55fb46 Merged puil request #1824 2018-07-29 12:52:01 +02:00
Marc Zinnschlag
78121c1774 Merged pull request #1823 2018-07-29 12:49:50 +02:00
Marc Zinnschlag
3ba9229f47 Merged pull request #1815 2018-07-29 12:48:20 +02:00
Capostrophic
9c8e284ead Fix quick key activation delay code (regression #4536) 2018-07-29 12:52:29 +03:00
Capostrophic
84a871cac7 Actually enable is_pod test 2018-07-28 23:56:42 +03:00
Andrei Kortunov
6d5d0039ec Make sure we apply OT_Murder only once 2018-07-28 20:45:33 +04:00
Andrei Kortunov
bc82dbbd1b Do not try to find missing animated collision shape again and again 2018-07-28 16:49:00 +04:00
Andrei Kortunov
7e0df01c83 Do not optimize animated shapes (bug #3950) 2018-07-28 16:48:57 +04:00
Andrei Kortunov
2d4ec86b8d Provide launcher icons 2018-07-28 13:18:38 +04:00
Marc Zinnschlag
29a1899045 Merged pull request #1819 2018-07-28 11:13:37 +02:00
David Cernat
2dbf3893c0 [General] Compress item refIds in PlayerEquipment packets 2018-07-28 01:50:44 +03:00
David Cernat
2332423527 [Client] Fix extra qualification error in CellRef when compiling w/ GCC 2018-07-27 21:56:45 +03:00
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.
2018-07-27 21:42:08 +03:00
Andrei Kortunov
28a02ac93b Use file selection dialogue result (bug #4524) 2018-07-27 21:25:21 +04:00
Marc Zinnschlag
b7c159e5b6 Merged pull request #1816 2018-07-27 12:09:10 +02:00
Marc Zinnschlag
c508938674 Merged pull request #1817 2018-07-27 12:06:51 +02:00
Marc Zinnschlag
bbb22643e8 Merge remote-tracking branch 'capostrophic/warning' 2018-07-27 12:05:26 +02:00
David Cernat
9497c7f6f2 [Client] Add back mistakenly removed setting of mpNums for spawns 2018-07-27 00:36:05 +03:00
David Cernat
25fcd09780 [Client] Add doesNpcExist() method to RecordHelper 2018-07-26 23:57:42 +03:00
David Cernat
7995466e3c [Client] Check validity of refIds in ObjectSpawn packets
This reverts c7bcf70c32 because it provides a better solution to the problem solved there, while solving another related problem as well.
2018-07-26 23:57:22 +03:00
David Cernat
8d286657d4 [Client] Update messages when unilaterally creating custom objects 2018-07-26 23:32:31 +03:00
Capostrophic
f7887ab05f
Fix MSVC C4456 warning: declaration of 'stats' hides previous local declaration 2018-07-26 23:24:26 +03:00
David Cernat
c7bcf70c32 [Client] Ignore ObjectSpawn packets trying to spawn non-actors 2018-07-26 22:41:04 +03:00
David Cernat
d93b67ef21 [General] Sync soul refIds for items and add related script functions 2018-07-26 22:37:04 +03:00
David Cernat
f52364e05c [Client] Always create new references for new creature disguises
Previously, attempts to reuse the same reference for multiple creature disguises led to movement animation issues, as well as a dynamic_cast error in Creature::getInventoryStore() that made a DedicatedPlayer vanish completely when they first lost their creature disguise, then disguised themselves as a creature that could not hold weapons and then disguised themselves as a creature that could hold weapons.
2018-07-26 21:08:12 +03:00
David Cernat
60bc7447d9 [Client] Rework RecordHelper and add methods for other record types
The usage of const_cast has been replaced with usage of MWWorld::getModifiableStore() and ESMStore::overrideRecord()

Methods whose names started with "update" now start with "override", for consistency with ESMStore's overrideRecord()

New methods have been added for "overriding" enchantment, potion and spell records, which actually leads to them being created with their already set refIds if they haven't been created yet, as per the description of ESMStore::overrideRecord(): "Insert a record with set ID, and allow it to override a pre-existing static record."

Usage of RecordHelper methods has been updated in DedicatedPlayer.
2018-07-26 21:01:59 +03:00
Capostrophic
51d369d4da Add resumeGame method 2018-07-26 20:35:34 +03:00
David Cernat
4e78642273 [Client] Add getModifiableStore() to MWWorld 2018-07-26 20:05:36 +03:00
David Cernat
d778bc3b8a [Server] Turn readWorldstate and writeWorldstate into static variables 2018-07-26 20:03:42 +03:00
David Cernat
c3ff273a22 [General] Add getVectorSize() and resetVector() to Utils 2018-07-26 20:01:58 +03:00
David Cernat
b4802e4201 [General] Use Time struct for time in BaseWorldstate 2018-07-26 19:01:27 +03:00
Andrei Kortunov
23d917df9c Do not use magic numbers in capacity calculations 2018-07-26 18:06:36 +04:00
David Cernat
a4b588d1b5 [General] Add optional timestamps to journal entries in PlayerJournal 2018-07-26 04:36:12 +03:00
Capostrophic
e55f49be45
Fix issue 4494 number 2018-07-25 12:51:15 +03:00
Capostrophic
cac2bc768e
Fix NPC "can't teach more" message (bug #4494) 2018-07-25 12:34:33 +03:00
David Cernat
ea8a41160c [General] Make ActorAttack packet consistent with PlayerAttack
Additionally, fix a typo in PlayerAttack where a boolean argument was outside of the parentheses it should have been in.
2018-07-24 22:43:00 +03:00
David Cernat
b79221efcc [Server] Rename variable i into index in ActorFunctions 2018-07-24 21:29:40 +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
2e0b6e4e3e [Server] Rename variable i into index in script function arguments
Additionally, rename i into index in LangLua.
2018-07-24 20:14:51 +03:00
David Cernat
65de028e0d
Merge pull request #462 from OpenMW/master
Add OpenMW commits up to 23 Jul 2018
2018-07-23 23:19:17 +03:00
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()
2018-07-23 23:04:41 +03:00
David Cernat
b69e6b96e6 [Client] Use verbose logging level for LocalActor debug 2018-07-23 22:11:59 +03:00
Bret Curtis
84b80ae405 no spaces in assignment 2018-07-22 23:12:37 +00:00
David Cernat
36ac2d9de4 [Client] Set packetOrigin for all ObjectList packets sent 2018-07-23 01:39:43 +03:00
David Cernat
692ee01340 [Client] Add ScriptController w/ contextType-to-packetOrigin method 2018-07-23 00:48:23 +03:00
David Cernat
63a86f145d [Client] Record type of each InterpreterContext for later checking 2018-07-23 00:46:07 +03:00
David Cernat
d4a84ac34a [Server] Update script function descriptions for ObjectList origin 2018-07-22 23:08:32 +03:00
David Cernat
3165c84db4 [General] Rework PACKET_ORIGIN enum
Additionally, comment out reading of originClientScript in ObjectPacket for now.
2018-07-22 22:43:40 +03:00
David Cernat
9e6459043b [General] Fix typo related to originClientScript in ObjectPacket 2018-07-22 20:29:27 +03:00
David Cernat
3dc2d1b214 [General] Add packetOrigin and originClientScript to ObjectList packets
Additionally, add script functions for getting the packetOrigin and originClientScript of received ObjectList packets.
2018-07-22 18:38:05 +03:00
David Cernat
b891acd46e [Client] Send Container packets when items are added/removed via scripts
Additionally, disable unilateral addition and removal of items on clients, and expect the server to reply back with an approved addition or removal.
2018-07-22 17:04:17 +03:00
David Cernat
2189ea1a63 [Client] Clean up sending of Container packets 2018-07-22 16:43:27 +03:00
David Cernat
8c0b75d9f4 [Client] Limit PlayerEquipment packets sent by recharging enchantments 2018-07-22 15:30:40 +03:00
David Cernat
715cac807d [General] Add compareFloats to Utils 2018-07-22 15:23:23 +03:00
David Cernat
cb6c37a26d [General] Replace doubles with floats in BaseStructs and BaseWorldstate 2018-07-22 14:20:20 +03:00
David Cernat
18f8725d33 [Client] Remove tab character that somehow made its way into a comment 2018-07-22 10:29:14 +03:00
Bret Curtis
b910106713 Catch an unbound variable before it happens. 2018-07-22 07:17:34 +00:00
Bret Curtis
c959bdcf32
Merge pull request #1813 from rhtucker/master
Added CSS to drop shadow of figure images
2018-07-22 08:51:30 +02:00
Ryan Tucker
9f2ef1e68a Added CSS to drop shadow of figure images 2018-07-21 13:33:56 -07:00
David Cernat
038757b91a [General] Temporarily revert to original rotation animation sync
I originally added rotation animation sync as part of commit 068a45be87. Unfortunately, it meant the PlayerPosition packets were now twice as large as they had been before, which was less than ideal for such a frequently sent packet, which is why Koncord switched to a more optimized approach in commits 5f30dfd5db and d67db1a9bd.

Recently, there have since been some rotation animation problems in OpenMW, which have broken the way Koncord's approach looks. My original approach still looks somewhat okay, so I'm switching back to it until we can figure out how to reuse it under the current circumstances.
2018-07-21 19:27:36 +03:00
Marc Zinnschlag
8b2b37c270 Merged merge request !28 2018-07-21 17:47:19 +02:00
Marc Zinnschlag
ddd5cbd17c Initialise lock state of newly opened subviews (fixes issue #4520) 2018-07-21 17:38:11 +02:00
David Cernat
3944c8aec6 [Client] Ignore WorldRegionAuthority packets that have an empty region 2018-07-21 18:28:31 +03:00
David Cernat
99e64bdcd7 [Client] Remove unused localWeather variable from Worldstate 2018-07-21 16:25:49 +03:00
David Cernat
cd1fc590a7 [Client] Differentiate itemPtr from actor Ptr in DedicatedPlayer method
This fixes a mistake from 8f7da49152
2018-07-21 16:14:07 +03:00
David Cernat
5466092582 [Client] Reduce log level for actor cell changes 2018-07-21 14:41:48 +03:00
David Cernat
20e0100706 [General] Rework Attack packets and add synchronization for item magic 2018-07-21 14:41:27 +03:00
David Cernat
0f0e8b7c08 [Client] Adjust log levels used for weather and global map 2018-07-21 12:08:31 +03:00
David Cernat
f1315ef30d [Cllient] Differentiate itemPtr from actor Ptr in DedicatedActor methods
2427a4f877 mistakenly used the variable name "ptr" for both the actor and the items in that actor's inventory.
2018-07-21 10:16:51 +03:00
David Cernat
b6324e3532 [Client] Clean up debug for spell usage 2018-07-21 09:41:36 +03:00
David Cernat
826e64b40e [Server] Rename isPlayerExists() into doesPlayerExist() 2018-07-21 07:34:45 +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
6c50d4199b Merge branch '0.7.0' of https://github.com/TES3MP/openmw-tes3mp into 0.7.0 2018-07-21 05:21:44 +03:00
David Cernat
421d0e7a99 [Client] Make forceWeather false by default for client-sent weather 2018-07-21 05:21:26 +03:00
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.
2018-07-21 05:20:26 +03:00
Bret Curtis
4c9e1295e8
Merge pull request #1811 from akortunov/fallfix
Set movement speed to 0 when unconscious
2018-07-20 09:30:45 +02:00
Bret Curtis
a54b779672 Revert "Revert "remove breath/doxygen autodoc""
This reverts commit 038d5a5566.
2018-07-19 23:27:39 +02:00
Andrei Kortunov
8281fd903f Set movement speed to 0 when unconscious (bug #4519) 2018-07-19 20:17:32 +04:00
Bret Curtis
ee3aba149d Force RTD to not build any other types of docs. 2018-07-19 14:34:06 +00:00
Bret Curtis
038d5a5566 Revert "remove breath/doxygen autodoc"
This reverts commit f2fc8351bb.

small fixes
2018-07-19 15:51:29 +02:00
David Cernat
b6db570d9c [Client] Display uniqueIndexes in a less confusing way in console 2018-07-19 11:57:06 +03:00
Bret Curtis
105b172fb5
Merge pull request #1809 from akortunov/enumfix
Sort icons in the DataDisplayDelegate
2018-07-17 23:05:18 +02:00
Andrei Kortunov
5c16ce1d36 Sort icons in the DataDisplayDelegate 2018-07-17 22:49:51 +04:00
Marc Zinnschlag
78a2725169 Merged pull request #1806 2018-07-17 12:42:41 +02:00
Marc Zinnschlag
326a3e61f4 Merged pull request #1807 2018-07-17 12:42:12 +02:00
Marc Zinnschlag
0142525ea2 Merged merge request !26 2018-07-17 12:39:14 +02:00
Marc Zinnschlag
111407c282 Merged merge request !24 2018-07-17 12:26:23 +02:00
Andrei Kortunov
38fa4e0a8a Do not play un-equipping animation when we switch to hand-to-hand 2018-07-17 14:10:04 +04:00
David Cernat
9823a77bf2 [General] Turn PlayerRegionAuthority into WorldRegionAuthority
WorldRegionAuthority is a Worldstate packet.
2018-07-17 09:21:13 +03:00
Miloslav Číž
3ff2740e59 Update CHANGELOG 2018-07-16 20:29:00 +02:00
Koncord
2e227c7af5 [Server] Do not allow to connect with an empty plugin list 2018-07-17 01:08:23 +08:00
Koncord
b5c957c473 [Server] Move PreInit code to preInit method 2018-07-17 00:58:37 +08:00
Koncord
1a9bf253f6 [Server] Simplify getPlayer methods, add isPlayerExists method 2018-07-17 00:29:45 +08:00
Koncord
193034f09c [Documentation] Add copyrigts 2018-07-16 21:07:59 +08:00
Bret Curtis
e7e3dab130
Merge pull request #1804 from akortunov/guifixes
Show magic items count in spells window (feature #4509)
2018-07-16 14:16:35 +02:00
Andrei Kortunov
edd5769022 Show magic items count in spells window (feature #4509) 2018-07-16 14:11:03 +04:00
Bret Curtis
1430b64aaa
Merge pull request #1805 from akortunov/editor_markers
Use editor markers for lights and creatures levelled lists
2018-07-16 12:05:42 +02:00
Andrei Kortunov
30716344f2 Fix possible division by zero in the fatigue calculation (bug #4510) 2018-07-16 13:24:12 +04:00
David Cernat
d5d3c0937f [Client] Adjust log level for actor transfers in CellStore 2018-07-16 03:53:09 +03:00
David Cernat
35fdb833df [Client] Verify integrity of credits file 2018-07-16 03:25:01 +03:00
David Cernat
72d286473b [General] Move credits integrity error message to new ErrorMessages file
Additionally, use correct log level for credit integrity message on server.
2018-07-16 03:21:14 +03:00
David Cernat
0b5cb15f71 [General] Turn GameWeather into WorldWeather, now a WorldstatePacket 2018-07-16 02:20:43 +03:00
David Cernat
646111d998 [General] Use correct credits checksum and move it to Version.hpp 2018-07-16 01:05:56 +03:00
David Cernat
0f36c3ea24 [Server] Verify integrity of credits file 2018-07-15 22:50:16 +03:00
David Cernat
22b2b7a9c6 [General] Add Utils methods for checksums 2018-07-15 22:39:57 +03:00
David Cernat
9445db61b4 [Documentation] Update credits 2018-07-15 20:16:22 +03:00
Andrei Kortunov
6ddf6eb885 Use editor markers for lights and creatures levelled lists 2018-07-15 17:25:18 +04:00
Nikolay Kasyanov
21f198af7a Fix debugger detection on macOS (#4511) 2018-07-15 12:36:01 +02:00
David Cernat
4ac371d292 [Server] Delete duplicate WorldKillCount processor with old filename 2018-07-15 05:49:19 +03:00
David Cernat
3649cf553f [General] Rename PlayerKillCount into WorldKillCount
This should clarify the real meaning of the packet and its associated event.

The event itself has been renamed from OnPlayerKillCount to OnWorldKillCount.
2018-07-15 05:34:59 +03:00
David Cernat
18a2d238ab [Client] Don't pop up dialogue screen when an NPC activates another NPC 2018-07-15 04:36:42 +03:00
David Cernat
4ef2aff11e [Client] Remove "Not implemented" message when activating other player
Serverside scripts can now make lots of different things happen as the result of such activation, which is why the message was no longer current.
2018-07-15 04:16:40 +03:00
David Cernat
f13705e8be [Client] Improve debug for ObjectActivate and ConsoleCommand 2018-07-15 04:09:19 +03:00
David Cernat
6ebe09375f [General] Implement ObjectActivate packet & associated script functions 2018-07-15 03:16:04 +03:00
David Cernat
81b160cae8 [General] Add placeholder for ObjectActivate packet 2018-07-15 01:08:31 +03:00
David Cernat
61da0d2475 [General] Turn PlayerInteraction into PlayerInput 2018-07-15 00:36:07 +03:00
David Cernat
32b6134fad [General] Add placeholder for CellReplace packet 2018-07-15 00:17:13 +03:00
David Cernat
a471f5e452 [General] Turn CellCreate into a Worldstate packet 2018-07-14 23:51:49 +03:00
David Cernat
ae55ee7f0b [General] Add getNumberOfDigits to Utils in components 2018-07-14 23:51:49 +03:00
David Cernat
f410cb90d8
Merge pull request #459 from GrimKriegor/bug/missing-luajit-on-pipeline
[Pipeline] Add missing LuaJIT dependency
2018-07-14 22:38:19 +03:00
David Cernat
98ff44172a
Merge pull request #458 from GrimKriegor/hotfix/crashcatcher-sdl-build-issue
[General] Temporarily disable the new OpenMW crash catcher
2018-07-14 22:37:36 +03:00
Grim Kriegor
2fcde5e8ba [General] Temporarily disable the new OpenMW crash catcher
This new crash catcher is preventing TES3MP from building on GNU/Linux
`components/crashcatcher/crashcatcher.cpp:23:28: fatal error: SDL_messagebox.h: No such file or directory`
Disable it until the developers isolate the issue and patch it
2018-07-14 19:46:47 +01:00
Grim Kriegor
88e4927146 [Pipeline] Add missing LuaJIT dependency 2018-07-14 19:39:19 +01: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
6d43c8d63d [Client] Send ActorAI with combat when an NPC's fight is set to 100 2018-07-14 02:55:38 +03:00
David Cernat
743933134d [Client] Simplify sending of ActorAI packets for uninitialized actors 2018-07-14 01:00:27 +03:00
David Cernat
5f4ec1331f [Client] Send ActorAI packet when combat is started via a client script 2018-07-14 00:07:15 +03:00
David Cernat
cc9e294cc0 [Client] Send ActorAI packet for new cell after being followed to it 2018-07-13 22:34:36 +03:00
David Cernat
528bd26a3b [General] Allow followers to follow non-authority players through cells 2018-07-13 21:27:29 +03:00
David Cernat
ab5fd0aef8 [Server] Clean up descriptions for Object script functions 2018-07-13 04:55:05 +03:00
David Cernat
6c1173d598 [Client] Rename searchPtrViaRefIndex into searchPtrViaUniqueIndex 2018-07-13 04:33:54 +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
David Cernat
20296859ee [Server] Clarify functions used for getting data in Networking 2018-07-13 02:40:24 +03:00
David Cernat
04dd59e638 [Server] Use clearer names for functions used to get last received data
Additionally, rename GetObjectChangesSize() into the less confusing GetObjectListSize()
2018-07-13 02:33:50 +03:00
David Cernat
aeb2e57444 [Server] Bring Actor functions in line with Object functions, part 2
The ActorPacket-sending functions now have sendToOtherVisitors and skipAttachedPlayer arguments, except for the ones for ActorList and ActorAuthority (because such arguments don't make sense for those).
2018-07-13 01:25:43 +03:00
David Cernat
837c5369c0 [Server] Add OnActorAI event and remove autosync for ActorAI packets 2018-07-13 01:05:27 +03:00
David Cernat
8f745df055 [Server] Bring Actor functions in line with Object functions, part 1
The last received ActorList can now be copied into the write-only ActorList that can be sent in packets. Changing the pid of the write-only ActorList can now be done separately from clearing its contents.
2018-07-13 01:04:41 +03:00
David Cernat
f0d4f1bbe5 [Client] Send ActorAI packets when followed by an NPC
The packet is sent regardless of whether we are the cell authority or not, so the server can decide what it wants to do with it.
2018-07-12 23:08:17 +03:00
David Cernat
6316f1e590 [Client] Add ActorList methods for sending ActorAI packets
Additionally, use consistent capitalization for AI-related methods.
2018-07-12 20:48:47 +03:00
David Cernat
0fd8f7660b [Client] Replace LocalActor arg with BaseActor in ActorList functions 2018-07-12 20:15:04 +03:00
Marc Zinnschlag
0bd6078826 Merged pull request #1789 2018-07-12 18:56:59 +02:00
Andrei Kortunov
32bd294a8a Add missing changelog entries 2018-07-12 16:39:46 +04:00
Andrei Kortunov
3d1daaebab Rework manual spellcasting (e.g. via scripts) 2018-07-12 16:24:25 +04:00
David Cernat
bdf2f03c4f [General] Remove unnecessary MapChanges struct from BaseWorldstate 2018-07-12 05:06:31 +03:00
David Cernat
59a56ca35e [Client] Disallow clients from scaling their associated players
Additionally, display messages when trying to scale players.
2018-07-12 03:29:38 +03:00
David Cernat
8ca29dbaac [Client] Fix remaining mistakes in debug for received ActorAI packets 2018-07-11 23:11:37 +03:00
David Cernat
5bb442bbd3 [Server] Add sendToOtherVisitors boolean to SendActorAI()
Additionally, avoid repetition in functions that send Actor packets.
2018-07-11 22:17:00 +03:00
David Cernat
25f7a55495 [Client] Improve debug for received ActorAI packets 2018-07-11 19:54:56 +03:00
David Cernat
ceea65f666 [General] Change pre-rewrite's version to 0.7.0-alpha 2018-07-11 19:35:28 +03:00
Miloslav Číž
4e3bc3e403 Change wave parameters based on weather 2018-07-11 17:03:59 +02:00
Bret Curtis
99e4d49e7c
Merge pull request #1787 from akortunov/profilierfont
Use the DejaVuLGCSansMono.ttf for profiler output
2018-07-11 16:00:34 +02:00
Andrei Kortunov
70b6d4983d Use the DejaVuLGCSansMono.ttf in profilier output 2018-07-11 14:41:49 +04:00
Marc Zinnschlag
2d919ba215 changelog cleanup 2018-07-11 10:10:38 +02:00
Marc Zinnschlag
232be000a2 Updated credits file 2018-07-11 10:09:31 +02:00
Marc Zinnschlag
5080a65910 Merged pull request #1796 2018-07-11 10:08:44 +02:00
Marc Zinnschlag
ee759effce Merged pull request #1798 2018-07-11 10:06:30 +02:00
Marc Zinnschlag
fa96154edd Merged pull request #1803 2018-07-11 10:04:59 +02:00
David Cernat
7a646494ee [General] Point to serverCore.lua instead of server.lua in server config 2018-07-11 02:53:40 +03:00
elsid
686830a6e3
Update changelog 2018-07-10 23:52:51 +03:00
elsid
3f21c49479
Put check for nif file name into separate function 2018-07-10 23:46:06 +03:00
elsid
2599aba196
Fix check whether file name starts with x or X
If path doens't contains / or \, then slashpos will be 0.
Therefore slashpos + 1 = 1 doesn't point to first symbol.

xmesh.nif
 ^
 slashpos + 1
2018-07-10 23:46:06 +03:00
David Cernat
bff6e9e235 [General] Implement ActorAI packet, part 5
Allow repetition for AiWander package to be turned on and off.
2018-07-10 23:18:32 +03:00
Andrei Kortunov
c77c50e92b Make Equip console command to bypass most of restrictions (bug #4460) 2018-07-11 00:06:21 +04:00
Capostrophic
3186edc630
Update changelog 2018-07-10 22:22:20 +03:00
Capostrophic
5cb9dc9d12 Use SpellTurnLeft/TurnRight animation groups 2018-07-10 22:19:56 +03:00
Bret Curtis
b390ce3002
Merge pull request #1776 from akortunov/crossbowfix
Apply weapon reload animations only for upper body
2018-07-10 19:16:23 +02:00
Bret Curtis
df1576fcf5
Merge branch 'master' into crossbowfix 2018-07-10 19:15:37 +02:00
Bret Curtis
fde46f03b3
Merge pull request #1801 from terabyte25/terabyte25-trainingskill
Update trainer skill cap based off modified skill instead of based skill
2018-07-10 16:54:28 +02:00
terrabyte25
76fa8a163d
Update CHANGELOG.md 2018-07-10 17:09:14 +04:00
Andrei Kortunov
1c35e20fcc Use 1h animations as fallback for crossbows 2018-07-10 17:02:51 +04:00
Andrei Kortunov
75dcbea365 Apply weapon reload animations only for upper body 2018-07-10 17:00:48 +04:00
Bret Curtis
3f63e625cf
Merge pull request #1802 from Capostrophic/cmake
Update CMake lists for Windows (task #2490)
2018-07-10 14:34:59 +02:00
Capostrophic
d000f2756e Update disabled warnings 2018-07-10 14:20:26 +03:00
Capostrophic
21403f8920 Update changelog 2018-07-10 14:20:26 +03:00
Capostrophic
7fd66c77e6 Update CMake lists for Windows
Don't use the debug console on Release-mode builds
Disable spammy 4297 and 5032 warnings that are not specific to OpenMW
2018-07-10 14:20:25 +03:00
Bret Curtis
5a1dba6a09
Merge pull request #1800 from akortunov/buildfix
Fix build with MSVC
2018-07-10 13:13:13 +02:00
Andrei Kortunov
c921d1c7e9 Refactor NifStream class (eliminate LNK4221 MSVC warning) 2018-07-10 13:32:52 +04:00
David Cernat
2e31c212c0 [Client] Make any ActorAI packet override an actor's desire to fight 2018-07-10 11:33:07 +03:00
David Cernat
79ee976c95 [Client] Implement ACTIVATE action in DedicatedActor::setAI()
Additionally, clean up usage of CreatureStats in DedicatedActor.
2018-07-10 11:31:51 +03:00
David Cernat
0f30e21312 [Client] Add searchPtrViaRefIndex method to World to easily find objects 2018-07-10 11:30:32 +03:00
Andrei Kortunov
27a5da59ba Fix MSVC warnings C4456 2018-07-10 11:29:39 +04:00
Andrei Kortunov
16a4df25d6 Make void function to do not return value 2018-07-10 09:36:39 +04:00
David Cernat
c984fc0881 [Client] Allow AiActivate to be used with specific Ptrs, not just refIds 2018-07-10 08:21:24 +03:00
David Cernat
00c13ae96c [General] Implement ActorAI packet, part 4
The server can now make actors activate players and objects, at least in theory. In practice, OpenMW''s AiActivate package needs to be worked so it allows specific objects as targets instead of just refIds.
2018-07-10 07:07:37 +03:00
David Cernat
0e13207afe [General] Implement ActorAI packet, part 3
The server can now cancel actor AI, make actors travel to a location, make actors wander, and make actors get escorted by a player or another actor.
2018-07-10 05:07:58 +03:00
David Cernat
5baef09f79 [General] Implement ActorAI packet, part 2
The server can now make actors start combat with players or other actors.
2018-07-10 02:47:52 +03:00
David Cernat
5628f3b977 [Client] Fix debug for DedicatedActor::setAI() 2018-07-10 02:05:10 +03:00
David Cernat
b86155dc11 [Client] Allow AiFollow package to have infinite distance when desired 2018-07-10 01:40:57 +03:00
David Cernat
864c66d1d4 [Client] Make sure hasAiTarget is set correctly for DedicatedActors 2018-07-10 01:35:38 +03:00
David Cernat
26ac29e8b1 [Client] Add disclaimer to save dialog about singleplayer-only saves 2018-07-09 22:55:11 +03: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
Marc Zinnschlag
0bdd8f7d03 Merged merge request !19 2018-07-09 17:43:22 +02:00
Marc Zinnschlag
34c7181afc Merged merge request !21 2018-07-09 17:36:48 +02:00
Alexander Stillich
5abc3bd320 Merge branch 'opencs-crash-handler' of gitlab.com:docwest/openmw into opencs-crash-handler 2018-07-09 16:27:33 +02:00
Alexander Stillich
725cc94210 Renamed cc_install to something less cryptic (crashCatcherInstall) 2018-07-09 16:25:55 +02:00
Alex S
d4d2077174 Fixed changelog entry 2018-07-09 16:25:55 +02:00
Doc West
a6f962156c Updated change log 2018-07-09 16:25:55 +02:00
Doc West
467989cdd5 Moved crashcatcher to a component and also use it in CS
Reworked debugger detection (failed on gdb 7.11), it now uses /proc to detect the debugger
2018-07-09 16:25:55 +02:00
Alexander Stillich
1786211b83 Merge branch 'revert-update-fix' of gitlab.com:docwest/openmw into revert-update-fix 2018-07-09 16:24:41 +02:00
Alexander Stillich
1177e5ac79 Issue a single dataChanged() when the modified column changes 2018-07-09 16:23:50 +02:00
Doc West
d26b5a13ef Fixed comment 2018-07-09 16:23:50 +02:00
Doc West
01b8ce5f70 Notify views of changes in all columns when updating the ColumnId_Modification column 2018-07-09 16:23:50 +02:00
Doc West
4a6457c346 Changed the way the revert command works: it now clones the changed record and uses the new RecordBase::revert() method to restore the previous value
Added Flag_Dialogue_Refresh to var type and var value columns so that sub views update properly
2018-07-09 16:23:50 +02:00
Doc West
4222b44dbb Updated change log 2018-07-09 16:23:50 +02:00
Doc West
143eadb58e Use setData() instead of emtitting dataChanged() which does not work on CI. Also Fixes the remaining issue with subviews not updating due to only the modified flag emitting a change, which prevented the widget mapper from working for updates. 2018-07-09 16:21:53 +02:00
Doc West
4780f1b2bd Notify views of changes of all cells in a row to properly update the row after revert 2018-07-09 16:21:53 +02:00
Alexander Stillich
78a5799911 Issue a single dataChanged() when the modified column changes 2018-07-09 16:05:06 +02:00
Bret Curtis
8834396cdd Merge branch 'patch-1' into 'master'
Update documentationHowTo.rst

See merge request OpenMW/openmw!22
2018-07-09 14:05:05 +00:00
Bret Curtis
13d8fba223
Merge pull request #1797 from Capostrophic/moveobject
Fix double call of addContainerScripts on player in moveObject (bug #4490)
2018-07-09 15:16:04 +02:00
Bret Curtis
7f4320feb0
Merge pull request #1799 from lysol90/patch-1
Updates to the texture modding page
2018-07-09 15:14:43 +02:00
Joakim Berg
ba15d0a848
Fixed spelling error 2018-07-09 10:19:32 +00:00
Capostrophic
d09c327b20 Update changelog 2018-07-09 12:36:19 +03:00
Joakim Berg
efcad5e751
Updates to the texture modding page
There were some errors in the texture modding page about normal maps, so I did a quick change. Please do review if I made some errors, spelling or factual.
2018-07-09 08:58:01 +00:00
Capostrophic
14d3b213a1
Fix double call of addContainerScripts on player in moveObject (fixes #4490) 2018-07-08 23:08:57 +03:00
David Cernat
6ff7fa525e [Client] Disable autosaving when waiting 2018-07-08 23:04:30 +03:00
Bret Curtis
a3a002e008
Merge pull request #1790 from rhtucker/master
Migrating necessary parts of Wiki over to RTD.
2018-07-08 20:59:08 +02:00
Marc Zinnschlag
caad14093e Merged pull request #1795 2018-07-08 11:01:27 +02:00
David Cernat
04ba324290 [Client] Disable clientside disabling and enabling of objects 2018-07-08 03:31:48 +03:00
David Cernat
5043fb4246 [Client] Disable clientside disarming of traps 2018-07-08 02:38:10 +03:00
David Cernat
cbb9817913 [Server] Add missing descriptions for PlayAnimation() and PlaySpeech() 2018-07-08 02:03:33 +03:00
David Cernat
6ba9b1742b [Server] Remove unused default parameters for script functions 2018-07-08 01:05:54 +03:00
David Cernat
acdaf1a282 [Client] Disable clientside deletion of objects through console/scripts
Unfortunately, disabling clientside deletion of summons and items that can be picked up requires extra work on actors and inventories respectively, to avoid buggy situations.
2018-07-08 00:39:07 +03:00
David Cernat
8d9fde810e [Client] Disable clientside scaling of objects 2018-07-08 00:28:31 +03:00
David Cernat
f3892d697b [Client] Disable clientside locking and unlocking of objects 2018-07-08 00:06:01 +03:00
David Cernat
563269d359 [Server] Bring comments up-to-date for packet-sending script functions 2018-07-07 20:16:36 +03:00
David Cernat
2f1ef049d2 [Server] Turn sendToAttachedPlayer into skipAttachedPlayer
Unfortunately, default values set in the C++ code for our script function parameters don't actually seem to work, and they always default to false because they receive a nil value from Lua. As a result, to not break compatibility with previous scripts, I've decided to use a skipAttachedPlayer argument instead so it can default to false while still providing the same benefits that sendToAttachedPlayer provided.
2018-07-07 20:08:59 +03:00
Ryan Tucker
380384ff39 Migrated textures section of wiki. 2018-07-07 10:08:13 -07:00
David Cernat
141e404ed9 [Server] Move server administration functions to ServerFunctions class 2018-07-07 19:40:22 +03:00
David Cernat
c0fde5ae97 [General] Add explanation about 0.0.0.0 to server config file 2018-07-07 19:33:54 +03:00
David Cernat
6041425122 [Server] Move Chat functions to new ChatFunctions class 2018-07-07 19:20:25 +03:00
David Cernat
6a3fbf4e98 [Server] Use consistent arguments for script functions that send packets
Previously, there was a confusing separation between script functions that had a "broadcast" argument and script functions that had a "toOthers" argument.

Those with broadcast sent the packet to all players on the server when broadcast was true. Those with toOthers sent the packet to all players other than the packet's attached player.

The former was based on the pattern of the original SendMessage() script function. The latter more closely resembled RakNet's own broadcast argument as seen here:

https://github.com/TES3MP/CrabNet/blob/master/include/raknet/RakPeer.h#L219

This commit makes it so all sending functions have a sendToOtherPlayers argument that is false by default and a sendToAttachedPlayer that is true by default. This should simultaneously allow sending to be more intuitive, while not breaking previous existing scripts to a significant degree.

Additionally, this commit also reduces some code repetition for all instances of packet-fetching in script functions.
2018-07-07 18:29:31 +03:00
David Cernat
14e4f64296 [Server] Add GetVideoFilename() and SendVideoPlay() script functions 2018-07-07 17:09:57 +03:00
David Cernat
3ed9d89280 [General] Use separate variables for video & music filenames in packets 2018-07-07 14:40:35 +03:00
David Cernat
509882b5f6 [Client] Rework MechanicsHelper::getTarget() to avoid crashes 2018-07-07 11:43:57 +03:00
David Cernat
7f0549fc4f [Server] Remove hardcoded sync for VideoPlay and add OnVideoPlay event 2018-07-06 23:37:57 +03:00
David Cernat
ae8b5a0709 [Server] Remove hardcoded sync for Place, Spawn & other Object packets 2018-07-06 23:36:28 +03:00
David Walley
b5abe6a230 Update documentationHowTo.rst
Add a section, under the provisional name "Baby Steps" to describe a minimal process for editing/contributing. Basically just create an account on GitLab, fork openmw there, then edit the relevant document to create Merge Request
2018-07-06 19:06:32 +00:00
David Cernat
e3e1cfc549 [Client] Add forgotten comparison in crimeTime and deathTime check 2018-07-06 20:49:08 +03:00
Capostrophic
bded697f07
Make Goodbye block using hyperlinks 2018-07-06 19:38:36 +03:00
David Cernat
4eb72eecb1 [Client] Fix crash for invalid CellRefs in MechanicsHelper::getTarget() 2018-07-06 18:39:14 +03:00
Bret Curtis
f4146d0079 Merge branch 'patch-1' into 'master'
Update documentationHowTo.rst - extend to integrate GitLab into PyCharm

See merge request OpenMW/openmw!20
2018-07-06 14:50:12 +00:00
David Cernat
4b30a44816 [Client] Compare crimeTime and deathTime when NPCs forgive player crimes
Previously, all crime witnesses stopped being hostile to a respawning player for as long as the player's diedSinceArrestAttempt was true. That meant that, in an area with no guards to arrest the player, crime witnesses did not enage in combat with the player at all ever again until diedSinceArrestAttempt became false.

This commit makes it so the time of the last crime is recorded for each witness, and that is then compared with the time of the LocalPlayer's last death for a one-time crime forgiveness during that player's current life.

This is essentially a gameplay adjustment for "singleplayer with respawns," and will have to be reworked to make sense for every player in multiplayer, though that requires reworking the crime system as a whole and is thus on hold.
2018-07-06 14:17:54 +03:00
Marc Zinnschlag
d9de8ccb5b Merged pull request #1781 2018-07-06 11:55:45 +02:00
Marc Zinnschlag
dd08194c75 Merged merge request !18 2018-07-06 11:37:15 +02:00
Marc Zinnschlag
7ba512b389 Merged merge request !17 2018-07-06 11:27:35 +02:00
Bret Curtis
94ea9e7dd0
Merge pull request #1793 from Capostrophic/death
Ensure forward-compatibility of death animations of pre-0.43.0 saves (bug #4274)
2018-07-06 10:23:51 +02:00
Alex S
6a2b8f7e85 Fixed changelog entry 2018-07-06 08:14:26 +00:00
David Cernat
c23fc3446f [Client] Avoid sending map tiles for Wilderness cells 2018-07-06 03:54:34 +03:00
David Cernat
17c234d9ca [Client] Use initial values for LocalPlayer and LocalActor killers 2018-07-06 02:07:55 +03:00
David Cernat
3e52857e2b [General] Fix build for client and construction set 2018-07-06 01:10:22 +03:00
David Cernat
97cd3effa7 [Client] Make actor debug consistent with object debug 2018-07-06 00:32:45 +03:00
Doc West
6a78379757 Updated change log 2018-07-05 22:59:29 +02:00
Doc West
03c75794c1 Moved crashcatcher to a component and also use it in CS
Reworked debugger detection (failed on gdb 7.11), it now uses /proc to detect the debugger
2018-07-05 22:55:19 +02:00
Capostrophic
33c462c3c2
Update changelog 2018-07-05 22:56:09 +03:00
Capostrophic
9abfabb065
Ensure forward-compatibility of death animations in old saves (fixes #4274) 2018-07-05 22:49:40 +03:00
David Cernat
b0bd12f9dd Merge branch '0.6.3' of https://github.com/TES3MP/openmw-tes3mp into 0.6.3 2018-07-05 22:28:40 +03:00
David Cernat
c075496748 [General] Replace deathReason in death packets with a killer variable
Add serverside script functions for determining the killers of both players and actors.

Use unsigned ints for script functions returning an object or actor's refNumIndex or mpNum.

Remove updateDeadState() from LocalPlayer and make its code part of updateStatsDynamic() for simplicity.
2018-07-05 22:24:51 +03:00
David Cernat
934e592bdb [Server] Make spacing in CharClass consistent with other categories 2018-07-05 20:27:42 +03:00
David Cernat
e8ce009521 [Server] Use regular int as return value for GetObjectSummonerPid()
Additionally, clarify descriptions of script functions for getting information about summoners.
2018-07-05 20:26:23 +03:00
David Cernat
f02492a593 [General] Temporarily include target names in mwmp::Target
These will be removed once the server can get the names matching refIds by reading content files.
2018-07-05 19:40:28 +03:00
Doc West
b8e53b5b81 Fixed comment 2018-07-05 18:10:43 +02:00
Doc West
e187733811 Notify views of changes in all columns when updating the ColumnId_Modification column 2018-07-05 18:03:55 +02:00
Doc West
f9b565a46e Removed QDebug include, moved updateUndoRedoAction to an anonymous namespace 2018-07-05 17:29:58 +02:00
Doc West
61109d70b1 Removed invalid / unused signal / slot connection 2018-07-05 17:21:32 +02:00
David Cernat
691b332d03 [Client] Use MechanicsHelper::getTarget() for summoners in ObjectList 2018-07-05 16:38:03 +03:00
David Cernat
130a32ebb0 [Client] Add new methods for handling mwmp::Target in MechanicsHelper 2018-07-05 16:36:52 +03:00
Koncord
7a032baaa3 [General] Move OSG hack to ELSE branch 2018-07-05 21:08:41 +08:00
Koncord
533cd9cdec [General] Fix FindRakNet 2018-07-05 19:49:33 +08:00
Koncord
470ea50b54 [General] Use LuaJit instead default Lua 2018-07-05 19:21:53 +08:00
David Walley
9ebcd65634 Update docs/source/reference/documentationHowTo.rst 2018-07-05 10:58:52 +00:00
Bret Curtis
b36bd75b59
Merge pull request #1792 from Capostrophic/character
Make spellcasting stance transition more smooth (bug #4358)
2018-07-05 11:45:31 +02:00
David Walley
d03f9125e3 Update documentationHowTo.rst - extend to integrate GitLab into PyCharm
A subsequent MR will suggest moving most of this to a separate document for intermediate-level contributors, and replacing it with much simpler instructions for beginners - basically edit directly on GitLab as suggested by Psi29a on the forum here - https://forum.openmw.org/viewtopic.php?f=43&p=56458#p56457
2018-07-05 08:45:09 +00:00
David Cernat
32ad8ef2f0 [General] Fix incorrect capitalization in ObjectMove directives 2018-07-05 06:07:10 +03:00
David Cernat
bbb461a5e5 [General] Make sure data in guiMessageBox is compressed 2018-07-05 02:56:32 +03:00
David Cernat
7010575075 [Server] Return -1 in GetObjectSummonerPid() when the player is invalid 2018-07-05 02:05:10 +03:00
Capostrophic
5bc073603e
Update changelog 2018-07-05 01:59:14 +03:00
Capostrophic
faf3e9ba5a Make spellcasting stance transition more smooth (fixes #4358)
If a movement animation was identical to the previous one that was played, restart it from the point the previous animation ended
2018-07-05 01:57:34 +03:00
Doc West
9bfa01c579 Changed the way the revert command works: it now clones the changed record and uses the new RecordBase::revert() method to restore the previous value
Added Flag_Dialogue_Refresh to var type and var value columns so that sub views update properly
2018-07-05 00:37:19 +02:00
David Cernat
76731f5def [Client] Don't remove SummonKeys with actorIds of -1
This prevents summon duplication caused by a SummonKey sometimes being deleted immediately after being created, before the server can send back an ObjectSpawn packet spawning a creature that can be attached to the SummonKey.
2018-07-05 01:11:45 +03:00
Doc West
3cbbbeceb4 Updated change log 2018-07-04 23:25:24 +02:00
Doc West
bf49a3e760 Use setData() instead of emtitting dataChanged() which does not work on CI. Also Fixes the remaining issue with subviews not updating due to only the modified flag emitting a change, which prevented the widget mapper from working for updates. 2018-07-04 23:22:15 +02:00
Doc West
96cf2cbd05 Notify views of changes of all cells in a row to properly update the row after revert 2018-07-04 22:37:10 +02:00
Doc West
1c1b5986e9 Updated change log 2018-07-04 22:05:07 +02:00
Doc West
5d38160239 Updated change log 2018-07-04 22:03:42 +02:00
Doc West
2c39dba83b Updated change log 2018-07-04 22:01:45 +02:00
Doc West
baf21362e1 Fixed undo / redo actions losing their shortcuts 2018-07-04 21:47:16 +02:00
Doc West
414f626309 Implemented search case sensitivity 2018-07-04 21:03:54 +02:00
David Cernat
c2411982d2 [Client] Log object refNumIndexes and mpNums in a consistent way 2018-07-04 21:54:11 +03:00
Bret Curtis
2ff9dc34a4 Merge branch 'win10_ci' into 'master'
see if we can get win10 going

See merge request OpenMW/openmw!8
2018-07-04 16:54:28 +00:00
Bret Curtis
d4d46fc602 Build everything but branches until we can allow VM/CIs to run on forked projects. 2018-07-04 16:51:57 +00:00
Bret Curtis
739c49d59b Merge branch 'master' into 'win10_ci'
# Conflicts:
#   CI/before_script.msvc.sh
2018-07-04 15:21:45 +00:00
AnyOldName3
8c153d116b
Merge pull request #1786 from OpenMW/CI_before_script_msvc_fixes
Update before_script.msvc.sh to add GitLab CI support and update dependency links
2018-07-04 15:44:25 +01:00
David Cernat
7775780ad7 [Cllient] Update multiplayer code for handling quick keys 2018-07-04 05:56:10 +03:00
David Cernat
3438061b55 [Server] Add script function for getting a summoner's pid
Additionally, fix typos in the comments for other script functions relating to summoners.
2018-07-04 04:26:44 +03:00
David Cernat
8a23a96da4 [Client] Update initialization of AiFollow packages in multiplayer code 2018-07-04 04:00:12 +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
Koncord
79903c455c [General] Allow different types for vectorContains 2018-07-04 01:31:45 +08:00
Bret Curtis
57e2573593
Update before_script.msvc.sh
check if temp directory exists, error out and warn user about it.
2018-07-03 15:59:51 +02:00
Bret Curtis
70e9d5c0a0 ; it? 2018-07-03 13:53:13 +00:00
Bret Curtis
11030e56c4 detect existing dir 2018-07-03 13:41:06 +00:00
Bret Curtis
4f07ca28a6 Try passing the _real_ windows dir to innoinstaller, then using the linux-like directory for mv. 2018-07-03 13:00:19 +00:00
Bret Curtis
d4c9586bd0 try just converting the \ to a / 2018-07-03 12:53:30 +00:00
Koncord
1f4e6e9114 [General] Add integrity checks to Handshake packet 2018-07-03 18:41:03 +08:00
Koncord
f9ff5f10df [General] Reduce packets size and add integrity checks 2018-07-03 18:41:03 +08:00
Koncord
fa2bf0663e [General] Simplify vectorContains 2018-07-03 18:41:03 +08:00
Marc Zinnschlag
908af3720f Merged pull request #1791 2018-07-03 09:37:51 +02:00
Marc Zinnschlag
47d0321366 updated credits file 2018-07-03 09:09:48 +02:00
Marc Zinnschlag
2a367a0c35 updated changelog 2018-07-03 09:09:05 +02:00
Marc Zinnschlag
e50c3657b3 Merged merge request !16 2018-07-03 09:05:59 +02:00
Marc Zinnschlag
9a88f9147e Merged merge request !15 2018-07-03 08:59:57 +02:00
Doc West
e9cc697b60 Sort EnumDelegate values by name 2018-07-03 00:52:23 +02:00
David Cernat
3aa125ceda [Server] Add script functions for getting a summoner's refId and indexes 2018-07-03 00:54:08 +03:00
Koncord
53346e2663 [Client] Return 0 if effect not found 2018-07-03 03:43:38 +08:00
Koncord
c5c1a160b2 [Client] Comment out an unused variable 2018-07-03 03:35:48 +08:00
Koncord
c69819e0db [General] Change type of refNumIndex & mpNum to unsigned 2018-07-03 03:34:30 +08:00
Koncord
99158beb2e [General] Change effectCount type to unsigned 2018-07-03 03:32:46 +08:00
Koncord
895634cd16 [General] Change type of MpNum to "unsigned int" 2018-07-03 03:25:54 +08:00
Koncord
779f2a564d [General] Change "unsigned long" to uint32_t for cross platform compatibility 2018-07-03 03:04:41 +08:00
Koncord
23684489da [General] Fix clang-tidy warning
Converting integer literal to bool, use bool literal instead
2018-07-03 02:50:21 +08:00
Koncord
7639db02f3 [General] RW functions return true on success 2018-07-03 02:28:20 +08:00
Koncord
45c7c3a0b6 [General] Add integrity checks to PacketPreInit 2018-07-03 02:21:36 +08:00
Koncord
d999cc0d55 [General] Add packetValid flag to packets 2018-07-03 02:06:52 +08:00
Koncord
695fb7d4a7 [General] Reorder RW(string) arguments
Change limit of default max string size to 64 KiB
2018-07-03 01:12:59 +08:00
David Cernat
f9ebe400f7 [Server] Add script function for checking if object's summoner is player 2018-07-02 18:32:42 +03:00
Koncord
d162f6fd3a [General] Explicitly use limitations of the master server 2018-07-02 23:29:07 +08:00
Koncord
a48d5b48ef [General] Add maxSize parameter to RW(std::string)
Minor type changes
2018-07-02 23:19:39 +08:00
Koncord
62877f38b7 [General] Remove Terra support
Use LuaJIT instead.
2018-07-02 23:07:09 +08:00
Koncord
685a80887b Remove Pawn support 2018-07-02 23:00:35 +08:00
Andrei Kortunov
f4330cf057 Editor: limit FPS in 3D preview windows (feature #3641) 2018-07-02 12:20:34 +04: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
David Cernat
bef53749ed [General] Replace BaseObject's hasMaster variable with isSummon
Additionally, add a GetObjectSummonState() script function to the server.
2018-07-02 02:25:06 +03:00
David Cernat
8ce225b1cc [Client] Use the casters of damage-dealing spells as death reasons 2018-07-02 00:42:32 +03:00
Marc Zinnschlag
aa5ddd6b28 Merged merge request livestreamer https://www.twitch.tv/vanguardlx best 2018-07-01 15:25:38 +02: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
David Cernat
958b220835 [General] Send summon duration to server in ObjectSpawn packets 2018-07-01 00:43:29 +03:00
Marc Zinnschlag
3660d55adf updated credits file 2018-06-30 10:21:10 +02:00
Marc Zinnschlag
362798bd90 updated changelog 2018-06-30 10:20:12 +02:00
Marc Zinnschlag
2ea85d0bb6 Merge remote-tracking branch 'gl_finbar-crago/fix_quickkey_segfalt' 2018-06-30 10:17:05 +02:00
Bret Curtis
af75c1e909
Update before_script.msvc.sh
reverting back to what works
2018-06-30 08:40:21 +02:00
Bret Curtis
dcb2ab80f5
Merge pull request #1788 from Capostrophic/armorcond
Make unarmed creature attacks not affect armor condition (bug #2455)
2018-06-30 08:39:06 +02:00
Bret Curtis
4d60fe5a76 reverting back 2018-06-30 06:10:26 +00:00
Finbar Crago
09c9bd34c3 cleanup more unnecessary struct keywords... 2018-06-30 12:43:50 +10:00
Bret Curtis
b8b07b52f0 try this... 2018-06-29 22:42:12 +00:00
Bret Curtis
4177fd04eb
Update before_script.msvc.sh
Does it blend?
2018-06-29 21:08:42 +02:00
Bret Curtis
209359bbc3 Try this on for size... 2018-06-29 19:07:39 +00:00
Bret Curtis
78a3f95ee4 Update before_script.msvc.sh 2018-06-29 18:03:25 +00:00
Bret Curtis
2bf0d598cf
Update before_script.msvc.sh
Wrap in quites
2018-06-29 20:01:35 +02:00
Capostrophic
6e9c08083d
Add missing empty attacker checks 2018-06-29 20:35:45 +03:00
Capostrophic
bccba24c40 Make unarmed creature attacks not affect armor condition (fixes #2455) 2018-06-29 20:18:28 +03:00
Bret Curtis
9b6ea0e89f # because our CI VMs are not public, MRs can't use them and timeout 2018-06-29 15:15:29 +00:00
Bret Curtis
d3dfe17441 try limiting scope 2018-06-29 15:13:06 +00:00
Finbar Crago
69cd7031e7 Merge branch 'master' into fix_quickkey_segfalt 2018-06-29 23:46:36 +10:00
Finbar Crago
596be205c1 cleanup unnecessary struct keywords... 2018-06-29 23:43:51 +10:00
Bret Curtis
06216aa124 Update .gitlab-ci.yml 2018-06-29 13:36:00 +00: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
Bret Curtis
c474709127
Update before_script.msvc.sh 2018-06-29 15:26:11 +02:00
Bret Curtis
ca0f6fff4a Update before_script.msvc.sh 2018-06-29 13:25:36 +00:00
Bret Curtis
dc48a46e50 Update before_script.msvc.sh 2018-06-29 13:22:07 +00:00
Bret Curtis
a6d6dd5995 updating for the nits 2018-06-29 13:17:19 +00:00
Bret Curtis
8811c7141a
Update before_script.msvc.sh
taking nits into account :)
2018-06-29 15:14:23 +02:00
Marc Zinnschlag
a45d86bdf3 Merge remote-tracking branch 'gl_thunderforge/4479/separate-game-advanced-settings-in-launcher-take-2' 2018-06-29 12:55:55 +02:00
Marc Zinnschlag
f06dd39892 Merge remote-tracking branch 'upstream/master' 2018-06-29 12:52:54 +02:00
Bret Curtis
c2ff30c4d7 correcting from GH/AV feedback, testing on GL. 2018-06-29 09:33:51 +00:00
Bret Curtis
a532aef935
Update before_script.msvc.sh
updating version check and correct indentation, wrap BOOST_SDK in "" to support dirs with spaces.
2018-06-29 11:31:37 +02:00
Bret Curtis
4c0e475092
Update before_script.msvc.sh
Use powershell trick with boost_temp so there is little chance of collision.
2018-06-29 10:16:28 +02:00
Bret Curtis
bccd83c656 Use 1.67 2018-06-29 08:09:41 +00:00
Bret Curtis
bc830a9c45 use boost_temp 2018-06-29 08:00:54 +00:00
Bret Curtis
63bbc77ee7 try using the powershell trick from AnyOldName3 2018-06-29 07:51:45 +00:00
Finbar Crago
7ae388086b Merge branch 'master' into fix_quickkey_segfalt 2018-06-29 12:34:53 +10:00
Thunderforge
72f6b1a693 Separating "Game" Advanced Settings into "Game Mechanics" and "User Interface" 2018-06-28 20:13:18 -05:00
Bret Curtis
3379eafd33 Update before_script.msvc.sh 2018-06-28 20:44:22 +00:00
Bret Curtis
3ceb9116de Give pwd -W a try 2018-06-28 20:28:58 +00:00
Finbar Crago
ed71656ea6 fix updateActivatedQuickKey() crash
keyboard numbers don't start at zero...
2018-06-29 01:58:57 +10:00
Bret Curtis
c4a4111b2e Update before_script.msvc.sh 2018-06-28 15:33:32 +00:00
Bret Curtis
fb6ad9faec try %TMP% ? 2018-06-28 15:23:56 +00:00
Bret Curtis
4ad3d66629 try using just ${TMP} 2018-06-28 14:18:58 +00:00
Bret Curtis
8be52d228e
Update before_script.msvc.sh
small fixes
2018-06-28 15:12:26 +02:00
Finbar Crago
24d5fb09da fix crash on simultaneous key presses 2018-06-28 22:55:02 +10:00
Bret Curtis
60ec340fa3 remove toolset_real, use just toolset, do proper comparison 2018-06-28 12:18:01 +00:00
Bret Curtis
71314f0c3a Use boost 1.67 instead of 1.61 2018-06-28 12:03:52 +00:00
Bret Curtis
46575d8de7
Update before_script.msvc.sh
1.61 -> 1.67
2018-06-28 14:01:41 +02:00
Bret Curtis
660193ae1b
Update before_script.msvc.sh
This has working GL Win10 MSVC updates, should be cross-compatible with appveyor.
2018-06-28 13:59:23 +02:00
Bret Curtis
1c4363eaa6 Using SYSTEMDRIVE because TEMP apparently means something different in bash then to windows cmd. 2018-06-28 11:22:54 +00:00
Bret Curtis
7bf502dd02 Bash it out! 2018-06-28 11:09:27 +00:00
Bret Curtis
1061270ac0 Try using @TEMP@ instead of hard coding it. 2018-06-28 11:05:10 +00:00
Bret Curtis
45d77372a0 with 260 char path fixed, this should work. 2018-06-28 10:41:12 +00:00
Bret Curtis
2d70c94733 gather up everything with 7zip 2018-06-28 09:05:39 +00:00
Bret Curtis
f07d50e5bf
Merge pull request #1785 from akortunov/warnfix
Fix some GCC warnings
2018-06-28 10:33:51 +02:00
Bret Curtis
102266d08d
Merge pull request #1784 from nikolaykasyanov/revert-sdl-get-attribute
Revert "Retrieve SDL window settings instead of using magic numbers"
2018-06-28 10:28:49 +02:00
Bret Curtis
a8adb9374b use quotes 2018-06-28 08:24:34 +00:00
Finbar Crago
d790a27060 Merge branch 'master' into fix_quickkey_segfalt 2018-06-28 18:16:00 +10:00
Bret Curtis
7cd0235fed Try creating a zip and archiving it. 2018-06-28 07:56:40 +00:00
Andrei Kortunov
d9a1de0ec7 Do not use deprecated function 2018-06-28 11:13:32 +04:00
Andrei Kortunov
5455490ad2 Avoid fall-through in spell selection 2018-06-28 11:12:48 +04: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
9102df7fde [General] Make WorldCollisionOverride also work with specific refIds
For now, this only makes it possible to enforce collision for specific refIds for placed objects.
2018-06-28 04:53:00 +03:00
David Cernat
c7f10892a9 [General] Add vectorContains util for checking strings in vectors 2018-06-28 04:50:01 +03:00
David Cernat
84af9d9999 [Server] Reorder world map script functions 2018-06-28 03:48:16 +03: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
Bret Curtis
83e23ee6fd gather up artifacts and use all processors available 2018-06-27 20:45:51 +00:00
Nikolay Kasyanov
5fcb091127 Replace FIXME with a detailed explanation of the issue 2018-06-27 22:40:09 +02:00
Bret Curtis
f17426cbcd give boost 1.67 a spin with msvc 14.1 2018-06-27 20:24:08 +00:00
Nikolay Kasyanov
9c78364c45 Revert "Merge pull request #1771 from Xenkhan/master"
This reverts commit 9667dd051c, reversing
changes made to f52e06fc19.
2018-06-27 22:19:09 +02:00
David Cernat
7ffdb18bf9 [General] Implement ActorDeath packet, part 1
ActorDeath packets are sent for dead actors before their StatsDynamic packets. They contain the actor's deathReason in a manner similar to that of PlayerDeath packets.

A future commit will replace the deathReason with a variable named killer which will be an mwmp::Target.
2018-06-27 21:47:55 +03:00
Bret Curtis
8511f2398a try a set and call? 2018-06-27 16:53:27 +00:00
Bret Curtis
df23e0f857 Try calling it directly 2018-06-27 16:39:45 +00:00
Bret Curtis
bd602847b5 fix broken QT 5.7.0 link 2018-06-27 15:07:53 +00:00
Bret Curtis
59a4251a6a try to extract boost higher up in dir, then move. 2018-06-27 14:36:20 +00:00
Bret Curtis
609d6a1b29 bad syntax 2018-06-27 14:05:05 +00:00
Bret Curtis
b6fc204dd3 be more aggressive about suppressing message boxes 2018-06-27 14:02:30 +00:00
Bret Curtis
f7e1083ba4 get more output from boost 2018-06-27 13:34:37 +00:00
Bret Curtis
da5d7afe22 Update .gitlab-ci.yml 2018-06-27 13:25:23 +00:00
Bret Curtis
6751a7991d Update .gitlab-ci.yml 2018-06-27 12:36:12 +00:00
Bret Curtis
2d5f71e5be Update .gitlab-ci.yml 2018-06-27 12:35:02 +00:00
Bret Curtis
edd22342f2 Update .gitlab-ci.yml 2018-06-27 12:32:18 +00:00
Bret Curtis
218353e452 Update .gitlab-ci.yml 2018-06-27 12:19:03 +00:00
Bret Curtis
0105a48a4f give %% a try 2018-06-27 12:15:29 +00:00
Bret Curtis
6d1a83e667 Update .gitlab-ci.yml 2018-06-27 12:10:09 +00:00
Bret Curtis
51179a2c38 try a wildcard? 2018-06-27 12:01:51 +00:00
Bret Curtis
1fdffd6ef9 see if we can get win10 going 2018-06-27 13:57:51 +02:00
Bret Curtis
87d9a4ff0b Merge branch 'zini_updates' into 'master'
last minute updates from zini

See merge request OpenMW/openmw!7
2018-06-27 11:33:01 +00:00
Marc Zinnschlag
520e65f822 last minute updates from zini 2018-06-27 13:32:08 +02:00
Marc Zinnschlag
5ee731d86f updated roadmap section 2018-06-27 12:33:23 +02:00
Marc Zinnschlag
8bc6c85396 last minute changes (this time for real; forgot to merge in the last update from the private repo) 2018-06-27 12:24:21 +02:00
Bret Curtis
f64d949169
Merge pull request #1780 from akortunov/persistanims
Ignore movement from scripted animations
2018-06-27 12:18:48 +02:00
Marc Zinnschlag
8cda355af6 last minute changes to design doc 2018-06-27 12:14:34 +02:00
Marc Zinnschlag
2afcea3870 added post-1.0 design document 2018-06-27 11:59:40 +02:00
Andrei Kortunov
ec73011617 Clean temporary storage if we assign new AI package (bug #4464) 2018-06-27 12:52:43 +04:00
Andrei Kortunov
ee45f54b53 Refactor AiTemporaryStorage usage 2018-06-27 12:48:34 +04:00
Andrei Kortunov
3c7ab976c3 Ignore movement from scripted animations (bug #4475) 2018-06-27 08:22:45 +04:00
Finbar Crago
cac6d59140 Merge branch 'master' into fix_quickkey_segfalt 2018-06-27 12:58:43 +10:00
David Cernat
15bfa30070 [Server] Make it possible to resend received worldstates 2018-06-27 02:00:16 +03:00
David Cernat
7060ff59c5 [Client] Enforce the default global map cell size in multiplayer 2018-06-27 01:23:48 +03:00
David Cernat
fec500c4b0 [Client] Reduce container debug spam by requiring VERBOSE logging for it 2018-06-26 23:40:19 +03:00
Bret Curtis
26615d588e Merge branch 'multi_build' into 'master'
Multi build

See merge request OpenMW/openmw!4
2018-06-26 19:45:49 +00:00
Bret Curtis
4d6ca2c387 preserve dmg artifact 2018-06-26 17:45:20 +00:00
Bret Curtis
9e7731259d what if we try make -j2 package ? 2018-06-26 15:40:06 +00:00
Bret Curtis
cfcd9c3fc6 What happens when we don't make install? 2018-06-26 15:36:53 +00:00
Bret Curtis
dd60b8f179 only delete files inside OpenMW.app dir 2018-06-26 15:18:18 +00:00
Bret Curtis
c1aee49b76 clean up after our previous build. 2018-06-26 15:09:51 +00:00
Bret Curtis
06eb9539bd Let make install do it's thing, it's more reasonable on macos and let's only archive that. 2018-06-26 14:51:55 +00:00
Bret Curtis
e068ee3533 tell unzip to overwrite all files 2018-06-26 14:01:10 +00:00
Bret Curtis
9e2c6d9fe1 actually step into the build directory and build! 2018-06-26 13:57:13 +00:00
David Cernat
914b79fcc9 [General] Make it possible to check which placed objects have containers 2018-06-26 16:56:08 +03:00
Bret Curtis
308d78e3da only download via curl if file on server is different than what is currently cached on VM. 2018-06-26 13:54:37 +00:00
Bret Curtis
ae4cb0c3ee no need for macos_qt_formula since on osx there is no more qt4, just qt5 2018-06-26 13:50:45 +00: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
Marc Zinnschlag
baeaff2309 Merged pull request #1778 2018-06-25 11:57:45 +02:00
Bret Curtis
a0cae78cb2
Merge pull request #1779 from akortunov/coverity
Fix some code coverity issues
2018-06-25 10:33:07 +02:00
Andrei Kortunov
97d8cc0efe Check if the local was not found, just for sure 2018-06-25 11:21:00 +04:00
Andrei Kortunov
7dff8d8fe2 Check cell for null 2018-06-25 10:26:58 +04: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
Andrei Kortunov
359e748c28 Initialize some missing fields in constructors 2018-06-25 09:35:42 +04:00
David Cernat
f20f94a886 [Documentation] Update credits 2018-06-25 05:17:33 +03:00
David Cernat
deda6ec071 [Client] Don't send WorldMap packets for already explored map tiles 2018-06-25 02:34:11 +03:00
Bret Curtis
d008cd0c46 Update .gitlab-ci.yml 2018-06-24 21:26:53 +00:00
Bret Curtis
87f367ec11 Update .gitlab-ci.yml 2018-06-24 17:52:57 +00:00
Capostrophic
d6a170f848
Update changelog 2018-06-24 14:58:54 +03:00
Capostrophic
ecafcefae9
Fall back to regular head when getVampireHead fails 2018-06-24 14:39:48 +03:00
Bret Curtis
f1158e8129 Update .gitlab-ci.yml 2018-06-23 13:50:58 +00:00
Bret Curtis
55de1c1a72 Update .gitlab-ci.yml 2018-06-23 13:22:20 +00:00
David Cernat
d53bd05424 [General] Use slightly larger maximum imageData size in WorldMap packets 2018-06-23 14:37:47 +03:00
Capostrophic
afbe8f2161
Update changelog 2018-06-23 14:29:15 +03: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
Bret Curtis
40a9d8ac06 Update .gitlab-ci.yml 2018-06-23 07:19:05 +00:00
David Cernat
5bb2ba1e9e [General] Limit maximum imageData size in WorldMap packets 2018-06-23 02:33:34 +03:00
Bret Curtis
c2826ca878 Update .gitlab-ci.yml 2018-06-22 16:41:20 +00:00
Bret Curtis
393ec99944 Update .gitlab-ci.yml 2018-06-22 15:29:27 +00:00
Bret Curtis
88555c0463 Update .gitlab-ci.yml 2018-06-22 15:20:38 +00:00
Bret Curtis
601b69b36c Update .gitlab-ci.yml 2018-06-22 15:14:09 +00:00
Bret Curtis
dcba3a1058 Update .gitlab-ci.yml 2018-06-22 15:13:09 +00:00
Bret Curtis
516fc0283b Update .gitlab-ci.yml 2018-06-22 15:07:39 +00:00
Bret Curtis
64cc3b3a6a
Merge pull request #1774 from nikolaykasyanov/ci-macos-1013
[macOS, CI] Build using macOS 10.13 SDK
2018-06-22 10:21:00 +02:00
David Cernat
9888316d8e [Documentation] Update credits 2018-06-21 23:26:24 +03:00
Bret Curtis
9667dd051c
Merge pull request #1771 from Xenkhan/master
Retrieve SDL window settings instead of using magic numbers
2018-06-21 22:22:42 +02:00
Bret Curtis
a55583a395
Merge branch 'master' into master 2018-06-21 22:22:01 +02:00
Xenkhan
f0acc64544
Update changelog 2018-06-21 15:04:04 -05:00
Marc Zinnschlag
f52e06fc19 Merge branch 'glsl-editorconfig' into 'master'
Update .editorconfig to include GLSL

See merge request OpenMW/openmw!3
2018-06-21 18:29:31 +00:00
AnyOldName3
d1736ad0c8 Update .editorconfig to include GLSL 2018-06-21 14:23:30 +00:00
David Cernat
7e90d1f2a4 [Client] Fix interior-to-exterior and v.v. cell transitions for actors
Make sure only players who are cell authorities can get actors to teleport across cells for them, and display a message box for players who are not cell authorities.
2018-06-21 16:44:49 +03:00
Xenkhan
405a0caf29
Remove unneeded whitespace 2018-06-20 13:56:00 -05:00
Xenkhan
5a4817c147
Get rid of reinterpret_cast<> 2018-06-20 13:33:59 -05:00
Nikolay Kasyanov
90ccf5b42b [macOS, CI] Build using macOS 10.13 SDK 2018-06-20 19:59:55 +02:00
Marc Zinnschlag
22eb037c18 Merged pull request #1773 2018-06-20 19:08:50 +02:00
Bret Curtis
6655b7e512
Merge pull request #1740 from nikolaykasyanov/software-cursor-decompression
Decompress cursors using SDL software renderer on Mac or if OSG >= 3.5.8 or if OPENMW_DECOMPRESS_TEXTURES is set
2018-06-20 17:19:48 +02:00
Bret Curtis
9cf815505b
formatting 2018-06-20 16:21:23 +02:00
Marc Zinnschlag
4e121a7434 updated credits file 2018-06-20 16:17:47 +02:00
Marc Zinnschlag
c90996f991 Merged merge request !1 2018-06-20 16:16:34 +02:00
Marc Zinnschlag
6315848620 Merged merge request !2 2018-06-20 16:02:54 +02:00
Nikolay Kasyanov
65ec58a669 Move the changelog entry to 0.44.0 2018-06-20 15:43:55 +02:00
Bret Curtis
b619c0de2d
Merge pull request #1772 from akortunov/deathanim
Fast-forward death animation to end if death animation was finished earlier
2018-06-20 13:28:36 +02:00
Andrei Kortunov
c195144b17 Take transformation from first node with given name in file (bug #4469) 2018-06-20 14:24:32 +04:00
Atahualpa
c0fc615cd6 Adds the option to ignore "Base" records when running the verifier. (fixes #4466)
Improves previous commit:
1. Initialise mIgnoreBase boolean member with FALSE.
2. Remove isBaseOnly() function and replace with direct use of Record member.
2018-06-20 11:29:38 +02:00
Bret Curtis
664edc5a39
Merge pull request #1757 from akortunov/musicfix
Handle exception when try to load non-music file
2018-06-20 11:18:50 +02:00
Andrei Kortunov
c9756cee4c Fast-forward death animation to end if death animation was finished earlier (regression #4468) 2018-06-20 12:37:58 +04:00
Bret Curtis
3ebebdf3c1
Merge pull request #1751 from wareya/terrainbleeding
Fix #4452
2018-06-20 10:20:11 +02:00
Bret Curtis
f3923a41c0
Merge pull request #1770 from Capostrophic/open
Make Open spells casted by anything trigger player crime event (bug #4461)
2018-06-20 09:44:45 +02: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
David Cernat
c3c7f2c8f9 [Server] Don't automatically synchronize ObjectDelete packets 2018-06-20 02:00:12 +03:00
Atahualpa
9d61d76e92 Adds the option to ignore "Base" records when running the verifier. (fixes #4466)
Adds a boolean setting to the user preferences. This setting is locally saved to all OpenMW-CS check stages. When a verification is done, the setting is updated on setup for each check stage. If set to true, the boolean value is then used to skip the verification process for every base record - minus some special cases where, e.g., counters are to be set first.

Related issue:
- Fixes #4466: Editor: Add option to ignore base records when running verifier (https://gitlab.com/OpenMW/openmw/issues/4466)

Tests:
The changes were successfully tested in OpenMW-CS by creating faulty "Base" and "Modified" records for every record type (if possible) and, then, running the verifier with and without the option respectively.
2018-06-20 00:20:03 +02:00
Xenkhan
24ddb66af9
Retrieve SDL window settings instead of using magic numbers 2018-06-19 15:03:30 -05:00
Capostrophic
6c23caadd7 Fix crash when a target in a different cell is (un)locked 2018-06-19 20:43:18 +03:00
Adam Bowen
0d70cb9473 Re-link bugtracker links to Gitlab
* Link "1.0" issues to the "1.0" tag
* Link "report a bug" to the issues page
* Link "known issues" to the "Bug" tag
2018-06-19 15:45:04 +00:00
Capostrophic
0731d79c09
Update changelog 2018-06-19 17:06:31 +03:00
Capostrophic
0c4fa55f16 Make Open spells casted by anything trigger player crime event (fixes #4461) 2018-06-19 17:04:38 +03:00
Marc Zinnschlag
101f0b1579 Merge remote-tracking branch 'upstream/master' 2018-06-19 13:46:03 +02:00
Bret Curtis
975597bac9
Merge pull request #1766 from rhtucker/master
Started migrating installation guide from the wiki.
2018-06-19 13:44:06 +02:00
Bret Curtis
c1eb9042b3
Merge branch 'master' into terrainbleeding 2018-06-19 13:40:14 +02:00
Marc Zinnschlag
7cfb7063c2 Merged pull request #1767 2018-06-19 13:30:10 +02:00
Marc Zinnschlag
7be069fcd2 Merged pull request #1743 2018-06-19 13:29:20 +02:00
Marc Zinnschlag
f275e657f6 Merged pull request #1761 2018-06-19 13:27:56 +02:00
Andrei Kortunov
5fd3ec1035 Implement unlockable locks with 'lock 0' console command 2018-06-19 14:17:33 +04:00
Marc Zinnschlag
a8ad530db9 Merged pull request #1749 2018-06-19 11:33:08 +02:00
Marc Zinnschlag
2a52ade219 Merged pull request #1760 2018-06-19 11:26:41 +02:00
David Cernat
aa3639f2da
Merge pull request #450 from TES3MP/0.6.2
Add 0.6.2 commits up to 19 Jun 2018
2018-06-19 05:26:38 +03:00
David Cernat
5b461b09ca [Client] Display error when receiving ID_INCOMPATIBLE_PROTOCOL_VERSION 2018-06-19 05:24:26 +03:00
David Cernat
29be79e852 [General] Switch RakNet enums to CrabNet enums
CrabNet is TES3MP's fork of RakNet that has deviated too far from RakNet to still be compatible with it.
2018-06-19 00:37:52 +03:00
rhtucker
fe86e7ffc7
Fixed inconsistent use of "since" 2018-06-18 12:49:48 -07:00
Bret Curtis
1c7d5c68c5 Update CHANGELOG.md, technically solved by moving from redmine over to gitlab. 2018-06-18 09:07:34 +00:00
Capostrophic
0cf2f6452b Update changelog 2018-06-18 03:27:31 +03:00
Capostrophic
8376c8c68e Allow partial matches in NotCell condition (fixes #4459) 2018-06-18 03:27:31 +03:00
Bret Curtis
e93104a6b3
Merge pull request #1758 from Capostrophic/screenshot
Remove screenshot taken message again
2018-06-17 22:26:00 +02:00
Bret Curtis
70dec71c00
Merge pull request #1763 from akortunov/activatedoor
Forbid actors to use teleporting doors
2018-06-17 10:13:16 +02:00
Bret Curtis
3cc6da1db2
Update door.cpp
typo fix
2018-06-17 10:13:03 +02:00
Bret Curtis
88bf74b2a3
Merge pull request #1765 from akortunov/wanderfix
Fix arguments parsing for AiWander console command
2018-06-17 10:00:57 +02:00
Bret Curtis
3f2dbdc8a8
Merge branch 'master' into wanderfix 2018-06-17 10:00:38 +02:00
Bret Curtis
ecfc5fcd63
Merge pull request #1764 from akortunov/lightfix
Ignore lights without CanCarry flags when NPC selects torch
2018-06-17 08:40:50 +02:00
Ryan Tucker
7e23e6586b Put together most of the informal guide on contributing to documentation. 2018-06-16 17:10:35 -07:00
Ryan Tucker
c5f5984c09 Started migrating installation guide from the wiki.
Fixed a bunch of errors that popped up on my local build.
2018-06-16 14:44:49 -07:00
Andrei Kortunov
f3f7487664 Fix arguments parsing for AiWander console command (bug #4458) 2018-06-16 22:11:10 +04:00
Andrei Kortunov
e08b0d3070 Ignore lights without CanCarry flags when NPC selects torch (bug #4457) 2018-06-16 17:34:49 +04:00
Nikolay Kasyanov
75d79e98b9 Force software decompression if OPENMW_DECOMPRESS_TEXTURES is set 2018-06-16 12:38:16 +02:00
Andrei Kortunov
2a65aaf5ab Forbid actors to use teleporting doors (bug #2562) 2018-06-16 14:21:28 +04:00
Nikolay Kasyanov
359f87ab9f Change imageToSurface to return a unique_ptr to avoid manual surface cleanup 2018-06-16 12:12:32 +02:00
Bret Curtis
3f88aa46d0
Merge pull request #1759 from Thunderforge/refactor-launcher-sdl
Refactor SDL loading in Launcher to fix macOS errors
2018-06-15 12:58:44 +02:00
Andrei Kortunov
9c3da41130 Add murder bounty when a player follower commits murder (bug #2852) 2018-06-15 14:31:09 +04:00
Marc Zinnschlag
5a9e382efe Merged pull request #1421 2018-06-15 12:23:08 +02:00
Thunderforge
506d615acc Moving csignal import from main to graphicspage 2018-06-14 22:16:35 -05:00
Thunderforge
e51bfb46c6 Adding Changelog records 2018-06-14 19:42:40 -05:00
Thunderforge
7615e78e52 Move SDL initialization from main.cpp to graphicspage.cpp 2018-06-14 19:39:24 -05:00
Capostrophic
1abf749f03
Remove screenshot taken message 2018-06-14 22:08:53 +03:00
Andrei Kortunov
2854f6ca83 Handle exception if we try to play non-music file (bug #4416) 2018-06-14 21:32:40 +04:00
Miloslav Číž
2a23b53515 Merge branch 'drummyfish/openmw-toggleborders' 2018-06-14 15:33:08 +02:00
Miloslav Číž
477e1437d2 Resolve conflicts 2018-06-14 15:30:28 +02:00
Andrei Kortunov
49ba00a3ec Add NPC validation to esmstore (bug #2772) 2018-06-14 16:48:16 +04:00
Miloslav Číž
34f8eca7bd Fix indent 2018-06-14 13:43:32 +02:00
Miloslav Číž
31c68c534c Merge branch 'drummyfish/openmw-toggleborders' 2018-06-14 13:23:23 +02:00
Miloslav Číž
24078d4a72 Update CHANGELOG 2018-06-14 13:22:12 +02:00
Miloslav Číž
ab8de9fa14 Set node mask to cell borders 2018-06-14 13:18:37 +02:00
Miloslav Číž
414e6caafe Make tb work with distant terrain 2018-06-14 13:14:38 +02:00
Miloslav Číž
f18d57429e Move cell border management to World 2018-06-14 12:27:22 +02:00
Miloslav Číž
1b8d500c07 Make tb command work again 2018-06-14 12:01:09 +02:00
Miloslav Číž
1fd5ad3e56 Use REAL_SIZE constant 2018-06-14 01:01:22 +02:00
Bret Curtis
ccfc07e7e3
Merge pull request #1548 from drummyfish/screenshot360
360° screenshots
2018-06-13 23:11:06 +02:00
Miloslav Číž
dd00e438fe Merge branch 'screenshot360' of https://github.com/drummyfish/openmw into screenshot360 2018-06-13 21:35:03 +02:00
Miloslav Číž
7178ee3a6e Add FIXME comment 2018-06-13 21:34:43 +02:00
Miloslav Číž
d629c30fdb
Merge branch 'master' into screenshot360 2018-06-13 21:16:28 +02:00
Miloslav Číž
5387e3ba8f Update CHANGELOG 2018-06-13 21:15:22 +02:00
Bret Curtis
60d2678cff
Merge pull request #1755 from akortunov/master
Add missing changelog entries
2018-06-13 20:58:17 +02:00
Andrei Kortunov
e814843cdb Add missing changelog entries 2018-06-13 22:48:09 +04:00
Marc Zinnschlag
2b35c5efd7 Merge remote-tracking branch 'upstream/master' 2018-06-13 18:13:15 +02:00
Marc Zinnschlag
aea481eacb Merged pull request #1753 2018-06-13 18:12:38 +02:00
Marc Zinnschlag
f62df90960 Merged pull request #1572 2018-06-13 18:11:31 +02:00
Marc Zinnschlag
17db4b4db3 Merged pull request 1754 2018-06-13 18:05:59 +02:00
Bret Curtis
48d74a8781 Disable testing for now, not yet necessary. 2018-06-13 15:34:13 +00:00
Bret Curtis
a275972361 Merge branch 'add_pipeline_badge' into 'master'
Update README.md to indicate that our gitlab pipeline is building

See merge request OpenMW/openmw!1734
2018-06-13 14:59:36 +00:00
Andrei Kortunov
61c968d550 Ignore broken items when search for replacement (bug #4453) 2018-06-13 18:39:02 +04:00
Bret Curtis
45957dd707
Merge pull request #1647 from Capostrophic/fatigue
Improve the logic of trading formulae (bug #2222)
2018-06-13 16:21:45 +02:00
Marc Zinnschlag
7ca56ccd29 set search status bar to 'no results' message when search yields no results 2018-06-13 15:48:24 +02:00
Andrei Kortunov
81b78a82e8 AI: try to open doors every AI_REACTION_TIME seconds (bug #4454) 2018-06-13 17:47:32 +04:00
Bret Curtis
9bd940e153 Update README.md to indicate that our gitlab pipeline is building 2018-06-13 13:06:37 +00:00
Marc Zinnschlag
7d2394273e added statusbar to search window (Fixes #3276) 2018-06-13 14:55:03 +02:00
Bret Curtis
032768a505 try to use as many cores as possible 2018-06-13 12:38:03 +00:00
Bret Curtis
3f4d5598a5 Update README.md to be more generic about OpenMW 2018-06-13 11:55:33 +00:00
Bret Curtis
da37585a8e Update .gitlab-ci.yml so that we only build with -j2 2018-06-13 10:15:07 +00:00
Bret Curtis
559754fa76 try this dance again 2018-06-13 09:31:39 +00:00
Bret Curtis
a49649c313 Try to get it to run and build on my docker instance. 2018-06-13 09:29:30 +00:00
Bret Curtis
674925dfb5 Merge branch 'psi29a-master-patch-17094' into 'master'
what does this give us from a CI perspective?

See merge request OpenMW/openmw!1732
2018-06-13 09:19:01 +00:00
Miloslav Číž
dcfbd554bb Remove try catch block 2018-06-13 11:12:46 +02:00
Bret Curtis
2e2be76e3f Update .gitlab-ci.yml 2018-06-13 08:20:31 +00:00
Bret Curtis
3e4dc31e39
Merge branch 'master' into fatigue 2018-06-13 10:04:32 +02:00
Bret Curtis
a747318c90
Merge branch 'master' into terrainbleeding 2018-06-13 09:20:49 +02:00
Marc Zinnschlag
4c4d4672d4 Merged pull request #1752 2018-06-13 09:06:20 +02:00
Marc Zinnschlag
1ba0317905 Merged pull request #1670 2018-06-13 09:02:31 +02:00
Marc Zinnschlag
48711bbdde Merged pull request #1592 2018-06-13 08:58:06 +02:00
Miloslav Číž
c3d7ee5a9e Resolve merge conflicts 2018-06-13 08:22:37 +02:00
Thunderforge
b37f325126 #4324/Updating Changelog.md 2018-06-12 22:20:16 -05:00
Thunderforge
058cfb553c Adding CFBundleIdentifier to OpenMW's Info.plist file for Macs 2018-06-12 22:18:06 -05:00
wareya
bd4badc153 update changelog 2018-06-12 21:05:12 -04:00
wareya
94f695cffc Fix #4452 and remove dead code 2018-06-12 21:04:27 -04:00
Miloslav Číž
db8aaa74d6 Start cell border debug drawing 2018-06-13 01:48:31 +02:00
Bret Curtis
3c933ebaad Update .gitlab-ci.yml 2018-06-12 19:10:15 +00:00
Bret Curtis
cc396f4dfd Update .gitlab-ci.yml 2018-06-12 19:06:59 +00:00
Nikolay Kasyanov
224b94c0ce Decompress cursors using SDL software renderer on Mac or if OSG >= 3.5.8 2018-06-12 20:32:02 +02:00
Andrei Kortunov
9c45cc7e48 Use player reference instead of pointer 2018-06-12 22:05:00 +04:00
Marc Zinnschlag
a3911f52a0 Merged pull request #1750 2018-06-12 19:15:14 +02:00
Marc Zinnschlag
6114cff842 updated credits file 2018-06-12 19:14:32 +02:00
Marc Zinnschlag
97773697a9 Merge remote-tracking branch 'florianjw/precise-rotations' 2018-06-12 19:05:52 +02:00
Capostrophic
1c8a20a54a Set ok button focus in settings window by default (fixes #4368) 2018-06-12 19:45:43 +03:00
Marc Zinnschlag
565922f9ad naked expressions beginning with the member operator were allowed erroneously outside of the console (Fixes issue #2971) 2018-06-12 17:52:16 +02:00
Marc Zinnschlag
296ad8424e updated changelog 2018-06-12 17:06:09 +02:00
Marc Zinnschlag
8d0f717e72 Merged pull request #1739 2018-06-12 17:04:41 +02:00
Marc Zinnschlag
90febde783 Merged pull request #1742 2018-06-12 17:03:38 +02:00
Marc Zinnschlag
816a1733dc Allow comma after Begin and End script instruction (Fixes #4451) 2018-06-12 15:29:28 +02:00
Bret Curtis
1c736ea064 Update .gitlab-ci.yml 2018-06-12 12:46:19 +00:00
Andrei Kortunov
bce6d79ad3 Add changelog entries, related to animations 2018-06-12 16:19:28 +04:00
Andrei Kortunov
f299be8158 Play scripted animations even if SkipAnim is used 2018-06-12 16:07:36 +04:00
Bret Curtis
a166534226 Update .gitlab-ci.yml 2018-06-12 11:41:19 +00:00
Bret Curtis
dddceba8f2 Update .gitlab-ci.yml 2018-06-12 11:32:37 +00:00
Bret Curtis
e3832cd2e2 Update .gitlab-ci.yml 2018-06-12 11:24:27 +00:00
Bret Curtis
bc0eb3349b Update .gitlab-ci.yml 2018-06-12 10:33:35 +00:00
Andrei Kortunov
25bb7c1826 Make 'PlayGroup idle' to cancel scripted animations 2018-06-12 14:04:03 +04:00
Bret Curtis
e5dff83e38 Update .gitlab-ci.yml 2018-06-12 09:26:42 +00:00
Bret Curtis
a89441e879 Update .gitlab-ci.yml 2018-06-12 09:26:10 +00:00
Bret Curtis
20d8a424d6 Update .gitlab-ci.yml 2018-06-12 09:09:37 +00:00
Andrei Kortunov
0e441d48ac Give scripted animations highest priority (bug #4286) 2018-06-12 12:55:28 +04:00
Bret Curtis
8c4731728c Update .gitlab-ci.yml 2018-06-12 08:41:07 +00:00
Bret Curtis
de1cad86ab Update .gitlab-ci.yml 2018-06-12 08:37:26 +00:00
Bret Curtis
d986354d53 Update .gitlab-ci.yml 2018-06-12 08:30:18 +00:00
Bret Curtis
8714f48ce7 Update .gitlab-ci.yml 2018-06-12 08:22:44 +00:00
Bret Curtis
04dc74a1d6 Update .gitlab-ci.yml 2018-06-12 08:05:30 +00:00
Marc Zinnschlag
3af003d36b Merge branch 'test_update_workflow' into 'master'
Update README.md with an important distinction.

See merge request OpenMW/openmw!1731
2018-06-12 07:57:55 +00:00
Bret Curtis
7502a7dc4d what does this give us from a CI perspective? 2018-06-12 07:52:53 +00:00
Andrei Kortunov
0c92655250 Avoid code duplication in character manager 2018-06-12 11:51:54 +04:00
Andrei Kortunov
e3812f4075 Check creature stats only for actors 2018-06-12 11:27:18 +04:00
Andrei Kortunov
b0a140e714 Disable actor collision only after end of death animation 2018-06-12 10:00:38 +04:00
Andrei Kortunov
ebaa6fb5a2 Play death scream only once 2018-06-12 09:55:43 +04:00
Bret Curtis
5fba1c599b Update README.md with an important distinction. 2018-06-12 05:52:19 +00:00
Andrei Kortunov
0d3f535590 Warn about mod conflicts 2018-06-12 08:57:24 +04:00
Andrei Kortunov
427be928d0 Do not update animation state for dead actors 2018-06-11 23:17:54 +04:00
Andrei Kortunov
977a27ecb7 Do not clear corpses until end of death animation (bug #4307) 2018-06-11 22:29:32 +04: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
a42c663fd7 Do not interrupt scripted animations by death animation (bug #4286) 2018-06-11 18:53:25 +04:00
Andrei Kortunov
d0619cfb35 Play death animation for non-persisting actors with 0 health (bug #4291) 2018-06-11 18:52:20 +04:00
Andrei Kortunov
6099735c60 Early out only when scripted animation is playing 2018-06-11 17:52:58 +04:00
Bret Curtis
e53fb953bc
Merge pull request #1746 from Capostrophic/interrupt
Make WakeUpPC interrupt waiting if it was supposed to be (bug #3629)
2018-06-11 15:20:36 +02:00
Andrei Kortunov
e234dd2a36 Do not interrupt scripted animations 2018-06-11 17:18:51 +04:00
Bret Curtis
23d16dc870
Merge pull request #1745 from Thunderforge/patch-1
Adding Feature #4345 to Changelog.md
2018-06-11 09:29:43 +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
Thunderforge
ab03d238bb
Adding Feature #4345
Implemented as part of #1623, but not added.
2018-06-10 07:43:38 -05:00
Andrei Kortunov
acd3cba5fa Store previous items in the savegame 2018-06-10 16:21:19 +04:00
Andrei Kortunov
9fd2d57b86 Move previous items to player 2018-06-10 16:21:19 +04:00
Andrei Kortunov
f977c6876f Bound items: store item ID instead of pointer 2018-06-10 16:21:19 +04:00
Andrei Kortunov
4de9d9fa77 Split adjustBoundItem() 2018-06-10 16:21:19 +04:00
Andrei Kortunov
d1b1cb748d Reequip previous item only if the expired bound item was equipped 2018-06-10 16:21:19 +04:00
Andrei Kortunov
9b72a6ac69 Use the MWWorld::Ptr() instead of string ID 2018-06-10 16:21:19 +04:00
Andrei Kortunov
0375bedab2 Equip previous item after a bound item expires (bug #2326) 2018-06-10 16:21:19 +04:00
Bret Curtis
926ddcd47e
Merge pull request #1741 from akortunov/master
Do not reset mUpperBodyState for weapon->weapon switch
2018-06-10 11:56:54 +02:00
Marc Zinnschlag
dbc87e7c7d updated changelog 2018-06-10 11:28:22 +02:00
Marc Zinnschlag
25e4c52adf Merged pull request #1744 2018-06-10 11:26:54 +02:00
Thunderforge
a9ca528fb8 Adding version number of macOS build of OpenMW 2018-06-09 19:42:24 -05:00
wareya
7344323b9e remove indentation from blank lines 2018-06-09 10:31:51 -04:00
wareya
8f45b0d53a remove unnecessary conditions 2018-06-09 10:11:43 -04:00
Andrei Kortunov
fba0c155df Fix assertion fail related to NiLookAtController 2018-06-09 17:07:38 +04:00
Andrei Kortunov
ae87e0d3fc Do not reset mUpperBodyState for weapon->weapon switch (regression #4446) 2018-06-09 15:34:08 +04:00
Andrei Kortunov
5ead6353ac Add missing changelog entry 2018-06-09 13:10:44 +04:00
Andrei Kortunov
4ba361fea6 Unhardcode sunset and sunrise settings (bug #1990) 2018-06-09 13:09:17 +04:00
Marc Zinnschlag
7d9de93fd3 Merged pull request #1477 2018-06-09 10:52:35 +02:00
Marc Zinnschlag
551a69f1b1 Merged pull request #1559 2018-06-09 10:51:02 +02:00
Marc Zinnschlag
efb4abbb7f Merged pull request #1623 2018-06-09 10:49:04 +02:00
Marc Zinnschlag
619110ca4c Merged pull request #1737 2018-06-09 10:47:54 +02:00
Marc Zinnschlag
76972bb2f6 Merged pull request #1709 2018-06-09 10:46:02 +02:00
Marc Zinnschlag
6a4cd975b6 Merge remote-tracking branch 'capostrophic/goodbye' 2018-06-09 10:44:14 +02:00
Thunderforge
dfa9968565 Renaming Launcher::DataFilesPage::signalSelectedFilesChanged to signalLoadedCellsChanged 2018-06-08 19:18:23 -05:00
Thunderforge
62c4eb8d6a Explicitly flagging loaded cells changed as queued 2018-06-08 19:16:24 -05:00
wareya
6277f5511c fix #3876 and #3993 2018-06-08 17:52:46 -04:00
Andrei Kortunov
2e6cf2a414 Add changelog entries 2018-06-08 21:54:24 +04:00
Andrei Kortunov
6ed2773299 Do not stack return packages 2018-06-08 21:53:47 +04:00
Andrei Kortunov
74a2cbe696 AI: return back after pursuit 2018-06-08 21:53:47 +04:00
Andrei Kortunov
3d0631cfcc Store last AI package in savegame 2018-06-08 21:53:47 +04:00
Andrei Kortunov
3a0ee78d2b AiTravel: store mHidden flag in savegame 2018-06-08 21:53:47 +04:00
Andrei Kortunov
2f5beb8853 Remove unnecessary hack 2018-06-08 21:53:47 +04:00
Andrei Kortunov
57d686131e Remove redundant condition 2018-06-08 21:53:47 +04:00
Andrei Kortunov
5105c67642 Add mHidden field to AiTravel 2018-06-08 21:53:47 +04:00
Andrei Kortunov
81f29d8dcd AiWander: resume moving to destination after combat 2018-06-08 21:53:47 +04:00
Andrei Kortunov
18ff097e4a Add the parameter to AiSequence::stack() to control ability to cancel other AI packages 2018-06-08 21:53:47 +04:00
Andrei Kortunov
9d27eb197f AiWander: return to initial position only after combat 2018-06-08 21:53:47 +04:00
Bret Curtis
3c2c0960d1
Merge pull request #1734 from MocquillonCedric/windows-cmake-pre3.9-support
Add support for msvc with cmake version pre 3.9 (fixes #4429)
2018-06-08 19:14:01 +02:00
Bret Curtis
61c969e970
Merge branch 'master' into hitboxfix 2018-06-08 18:36:44 +02:00
Capostrophic
b274931165
Revert erroneous changes 2018-06-08 19:18:53 +03:00
Capostrophic
dd2a11b243
Merge branch 'master' into goodbye 2018-06-08 19:16:36 +03:00
Capostrophic
99781ab70c
Fix changelog 2018-06-08 19:15:31 +03:00
Capostrophic
01f12a6bd5
Update changelog 2018-06-08 19:01:48 +03:00
Capostrophic
24c1ee7744 Use relative stat difference for haggling 2018-06-08 19:00:45 +03:00
Capostrophic
b7026df551 Improve the offered price formula (Fixes #2222) 2018-06-08 19:00:45 +03:00
Andrei Kortunov
fed10e87aa Store integer actor ID in AI packages (bug #4036) 2018-06-08 19:57:41 +04:00
Marc Zinnschlag
9d0ce25052 Merged pull request #1738 2018-06-08 17:28:08 +02:00
Cédric
de5a3eaae9 Fix indentation issue: replace tab by spaces 2018-06-08 17:08:44 +02:00
Marc Zinnschlag
7899f44173 Merged pull request #1619 2018-06-08 17:07:38 +02:00
Bret Curtis
6c04cecab1
Merge pull request #1704 from akortunov/per_group_animation
[Feedback needed] Support for per-group KF-animation files
2018-06-08 15:06:43 +02:00
Andrei Kortunov
fea34bd73f Added support for per-group animation files 2018-06-08 17:04:15 +04:00
Capostrophic
0db702dfa7
Update changelog 2018-06-08 15:05:00 +03:00
Capostrophic
11103211c5 Make Goodbye and Choice choices mutually exclusive 2018-06-08 15:03:19 +03:00
Andrei Kortunov
2fada94879 Improve MRK NiStringExtraData handling (bug #4419) 2018-06-08 15:44:35 +04:00
Marc Zinnschlag
53e8882366 updated changelog 2018-06-08 11:44:49 +02:00
Marc Zinnschlag
21ea49fe83 Merge remote-tracking branch 'capostrophic/physics' 2018-06-08 11:43:10 +02:00
Cédric
b784c7873d Update authors 2018-06-08 06:36:43 +02:00
Cédric
4a9b790dbe Update changelog 2018-06-08 06:36:11 +02:00
Cédric
7cafec9861 Add support for msvc with cmake version pre 3.9 (fixes #4429) 2018-06-08 06:34:40 +02: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
Bret Curtis
f8c2caf309
Merge pull request #1735 from akortunov/readmefix
Update AppVeyor build status link
2018-06-07 20:20:08 +02:00
Bret Curtis
c1b7fe4643
Merge pull request #1731 from AnyOldName3/windows-pre-build-error-messages
Add easily understood error messages to the prebuild script instead o…
2018-06-07 20:11:06 +02:00
Bret Curtis
30fd8a4914
Merge pull request #1732 from akortunov/docfix
Use link to OpenMW Wiki page instead of direct NifSkope page
2018-06-07 18:52:39 +02:00
Andrei Kortunov
05026b891e Add changelog entries 2018-06-07 20:42:18 +04:00
Andrei Kortunov
57b2948ee1 Update AppVeyor build status link 2018-06-07 20:34:34 +04:00
Bret Curtis
937cbfa0a1
small commit to rigger AV 2018-06-07 17:09:39 +02:00
Andrei Kortunov
02f1f71221 Use link to OpenMW Wiki page instead of direct NifSkope page 2018-06-07 18:48:49 +04:00
AnyOldName3
a1ab1dc7fe Add easily understood error messages to the prebuild script instead of vague/silent failures. 2018-06-07 15:28:45 +01:00
Andrei Kortunov
6eb531c6ac Add missing changelog entries 2018-06-07 16:22:52 +04:00
Andrei Kortunov
1b9edbe119 Add unequip animation during stance switching (bug #4327) 2018-06-07 16:20:17 +04:00
Andrei Kortunov
bde1d07d4e Use hitboxes and focused object for touch spells (bug #3374) 2018-06-07 16:12:27 +04:00
Andrei Kortunov
4666a6a0ab Use default hit formula as fallback 2018-06-07 16:12:27 +04:00
Andrei Kortunov
9e5d577a71 Aim from center of attacker to center of target 2018-06-07 16:12:27 +04:00
Andrei Kortunov
f5dc9f0162 Use hitbox cone only as fallback 2018-06-07 16:12:27 +04:00
Andrei Kortunov
ab433102a4 Increase hit distance for player by halfExtents 2018-06-07 16:12:27 +04:00
Marc Zinnschlag
fb3facde54 updated changelog 2018-06-07 13:21:14 +02:00
Marc Zinnschlag
7b4a69ff2f Merged pull request #1728 2018-06-07 13:14:53 +02:00
Marc Zinnschlag
362aa23546 Merged pull request #1724 2018-06-07 13:13:48 +02:00
Marc Zinnschlag
2ab31b0c18 Merged pull request #1723 2018-06-07 13:05:20 +02:00
David Cernat
2942bf6455
Merge pull request #445 from OpenMW/master
Add OpenMW commits up to 6 Jun 2018
2018-06-07 13:41:04 +03:00
David Cernat
72862dc255 [General] Turn PlayerMap into WorldMap, now a Worldstate packet 2018-06-07 12:51:45 +03:00
Marc Zinnschlag
98063c5afc updated changelog with last-minute crash-bug fix 2018-06-06 09:50:33 +02:00
David Cernat
a28b27f5d9 Merge pull request #443 from OpenMW/master while resolving conflicts
# Conflicts:
#	README.md
2018-06-05 20:57:50 +03:00
David Cernat
0d0c4ac235 [Client] Use REPLY_TO_REQUEST container sub-action for partial requests 2018-06-05 19:40:39 +03:00
David Cernat
04a2025340 Fix crash when adding items to certain disabled creatures (bug #4441) 2018-06-05 18:09:10 +03:00
David Cernat
83014d6381 [Client] Set actors as the owners of their items when editing containers 2018-06-05 14:55:57 +03:00
David Cernat
bacecc93e3 [Server] Make it possible to resend a received ObjectList of any kind
Additionally, make existing related functions less confusing.
2018-06-05 14:19:06 +03:00
David Cernat
494edbe5cb [General] Add REPLY_TO_REQUEST container sub-action 2018-06-05 14:16:27 +03:00
David Cernat
c24157f6f9 [General] Fix CMakeLists in components for BaseObject 2018-06-05 13:14:52 +03:00
Marc Zinnschlag
7605d928db added section for 0.45 to changelog 2018-06-05 11:03:04 +02:00
David Cernat
8ea9485e6b [Client] Make container debug information more useful 2018-06-05 12:01:16 +03:00
David Cernat
c20a0c72c5 Merge pull request #442 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
2018-06-04 19:34:26 +03:00
Marc Zinnschlag
13f7b53b1c Revert "Don't force DDS file usage (fixes #1392)"
This reverts commit 90f3ff2da4.
2018-06-04 17:08:09 +02:00
Marc Zinnschlag
cd7268e9af Merge remote-tracking branch 'akortunov/effectResistFix' into openmw-44 2018-06-04 16:58:22 +02:00
Marc Zinnschlag
2193983a69 updated changelog 2018-06-04 15:14:35 +02:00
Marc Zinnschlag
cae744161b increased version number 2018-06-04 15:08:22 +02:00
Thunderforge
d46590934a Importing mutex 2018-06-03 16:59:27 -05:00
Thunderforge
e282ece3d1 Fixing bug with autocomplete not loading correctly during startup 2018-06-03 16:58:18 -05:00
Thunderforge
103a7ac628 Using a mutex lock to prevent race conditions 2018-06-03 16:32:12 -05:00
Capostrophic
c14536a399 Update faction-owned items confiscation 2018-06-03 20:28:53 +03:00
Bret Curtis
896825e71d
Merge pull request #1729 from elsid/fix_utf8_encoding
Fix UTF-8 econding
2018-06-03 18:29:54 +02:00
elsid
c71df7249d
Fix UTF-8 econding
To be able run gcovr
2018-06-03 13:46:10 +03:00
Capostrophic
3810ade67a Don't make unnecessary faction ID searches 2018-06-03 12:38:53 +03:00
Capostrophic
191cc76378 Consider faction ownerships in item stolen checks (fixes #4293) 2018-06-03 10:22:20 +03:00
Thunderforge
e26c675829 Changing join to detach so that the thread will not block the UI 2018-06-02 17:29:35 -05:00
Bret Curtis
4a2b973052
Merge pull request #1726 from elsid/fix_catch_warnings
Fix warnings: catching polymorphic type by value
2018-06-02 19:36:04 +02:00
Bret Curtis
2810a87956
Merge pull request #1727 from Capostrophic/refloading
Make weapon durability short unsigned (bug #4435)
2018-06-02 17:42:17 +02:00
Capostrophic
eecde340cf Make weapon health short unsigned (fixes #4435) 2018-06-02 15:44:59 +03:00
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)
                     ^~~~~~~~~~~~
2018-06-02 14:28:46 +03:00
Andrei Kortunov
be394870e4 Fix regressions in spell resistance 2018-06-01 20:08:53 +04:00
Andrei Kortunov
84c8fb9df7 Add pursue package only when crime was reported (bug #4433) 2018-06-01 12:41:31 +04:00
Andrei Kortunov
24863f620b RotateWorld: rotate around world axis (bug #4426) 2018-05-30 16:35:52 +04:00
Bret Curtis
d73c6ebe60
Merge pull request #1721 from akortunov/appveyor
AppVeyor: build with Release configuration
2018-05-29 10:25:02 +02:00
Andrei Kortunov
de2513653e AppVeyor: build with Release configuration 2018-05-28 09:08:30 +04:00
Thunderforge
26dfef7970 Changing where we are loading cells to prevent Qt access issue 2018-05-27 17:15:36 -05:00
Thunderforge
78234e9468 Moving autocomplete code to thread 2018-05-27 16:47:09 -05: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
David Cernat
3efe05a88e [General] Implement WorldCollisionOverride packet 2018-05-27 16:05:40 +03:00
David Cernat
5d30a884ba [Client] Add Worldstate to CMakeLists 2018-05-27 16:00:14 +03:00
David Cernat
e8ec031a81 [Client] Create Worldstate class that inherits BaseWorldstate 2018-05-27 15:57:47 +03:00
scrawl
dbb7277544
Merge pull request #1722 2018-05-27 10:46:08 +00:00
scrawl
31ea7c8edd
Revert "set rebalance soul gem values to true by default"
This reverts commit 2963524a01.
2018-05-27 10:43:31 +00:00
Thunderforge
c2fff61ccd Changing so that data changes happen only after the addon is checked 2018-05-26 20:35:28 -05:00
Capostrophic
7e38bb8513 Verifier: improve handling of class name and description 2018-05-26 22:37:02 +03:00
scrawl
cfdf99f601
Revert "Merged pull request #1573"
This reverts commit 7324bd368f, reversing
changes made to 810e4416f6.
2018-05-26 11:39:30 +00:00
scrawl
99ffaafe30
Revert "Merge pull request #1701 from akortunov/standfix"
This reverts commit da47fc79f5, reversing
changes made to 7324bd368f.
2018-05-26 11:35:48 +00:00
Marc Zinnschlag
b151a89528 Merged pull request #1568 2018-05-26 12:17:07 +02:00
Marc Zinnschlag
bbc337a0af code cleanup 2018-05-26 12:16:02 +02:00
Marc Zinnschlag
e76df5f4d3 minor tooltip fixes 2018-05-26 11:53:08 +02:00
Marc Zinnschlag
e30ade81be Merged pull request #1680 2018-05-26 11:21:34 +02:00
David Cernat
f7a084c824 [Client] Use faster check for whether actors are DedicatedPlayers 2018-05-26 08:13:26 +03:00
David Cernat
c8ec77875c [Client] Update old comments for changes made by tes3mp 2018-05-26 05:11:41 +03:00
Bret Curtis
13391e833d
Merge pull request #1718 from akortunov/appveyor
Preserve AppVeyor artifacts
2018-05-25 17:11:55 +02:00
Andrei Kortunov
48e15dabc3 Try to generate PDB for release builds 2018-05-25 14:25:04 +04:00
Marc Zinnschlag
832b4bb778 Merged pull request #1659 2018-05-25 11:32:08 +02:00
Bret Curtis
42ef4ed843
Merge pull request #1719 from nikolaykasyanov/deduplicate-nightlies
[macOS, CI] Do not upload a nightly if there's already one of the same commit
2018-05-25 07:40:19 +02:00
David Cernat
416ee77639 [General] Add placeholder for WorldCollisionOverride packet 2018-05-25 07:09:32 +03:00
David Cernat
2edb511a0b [Client] Remove unnecessary condition from WorldTime processor 2018-05-25 07:08:51 +03:00
David Cernat
49ea76aa9d [General] Add notes for InputDialogs in GUIBoxes packet 2018-05-25 05:28:22 +03:00
David Cernat
3b5fb9cd6b [General] Make it possible to set year via WorldTime 2018-05-25 03:33:12 +03:00
Nikolay Kasyanov
ba3a02ad05 [macOS, CI] Do not upload a nightly if there's already one of the same commit 2018-05-24 23:00:59 +02:00
Andrei Kortunov
77c5e85e8d Enable release builds 2018-05-24 22:53:29 +04:00
Andrei Kortunov
8c95676352 Preserve AppVeyor builds 2018-05-24 22:49:53 +04:00
David Cernat
4acf93b7db [General] Make it possible to set days passed via WorldTime 2018-05-24 14:02:04 +03:00
David Cernat
74c2a0b311
Merge pull request #438 from OpenMW/master
Add OpenMW commits up to 24 May 2018
2018-05-24 12:16:11 +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
Marc Zinnschlag
1daf8474a4 Merged pull request #896 2018-05-24 09:50:22 +02:00
Andrei Kortunov
9ac752ea70 Implement filtering in the spells window 2018-05-24 10:48:46 +04:00
David Cernat
46744ee90f [General] Make WorldTime script functions more consistent with others 2018-05-24 09:38:06 +03:00
Bret Curtis
da47fc79f5
Merge pull request #1701 from akortunov/standfix
Do not apply queue movement for standing actors
2018-05-23 22:35:08 +02:00
Marc Zinnschlag
7324bd368f Merged pull request #1573 2018-05-23 17:00:29 +02:00
Marc Zinnschlag
810e4416f6 Merged pull request #1691 2018-05-23 16:56:36 +02:00
Marc Zinnschlag
d92d754834 Merged pull request #1697 2018-05-23 16:01:11 +02:00
Marc Zinnschlag
1564a3f6aa Merged pull request #1713 2018-05-23 13:51:32 +02:00
Marc Zinnschlag
2f958881b7 Merged pull request #4413 2018-05-23 13:45:35 +02:00
David Cernat
8d36d0d945 [General] Make it possible to change world's time scale via WorldTime 2018-05-23 08:31:25 +03:00
David Cernat
f01c761cb1 [General] Use correct orderChannel for WorldTime packets 2018-05-23 07:51:18 +03:00
David Cernat
0be6de6607 [General] Turn RecordDynamic into a Worldstate packet 2018-05-23 07:48:28 +03: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
02ba641bef [Server] Use correct index changes for dynamic stat script functions 2018-05-23 05:48:28 +03:00
Thunderforge
d58cce9c72 Adding WIP code to dynamically change the autocomplete fields 2018-05-22 20:50:31 -05:00
David Cernat
da66face25 [General] Rename GameTime packet into WorldTime 2018-05-23 00:41:29 +03:00
David Cernat
296c69d788
Merge pull request #436 from OpenMW/master
Add OpenMW commits up to 22 May 2018
2018-05-23 00:40:51 +03:00
Bret Curtis
3fa3fc9d85
Merge pull request #1716 from declan-millar/soulgem_value_rebalance
Soul gem value rebalance
2018-05-22 15:31:01 +02:00
declan-millar
2963524a01 set rebalance soul gem values to true by default 2018-05-22 12:59:27 +01:00
Nelsson Huotari
825c331764 Remove texture filtering, better ltex importing, reindexing duplicates 2018-05-22 14:55:09 +03:00
declan-millar
7092dc4f40 Merge branch 'master' of https://github.com/OpenMW/openmw into soulgem_value_rebalance 2018-05-22 12:46:06 +01:00
Bret Curtis
b4098b24b7
Merge pull request #1717 from akortunov/default_terrain
Render default land texture for Wilderness cells with distant terrain
2018-05-22 13:21:48 +02:00
Andrei Kortunov
888c2d9a33 Render default land texture for Wilderness cells with distant terrain 2018-05-22 12:40:01 +04:00
declan-millar
b8df4b7c5a Tidy in-code comment 2018-05-21 22:14:23 +01:00
declan-millar
844aef85f3 Replace spelling: soulgem -> soul gem in code comment 2018-05-21 22:12:19 +01:00
declan-millar
9ed4f33048 Replace spelling: soulgem -> soul gem 2018-05-21 19:10:24 +01:00
declan-millar
028b528c0b Get soul magnitude before checking the rebalance setting 2018-05-21 18:16:04 +01:00
declan-millar
9346a552fa Use Rebalance soulgem values option to set soulgem value 2018-05-21 13:59:20 +01:00
declan-millar
0320f9a74d Merge branch 'master' of https://github.com/OpenMW/openmw into soulgem_value_rebalance 2018-05-21 13:35:43 +01:00
declan-millar
78e79d5775 Add advanced option to Rebalance soulgem values to the launcher 2018-05-21 13:33:42 +01:00
David Cernat
5af1150ab2 [General] Turn GameTime into a Worldstate packet 2018-05-21 07:14:08 +03:00
David Cernat
e87e1dbb30 [General] Fix Worldstate packets by adding missing lines 2018-05-21 07:12:55 +03:00
David Cernat
815d17d9db
Merge pull request #433 from OpenMW/master
Add OpenMW commits up to 21 May 2018
2018-05-21 02:07:08 +03:00
Bret Curtis
5775f420e2
Merge pull request #1714 from ananace/patch-9
Switch Appveyor CI to x64 VS2015 / 2017
2018-05-21 00:03:07 +02:00
David Cernat
e690ff0e29
Merge pull request #432 from OpenMW/master
Add OpenMW commits up to 18 May 2018
2018-05-20 23:48:53 +03:00
Nelsson Huotari
8ae46519cf Fix missed worldspacehits, add linebreak to tooltip 2018-05-20 21:58:40 +03:00
Nelsson Huotari
21e8d08e69 Handle invalid texture id's 2018-05-20 21:20:40 +03:00
Alexander "Ananace" Olofsson
d05de8e411
Give boost the correct toolset for 2017 2018-05-20 18:51:28 +02:00
Alexander "Ananace" Olofsson
4f758bdd48
Use different environments for 2015 and 2017 2018-05-20 18:24:06 +02:00
Alexander "Ananace" Olofsson
3bd8dc3ef6
Use the right boost version for Appveyor 2018-05-20 18:22:02 +02:00
Alexander "Ananace" Olofsson
bcfa2a13a6
Use the VS2017 packaging of Qt5 for Appveyor 2018-05-20 18:09:31 +02:00
declan-millar
4b1247597e Use soulgem value rebalance formula from morrowind code patch 2018-05-20 17:06:26 +01:00
Alexander "Ananace" Olofsson
e1e7a4b11a
Change Appveyor to use Visual Studio 2017 2018-05-20 18:04:59 +02:00
Alexander "Ananace" Olofsson
12b201348a
Switch to the supported VS versions on Appveyor 2018-05-20 17:17:04 +02:00
Alexander "Ananace" Olofsson
ea6c73333b
Bumping Qt to 5.10 for Appveyor 2018-05-20 17:14:32 +02:00
Alexander "Ananace" Olofsson
f8304a52c4
Enable verbose logging for CI 2018-05-20 17:04:52 +02:00
Capostrophic
867a5938ca Don't reset sneaking camera offset while in GUI (fixes #4420) 2018-05-20 10:24:20 +03:00
Marc Zinnschlag
ec900ef4ad Merged pull request #1710) 2018-05-18 12:34:16 +02:00
Nelsson Huotari
c2cddc91e4 Brush maximum size to a custom setting 2018-05-18 11:32:42 +03:00
David Cernat
43a944ddaf [General] Add and implement new Worldstate packet type 2018-05-18 06:40:28 +03:00
David Cernat
e8b22a2e5e [Server] Use correct source group for ObjectProcessors 2018-05-18 05:06:19 +03:00
tri4ng1e
f2613a74b1
Write settings before invoking openmw-iniimporter 2018-05-17 21:20:04 +03:00
tri4ng1e
7e03dd0f12
Read data paths from data-local section too 2018-05-17 21:07:20 +03:00
tri4ng1e
3b86f73ae7
Replace MwIniImporter::numberToString with std::to_string 2018-05-17 21:04:40 +03:00
David Cernat
18167a734e
Merge pull request #419 from Aesylwinn/Travis-0.6.3
Travis 0.6.3
2018-05-17 19:07:34 +03:00
Capostrophic
4e485dbd44 Rename Original Creature column to Parent Creature (fixes #2897) 2018-05-17 13:00:48 +03:00
David Cernat
049d0d9ba7 [General] Fix remaining references to world packets/events 2018-05-17 00:08:37 +03:00
David Cernat
dc9a3bf73f
Merge pull request #429 from OpenMW/master
Add OpenMW commits up to 16 May 2018
2018-05-16 19:20:01 +03:00
Bret Curtis
67c381df4e
Merge pull request #1708 from akortunov/refidfix
fix GCC warnings
2018-05-16 15:59:31 +02:00
Andrei Kortunov
a68de93308 Initialize srate variable in openal_output 2018-05-16 16:34:58 +04:00
Andrei Kortunov
e5db5e2651 Fix 'maybe-uninitialized' warning in openal_output 2018-05-16 16:13:22 +04:00
Andrei Kortunov
df459199dd Avoid left shift of negative value 2018-05-16 12:59:05 +04:00
Nelsson Huotari
17e01ca336 Setting "Scene Drops" rename "3D Scene Editing" 2018-05-16 11:41:37 +03:00
Nelsson Huotari
758ccac75a Show texture id + filename 2018-05-16 11:34:58 +03:00
Bret Curtis
caf1760251
Merge pull request #1707 from akortunov/weaponreach
Display weapon reach on tooltips in feet
2018-05-16 10:27:53 +02:00
Andrei Kortunov
164e3d12fe Display weapon reach on tooltips in feet. 2018-05-16 11:18:22 +04:00
Bret Curtis
e410c47660
Merge pull request #1706 from akortunov/refidfix
Fix compiler warning in getNestedData()
2018-05-16 09:00:25 +02:00
Andrei Kortunov
6a3ff5ed81 Fix compiler warning in getNestedData 2018-05-16 10:10:42 +04:00
David Cernat
2ac334664b [Server] Add deprecated alternatives for ObjectList functions
This will avoid server crashes in older scripts.
2018-05-16 02:16:27 +03:00
David Cernat
51698bed48 [Client] Rename WorldProcessor into ObjectProcessor 2018-05-15 22:56:47 +03:00
David Cernat
02d8e08c58 [Server] Rename WorldProcessor into ObjectProcessor 2018-05-15 22:07:06 +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
David Cernat
bef36f77ca [Server] Create WorldstateFunctions and move GameTime functions there 2018-05-15 20:58:09 +03:00
Bret Curtis
c75d774356
Merge pull request #1692 from akortunov/playsound
Prevent PlaySound overlapping
2018-05-15 19:03:01 +02:00
Andrei Kortunov
f8655d2425 Use actor's physics position as a ray origin in tracer 2018-05-14 20:38:53 +04: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
Capostrophic
e32f38b939 Allow jumping when you're stuck on a slope (fixes #4221) 2018-05-13 17:19:33 +03:00
Capostrophic
409d466e42 Make 0/0 encumbrance 0% encumbrance 2018-05-13 17:18:45 +03:00
Capostrophic
ba077e7291 Fix movement fatigue loss encumbrance calculation (fixes #4413) 2018-05-13 17:18:45 +03:00
Capostrophic
1c9fba9a8c Fix jumping encumbrance calculation 2018-05-13 17:18:45 +03:00
Marc Zinnschlag
bdfa430857 updated credits file 2018-05-13 09:24:24 +02:00
Marc Zinnschlag
0f22600a98 Merged pull request #1703 2018-05-13 09:08:40 +02:00
David Cernat
d4f7936a76 [Server] Rename WorldFunctions into ObjectFunctions 2018-05-13 04:11:05 +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
5458e09c8a
Merge pull request #420 from OpenMW/master
Add OpenMW commits up to 11 May 2018
2018-05-12 06:32:01 +03:00
David Cernat
77389538e8 [General] Implement ActorAI packet, part 1
The server can now make actors become followers of players or other actors.
2018-05-12 06:29:11 +03:00
tri4ng1e
9126e844bf
Use data paths from config (bug #4412) 2018-05-11 17:24:36 +03:00
Marc Zinnschlag
b7cce1a665 Merged pull request #1702 2018-05-11 10:11:17 +02:00
Marc Zinnschlag
6630a02c3f updated credits file 2018-05-11 09:56:44 +02:00
Kyle Cooley
d78ae4bab4 Allow the clang build to fail for now 2018-05-10 21:19:41 -04:00
Kyle Cooley
6c7d73af7f Bump c++ standard version to 14 2018-05-10 19:01:22 -04:00
David Cernat
c00b3bbe97 [Documentation] Update credits 2018-05-11 01:10:53 +03:00
Kyle Cooley
cf5bd0dca7 Travis: use qt5, newer boost libraries, callff, gcc/clang builds... 2018-05-10 18:02:45 -04: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
Nelsson Huotari
49ae5bc75c List initialization -> initialization in constructor 2018-05-10 22:57:48 +03:00
Nelsson Huotari
1c79d5311c Brush history menu 2018-05-10 21:58:36 +03:00
Nelsson Huotari
d2cf764a46 Tooltips, fixes 2018-05-10 15:01:53 +03:00
Nelsson Huotari
62066f01bd clean-up 2018-05-10 11:18:54 +03:00
Nelsson Huotari
d33c98c68d Revert unintended changes 2018-05-10 11:18:54 +03:00
Nelsson Huotari
5656745445 Select dragged texture-assets, add brush settings widget-type, fixes. 2018-05-10 11:18:54 +03:00
Nelsson Huotari
baa707b5e3 User setting for selective cell editing or new land creation 2018-05-10 11:18:54 +03:00
Nelsson Huotari
24977fcc0f improve hit calculation accuracy for texture editing 2018-05-10 11:18:54 +03:00
Nelsson Huotari
e8a9bff85c Drop textures to landtextures from assets (try-method) 2018-05-10 11:18:54 +03:00
Nelsson Huotari
7139889566 Brush button window opens at modebutton, slider 1-50, doxygen comments 2018-05-10 11:18:54 +03:00
Nelsson Huotari
20d1d8ac89 Fixed brush calculations, implement undostack macro when clicked. 2018-05-10 11:18:54 +03:00
Nelsson Huotari
5f3c8b2b99 c_str -> fromStdString, remove TextureBrushButton class 2018-05-10 11:18:54 +03:00
Nelsson Huotari
cf7a0f715e Command macro for complete drag-editing operations. 2018-05-10 11:18:54 +03:00
Nelsson Huotari
9f742d5b1f Brush affects adjancent cells 2018-05-10 11:18:54 +03:00
Nelsson Huotari
1ca2710a2a Formatting, fixes 2018-05-10 11:18:54 +03:00
Nelsson Huotari
1c113eca9c 15 to landTextureSize-1 2018-05-10 11:18:54 +03:00
Nelsson Huotari
3327d6f7c4 Drag terrain painting, code cleanup 2018-05-10 11:18:54 +03:00
Nelsson Huotari
a54a1b9940 Command system and undo 2018-05-10 11:18:54 +03:00
Nelsson Huotari
cc415526b0 fix texture index +1, better icons 2018-05-10 11:18:54 +03:00
Nelsson Huotari
316d05bdc4 {} to () 2018-05-10 11:18:54 +03:00
Nelsson Huotari
4649d1258c Direct data terrain editing 2018-05-10 11:18:54 +03:00
Nelsson Huotari
4ae75d1d20 Terrain texture brush frame 2018-05-10 11:18:54 +03:00
David Cernat
12727b66ea [Server] Use consistent variable names in map tile script functions 2018-05-10 07:44:08 +03:00
David Cernat
7f00005f04 [Client] Fix GCC build
Based on 71040659ac39dc1236af654b5c3177d015e749e5
2018-05-10 07:16:33 +03:00
Alf Henrik Sauge
d4f278a113 Replacing tab with spaces 2018-05-09 18:02:02 +02:00
David Cernat
32d71de2f5 Update MapWindow every frame, not just when it's open (bug #4279) 2018-05-09 07:33:45 +03:00
Alf Henrik Sauge
feeee50a88 Dropping a separate NPDTstruct12 object and instead use NPDTstruct52
NPDTstruct12 is now only used when loading and saving. Turning auto calc
on and off now no longer switches between to different set of values
2018-05-09 00:25:07 +02:00
tri4ng1e
103a07b744
Less cryptic abbreviations 2018-05-08 18:32:06 +03:00
Marc Zinnschlag
3197ebd8e7 Merged pull request #1694 2018-05-08 12:19:14 +02: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
2f89080b36 Load default markers definitions in editor 2018-05-07 22:32:04 +04:00
Andrei Kortunov
b15bed8e22 Avoid excessive loadSound calls 2018-05-07 20:40:53 +04:00
tri4ng1e
905cde10db
Smart-sorting in iniimporter (time + dependency) 2018-05-07 15:51:46 +03:00
Marc Zinnschlag
53b6ef6f8c minor code cleanup 2018-05-07 09:54:42 +02:00
Marc Zinnschlag
57ee5f9b53 updated credits file 2018-05-07 09:51:09 +02:00
Marc Zinnschlag
e661e3cf74 Merged pull request #1677 2018-05-07 09:42:41 +02:00
Marc Zinnschlag
f5f8f62e8e updated credits file 2018-05-07 09:34:46 +02:00
Marc Zinnschlag
a255bdebd4 Merged pull request #1700 2018-05-07 09:33:44 +02:00
Nelsson Huotari
a2745683e6 new run icon 2018-05-06 22:30:01 +03:00
Alf Henrik Sauge
9b971caddc CSVTools::ReportTable should now have case insensitive sorting 2018-05-06 16:49:23 +02:00
Andrei Kortunov
17222eb821 Get rid of unnecessary find 2018-05-06 16:42:05 +04:00
Bret Curtis
c44f87afd1
Merge pull request #1699 from Capostrophic/editorwarnings
Editor verifier updates
2018-05-06 10:57:24 +02:00
Bret Curtis
0fc198be52
Merge pull request #1698 from Capostrophic/c++11
A bunch of C++11-related updates
2018-05-06 10:44:11 +02:00
Capostrophic
2502d53816
Object record verifier updates
Removed light 0 duration warning
Spelling fixes
2018-05-06 00:23:05 +03:00
Capostrophic
91b97a27ea
Remove empty class description warning 2018-05-06 00:14:14 +03:00
Capostrophic
e22409c266
Fix sound range warning message 2018-05-06 00:13:09 +03:00
Andrei Kortunov
3636cf2015 Do not apply queue movement for standing actors 2018-05-05 22:41:26 +04:00
Capostrophic
3d3bef94cd
Use range-based for loop 2018-05-05 16:29:01 +03:00
Andrei Kortunov
1dd36329a3 Load default markers definitions (bug #4410) 2018-05-05 17:14:33 +04:00
tri4ng1e
f5b7a230fc
ESMReader::close now clears mHeader 2018-05-05 14:40:58 +03:00
Bret Curtis
c219c89603
Merge pull request #1696 from Capostrophic/feature-2694
Rename "Model" column to "Model/Animation" (feature #2694)
2018-05-05 08:14:03 +02:00
Capostrophic
9ac9f94638
Rename "Model" column to "Model/Animation" (feature #2694) 2018-05-04 20:00:58 +03:00
David Cernat
980ddcb114 [Server] Add DoesFileExist() script function 2018-05-04 03:09:54 +03:00
Capostrophic
8be93b4a12
Initialize mandatoryIds vector C++11-way 2018-05-03 19:56:01 +03:00
Capostrophic
85b7aa4f09
Uncomment is_pod test in fixed string tests 2018-05-03 19:47:39 +03:00
Nelsson Huotari
e4e225f4e7 Add topic, journal and related -info icons. 2018-05-03 14:32:15 +03:00
Marc Zinnschlag
69c659852d Merge pull request #1689) 2018-05-03 13:03:42 +02:00
David Cernat
51fd937250 [Server] Remove hardcoded debug messages when using script callbacks 2018-05-01 20:39:43 +03:00
David Cernat
df0f9b0f5e [Client] Require a certain Skill progress amount before sending packet 2018-05-01 19:34:21 +03:00
David Cernat
1b1e5e86d1 [Client] Avoid sending CellStates to server after initialization
Although b4e8560698 made players instantly able to see each other on minimalist servers that did not change their cells from the default, it created problems with the default CoreScripts where players need to be logged in before receipt of a CellStates packet from them is taken into account, with the result being that a player was recorded as having loaded their initial cells on the server's C++ side but not on the Lua side.

It may simply be best to expect servers to set player cells.
2018-05-01 18:19:52 +03:00
Andrei Kortunov
4872edc5ed Prevent PlaySound overlapping 2018-05-01 16:24:32 +04:00
Andrei Kortunov
6cc7405194 Remove unnecessary command from QuadTreeWorld destructor (bug #4408) 2018-04-30 18:29:26 +04:00
Andrei Kortunov
22fb1f3403 Play spellcasting effects from objects 2018-04-30 17:12:06 +04:00
David Cernat
099f85be0a [General] Implement PlayerMomentum packet & associated script functions 2018-04-29 23:47:17 +03:00
David Cernat
273179fd5a
Merge pull request #414 from OpenMW/master
Add OpenMW commits up to 29 Apr 2018
2018-04-29 22:35:05 +03:00
David Cernat
4b501a39f4 [General] Implement DoorDestination packet & associated script functions 2018-04-29 22:32:22 +03:00
David Cernat
d47b06fe7a [Server] Prevent SetGameMode() and SetHostname() from crashing server
Previously, turning off communication with the MasterServer from the server config and then attempting to use SetGameMode() or SetHostname() led to a server crash.
2018-04-29 19:50:39 +03:00
scrawl
b995584ad2
Merge pull request #1688 2018-04-29 14:27:55 +00:00
scrawl
f4cd7ff5b2
Merge pull request #1690 2018-04-29 14:24:56 +00:00
Capostrophic
d967983f5c Assume Morrowind.esm dependency for dependency-less content addons (fixes #2829) 2018-04-29 14:56:38 +03:00
Andrei Kortunov
5afcc56860 Handle NiLookAtController (feature #4407) 2018-04-29 09:24:13 +04:00
David Cernat
3b07dc4b42 [Client] Send equipment packets whenever an item charge or count changes
Since the beginnings of TES3MP, equipment packets have only been sent whenever an item has been replaced by an item with a different refId, with changes in an item's charge or count not sending a packet (but being included in the next packet sent as a result of a refId change). The reason for this was ostensibly the fact that every single equipment packet always included the details for all 19 equipment items (as per Koncord's original design decision), which would have led to massive packet spam if such a packet was sent every time you shot an arrow or lost a little bit of your armor's condition.

With minimalist equipment packets, it is now viable to send equipment packets whenever any item changes in some way, by having the equipment packet contain only that one item.
2018-04-29 05:40:42 +03:00
David Cernat
399e049d87 [Client] Fix logic for minimal size packets in LocalPlayer
Previously, the index changes were not cleared at the start of their corresponding update functions, which in turn meant that an Attribute/Skill/StatsDynamic/Equipment packet received by a player from the server made that player send back the same packet, as the index changes from it were retained.

Additionally, exchangeFullInfo was not set to false, thus sometimes leading to constant full exchanges of information.
2018-04-27 03:45:17 +03:00
David Cernat
66d5109509 [General] Fix information exchange for players sharing a cell
Previously, two players entering the same cell only sent and received their latest changes for dynamic stats, attributes, skills and equipment when they started sharing that cell.
2018-04-26 21:56:14 +03:00
David Cernat
7db74509e0 Merge pull request #412 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwscript/transformationextensions.cpp
2018-04-25 21:55:32 +03:00
Capostrophic
6b47f72959
Set character preview scene ambient to 0, 0, 0 2018-04-25 15:31:49 +03:00
scrawl
bdf1070852
Merge pull request #1688 2018-04-25 11:54:26 +00:00
scrawl
f0507e6b46
Merge pull request #1686 2018-04-25 10:27:38 +00:00
scrawl
4cc65239ff
Add section on dealing with regressions 2018-04-25 10:21:58 +00:00
Capostrophic
bfcdf660f2 Utilize inventory character preview lighting rotation fallback settings 2018-04-23 22:48:15 +03:00
Capostrophic
9073e4d4ba Initialize playlist file list in playPlaylist (fixes #4134) 2018-04-22 23:21:29 +03:00
Capostrophic
b69e812a52 Utilize inventory character preview lighting color fallback settings 2018-04-22 22:37:27 +03:00
scrawl
55a6344fb0
Revert log spam 2018-04-22 15:41:25 +00:00
scrawl
d8d26f1de8
Merge pull request #1685 2018-04-22 15:34:31 +00:00
scrawl
ec4e2f0064
Merge pull request #1684 2018-04-22 15:27:31 +00:00
scrawl
063c5b6fd6
Merge pull request #1687 2018-04-22 15:26:41 +00:00
Alexander Olofsson
f0288282be Slight appdata cleanup and improvement 2018-04-22 12:40:22 +02:00
David Cernat
608dcbafe6 [Client] Fix skill updates for LocalPlayer partially broken by 78441c769a 2018-04-22 11:22:36 +03:00
Evgeny Kurnevsky
c025b8f8f3
Remove useless comparison. 2018-04-21 17:10:49 +03: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
Evgeny Kurnevsky
48fb6bb9e8
Fix crash when rollDice is called with 0. 2018-04-21 16:46:36 +03:00
David Cernat
a541d7df3c [General] Rework PlayerStatsDynamic packets so they are of minimal size
(cherry picked from commit fc5e883160)
2018-04-21 00:43:49 +03:00
David Cernat
b9520c11da [General] Rework PlayerEquipment packets so they are of minimal size
Moreover, rename BaseNetCreature's equipedItems into equipmentItems.

(cherry picked from commit d1ad0c91f8)
2018-04-20 22:46:16 +03:00
Capostrophic
37dc3200d1 Inherit the calling object scale in PlaceAt (fixes #4308) 2018-04-20 00:15:26 +03:00
David Cernat
c5b08d6109 [General] Simplify storing of attribute and skill index changes
(cherry picked from commit bd9e8bd10f)
2018-04-19 23:28:03 +03:00
David Cernat
2c77d5f498 [General] Set enforcedLogLevel to -1 when initializing BasePlayer 2018-04-19 20:42:27 +03:00
David Cernat
7b702bf8c2 [General] Add and use utility function for int value checks in vectors
(cherry picked from commit a796f81444)
2018-04-19 18:16:10 +03:00
David Cernat
b6099024df [General] Rework PlayerAttribute packets so they are of minimal size
Previously, whenever a single attribute value changed for a player, that player then sent a PlayerAttribute packet with all values for all 8 attributes.

This did not cause anywhere as much packet spam as PlayerSkill used to, but there was no good reason not to fix it as well.

(cherry picked from commit b0965f094a)
2018-04-19 17:26:20 +03:00
scrawl
1f1f47431f
Merge pull request #1672 2018-04-19 13:36:40 +00:00
Capostrophic
48467814d4 Improve random number generation 2018-04-19 15:55:26 +03:00
David Cernat
78441c769a [General] Rework PlayerSkill packets so they are of minimal size
Previously, whenever a single skill value changed for a player, that player then sent a PlayerSkill packet with all values for all 27 skills, plus the player's progress towards the next level and the bonuses to each attribute on the next level up as the result of sklll increases thus far.

This commit makes PlayerSkill contain only the values of specific skills, moves the player's progress towards the next level to PlayerLevel packets, and moves the bonuses to each attribute on the next level up to PlayerAttribute packets.

Players now also send a PlayerSkill packet whenever their progress towards a new point in a skill changes. This was previously avoided so as to not have massive packet spam.

(cherry picked from commit ef79a98544)
2018-04-19 15:18:38 +03:00
scrawl
5d1b40c5ea
Merge pull request #1678 2018-04-19 12:18:24 +00:00
David Cernat
af4fcb7261 [Client] Don't force skill update on cell change
Previously, an attempt by the server to simultaneously change a player's cell and skills (as you'd expect when a player file is loaded) led to:

1) The server sending the cell packet first and the skill packet afterwards

2) The player receiving the cell packet and sending their own skill packet as part of the client's forced skill update

3) The player receiving the skill packet from the server

4) The server receiving the skill packet from the player

The result was that, if the player then left the server without sending another skill packet, the server's memory retained the skills the player had sent instead of the skills it had sent to the player.

This is the first step in a solution to that situation and similar ones.

(cherry picked from commit cac4684986)

Note: In 0.6.x, this was only a problem if a player's cell was set by the server first and their skills were set next, i.e. this was not a problem in the default CoreScripts because the opposite order used there masked the problem. It was a more significant problem in 0.7 because all packets were queued for a player and sent in a specific hardcoded order.
2018-04-19 14:22:14 +03: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
David Cernat
28f1c1b0d3 [General] Rework CharGen slightly for clarity purposes
Previously, charGenStage.end was doing double duty as both the variable indicating the number of CharGen stages and – when set to 0 – the variable indicating that CharGen was over. The latter role is now filled by a new boolean.

(cherry picked from commit 926106cf8c)
2018-04-19 13:25:29 +03:00
David Cernat
9d46de88e0 [Client] Send cell states correctly after inputting name
Previously, initial cell states were sent in LocalPlayer::processCharGen() and were ignored by the server because the player was not yet regarded as loaded. The result was that existing players logging in could not see each other until they went through at least one cell change.

(cherry picked from commit b4e8560698)

# Conflicts:
#	apps/openmw/mwmp/LocalPlayer.cpp
2018-04-18 20:30:48 +03:00
David Cernat
306252ecdc [Server] Fix confusing script function names 2018-04-18 19:10:58 +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
scrawl
ce1b2a612c
Merge pull request #1674 2018-04-18 15:56:22 +00: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
Capostrophic
90f3ff2da4 Don't force DDS file usage (fixes #1392)
Fallback to a DDS file if the requested texture path doesn't point to an existing file, not vice versa
2018-04-18 17:55:12 +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
scrawl
789f552ad4
Delete old mygui_resource_plugin which is unlikely to be brought back in its current form because resources can't be accessed by MyGUI's editor if not using the Ogre resources system. 2018-04-18 12:36:09 +00:00
scrawl
6c79c0fb35
Add an empty compileGLObjects implementation to Rig/MorphGeometry to avoid unnecessary creation of display list done by osg 2018-04-18 12:36:08 +00:00
scrawl
40f6497f40
Clarify how to link bugs 2018-04-18 12:36:07 +00:00
Bret Curtis
1427648d64
Merge pull request #1682 from a17r/qt-5.11
Fix build with Qt 5.11_beta3 (dropping qt5_use_modules)
2018-04-18 11:00:23 +02:00
David Cernat
311f770de7 [Server] Document script functions, part 4
Additionally, clean up some variable names.
2018-04-18 11:02:18 +03:00
David Cernat
76e7392a84 [Server] Create ShapeshiftFunctions and move relevant functions there 2018-04-18 10:45:39 +03:00
David Cernat
2bb7a4253e [Server] Forcibly kick players after too many handshake attempts 2018-04-18 10:16:38 +03:00
Andreas Sturmlechner
2c9d46a60b
Fix build with Qt 5.11_beta3 (dropping qt5_use_modules) 2018-04-17 23:03:56 +02: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
David Cernat
50fe54af5d [Client] Update DedicatedPlayer creature if displayCreatureName changes 2018-04-17 15:23:10 +03:00
David Cernat
36e0f0471a [Server] Add SetCreatureNameDisplayState script function 2018-04-17 15:04:18 +03:00
Nelsson Huotari
af558e07a3 implement +6 icons 2018-04-15 12:47:52 +03:00
Nelsson Huotari
69aacdff17 Lamoot's new icon set 2018-04-15 12:35:45 +03:00
scrawl
fc72483ddf
Merge pull request #1673 2018-04-14 19:53:20 +00:00
scrawl
985ae12767
Merge pull request #1676 2018-04-14 19:53:01 +00:00
Capostrophic
b08d7b4a3b Use centroid interpolation for shader lighting (fixes #4143) 2018-04-14 00:30:28 +03:00
David Cernat
db41704e52 [Server] Use clearer function name for checking creature name display 2018-04-13 17:28:28 +03:00
David Cernat
a01fc577f1 [Client] Add setAttributes() and setSkills() methods to DedicatedPlayer 2018-04-13 16:59:48 +03:00
David Cernat
716809f2db [Client] Prevent errors from NPC-only packets for DedicatedPlayers 2018-04-13 16:23:42 +03:00
David Cernat
68ee64902d [Client] Track & use previous race & creatureRefId for DedicatedPlayers 2018-04-13 16:16:43 +03:00
David Cernat
acb1335d78 [Client] Make creature disguises update correctly 2018-04-13 11:30:38 +03:00
David Cernat
9bd79ba498
Merge pull request #405 from OpenMW/master
Add OpenMW commits up to 12 Apr 2018
2018-04-13 11:30:30 +03:00
David Cernat
70f9cb535e [General] Use RecordHelper methods to create and update DedicatedPlayers 2018-04-13 08:37:06 +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
scrawl
a70e14e282
Add guidelines for pull request reviews 2018-04-12 15:16:52 +00:00
David Cernat
49e94725aa [Client] Prevent MechanicsManager::playerLoaded() from enabling AI 2018-04-12 17:18:06 +03:00
David Cernat
9d27f5f154 [Client] Create RecordHelper class with initial NPC and creature methods 2018-04-12 14:18:19 +03:00
David Cernat
9697595857 [Client] Don't equip already equipped items in local setEquipment()
This avoids the following error when receiving repeated PlayerBaseInfo packets: "Error in frame: Invalid slot, make sure you are not calling RefData::setCount for a container object"

Additionally, only re-equip items as the result of a PlayerBaseInfo packet if resetStats is true (because of its side effect of auto-equipping items for the player).
2018-04-10 19:02:55 +03:00
David Cernat
72463cfdb6 [Client] Refresh equipment for DedicatedPlayers when setting base info
Additionally, move default fatigue value to DedicatedPlayer initialization.
2018-04-10 19:02:55 +03: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
Capostrophic
d9acd19dc0
Merge branch 'master' into illusion 2018-04-09 23:33:11 +03:00
scrawl
0982d2175a
Merge pull request #1473 2018-04-09 20:23:43 +00:00
scrawl
92d0fb2981
Merge pull request #1667 2018-04-09 20:23:38 +00:00
scrawl
35300c04cd
Merge pull request #1671 2018-04-09 20:23:35 +00:00
scrawl
ef050d7869
Merge pull request #1660 2018-04-09 20:23:27 +00:00
scrawl
308551ad49
Merge pull request #1644 2018-04-09 20:23:24 +00:00
scrawl
cbddb4a0a9
Merge pull request #1638 2018-04-09 20:23:20 +00:00
David Cernat
bdc9132e7c [General] Add SetResetStats server script function
Add reading and writing of resetStats variable to PlayerBaseInfo Packet

Fix typos in various server script function descriptions
2018-04-09 19:24:24 +03:00
David Cernat
73dea494c4 [General] Allow changes from PlayerBaseInfo without player stat reset 2018-04-09 19:21:19 +03:00
Capostrophic
cddc0914c8 Option to charge for all companions travelling (fixes #4064) 2018-04-09 19:19:50 +03:00
David Cernat
34893ff631 [Server] Split up handshake handling into multiple functions for debug
Unfortunately, the handshake attempt limit implemented in 4ebfcc4a21 for 0.7 and then ported over to 0.6 in a3a341fee6 does not appear to work properly, which is why gathering more information on it is important.
2018-04-09 15:25:50 +03:00
David Cernat
c132dc70d2 [Client] Make PlayerShapeshift turn DedicatedPlayers into creatures 2018-04-09 15:23:05 +03:00
David Cernat
141eb8b7c2 [Client] Streamline creation of references for DedicatedPlayers
Additionally, delete DedicatedPlayers who disconnect.

Previously, all disconnected DedicatedPlayers were still kept in memory, but never used again. There was code that suggested they were meant to be reused upon reconnecting, but that reuse had never actually been implemented, and would probably not be that useful anyway.
2018-04-08 15:02:43 +03:00
David Cernat
14f90e773d [Client] Split up creation of DedicatedPlayers into multiple methods
Additionally, print player guids using their string representations for consistency.

The creation and updating of DedicatedPlayer references remains very inelegant, but this commit is the first step towards fixing that.
2018-04-08 10:56:33 +03:00
Thunderforge
fb27f34a32 Add autocomplete to the "Start default character at" field 2018-04-07 21:27:36 -05:00
Capostrophic
77467f17c9
Fix a typo 2018-04-06 00:10:48 +03:00
David Cernat
c8abd11f5d [General] Move creature disguises for players to PlayerShapeshift packet
Additionally, make associated variables clearer, and move associated server script functions next to other shapeshifting functions.
2018-04-05 15:42:06 +03:00
David Cernat
34be9383e5 [General] Add isPlayer boolean to targets in packets 2018-04-05 12:48:53 +03:00
David Cernat
0eed05610b [Client] Fix autoequipping for creatures in WorldEvent::editContainers() 2018-04-03 15:22:51 +03:00
David Cernat
a86c68c5a1 [General] Add sync for ranged weapon & projectile strike enchantments 2018-04-03 14:12:27 +03:00
David Cernat
3f8d94b030 [General] Synchronize strike enchantments in combat 2018-04-03 10:27:02 +03:00
Andrei Kortunov
27c831959e Handle OnPCHitMe variable (bug #2703) 2018-04-03 07:38:19 +04:00
David Cernat
76468dc8c6 [Server] Remove remnant of hardcoded container sync 2018-04-03 01:35:07 +03:00
David Cernat
e3c43c6af7 Merge pull request #400 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwmechanics/spellcasting.cpp
2018-04-03 01:25:17 +03:00
Capostrophic
4f64ba7b7f Implement sBookSkillMessage GMST 2018-04-02 21:12:38 +03:00
scrawl
c6abec1e51
Merge pull request #1641 2018-04-02 17:53:30 +00:00
scrawl
0071878106
Merge pull request #1642 2018-04-02 17:45:54 +00:00
scrawl
d935e78f93
Merge pull request #1645 2018-04-02 17:39:23 +00:00
scrawl
c610b8acc8
Merge pull request #1649 2018-04-02 17:37:31 +00:00
scrawl
cd9f767e29
Merge pull request #1650 2018-04-02 17:32:40 +00:00
scrawl
9e176aba9f
Merge pull request #1652 2018-04-02 17:29:40 +00:00
scrawl
e73af18824
Merge pull request #1653 2018-04-02 17:29:04 +00:00
scrawl
8e37f6bf3e
Merge pull request #1656 2018-04-02 17:28:46 +00:00
scrawl
f36adfec5f
Merge pull request #1657 2018-04-02 17:28:12 +00:00
scrawl
80a8ef6d49
Merge pull request #1661 2018-04-02 17:18:39 +00:00
scrawl
0065f277ef
Merge pull request #1664 2018-04-02 17:17:37 +00:00
elsid
14daadded7
Add virtual destructors
To fix warnings:
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/shared_ptr_base.h:588:8: warning: delete called on non-final 'NifOsg::ControllerFunction' that has virtual functions but non-virtual destructor
      [-Wdelete-non-virtual-dtor]
              delete __p;
              ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/shared_ptr_base.h:595:4: note: in instantiation of function template specialization
      'std::__shared_count<__gnu_cxx::_S_atomic>::__shared_count<NifOsg::ControllerFunction *>' requested here
        : __shared_count(__p)
          ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/shared_ptr_base.h:1079:17: note: in instantiation of function template specialization
      'std::__shared_count<__gnu_cxx::_S_atomic>::__shared_count<NifOsg::ControllerFunction *>' requested here
        : _M_ptr(__p), _M_refcount(__p, typename is_array<_Tp>::type())
                       ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/shared_ptr.h:129:25: note: in instantiation of function template specialization 'std::__shared_ptr<NifOsg::ControllerFunction,
      __gnu_cxx::_S_atomic>::__shared_ptr<NifOsg::ControllerFunction, void>' requested here
        shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { }
                               ^
/home/elsid/dev/openmw/components/nifosg/nifloader.cpp:242:39: note: in instantiation of function template specialization 'std::shared_ptr<NifOsg::ControllerFunction>::shared_ptr<NifOsg::ControllerFunction, void>' requested here
                callback->setFunction(std::shared_ptr<NifOsg::ControllerFunction>(new NifOsg::ControllerFunction(key)));
                                      ^

/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/unique_ptr.h:78:2: warning: delete called on non-final 'MWGui::ResponseCallback' that has virtual functions but non-virtual destructor
      [-Wdelete-non-virtual-dtor]
        delete __ptr;
        ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1/../../../../include/c++/7.3.1/bits/unique_ptr.h:268:4: note: in instantiation of member function 'std::default_delete<MWGui::ResponseCallback>::operator()' requested here
          get_deleter()(__ptr);
          ^
/home/elsid/dev/openmw/apps/openmw/mwgui/dialogue.cpp:58:23: note: in instantiation of member function 'std::unique_ptr<MWGui::ResponseCallback, std::default_delete<MWGui::ResponseCallback> >::~unique_ptr' requested here
    PersuasionDialog::PersuasionDialog(ResponseCallback* callback)
                      ^
2018-04-01 21:51:59 +03:00
David Cernat
26a56d6a02 [Client] Include NPC/creature containers when adding all cell containers 2018-04-01 14:58:04 +03:00
David Cernat
1e3c4fd488 [Client] Fix ProcessorContainer typos caused by careless copy-pasting 2018-04-01 10:47:57 +03:00
David Cernat
7b97e8671d
Merge pull request #398 from OpenMW/master
Add OpenMW commits up to 30 March 2018
2018-04-01 10:04:04 +03:00
David Cernat
f80f3bd484 [Client] Make it possible to reply to requests about specific containers
Previously, a Container packet with a REQUEST action always made the client respond with the contents of all the containers in that cell.

The previous behavior now only happens for requests that have no WorldObjects attached, while requests that have WorldObjects attached get a reply with the contents of those specific containers.
2018-04-01 10:00:39 +03:00
David Cernat
ec1311fcb7 [Client] Make it possible to check whether a class has a ContainerStore 2018-04-01 09:33:07 +03:00
David Cernat
258e319acb [Client] Require InventoryStore for autoequipping actors 2018-04-01 09:02:26 +03:00
David Cernat
afe8c97cb9 [Client] Require InventoryStore for unequipping actors in editContainers 2018-04-01 08:41:57 +03:00
David Cernat
d8b48f6cf4 [Client] Remove redundant container methods from CellController 2018-04-01 07:11:43 +03:00
Capostrophic
1aa3ed0c18 Font loader fallback character reorganization (fixes #1987) 2018-03-31 20:16:44 +03:00
Capostrophic
baaf65bc2c Add vanilla enchanted weaponry behavior option, on by default (fixes #4136) 2018-03-31 11:46:23 +03:00
Bret Curtis
f97d094aa5
Merge pull request #1658 from xyzz/android-sdl-2.0.8
android: Update for sdl 2.0.8
2018-03-30 22:14:53 +02:00
Capostrophic
2dca389a3b Extend magic resistance/weakness to all effects that can be resisted (fixes #4309) 2018-03-30 21:18:29 +03:00
Ilya Zhuravlev
fdcfbdbdd1 android: Update for sdl 2.0.8 2018-03-30 12:44:38 -04:00
Capostrophic
e6d9bce519 Implement fWerewolfHealth GMST (fixes #4142) 2018-03-30 19:27:18 +03:00
David Cernat
365f485e8d Merge pull request #397 from OpenMW/master while resolving conflicts
Conflicts:
	components/CMakeLists.txt
2018-03-30 10:28:52 +03:00
Capostrophic
76f50312f2
Remove a redundant check 2018-03-30 00:02:52 +03:00
Bret Curtis
5e6be0307e
Merge pull request #1651 from psi29a/remove_gles_but_keep_android
remove native GLESv* support, as it never worked; make things less co…
2018-03-29 20:39:51 +02: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
1c340568d2 [Client] Disallow resting if player has not finished chargen
Previously, players pressing T rapidly before logging in had the Wait screen show up for them.
2018-03-29 06:04:20 +03:00
Capostrophic
be542507f8
Make hasMaster() behavior consistent with isGameFile() (fixes #3618) 2018-03-28 15:43:51 +03:00
Simon
9193ff4d15
Reworded one of the descriptions 2018-03-28 13:59:05 +02:00
bret curtis
4890ecd357 remove native GLESv* support, as it never worked; make things less complicated as result, fixed lighting.glsl to work with gl2es thanks to ptitSeb 2018-03-27 20:20:40 +02:00
Capostrophic
2d119e834a Add vanilla absorb attribute behavior option, on by default (Fixes #4135) 2018-03-27 14:27:23 +03:00
Capostrophic
b6a2589e7b Don't apply harmful spell effects on the player in god mode (fixes #4264) 2018-03-27 14:02:14 +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
9165b12d78 [Client] Update inventory views when receiving inventory or equipment 2018-03-26 10:01:26 +03:00
Capostrophic
41f89c84f8 Don't move the player if opposite direction keys are held down at the same time (Fixes #4233) 2018-03-25 12:20:48 +03:00
David Cernat
bb15ee9215 [Client] Make it possible to get ContainerWindow from elsewhere in code 2018-03-24 09:00:15 +02:00
Bret Curtis
1e600de44e
Merge pull request #1640 from unelsson/typofix_updatecrimepersuit
Typofix: updateCrimePersuit -> updateCrimePursuit
2018-03-23 22:13:22 +01:00
Capostrophic
5a3086b0c6
Auto-detect the actual Morrowind assets path (Fixes #4336) 2018-03-23 23:52:08 +03:00
Capostrophic
42b7846f81 Replace a redundant playerAllies check with a boolean (Fixes #4229) 2018-03-23 18:45:39 +03:00
Nelsson Huotari
63e34a5575 Typofix: updateCrimePersuit -> ...Pursuit 2018-03-23 14:10:43 +02:00
David Cernat
bbdc30628b [Client] Use the correct guid for a received WorldEvent or ActorList 2018-03-21 06:08:04 +02:00
scrawl
c02920bcd1
Merge pull request #1634
Conflicts:
	apps/openmw/mwworld/worldimp.hpp
2018-03-20 22:48:20 +00:00
scrawl
f47429d575
Merge pull request #1635 2018-03-20 22:47:36 +00:00
scrawl
ff7f964643
Merge pull request #1636 2018-03-20 22:47:31 +00:00
scrawl
5c1551d1ac
Merge pull request #1637 2018-03-20 22:47:08 +00:00
David Cernat
14f0299322 [Client] Don't log InputBox inputs for client 2018-03-20 06:41:04 +02:00
Andrei Kortunov
fed3e56fc1 Weather manager: get rid of World dependency 2018-03-19 23:08:15 +04:00
Andrei Kortunov
53ef345680 Update magic effect particles after building new animation (bug #2254) 2018-03-19 10:43:22 +04:00
Andrei Kortunov
a0a30cdbf5 AI: hide torches during bad weather (bug #4334) 2018-03-19 08:03:53 +04:00
Andrei Kortunov
bd6c7de579 Do not unequip two-handed weapon when equipping torch 2018-03-19 08:03:53 +04:00
RoadTrain
d626d89c49 OpenMW-CS: Fix a typo in startup warning. 2018-03-19 00:50:50 +03:00
Capostrophic
5b49248d6e
Restrict opening doors to bipedal actors (Fixes #4313) 2018-03-18 17:24:27 +03:00
scrawl
eb723f5ae6
Merge pull request #1629 2018-03-16 23:26:50 +00:00
scrawl
edb57306b6
Merge pull request #1628 2018-03-16 23:25:29 +00:00
scrawl
17fa1a4d51
Merge pull request #1630 2018-03-16 23:24:19 +00:00
scrawl
7a5748a9f1
Merge pull request #1632 2018-03-16 23:24:05 +00:00
Thunderforge
d42791e260 Moving testing options to Advanced page 2018-03-15 22:11:54 -05:00
Bret Curtis
9b93741c7b
Merge pull request #1631 from elsid/rm_duplicate_includes
Remove duplicated include
2018-03-14 07:42:38 +01:00
Capostrophic
002ad9ae1b Print a warning in case a fallback value wasn't found 2018-03-14 00:25:56 +03:00
elsid
a26483ab26 Fix memory leak
There is no delete for TextFormat objects in PageDisplay destructor.
2018-03-13 21:32:59 +03:00
elsid
26df0e6ebd Remove duplicated include 2018-03-13 21:28:38 +03:00
elsid
2f9b6b536b Label gtest directories as system
To hide all warnings when use custom GTEST_ROOT.
2018-03-13 21:27:14 +03:00
David Cernat
20caea083a [Client] Use correct count for items in equipment packets
Previously, throwing weapon sync was completely broken for players, as the count for their equipped throwing weapons was never set and – as a result – defaulted to a count of 1 on other clients. As a result, any time a player threw a dart, they would then appear as having switched to hand-to-hand for other players.

Moreover, the count of equipped items was mistakenly based on the total count of items with that refId in the inventory. As a result, if – for example – I equipped 1 Daedric Longsword and had 4 others in my inventory, my DedicatedPlayer on other clients would equip a Daedric Longsword with a count of 5. If I was overencumbered by having that many Daedric Longswords on me and then dropped 4 of them, allowing myself to move again, my DedicatedPlayer would still walk around with 5 Daedric Longswords and lack animations due to still being overencumbered on the other clients.

These problems were less prevalent for actors, but their equipment updating code has also been changed to match that of players.
2018-03-12 23:31:37 +02:00
Capostrophic
e4531a6910 Use middle gray instead of pure black as default fallback color (Fixes #2841) 2018-03-12 23:38:59 +03:00
Andrei Kortunov
e0aa5e8e79 Prevent overlapping for journal and books scrolling 2018-03-11 16:19:37 +04:00
David Cernat
b249162ca1 [General] Implement setting of enforced client log level in GameSettings
Certain servers do not want the players to have debug information about the locations and actions of other players, so a client's log level can now be enforced by the server via the GameSettings packet.
2018-03-11 04:50:59 +02:00
David Cernat
a3a341fee6 [Server] Reimplement 4ebfcc4a21 for 0.6 2018-03-10 22:19:44 +02:00
David Cernat
bf906b3f0a
Merge pull request #393 from OpenMW/master
Add OpenMW commits up to 10 March 2018
2018-03-10 18:37:51 +02:00
scrawl
27610a85ac
Merge pull request #1627 2018-03-10 00:08:52 +00: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
Andrei Kortunov
62c04c6758 Unstack soulgem, added via AddSoulGem console command (bug #4351) 2018-03-09 21:49:27 +04:00
Thunderforge
f07a12af73 Changing label "and may cause issues" to "and will cause issues" 2018-03-08 18:09:18 -06: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
7f39dbb129
Merge pull request #1626 2018-03-08 20:52:37 +00:00
Harald H
d3b623b5d3 http to https for supported urls (#1625)
* http to https for supported urls

* http to https

* http to https

* http to https

* http to https

* http to https

* http to https

* http to https

* http tp https

* http to https

* http to https

* http to https

* http to https

* http to https

* http to https

* http to https

* http to https

* some url fixes

* http to https
2018-03-08 21:23:24 +01:00
Thunderforge
dfcd243150 Remove the word "interior" from cell not found message 2018-03-07 19:57:54 -06:00
Thunderforge
6931f6cadc Adding message indicating the purpose of the "Testing" block 2018-03-07 18:37:43 -06:00
scrawl
96c2b9374f
Merge pull request #1621 2018-03-07 18:12:43 +00:00
scrawl
bf78c18296
Merge pull request #1624 2018-03-07 18:12:32 +00:00
scrawl
148cda254d
Merge pull request #1617 2018-03-07 18:12:26 +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
Thunderforge
dcc262ed91 Fixing Skip Menu checkbox not working correctly 2018-03-05 23:10:08 -06:00
Thunderforge
082e166fae Making "start default character at" field enabled or disabled by the previous checkbox 2018-03-05 21:41:29 -06:00
Thunderforge
da74ca5ce0 Add testing options to the Settings page 2018-03-05 21:26:59 -06:00
Thunderforge
6c3ac834c4 Preventing max quicksaves from being saved to settings.cfg if it is unchanged. 2018-03-05 19:57:19 -06:00
Chris Robinson
01dbac7b15 Don't use a different setting for distant viewing distance 2018-03-04 11:37:57 -08:00
Chris Robinson
41669467ae Make settings for distant fog parameters 2018-03-04 11:37:57 -08:00
Chris Robinson
4caa7c9674 Workaround older MSVC quirk 2018-03-04 11:37:57 -08:00
Chris Robinson
154cc8c659 Use alternate fog parameters when distant land is enabled
This allows the distant land to actually be seen when the user enables it. The
values used are replicated from MGE XE's default settings and should probably
be exposed somewhere.
2018-03-04 11:37:57 -08:00
Chris Robinson
6d557fec8e Increase the far clip plane when distant terrain is enabled 2018-03-04 11:37:57 -08:00
Capostrophic
d371bebb33 Prevent items in a container owned by a dead actor from being counted as stolen (Bug #4328) 2018-03-03 15:57:13 +03:00
Capostrophic
cc0c6ddaa6 Account for empty victimRef (Bug #4328) 2018-03-03 15:57:03 +03:00
scrawl
839196e4fa
Force normal polygon mode for the map camera (Fixes #4235) 2018-03-03 00:15:57 +00:00
Florian Weber
10fe334247
add more precise float-spinbox and use it for rotations 2018-03-02 15:05:00 +01: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
37b349c2f6
Merge pull request #390 from OpenMW/master
Add OpenMW commits up to 28 Feb 2018
2018-03-01 05:33:37 +02:00
scrawl
29101607c6
Merge pull request #1618 2018-02-28 18:06:29 +00:00
Thunderforge
b6d9b6f544 Formatting improvement for advanced page 2018-02-27 20:17:43 -06:00
Thunderforge
4292351993 Adding Max Quicksaves setting to Launcher 2018-02-27 20:17:21 -06:00
scrawl
4a2e9f2e3d
Update AUTHORS.md 2018-02-27 23:52:12 +00:00
scrawl
9e9c278527
Merge pull request #1597 2018-02-27 23:48:45 +00:00
bret curtis
81d90d7fb7 break for all errors that would raise when checking for version, make them UNRELEASED 2018-02-27 18:57:37 +01:00
bret curtis
3393ad623f fix rtd 2018-02-27 16:15:43 +01:00
Capostrophic
929fc68160
Consider items with dead owner not stolen (fixes bug #4328) 2018-02-26 23:21:51 +03: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
Miloslav Číž
db6107f12f
Merge branch 'master' into screenshot360 2018-02-25 11:25:19 +01:00
scrawl
31d7e6af32
Merge pull request #1608 2018-02-24 16:53:32 +00:00
scrawl
56613d817e
Merge pull request #1612 2018-02-24 16:52:30 +00:00
scrawl
dd3d3f5a8b
Merge pull request #1610 2018-02-24 16:41:02 +00:00
Capostrophic
089666dd68
Round up displayed encumbrance 2018-02-24 15:13:14 +03:00
Capostrophic
46377fa348
Update [Windows] documentation 2018-02-24 12:25:11 +03:00
Capostrophic
534f3ef094
Bring UI dimensions and positions more in line with Morrowind UI 2018-02-24 12:23:44 +03:00
scrawl
ea028a2076
Improve settings documentation 2018-02-22 18:50:07 +00:00
scrawl
95a07bdc77
Merge pull request #1609 2018-02-22 18:49:32 +00:00
Thunderforge
a67373d116 Fixing "Show Enchant Chance" checkbox setting melee info instead 2018-02-19 18:28:04 -06:00
Capostrophic
99360e132f
Only display "new journal entry" message in dialogue if there *is* a new entry 2018-02-18 16:01:50 +03:00
David Cernat
60f686ee43 [General] Implement setting of physics framerate as part of GameSettings 2018-02-14 05:53:44 +02:00
Daniel Vukelich
104495a9a4 Set default number of quicksaves to 1 2018-02-13 21:05:24 -05:00
Daniel Vukelich
3bdd989a50 Remove numeric quicksave slot IDs
When multiple quicksaves occurred in quick succession, the numeric order
of the saves could not be guaranteed.  To prevent players from getting
confused as to why their saves appear out of order, don't number them.
2018-02-13 21:01:15 -05:00
David Cernat
65c3472772
Merge pull request #386 from OpenMW/master
Add OpenMW commits up to 13 Feb 2018, part 2
2018-02-13 22:22:22 +02:00
David Cernat
886b3431bc [Client] When resurrecting players, set pcknownwerewolf to 0
This makes it so players are no longer known werewolves and are no longer attacked infinitely by guards.
2018-02-13 21:55:10 +02:00
scrawl
9b8c56761b
Fix timing error 2018-02-13 18:25:28 +00:00
scrawl
79e9876a24
Merge pull request #1606 2018-02-13 18:24:11 +00:00
Alexander "Ananace" Olofsson
145b47a550
Fix Windows builds
`std::min`/`std::max` are part of algorithm, which is not implicitly included in Windows builds
2018-02-13 17:47:38 +01:00
David Cernat
53d758ba16
Merge pull request #385 from OpenMW/master
Add OpenMW commits up to 13 Feb 2018
2018-02-13 05:22:41 +02:00
scrawl
ac1609c433
Merge pull request #1604 2018-02-13 00:56:06 +00:00
scrawl
123f7b83d5
Make the CompositeMapRenderer use available time and add related setting 2018-02-13 00:40:41 +00:00
scrawl
a708ac488e
Don't call Store::setUp() unnecessarily
Fixes a threading issue with ESM::Land store caused by calling setUp() while it's being used.
2018-02-13 00:38:55 +00:00
David Cernat
a7e3261b0b
Merge pull request #383 from OpenMW/master
Add OpenMW commits up to 11 Feb 2018
2018-02-11 06:57:54 +02:00
scrawl
5bb7d76913
Merge pull request #1605 2018-02-10 23:15:26 +00:00
scrawl
899d464b0d
Cap the rain emitter's frame time (Fixes #4314) 2018-02-10 23:14:41 +00:00
scrawl
f28024b541
Don't use Activate and Move keys for GUI navigation if bound to mouse buttons (Fixes #4225, Fixes #4320) 2018-02-10 23:11:03 +00:00
Andrei Kortunov
f626a7fcc7 Take in account PC rank during disposition calculation (bug #4322) 2018-02-10 17:58:30 +04:00
uramer
5502790ed9 removed the unnecessary comment 2018-02-09 16:34:55 +01:00
uramer
86c25f5dba Removed NIF flag handling to replicate vanilla engine behaviour 2018-02-09 01:53:52 +01:00
David Cernat
74765b3ace [General] Implement selected spell sync as part of PlayerMiscellaneous 2018-02-06 06:36:46 +02:00
Marc Zinnschlag
2a5a574134 Merge remote-tracking branch 'thunderforge/feature/4054-launcher-advanced-settings-panel' 2018-02-05 13:30:47 +01:00
Thunderforge
a78acbac85 Changing page description to address Zini's concerns 2018-02-04 13:38:11 -06:00
Thunderforge
cc0f7d19dc
Removing "Use these settings at your own risk" 2018-02-02 12:09:25 -06:00
David Cernat
029dfc56ba [General] Implement player scale as part of PlayerShapeshift 2018-02-01 02:11:45 +02:00
David Cernat
aa448523f8 [Client] Clean up WorldEvent::runConsoleCommands() slightly 2018-01-31 23:23:52 +02:00
David Cernat
ce5670e57e [Client] Ignore invalid object refIds from ObjectPlace packets 2018-01-31 18:51:53 +02:00
David Cernat
4496625154
Merge pull request #381 from OpenMW/master
Add OpenMW commits up to 31 Jan 2018
2018-01-31 05:03:28 +02:00
David Cernat
66078bfea7 [General] Implement Mark location sync as part of PlayerMiscellaneous 2018-01-31 04:50:29 +02:00
scrawl
b1b8e31562
Use unique_ptr over new/delete (Fixes #4305) 2018-01-30 22:05:16 +00:00
David Cernat
989f6e6b51 [General] Implement PlayerReputation packet 2018-01-30 22:55:29 +02:00
David Cernat
88ae0772cf [Server] Initialize new processors and fix issues with RecordDynamic 2018-01-30 22:51:35 +02:00
David Cernat
3d80e2db62 [General] Add placeholders for new packet types, part 2 2018-01-30 16:01:33 +02:00
Thunderforge
8b17844781 Replacing Qt5-only method with Qt4-compatible code 2018-01-29 21:14:31 -06:00
David Cernat
273a1f50af
Merge pull request #377 from OpenMW/master
Add OpenMW commits up to 29 Jan 2018
2018-01-29 22:38:39 +02:00
David Cernat
02af7f6ba1 [General] Add placeholders for new packet types 2018-01-29 22:32:51 +02:00
scrawl
25a6a67508
Fix the optimizer messing up LOD node's children (Fixes #4301) 2018-01-29 19:44:12 +00:00
Thunderforge
04f79c34a2 Fixing typo "Tooltip" -> "Tool Tip" 2018-01-28 23:31:40 -06:00
Thunderforge
8837046d9c Adding panel for advanced settings.cfg options 2018-01-28 22:49:49 -06:00
David Cernat
78df8c5ebe
Merge pull request #375 from OpenMW/master
Add OpenMW commits up to 29 Jan 2018
2018-01-29 02:36:48 +02:00
scrawl
89c6b59c30
Merge pull request #1602 2018-01-28 22:35:47 +00:00
David Cernat
ce11a1dfa9 [Client] Fix potential invalid pointer when storing cell unloads
Notably, builds of the client done with Clang were crashing on startup before this.
2018-01-29 00:14:26 +02:00
David Cernat
420dab10e1 [General] Track objects directly placed by players in ObjectPlace
This allows the OnPCDrop variable to get set correctly even when object placements have to go through the server first in order to gain a unique multiplayer index (mpNum).

Among other things, this makes it possible to roll marijuana joints in the popular mod "Tribunal Code Patch".
2018-01-28 17:46:51 +02:00
David Cernat
595bc5a152 [Client] Only send ObjectScale packets when scale actually changes 2018-01-28 05:58:56 +02:00
David Cernat
613adf6b30 [General] Update version to 0.6.3 2018-01-27 23:36:25 +02:00
David Cernat
5d4b97645d Merge pull request #374 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/CMakeLists.txt
2018-01-27 22:52:59 +02:00
David Cernat
d7e29f1f61 [Client] Unequip items with constant effect damage when resurrected 2018-01-27 20:19:39 +02:00
David Cernat
d19d8b0a34 [Client] Add and use enchantmentType argument for unequipItemsByEffect() 2018-01-27 19:37:16 +02:00
David Cernat
6c4bb8c423 [Client] Move resurrection code for local player to LocalPlayer 2018-01-27 19:09:55 +02:00
David Cernat
6b75a82777 [Client] Ignore equipment items for DedicatedActors with count below 0 2018-01-27 18:08:45 +02:00
David Cernat
e3bc11d9eb [Client] Fix ListBox overlap crashes by removing ListBoxes properly 2018-01-27 15:41:11 +02:00
Ilya Zhuravlev
9e9f6f3132 loadtes3: don't pack() non-POD structs 2018-01-26 21:35:51 -05:00
David Cernat
c6a85ee8f9 [Client] Add doesEffectListContainEffect() method to MechanicsHelper 2018-01-26 03:18:01 +02:00
David Cernat
aa392ebf20 [Client] Unequip items if necessary when attr/skill modifier is set to 0 2018-01-26 00:45:39 +02:00
David Cernat
ace825b99c [Client] Ignore invalid player class IDs from packets
Additionally, clean up variables names in related code.
2018-01-24 02:47:56 +02:00
David Cernat
c6874509b6 [Client] Ignore invalid faction IDs from packets 2018-01-24 02:25:44 +02:00
Ilya Zhuravlev
b4ec8aaf5e VideoState::queue_picture: ffmpeg expects a buffer of 4 pointers in sws_scale 2018-01-21 12:21:22 -05:00
Ilya Zhuravlev
8d44d3124e Android: Add callbacks for basic cursor handling. 2018-01-18 21:18:31 -05:00
Ilya Zhuravlev
359910762d GraphicsWindowSDL2: support setting up GLESv2 context for android 2018-01-18 17:11:22 -05:00
Ilya Zhuravlev
455f718394 Android: register a virtual controller definition 2018-01-17 23:14:23 -05:00
Ilya Zhuravlev
a038327521 SDLCursorManager: fix possibly invalid read when no cursor present
On android we have no cursor so I moved the check closer to usage
2018-01-17 23:03:11 -05:00
Daniel Vukelich
3af8f63895 Use unsigned integer types for QuickSave indices 2018-01-17 21:43:30 -05:00
David Cernat
5894ffae7d [Client] Ignore dynamic object placements or spawns in packets 2018-01-17 11:01:31 +02:00
David Cernat
28f47c4f81 [General] Update version to 0.6.2-hotfixed 2018-01-17 08:10:49 +02:00
David Cernat
9935f56d46 [General] Use doubles instead of ints for enchantmentCharge
Additionally, include enchantmentCharges for items  in PlayerEquipment packets.
2018-01-17 08:10:49 +02:00
David Cernat
f746958afa [Client] Send enchantmentCharge for items added or removed in containers 2018-01-17 08:10:49 +02:00
David Cernat
bce3d0eb4c [Client] Use more descriptive message for version mismatch 2018-01-17 08:10:49 +02:00
Bret Curtis
588c1df0f0
Merge pull request #1599 from xyzz/android
Update android port.
2018-01-16 11:12:21 +01:00
Ilya Zhuravlev
d2121ccd62 Update android port. 2018-01-16 00:11:27 -05:00
Thunderforge
36843ed31e Adding a tutorial for placing the ring in plain sight (#1598)
* Rearranging sections

* Adding instructions to place the ring in plain sight
2018-01-15 07:51:57 +01:00
Daniel Vukelich
f09fd6795c Follow openmw style guide 2018-01-14 11:57:11 -05:00
scrawl
2caaa48b91
Workaround to make sure message box remains on top (Fixes #4298) 2018-01-14 00:27:53 +00:00
scrawl
e2e48e0a50
Add default value for 'sAnd' GMST (Fixes #4269) 2018-01-14 00:27:05 +00:00
scrawl
d9d8de3061
Catch exceptions in updateWindowManager (Bug #4269) 2018-01-14 00:26:37 +00:00
scrawl
047c44f265
Ignore duplicate data directories to work around the fallout of (Fixes #3557) 2018-01-14 00:25:20 +00:00
scrawl
80f7279a4d
Change default installation directory from 'data' to 'basedata' (Bug #3557) 2018-01-14 00:24:30 +00:00
scrawl
259919d125
Print a warning when an ambiguous file on a case-sensitive file system is found 2018-01-14 00:23:29 +00:00
scrawl
4a96934f56
Merge pull request #1596 2018-01-14 00:22:56 +00:00
Daniel Vukelich
97924d97c7 Add the option for multiple quicksave slots
With more than 1 quicksave slot, slots will be created each time you
quicksave until the maximum number (configured in settings) of
quicksaves has been reached.  After that, the oldest quicksave slot will
be replaced each time you quicksave.  Saves are numbered sequentially,
unless the maximum number of slots is 1, in which case it is not numbered.
2018-01-12 20:09:39 -05:00
Marc Zinnschlag
2dff3aab22 allow . and - in the name part of a begin script statement, but not at the beginning of a name. Fixes #4061 2018-01-12 16:37:06 +01:00
Andrei Kortunov
eccb49da18 Do not summon the bound bow if there is no suitable ammo 2018-01-11 21:08:30 +04:00
Andrei Kortunov
b995617559 implement rateAmmo() function 2018-01-11 21:08:11 +04:00
scrawl
dd5ebe225b
Merge pull request #1580 2018-01-11 01:54:28 +00:00
scrawl
bba9a8dd91
Don't update off-screen animations
Make flying creatures animate in-place when out of processing range
2018-01-11 01:49:35 +00:00
scrawl
1522bda60b
Fix crash in getDistance when invoked before the game starts 2018-01-11 01:48:05 +00:00
scrawl
83726ee06a
Fix Reset Controls button not functioning properly 2018-01-11 01:47:42 +00:00
David Cernat
14ef2fa791
Merge pull request #369 from OpenMW/master
Add OpenMW commits up to 9 Jan 2018
2018-01-10 03:49:53 +02:00
scrawl
c7f60a6dc8
Merge pull request #1595 2018-01-09 13:48:07 +00:00
scrawl
f6ca7295a6
Revert "Merge pull request #1595"
This reverts commit 7ef7b1a7b1, reversing
changes made to 9e7e4de0ab.
2018-01-09 13:47:57 +00:00
scrawl
7ef7b1a7b1
Merge pull request #1595 2018-01-09 00:42:27 +00:00
scrawl
9e7e4de0ab
Merge pull request #1594 2018-01-09 00:42:20 +00:00
Andrei Kortunov
dba071f881 Remove the 'Screenshot saved' message (bug #4191) 2018-01-08 13:12:12 +04:00
David Cernat
8316ec0fa7 [Client] Update tes3mp change comment for object rescaling 2018-01-08 02:19:05 +02:00
David Cernat
09548d05f7 [Client] Ignore cell changes that move actors to where they already are 2018-01-08 01:37:01 +02:00
David Cernat
4a9a628a0f [Client] When getting an actor, make sure their cell is initialized 2018-01-07 02:35:30 +02:00
David Cernat
4caf7ca30a [Client] Add temporary fix for crashes caused by custom GUI elements 2018-01-06 20:16:32 +02:00
David Cernat
0cc86c04d1 [Client] Print plugin discrepancies, not just plugin lists side by side 2018-01-06 05:39:25 +02:00
David Cernat
a639d3494a [Client] Fix use of DedicatedPlayers as targets for ConsoleCommand 2018-01-05 01:24:15 +02:00
David Cernat
502df7d9c1 [Client] Clean up GUIChat slightly 2018-01-05 00:03:05 +02:00
David Cernat
a818140c14
Merge pull request #365 from OpenMW/master
Add OpenMW commits up to 2 Jan 2017
2018-01-04 12:12:18 +02:00
Thunderforge
bd072b131b Moving controller file out of the controllers subdirectory 2018-01-02 20:58:43 -06:00
David Cernat
1cf2f35a28 [Server] Add script functions to set & get plugin enforcement state 2018-01-02 16:33:18 +02:00
Andrei Kortunov
b277b83810 Display the 'Screenshot saved' message after the screenshot saving (bug #4191) 2018-01-02 14:52:42 +04:00
Bret Curtis
b86118f76f
Merge pull request #1593 from psi29a/fix_mips_builds
fix building on mips machines
2018-01-02 11:45:42 +01:00
Bret Curtis
c3c3fbc68e overriden -> overridden 2018-01-02 11:42:08 +01:00
David Cernat
65d978a3cb
Merge pull request #364 from OpenMW/master
Add OpenMW commits up to 1 Jan 2017
2018-01-02 07:50:37 +02:00
David Cernat
bca9c55046 [Client] Reinstate "Merge pull request #1529 from drummyfish/animfix"
This reverts commit 2f4cd6b713 and adds back the changes made by 45993d3da2 because the OpenMW issue at https://bugs.openmw.org/issues/4250 has been fixed by 57257d057f
2018-01-02 07:47:27 +02:00
Thunderforge
096e734df6 Adding gamecontrollerdb.txt file that got left behind due to being on .gitignore 2018-01-01 22:42:45 -06:00
Thunderforge
3f7143556a Providing different mappings depending on the version of SDL installed 2018-01-01 22:16:54 -06:00
Thunderforge
a5e4f95ed4 Updating controller mappings to latest version 2018-01-01 22:16:54 -06:00
Bret Curtis
7367899634 update openmw.appdata.xml to fix https://lintian.debian.org/tags/appstream-metadata-legacy-format.html 2018-01-01 19:47:36 +01:00
Bret Curtis
93f14c219c camelCase 2018-01-01 16:32:20 +01:00
Bret Curtis
7a7b040216 fix building on mips machines 2018-01-01 14:10:23 +01:00
Miloslav Číž
a73ab39fdd Update refraction scaling docs 2018-01-01 13:42:16 +01:00
Miloslav Číž
3b741dc4b7 Revert "Add slider for refraction size in settings window"
This reverts commit ee40b41285.
2018-01-01 13:28:14 +01:00
scrawl
c920f95d1e
Don't incorrectly discard root node transformation (Fixes #4272) 2017-12-31 23:49:43 +00:00
scrawl
57257d057f
Remove unintended jump cooldown (Fixes #4250) 2017-12-31 23:48:51 +00:00
David Cernat
47a3dc9ff2 [Server] Add broadcast argument to functions for sending WorldPackets 2017-12-30 21:52:30 +02:00
David Cernat
1e2517698d [Server] Send player speech and animation packets only to nearby players 2017-12-29 06:17:45 +02:00
David Cernat
2f4cd6b713 [Client] Revert "Merge pull request #1529 from drummyfish/animfix"
This reverts commit 45993d3da2, reversing
changes made to 3d347730dc.

That commit made players have to wait around 1.5 seconds after each jump before doing a new one.

It will be reinstated once its accompanying OpenMW issue at https://bugs.openmw.org/issues/4250 is fixed.
2017-12-26 19:27:13 +02:00
David Cernat
db0e0d376e [Client] Use new code to set the console's Ptrs from server scripts
Previously, reusing the console's object selection code made it so using the same Ptr twice in a row was akin to clicking on the same object twice in the console window, i.e. the object was deselected the second time around. Additionally, that same code was setting key focus to the hidden console window, preventing players from moving until they activated another window (such as their inventory or chat window).
2017-12-26 15:04:28 +02:00
David Cernat
5fd9079b26 [Client] Stop drag and drop when setting player inventory 2017-12-25 05:41:13 +02:00
David Cernat
40e70ebf9c [Client] Fix key focus for chat window 2017-12-25 05:08:36 +02:00
David Cernat
bed96e5a3d [Client] Remove check of GM_RestBed GUI mode that no longer exists 2017-12-25 03:26:28 +02:00
David Cernat
4f1df7c0c5 [Documentation] Update credits 2017-12-25 03:25:33 +02:00
David Cernat
cac2c6c1e8 Merge pull request #360 from TES3MP/0.6.1-openmw-updates while resolving conflicts 2017-12-25 02:25:01 +02:00
David Cernat
ecb0ad0d77 Merge pull request #359 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
2017-12-25 02:03:02 +02:00
David Cernat
06daddbd27 [Documentation] Update changelog for 0.6.2 2017-12-24 21:39:38 +02:00
David Cernat
993081ba1e [General] Add enchantmentCharge to worldObjects and items 2017-12-23 13:16:38 +02:00
scrawl
b8c25e6bff
Use the correct priority of animation sources in getStartTime (Fixes #4263) 2017-12-21 14:49:09 +00:00
Marc Zinnschlag
7245b251e8 Merge remote-tracking branch 'drummyfish/cs-cam' 2017-12-19 17:01:13 +01:00
Marc Zinnschlag
93716cecd9 Merge remote-tracking branch 'origin/master' 2017-12-19 17:01:03 +01:00
scrawl
993982628d
Merge pull request #1590 2017-12-18 20:41:12 +00:00
Andrei Kortunov
1a58171e86 Do not allow to sell items from containers with zero capacity (bug #4268) 2017-12-17 18:09:25 +04:00
Bret Curtis
1c25b7ca57
Merge pull request #1589 from Thunderforge/build/setting-cmake-cxx-standard
Explicitly setting CMAKE_CXX_STANDARD to C++11
2017-12-17 09:29:39 +01:00
David Cernat
fef6bddc68 [Client] Fix typo related to drag and dropping 2017-12-16 23:19:54 +02:00
Thunderforge
e4a1b6b5b8 Explicitly setting CMAKE_CXX_STANDARD to C++11 2017-12-16 14:36:27 -06:00
David Cernat
535fba0cb3 [Client] Finish drag and drops when arrested or teleported by server 2017-12-16 07:21:02 +02:00
Miloslav Číž
01f9d90315 CS: Reorder 3D input menu 2017-12-15 17:22:32 +01:00
Miloslav Číž
13dc1bd41e CS: Add tooltip to camera-ortho-size preference 2017-12-15 14:56:03 +01:00
Miloslav Číž
1f5feeddb9 CS: Change camera parameter types to int 2017-12-15 14:46:23 +01:00
Miloslav Číž
f2777f7242 CS: Mover object-marker-alpha under Rendering 2017-12-15 14:36:12 +01:00
Marc Zinnschlag
ecf1cea1b7 Merge remote-tracking branch 'drummyfish/cs-cam' 2017-12-15 13:41:54 +01:00
Miloslav Číž
79527b746a Remove unused variable 2017-12-14 17:29:24 +01:00
Miloslav Číž
b246580c63 Fix orbit camera axis 2017-12-13 20:08:38 +01:00
scrawl
ccd8ca2e69
Merge pull request #1586 2017-12-13 10:58:34 +00:00
scrawl
b6ac1c5697
Merge pull request #1587 2017-12-13 10:58:25 +00:00
scrawl
269c3227ea
Make sure we have cmake for the before_install step 2017-12-13 10:44:32 +00:00
Andrei Kortunov
ba46473038 Do not skip weather transitions from SetPos script command (bug #3603) 2017-12-13 10:53:23 +04:00
David Cernat
ebf88d12a3 [Client] Send PlayerInventory packet after buying skill training 2017-12-13 05:46:48 +02:00
scrawl
e9ecaf712b
Merge pull request #1584 2017-12-12 20:11:05 +00:00
scrawl
7d62f05f81
Merge pull request #1583 2017-12-12 20:10:59 +00:00
scrawl
70661a4b1c
Merge pull request #1585 2017-12-12 20:10:45 +00:00
David Cernat
0ad9c99cf4 [Client] Send PlayerInventory packet after completing a vendor trade 2017-12-12 15:18:56 +02:00
Andrei Kortunov
0e04a26ef6 Set duration of magic effects from ingredients (bug #4261) 2017-12-10 16:10:44 +04:00
Andrei Kortunov
c908ad2fba Do not allow to place actors underground via SetPos (bug #3783) 2017-12-10 14:38:02 +04:00
Chris Robinson
08e947319a Restore exception throwing to the decoder 2017-12-09 11:00:56 -08:00
Miloslav Číž
ee40b41285 Add slider for refraction size in settings window 2017-12-09 14:03:56 +01:00
Miloslav Číž
d13fc06baf Add basic refraction scale documentation 2017-12-09 12:52:28 +01:00
Chris Robinson
06ae61479a If a sound effect fails to load, substitute silence. 2017-12-08 22:10:09 -08:00
Miloslav Číž
e309dfd234 CS: Rename variables (AppVeyor fix) 2017-12-08 22:06:03 +01:00
scrawl
9cee439e37
Merge pull request #1577 2017-12-08 20:00:58 +00:00
scrawl
1d823d8ae1
Merge pull request #1579 2017-12-08 20:00:26 +00:00
scrawl
b12cd1f5b2
Merge pull request #1581 2017-12-08 20:00:15 +00:00
Miloslav Číž
c979a9e34f
Merge branch 'master' into cs-cam 2017-12-08 20:57:52 +01:00
Miloslav Číž
199e41833f
Merge branch 'master' into cs-cam 2017-12-08 20:56:05 +01:00
Miloslav Číž
d85f8deaa3 CS: Add fixed roll setting, plus ortho fix 2017-12-08 20:51:40 +01:00
Miloslav Číž
1b77e3ed62 CS: Add ortho camera setting 2017-12-08 18:18:27 +01:00
Miloslav Číž
bfad5ebde4 CS: Fix camera orbit control with keys 2017-12-08 17:42:20 +01:00
Chris Robinson
aecf74e7bb Don't throw exceptions from the audio decoder 2017-12-08 07:00:04 -08:00
Miloslav Číž
5e076ee015 CS: Fix camera orbit with arbitrary roll 2017-12-08 00:19:05 +01:00
Miloslav Číž
cfdc6c788e CS: Make camera FOV change dynamically 2017-12-08 00:05:50 +01:00
Miloslav Číž
7d36dd68dc CS: Make orbit camera not change roll 2017-12-07 23:52:05 +01:00
Miloslav Číž
360d786ff2 CS: Add rendering prefs and camera FOV 2017-12-07 23:48:34 +01:00
Andrei Kortunov
744859f327 Take in account armor condition in the armor rating calculation (bug #4246) 2017-12-07 22:43:32 +04:00
Miloslav Číž
a142a67972 Add default settings for 360 screenshots 2017-12-06 21:16:30 +01:00
Miloslav Číž
b69c16e682 Add setting option to scale water refractions 2017-12-06 20:39:09 +01:00
Allofich
7e87ce8787 Prevent combat on/off cycling for calmed actors 2017-12-06 01:03:24 +09:00
Allofich
e0c54b3f39 Stop guards trying to arrest player when calm
(Fixes #3863)
2017-12-05 23:53:02 +09:00
Andrei Kortunov
a28cc37501 Do not sell ingredients from organic containers 2017-12-05 10:24:58 +04:00
scrawl
d2b3f902c7
Merge pull request #1576 2017-12-04 21:19:49 +00:00
Andrei Kortunov
29b2308b2c Do not display cyrillic soft/hard signs in the journal index 2017-12-04 22:42:17 +04:00
Andrei Kortunov
b6ae7f3cc8 Do not add greetings to the journal index (bug #4342) 2017-12-04 22:42:10 +04:00
scrawl
441420225f
Contributing.md: referencing issues in commit messages 2017-12-04 17:00:02 +00:00
David Cernat
e97c9f72a2 [General] Rework getting/clearing of skill modifiers as with attributes 2017-12-04 15:06:27 +02:00
David Cernat
07f0cc2b0e
Merge pull request #353 from OpenMW/master
Add OpenMW commits up to 4 Dec 2017
2017-12-04 04:38:38 +02:00
scrawl
58de366c21
Merge pull request #1574 2017-12-03 22:22:48 +00:00
scrawl
ff1226c96b
Merge pull request #1575 2017-12-03 22:22:29 +00:00
Andrei Kortunov
8decd35607 Fixes crash on quickload from the container menu (bug #4239) 2017-12-03 21:49:13 +04:00
Alexander "Ace" Olofsson
50deed126b
Update SDL to 2.0.7 2017-12-02 21:48:57 +01:00
David Cernat
047ad40b96 [Client] Clear FortifyAttribute effects when server sets modifier to 0 2017-12-02 09:22:36 +02:00
David Cernat
2944be18ae [Server] Actually, turn SetAttributeModifier into ClearAttributeModifier
There's no way SetAttributeModifier() was going to make sense if, say, a player had drunk 3 different potions fortifying the same attribute and was wearing equipment fortifying it as well. How would one change the sum modifier of those while accounting for each specific effect's duration and magnitude?

The only workable solution is to allow the server to clear the modifier.
2017-12-02 09:19:33 +02:00
Miloslav Číž
37aa761283 Change spherical screenshot filtering to nearest 2017-12-01 21:47:26 +01:00
Miloslav Číž
390838e084 Replace switch with ifs in shader 2017-12-01 21:03:29 +01:00
Miloslav Číž
ea5e078526 Update shaders in CMakeLists 2017-12-01 19:54:48 +01:00
David Cernat
ef6dc61797 [Client] Send PlayerAttribute packets when attribute modifiers change 2017-11-30 23:03:34 +02:00
David Cernat
e8d636ebc3 [Server] Rework Get/SetAttributeCurrent into Get/SetAttributeModifier
As seen here, attributes don't use the concept of current values, but rather of value modifiers and value damage:

https://github.com/OpenMW/openmw/blob/master/apps/openmw/mwmechanics/stat.cpp#L217
2017-11-30 22:37:06 +02:00
David Cernat
c9c363ebef [General] Allow GameSettings to set bed & wilderness resting separately 2017-11-30 12:18:15 +02:00
David Cernat
e7f20e7daf Merge pull request #351 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
#	README.md
2017-11-30 10:06:38 +02:00
scrawl
a4d8aef40d
Merge branch openmw-43 into master
Conflicts:
	CMakeLists.txt
	README.md
	files/mygui/openmw_trade_window.layout
2017-11-29 22:37:50 +00:00
scrawl
bb7ca055d0
Update AUTHORS.md 2017-11-29 22:13:42 +00:00
scrawl
47a5229eed
Merge pull request #1564 2017-11-29 22:10:36 +00:00
scrawl
59bfd670c0
Merge pull request #1571 2017-11-29 22:04:41 +00:00
David Cernat
22521578eb
Merge pull request #349 from OpenMW/master
Add OpenMW commits up to 28 Nov 2017
2017-11-29 03:52:15 +02:00
Grigorii Latyshev
2abb1a2ec2 Added checkMagicka parameter 2017-11-28 23:35:54 +01:00
Grigorii Latyshev
9fe5a4d236 Revert condition changes 2017-11-28 23:35:46 +01:00
Grigorii Latyshev
dab72b45db Move mana reducing code back 2017-11-28 23:34:05 +01:00
scrawl
3984dc8f16
Merge pull request #1570 2017-11-28 21:39:04 +00:00
Andrei Kortunov
b9d9660efd Update music state in the menu mode (bug #3664) 2017-11-28 20:49:48 +04:00
Andrei Kortunov
f7f8dfaf2a AiWander: do not allow flying/swimming creatures to use pathgrid 2017-11-28 18:03:13 +04:00
scrawl
9920779a7b
Merge pull request #1543 2017-11-27 21:21:54 +00:00
scrawl
c50b18b3bb
Move PathgridGraph out of CellStore
By definition this is not 'Mutable state of a cell' and does not belong in CellStore.

This change should improve startup times (graph is now loaded on demand) and edits to 'pathgrid.hpp' no longer cause the entirety of OpenMW to be rebuilt.
2017-11-27 21:20:31 +00:00
scrawl
5fe68ab062
Merge pull request #1419 2017-11-27 21:13:11 +00:00
scrawl
fee2e946d1
Merge pull request #1565 2017-11-27 21:13:09 +00:00
David Cernat
3508a16836 [General] Use GameSettings packet to set ability to rest and wait 2017-11-27 07:39:02 +02:00
Kyle Cooley
eb23367175 Fix rendering depth/order issues 2017-11-26 17:39:57 -05:00
Grigorii Latyshev
ce32462358 Move code to apps/openmw/mwmechanics/spellcasting.cpp, move reduce mana code to CastSpell::cast(const ESM::Spell*) 2017-11-26 13:58:04 +01:00
Andrei Kortunov
dea7d0beff Do not interrupt swim and sneak idle animations during attack (bug #4122) 2017-11-26 09:54:12 +04:00
Kyle Cooley
c8f79ea838 Adjust rotation markers 2017-11-25 20:46:14 -05:00
scrawl
88ec6179ff
Merge pull request #1566 from akortunov/guifixes
Set default values for class and birthsign select menus
2017-11-25 22:58:40 +00:00
David Cernat
300ca905fc [Client] Don't pause game when minimizing window, despite MyGUI issues 2017-11-25 13:32:43 +02:00
Andrei Kortunov
55db3c2712 Set default values for class and birthsign select menus (bug #4226) 2017-11-25 11:35:29 +04:00
David Cernat
d06817a356
Merge pull request #347 from OpenMW/master
Add OpenMW commits up to 25 Nov 2017
2017-11-25 08:54:22 +02:00
Grigorii Latyshev
32096ae0cc Fix displayed spell success chance in God Mode 2017-11-25 01:47:18 +01:00
scrawl
665ca5b2d5
Merge pull request #1558 from akortunov/rusjournal
Cyrillic journal index (bug #2485)
2017-11-24 23:17:28 +00:00
scrawl
8226c8dc92
Merge pull request #1560 from akortunov/guifixes
Fix the Topics button position if the Tribunal is not installed
2017-11-24 23:16:33 +00:00
scrawl
f5c075b188
Merge pull request #1563 from drummyfish/throwfix
Make thrown projectiles rotate (#4216)
2017-11-24 23:15:54 +00:00
Grigorii Latyshev
a7c953b318 Display 0 chance for spell if player does not have enought magic energy 2017-11-24 15:06:07 +01:00
David Cernat
2373be9735
Merge pull request #345 from OpenMW/master
Add OpenMW commits up to 23 Nov 2017
2017-11-24 05:46:53 +02:00
Miloslav Číž
4373fea21e Correct projectile rotation 2017-11-23 20:27:22 +01:00
Miloslav Číž
d0a299caab Rotate thrown projectiles around the bb center 2017-11-23 20:02:38 +01:00
Miloslav Číž
38bda3bd71 Do not save thrown state for projectiles 2017-11-23 18:00:10 +01:00
scrawl
02b37dc036
Merge pull request #1562 from akortunov/carriage
Do not show carriage return characters
2017-11-23 15:56:12 +00:00
Andrei Kortunov
94c0e3ed10 Move toUpper() from StringUtils to the JournalViewModel 2017-11-23 19:37:45 +04:00
Andrei Kortunov
a8bf4cdd98 Remove redundant include 2017-11-23 19:29:40 +04:00
Miloslav Číž
3dbcda6686 Make use of mEffectAnimationTime for projectile rotation 2017-11-23 15:14:15 +01:00
Miloslav Číž
2b9a0a7732 Save new projectile state 2017-11-23 12:11:26 +01:00
Andrei Kortunov
4f190bf7f4 Do not show carriage return characters (bug #3696) 2017-11-23 14:58:20 +04:00
Andrei Kortunov
4d384889af Fix the Topics button position if the Tribunal is not installed 2017-11-23 10:14:45 +04:00
David Cernat
656453725b
Merge pull request #343 from OpenMW/master
Add OpenMW commits up to 23 Nov 2017
2017-11-23 04:51:13 +02:00
Miloslav Číž
de42aa9d03 Make thrown projectiles rotate 2017-11-23 00:32:22 +01:00
David Cernat
6668b9ab42 [General] Implement ConsoleCommand packet 2017-11-23 00:21:47 +02:00
Andrei Kortunov
86a17b1e3e Get rid of the redundant Utf8Stream when during journal index creation 2017-11-22 09:06:54 +04:00
Andrei Kortunov
3571f7f413 Remove getEncoding() from WindowManager 2017-11-22 08:32:38 +04:00
scrawl
2136003e1c
Reapply commit a3f821cdc which got lost in a merge 2017-11-21 22:43:56 +00:00
scrawl
cd4f71d5cd
Merge pull request #1555 from akortunov/guifixes
Reworked trade window
2017-11-21 22:40:16 +00:00
Andrei Kortunov
67acb83b62 Add missing include 2017-11-21 13:27:33 +04:00
Andrei Kortunov
5f41f7c48d Clean code up a bit 2017-11-21 13:03:38 +04:00
Andrei Kortunov
ba91cd658b Convert topic name to Unicode 2017-11-21 12:31:23 +04:00
Andrei Kortunov
ea36956ff1 Reworked trade window 2017-11-21 10:00:53 +04:00
Andrei Kortunov
f0ca3eabd3 Merge from upstream master 2017-11-21 09:39:54 +04:00
Andrei Kortunov
a83a43e376 Determine when need to use the Cyrillic journal index 2017-11-21 09:32:35 +04:00
scrawl
e840c4352f
Merge pull request #1556 from jbo-85/master
Fix search paths in FindSDL2.cmake to find SDL2 built from source
2017-11-20 23:27:51 +00:00
scrawl
cc3c27f241 Clean up layout files to use Spacer class 2017-11-20 23:20:04 +00:00
scrawl
a3f821cdcd Disable keyboard for trade +/- buttons
For one, because their RepeatClick handler breaks the keyboard function, and because its redundant anyway (just press Up/Down arrow with the edit box focused to do the same thing)
2017-11-20 23:20:04 +00:00
scrawl
9fda3b6db4 Fix NumericEditBox behavior broken by switch to std::stoi
For some reason stoi doesn't throw an error for '1foo' while 'foo1' does.

Now the edit box flat out rejects any non-digit key events.
2017-11-20 23:20:03 +00:00
scrawl
719255c5c6
Merge pull request #1557 from akortunov/journalfix
[Feedback needed] Handle 128px Tx_menubook_topics textures
2017-11-20 23:07:18 +00:00
scrawl
39a9e90b1d
Merge pull request #1553 from drummyfish/leakfix
Fix memory leak in WindowManager
2017-11-20 20:39:38 +00:00
Andrei Kortunov
ce5bdd6361 Split the JournalBooks::createTopicIndexBook() 2017-11-20 22:25:53 +04:00
Andrei Kortunov
a391990f2a Provide multibyte toLower() and single chars comparator 2017-11-20 21:30:46 +04:00
Andrei Kortunov
4dcaf040e6 A Russian journal index 2017-11-20 19:37:24 +04:00
Andrei Kortunov
60d0c83cca Handle 128px Tx_menubook_topics textures 2017-11-20 17:39:28 +04:00
jbo-85
f896c9acb6 Fix search paths in FindSDL2.cmake to find SDL2 built from source 2017-11-19 11:56:24 +01:00
Miloslav Číž
ea2bbce68a Fix memory leak in WindowManager 2017-11-18 19:27:09 +01:00
David Cernat
b2536d5296
Merge pull request #341 from testman42/patch-1
Update scripts repo link
2017-11-17 18:48:06 +02:00
Testman
7e0662cf81
Update scripts repo link
Change repo name from PluginExamples to CoreScripts.
2017-11-17 11:14:33 +01:00
David Cernat
28e1947f23 Merge pull request #339 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/engine.cpp
2017-11-17 01:26:31 +02:00
Miloslav Číž
df61a30259 preincrement 2017-11-16 23:20:24 +01:00
Miloslav Číž
ddbf6c162f use linear filtering for the cubemap 2017-11-16 22:43:41 +01:00
Miloslav Číž
fc507c66f7 remove no longer needed stuff 2017-11-16 22:17:00 +01:00
Miloslav Číž
3ae5310567 use loading screen to freeze the screen 2017-11-16 22:08:33 +01:00
Miloslav Číž
2b5f147545 allow non-power-of-2 sized cubemaps 2017-11-16 20:06:34 +01:00
scrawl
36f4f0ef85 Don't increase simulationTime while the game is minimized (Fixes #4211) 2017-11-16 18:48:49 +00:00
Miloslav Číž
902862aa8b display confirming message for all screenshots 2017-11-16 13:50:10 +01:00
Miloslav Číž
bccff768ff select closest power of 2 resolution for the cubemap 2017-11-16 13:41:09 +01:00
Miloslav Číž
56c74fb96f add scene switch node 2017-11-16 12:46:46 +01:00
Miloslav Číž
1a4f351e3d move camera freeze code 2017-11-16 12:17:52 +01:00
David Cernat
5aff515d3f
Merge pull request #337 from OpenMW/master
Add OpenMW commits up to 15 Nov 2017
2017-11-16 08:49:56 +02:00
scrawl
cf40d19d7d
Merge pull request #1551 from thegriglat/abs
Change abs to std::abs
2017-11-15 17:34:59 +00:00
scrawl
35d68f038d Update dialogue topics list after result script is run
Regression from 0.42.
2017-11-15 17:20:40 +00:00
scrawl
60fba7acd8 Fix reorder warning 2017-11-15 17:20:08 +00:00
scrawl
c36d250044 Parse dialogue text for keywords after the resultscript runs (Fixes #4210) 2017-11-15 17:20:06 +00:00
scrawl
7c5d2a1ac4 Update dialogue topics list after result script is run
Regression from 0.42.
2017-11-15 17:20:06 +00:00
scrawl
5a93b6a324 Enable word-wrapping for the console history 2017-11-15 17:20:05 +00:00
Miloslav Číž
af38d3a47d get rid of sphericalscreenshot class 2017-11-15 17:01:16 +01:00
Miloslav Číž
226fb9c26b render cubemaps in OGL coordinates 2017-11-15 16:07:01 +01:00
Miloslav Číž
1c3d45f641 dirty 360 screenshot GPU setup 2017-11-15 15:20:59 +01:00
Miloslav Číž
823218bb61 freeze screen during screenshot taking 2017-11-14 18:23:12 +01:00
Grigorii Latyshev
6e4f6c4bd5 Change abs to std::abs 2017-11-13 21:36:55 +01:00
David Cernat
2ba1c84cf7 Merge pull request #335 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwgui/container.cpp
2017-11-12 06:35:15 +02:00
Alexander Stillich
93e9df15c9 Fixed parameter naming 2017-11-11 22:58:02 +00:00
Alexander Stillich
52b3507a2b Removed escape_hash_filter::mPrevious, removed usage of boost::replace_all 2017-11-11 22:58:02 +00:00
Alexander Stillich
09aac22782 Added StringUtil::replaceAll() 2017-11-11 22:58:01 +00:00
Alexander Stillich
92aaff3b78 Fixed escaping @ in boost program options filter 2017-11-11 22:57:59 +00:00
scrawl
a7fd27f413
Merge pull request #1544 from rexelion/archerrangefix
use fProjectileMaxSpeed for ranged weapons distance (fixes #4192)
2017-11-11 22:30:59 +00:00
scrawl
98b4f9c596
Merge pull request #1549 from akortunov/itemmodels
Item models reworking
2017-11-11 22:12:07 +00:00
scrawl
ae9f79c192
Merge pull request #1550 from akortunov/trackingfix
Do not track a nearest actor during combat and pursue
2017-11-11 22:10:33 +00:00
scrawl
dc016059c3 Disable Activate key when textinput is active (Bug #4151) 2017-11-11 22:00:18 +00:00
scrawl
3b9e1e8c1b Make movement keys not function in text input mode 2017-11-11 22:00:09 +00:00
scrawl
b7eda61f7a Fix overlapping widgets in trade window layout (Fixes #4205) 2017-11-11 21:59:21 +00:00
Miloslav Číž
1ab854446c remove unused include 2017-11-11 17:21:01 +01:00
Andrei Kortunov
8c0dcd8b2b Do not track a nearest actor during combat and pursue (bug #4179) 2017-11-11 19:46:59 +04:00
Miloslav Číž
511a5686da planet mapping adjustment 2017-11-11 15:10:54 +01:00
Miloslav Číž
4fc532d873 reference screenshot settings only from one place 2017-11-11 14:32:28 +01:00
Miloslav Číž
d71d984cfa more unused stuff cleanup 2017-11-11 14:14:24 +01:00
Miloslav Číž
e804c4a011 remove no longer used method 2017-11-11 13:54:14 +01:00
Miloslav Číž
525f8b4d8e get rid of special key for 360 screenshot 2017-11-11 13:51:42 +01:00
rexelion
f0649849b8 changed variable name to be more descriptive 2017-11-11 12:00:23 +00:00
Andrei Kortunov
9943bd4d74 AiWander fast forwarding improvements (bug #3638) 2017-11-11 15:31:06 +04:00
Andrei Kortunov
03f129b53c remove redundant allowedToInsertItems() function from ItemModel 2017-11-11 11:58:22 +04:00
Andrei Kortunov
99517d83ea Bound items detection refactoring 2017-11-11 11:58:22 +04:00
Andrei Kortunov
a02124f884 Handle item owners during pickpocketing 2017-11-11 11:58:18 +04:00
David Cernat
01db219de4
Merge pull request #333 from OpenMW/master
Add OpenMW commits up to 11 Nov 2017
2017-11-11 03:46:21 +02:00
scrawl
a5ba1caed1
Merge pull request #1541 from astillich/4189
Fixed escaping @ in boost program options filter
2017-11-10 23:08:54 +00:00
scrawl
f1aeb416ec Disable Activate key when textinput is active (Bug #4151) 2017-11-10 22:54:53 +00:00
scrawl
a5adc5b018 Add NPC base skeleton files to the optimizer blacklist (Fixes #4159) 2017-11-10 22:51:32 +00:00
scrawl
b06512a60d Fix error message that referred to the wrong file (Bug #4159) 2017-11-10 22:51:32 +00:00
scrawl
1afbf99f74 Make movement keys not function in text input mode 2017-11-10 22:51:31 +00:00
scrawl
b9baee51d5 Fix overlapping widgets in trade window layout (Fixes #4205) 2017-11-10 22:51:29 +00:00
Miloslav Číž
1f49612ca3 enable water effects for 360 screenshots 2017-11-10 19:18:16 +01:00
Miloslav Číž
319ed2f9b8 disable 360 screenshots in vanity/preview mode 2017-11-10 15:23:44 +01:00
Miloslav Číž
497b33e403 small corrections 2017-11-10 14:28:09 +01:00
rexelion
69a56eaea3 don't initialise rangeAttackOfTarget 2017-11-10 10:44:53 +00:00
Miloslav Číž
9ab3a0c44b set cubemap width differently 2017-11-10 11:16:25 +01:00
Miloslav Číž
5baff05bac add cubemap mapping 2017-11-10 10:50:28 +01:00
Miloslav Číž
5a07d135ae add settings for cubemap size 2017-11-10 10:34:46 +01:00
Kyle Cooley
1cd539bad2 Fix render order for markers 2017-11-10 02:06:06 -05:00
Andrei Kortunov
3694b6ec90 Move onClose() check to item models 2017-11-10 10:58:43 +04:00
Andrei Kortunov
ac33ff9482 Move onDropItem() check to item models 2017-11-10 10:58:43 +04:00
Andrei Kortunov
3604b73d60 Move onTakeItem() to item models 2017-11-10 10:58:40 +04:00
Kyle Cooley
556117f6e6 Update marker transparency when changed. 2017-11-10 01:56:06 -05:00
David Cernat
f2a6957e16 Merge pull request #331 from OpenMW/master while resolving conflicts 2017-11-10 08:43:50 +02:00
Miloslav Číž
43c49e2f31 delete accidentally commited files 2017-11-09 23:12:23 +01:00
Miloslav Číž
1b184d8716 correct player mask 2017-11-09 23:09:13 +01:00
Miloslav Číž
e54c0a90fa fix mirrored spherical screenshots 2017-11-09 21:14:02 +01:00
Miloslav Číž
d763e9fe46 add settings for spherical screenshots 2017-11-09 20:25:29 +01:00
Kyle Cooley
de214db8d4 Use configured transparency. 2017-11-09 13:45:32 -05:00
Kyle Cooley
197ea95646 Prevent arrows for move/scale markers from intersecting. 2017-11-09 13:04:46 -05:00
Miloslav Číž
8f32114025 segfault fix 2017-11-09 18:26:27 +01:00
Miloslav Číž
d4fd08a63f save 360 screenshots in the configured directory 2017-11-09 16:49:46 +01:00
Miloslav Číž
1b97a541f4 make a new action for 360 screenshot 2017-11-09 16:06:29 +01:00
rexelion
983c33c4c8 don't use a pointer for ActionWeapon 2017-11-09 14:23:26 +00:00
Miloslav Číž
f60840754f disable water effects for spherical screenshots 2017-11-09 14:44:42 +01:00
Miloslav Číž
5698d70806 small planet mapping 2017-11-08 12:58:27 +01:00
Miloslav Číž
5f36518181 spherical mapping 2017-11-08 09:15:45 +01:00
scrawl
41ecbdbe6c Add missing WaitDialog::clear() (Fixes #4196) 2017-11-08 00:56:05 +00:00
scrawl
9ecdcc187f Clarify a warning message refers to inventory objects 2017-11-08 00:26:09 +00:00
scrawl
95b3c1181a Update shader with a non-color tracking material when equipment is changed during chameleon/invisibility effects (Fixes #4190) 2017-11-08 00:24:52 +00:00
scrawl
e42bd71081 Add missing WaitDialog::clear() (Fixes #4196) 2017-11-08 00:24:04 +00:00
scrawl
244cc5b861 Reduce error spam 2017-11-08 00:24:03 +00:00
scrawl
7b4add2ae4 Fall back to non-shader material if creating the shader fails
Also fixes an uncaught exception that will break the whole game.
2017-11-08 00:24:03 +00:00
Alexander Stillich
43b5c2e36b Fixed parameter naming 2017-11-07 23:20:10 +01:00
Alexander Stillich
70d578d050 Removed escape_hash_filter::mPrevious, removed usage of boost::replace_all 2017-11-07 23:10:58 +01:00
Alexander Stillich
af3e1f92ec Added StringUtil::replaceAll() 2017-11-07 23:06:23 +01:00
Miloslav Číž
4761a3d98b dirty cylindrical projection 2017-11-07 22:13:05 +01:00
Miloslav Číž
3be9e2ee95 make spherical screenshot class 2017-11-07 19:47:36 +01:00
rexelion
cab0002461 Backing up distance is now dependent on opponents's weapon range; don't back up from ranged oponents 2017-11-07 17:57:23 +00:00
Miloslav Číž
5afe02505b hide player in first person 360 screenshot 2017-11-07 16:12:31 +01:00
Miloslav Číž
ce55d7c2f5 basic cubemap rendering 2017-11-07 15:02:01 +01:00
Miloslav Číž
7feba7e498 basic setup for 360 screenshots 2017-11-07 13:07:11 +01:00
rexelion
a1d9f11b04 use fProjectileMaxSpeed for ranged weapons distance 2017-11-07 11:43:21 +00:00
Kyle Cooley
492b99b008 Transparent object markers 2017-11-07 00:41:27 -05:00
scrawl
801f2d42d5
Merge pull request #1537 from drummyfish/guardfix
Check the real distance to target in AIPursue (issue #4184)
2017-11-05 23:24:59 +00:00
Miloslav Číž
f98a821482 fix possible bug in aipursue 2017-11-05 23:46:15 +01:00
Alexander Stillich
7d39c5450c Fixed escaping @ in boost program options filter 2017-11-05 22:14:16 +01:00
scrawl
87c79d7102
Merge pull request #1536 from rexelion/knockoutfix
Wait a few seconds before getting up (fixes #3884)
2017-11-05 20:27:54 +00:00
scrawl
45993d3da2
Merge pull request #1529 from drummyfish/animfix
Stop character landing animation when turning (issue #4177)
2017-11-05 20:24:24 +00:00
Miloslav Číž
430d01a39a additional animation refactor 2017-11-05 20:19:47 +01:00
rexelion
de7a7d842b mTimeUntilWake is initialised in the constructor 2017-11-05 18:30:34 +00:00
scrawl
3d347730dc
Merge pull request #1524 from psi29a/cmake_31
standerdise on 3.1.0
2017-11-05 16:18:34 +00:00
Miloslav Číž
282800b5b2 Create LICENSE (#1532)
* Create LICENSE

Let's add the license file so that GitHub officially registers it and displays it next to the project.

* move license files

* update licenses in cmakelists.txt

* fix link in README
2017-11-05 15:37:38 +00:00
scrawl
e3c42251f9
Update AUTHORS.md 2017-11-05 15:36:26 +00:00
scrawl
e6303c578c
Merge pull request #1530 from rexelion/curseitemfix
Trigger OnActivate when item is picked up through the inventory (Issue #3726)
2017-11-05 15:35:39 +00:00
rexelion
48ec680f23 use game time instead of real time 2017-11-04 19:37:20 +00:00
Miloslav Číž
f34223fce9 check the real distance to target in aipursue 2017-11-04 20:02:21 +01:00
rexelion
ab66034ed1 use uniform_int_distribution instead of rand() 2017-11-04 02:15:56 +00:00
rexelion
ee2f3db9a8 fixed randomness 2017-11-04 01:31:15 +00:00
rexelion
8c2cc0f42f break invisibility first 2017-11-04 00:44:16 +00:00
rexelion
bcbfa5fe1e prevent activation, leave the rest to the script 2017-11-04 00:38:33 +00:00
rexelion
de83ad0116 use real time; wait random number of seconds 2017-11-04 00:24:09 +00:00
rexelion
5b8610b34b knocked out characters wait some time before getting up 2017-11-01 23:44:50 +00:00
David Cernat
2ca4017371 [Client] Force position updates for players in animations 2017-11-01 22:00:54 +02:00
rexelion
a9e5e19482 OnActivate is triggered when the item is picked up 2017-10-31 22:33:26 +00:00
Miloslav Číž
ff1265c0e7 refactor jump animation 2017-10-31 14:22:24 +01:00
David Cernat
be25decee2 [General] Implement PlayerSpeech packet 2017-10-31 15:19:14 +02:00
David Cernat
a31d43965f
Merge pull request #328 from OpenMW/master
Add OpenMW commits up to 31 Oct 2017
2017-10-31 06:22:57 +02:00
scrawl
5e69f6033f
Merge pull request #1531 from drummyfish/cyclefix
Don't switch weapon when cycling to the same weapon (issue #4180)
2017-10-31 00:28:15 +00:00
rexelion
e8743f3f79 check the presence of OnActivate using the SuppressActivate flag instead of looking for keywords 2017-10-30 21:16:25 +00:00
Miloslav Číž
3c65bdaf14 weapon cycle fix 2017-10-30 18:05:45 +01:00
Miloslav Číž
7bc512974f use mcurrentjump instead of custom attrib 2017-10-30 15:26:38 +01:00
David Cernat
605b06c303 [General] Find actor speech captions instead of sending them in packets 2017-10-30 11:06:09 +02:00
rexelion
4e6f53d6f1 item added to the player and OnActivate is triggered when the inventory is closed 2017-10-29 11:45:17 +00:00
rexelion
1ee5dcff77 added a function to determine if a script contains OnActivate 2017-10-28 20:56:08 +01:00
Miloslav Číž
5c8f491441 move animation disabling code to a better place 2017-10-28 18:46:52 +02:00
David Walley
41dc82abad Update Links to Documentation in settings.cfg files (#1523)
* Update settings-default.cfg

* Update settings.cpp
2017-10-28 16:05:30 +00:00
scrawl
9c9da7b49f
Merge pull request #1527 from drummyfish/master
Remove redundant condition
2017-10-28 15:59:35 +00:00
scrawl
d61fc6e8f0
Merge pull request #1528 from ace13/downgrade-mygui
Downgrade MyGUI to 3.2.2 for Windows builds
2017-10-28 15:59:10 +00:00
Miloslav Číž
f9c396e0ea stop landing animation when turning 2017-10-28 15:48:07 +02:00
Alexander "Ace" Olofsson
04af200ae8 Downgrade MyGUI to 3.2.2 for Windows builds 2017-10-28 13:37:41 +02:00
Miloslav Číž
03401bb5df remove redundant condition 2017-10-27 20:19:20 +02:00
David Cernat
413893aa51 [General] Implement PlayerAnimPlay packet 2017-10-27 09:10:29 +03:00
David Cernat
37304655da Merge pull request #326 from OpenMW/master
Add OpenMW commits up to 25 Oct 2017
2017-10-26 17:28:56 +03:00
Bret Curtis
d19839a666 standerdise on 3.1.0 2017-10-25 21:55:58 +02:00
scrawl
f9397ce933 Merge branch 'master' into openmw-43 2017-10-25 14:17:06 +00:00
scrawl
ae14aa0c84 Merge pull request #1522 from AnyOldName3/yet-another-cmake-fix
Ensure the git-version target puts the version file in the appropriate directory/ies
2017-10-25 13:58:04 +00:00
scrawl
9f5e49f726 Merge pull request #1521 from ace13/fix-cpack-nsis
Windows: Update CPack configuration for NSIS packages
2017-10-25 13:55:54 +00:00
scrawl
90f4e9530a Merge pull request #1517 from ace13/update-osg
Updating OSG packages to 3.4.1
2017-10-25 13:49:55 +00:00
David Cernat
50d5fffb7f [General] Add and implement PlayerQuickKeys packet 2017-10-25 07:21:00 +03:00
AnyOldName3
c1a871ff1f Make indentation consistent. 2017-10-24 23:31:40 +01:00
AnyOldName3
daf7d8451c Switch to a more reliable method of passing the git-version targt the data it needs 2017-10-24 23:29:18 +01:00
AnyOldName3
e3142b9643 Add missing variables to those forwarded to the git-version target 2017-10-24 23:10:50 +01:00
Alexander "Ace" Olofsson
3e51c9e6b3 Missed the OpenCS config file 2017-10-24 23:23:55 +02:00
Alexander "Ace" Olofsson
2e6cf53fdd Update CPack configuration for NSIS packages
Now grabs generated files from the configuration directory where they're
generated
2017-10-24 23:05:56 +02:00
scrawl
4a7be0ffda Don't reset journal index to a lower value (Fixes #4172) 2017-10-24 20:02:35 +00:00
scrawl
954475f61f Merge branch 'master' into openmw-43 2017-10-24 17:05:09 +00:00
David Cernat
dd25c7db4e Merge pull request #324 from OpenMW/master
Add OpenMW commits up to 24 Oct 2017
2017-10-24 19:36:14 +03:00
David Cernat
a94d4ce6f5 Merge pull request #323 from TES3MP/0.6.1
Add hotfix commit for 0.6.1 from 23 Oct 2017
2017-10-24 19:34:34 +03:00
scrawl
4437a72e47 Merge pull request #1519 from drummyfish/rainfix
fix rain ripple regression (bug #4169)
2017-10-24 15:31:16 +00:00
Miloslav Číž
3731e20228 fix rain ripple regression 2017-10-24 14:12:41 +02:00
scrawl
0c6ef17fb5 Add explicit variant of 'OnActivate' 2017-10-23 23:33:06 +00:00
scrawl
e564dd842e Refactor dialogue responses to make sure messages from scripts are printer afterwards, not before the dialogue response (Fixes #4166)
Don't delete Link objects prematurely (Fixes #4171)
2017-10-23 23:33:06 +00:00
scrawl
2a0b2c4e24 Hide modal window before deleting it (Fixes #4168) 2017-10-23 23:33:05 +00:00
David Cernat
8c47d63b08 [General] Update version to 0.6.2 2017-10-23 20:22:29 +03:00
David Cernat
3aedc2e5bc [Server] Don't automatically share PlayerTopic packets between players 2017-10-23 19:39:35 +03:00
Marc Zinnschlag
dcd08e6329 updated changelog 2017-10-23 14:28:21 +02:00
Marc Zinnschlag
0153b54c3f increased version number 2017-10-23 14:08:08 +02:00
David Cernat
360cf2ead7 Merge pull request #321 from OpenMW/master
Add OpenMW commits up to 22 Oct 2017
2017-10-23 14:51:29 +03:00
Alexander "Ace" Olofsson
32bdd500af Updating OSG packages to 3.4.1 2017-10-22 23:13:01 +02:00
scrawl
8b19a8b7f6 Merge pull request #1513 from lukago/feature4082b
Feature #4082: use many ingredients/potions instantly
2017-10-22 20:51:14 +00:00
scrawl
3d0094bd2e Fix behavior of 'journal' command when invoked with already seen entry 2017-10-22 20:50:15 +00:00
scrawl
768da57da2 Fix dialogue topics displayed in lower case 2017-10-22 20:50:15 +00:00
David Cernat
3a9e5e3a7b Merge pull request #319 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwworld/worldimp.hpp
2017-10-22 20:27:44 +03:00
scrawl
f3be39660b Merge pull request #1516 from baszczewski/patch-1
Fix assert with empty setting value
2017-10-22 16:31:42 +00:00
Marcin Baszczewski
46b015d3d9 Fix assert with empty setting value
Local value could be empty, so it's important to check it size before read first char.
2017-10-22 10:10:04 +02:00
lukago
b6cb3b445c use getIndex to handle other windows, nullsafe fixes 2017-10-21 23:34:57 +02:00
scrawl
bb4ffb7743 Merge pull request #1514 from akortunov/ringfix
Do not replace an equpped ring of the same value
2017-10-21 13:35:55 +00:00
scrawl
075a7fee20 Merge pull request #1515 from akortunov/guifixes
Fix a 'Good Beast' companion window
2017-10-21 13:35:29 +00:00
scrawl
5b2fe01375 Merge pull request #1508 from AnyOldName3/shut-up-travis
Mark worldimp functions as override to stop distracting Travis CI war…
2017-10-21 13:34:48 +00:00
Andrei Kortunov
eaff7e30aa Fix a 'Good Beast' companion window 2017-10-21 16:56:21 +04:00
Andrei Kortunov
e64f14b7ce Do not replace an equpped ring of the same value 2017-10-20 23:05:12 +04:00
lukago
a3225364ff refactor, use dragItem method 2017-10-19 17:43:27 +02:00
AnyOldName3
03fc3353b9 Tidy up indentation 2 2017-10-19 16:34:50 +01:00
AnyOldName3
f3e6b26e6b Tidy up indentation 2017-10-19 16:34:11 +01:00
scrawl
9be27193a3 Merge pull request #1512 from Rhiyo/patch-1
fixed new clothing replacing old clothing of same value
2017-10-19 14:54:27 +00:00
lukago
43f94a8890 simplify drag and drop on avatar for potions and ingredients 2017-10-19 16:50:04 +02:00
Marc Zinnschlag
0b163f0a50 Merge remote-tracking branch 'aesylwinn/forceNewProject' 2017-10-19 14:44:30 +02:00
Marc Zinnschlag
bdabace7e2 Merge remote-tracking branch 'aesylwinn/LLmerge' 2017-10-19 14:24:58 +02:00
Rhiyo
d9fe3aac99 fixed new clothing replacing old clothing of same value
Found on the bug http://bugs.openmw.org/issues/4165.

In original Morrowind, new clothing of the same value wouldn't replace old clothing. Tested with common and expensive clothing by selling to merchants and using the AddItem console command in original Morrowind. 

In OpenMW, before this change, new clothing of the same value would replace old clothing, tested with the same methods used above.
2017-10-19 22:46:08 +10:30
Kyle Cooley
6d8666d80d Force new project file when creating new project 2017-10-18 20:21:44 -04:00
AnyOldName3
9571cd8754 Switch defaultfilters to be handled by a binary-friendly version of the resource macro 2017-10-19 00:50:57 +01:00
AnyOldName3
2abff22c08 Make MWWorld::World final to enable compiler optimisations 2017-10-18 13:48:31 +01:00
AnyOldName3
7440cf37bc Remove redundant virtual keywords implied by override keywords 2017-10-18 13:37:37 +01:00
David Cernat
260b3411c3 Merge pull request #317 from OpenMW/master
Add OpenMW commits up to 18 Oct 2017
2017-10-18 15:13:48 +03:00
AnyOldName3
69da89be39 Mark a method I missed out the first time as override 2017-10-18 13:05:04 +01:00
scrawl
33ceddc58b Merge pull request #1506 from akortunov/swimanimations
Use SwimTurnLeft/Right animations correctly
2017-10-18 10:03:30 +00:00
scrawl
21a705fb75 Merge pull request #1507 from AnyOldName3/data-local-fix
Fix the loading of 'data-local' lines which I broke
2017-10-18 09:59:43 +00:00
scrawl
7328de6c50 Merge pull request #1505 from drummyfish/master
Make snow create water ripples (fixes #4156)
2017-10-18 09:59:21 +00:00
AnyOldName3
2aad5bed7a Mark worldimp functions as override to stop distracting Travis CI warnings and prevent future typos 2017-10-18 05:06:09 +01:00
AnyOldName3
43e9e955c8 Do the same for the CS 2017-10-18 02:04:48 +01:00
AnyOldName3
1f77f9654b Strip quotes from the data-local setting if present (because for whatever reason it's a string, not a boost::filesystem::path) 2017-10-18 01:42:11 +01:00
Andrei Kortunov
4d4d247565 Use SwimTurnLeft/Right animations correctly 2017-10-17 23:26:55 +04:00
Miloslav Číž
a7cad65aab fix water shader switching bug 2017-10-17 10:00:01 +02:00
Miloslav Číž
8a1e0e74fd update uniform from one place 2017-10-17 09:59:53 +02:00
Miloslav Číž
797e407269 make snow create water ripples 2017-10-17 09:59:53 +02:00
Miloslav Číž
da47653625 move rain intensity uniform to water node 2017-10-17 09:59:45 +02:00
David Cernat
184c5f2b29 Merge pull request #315 from OpenMW/master
Add OpenMW commits up to 17 Oct 2017
2017-10-17 04:34:46 +03:00
scrawl
a3a7b5b357 Merge pull request #1504 from AnyOldName3/escape-hash-oversight-fix-two-electric-boogaloo
Switch openmw-cs to the escape versions of option types
2017-10-16 21:09:47 +00:00
scrawl
7f8d996eff Merge pull request #1502 from AnyOldName3/launcher-and-wizard-ampersand-escape-support
Launcher and wizard ampersand escape support
2017-10-16 21:09:04 +00:00
Kyle Cooley
6d7a24224b Add documentation. 2017-10-16 12:52:13 -04:00
AnyOldName3
654bd401fb Switch openmw-cs to the escape versions of option types 2017-10-16 15:38:17 +01:00
David Cernat
e164e6305e Merge pull request #313 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
#	CMakeLists.txt
#	apps/openmw/mwgui/jailscreen.cpp
#	apps/openmw/mwmechanics/mechanicsmanagerimp.cpp
2017-10-16 07:37:29 +03:00
scrawl
136ef1f738 Fix incomplete settings in recreateShaders() 2017-10-15 17:24:23 +02:00
scrawl
03554b2f4b Fix some style issues flagged by cppcheck 2017-10-15 17:06:58 +02:00
scrawl
64d02f577e Fix missing null check 2017-10-15 17:06:58 +02:00
scrawl
624046c558 Fix unused event handler 2017-10-15 17:06:58 +02:00
scrawl
50d7eb8e54 Fix crash when adding a NULL object to the cache 2017-10-15 17:06:58 +02:00
scrawl
4c174ecd12 Merge changes to coverity scan script 2017-10-15 17:06:58 +02:00
scrawl
bbf9b0c0a7 Merge pull request #1503 from akortunov/regressions
Handle Trespassing crime differently from Theft
2017-10-15 09:08:52 +00:00
scrawl
97ec38affb Merge pull request #1492 from drummyfish/master
fix rain/snow moving with player (issue #2698)
2017-10-15 09:04:48 +00:00
Andrei Kortunov
8f255a6b72 Handle Trespassing crime differently from Theft (bug #4158) 2017-10-15 11:03:02 +04:00
AnyOldName3
49dbb4a9ca Add a third copy of a comment where I felt clarification was missing 2017-10-15 02:05:22 +01:00
AnyOldName3
7329e6a9ef Load 'data=...' lines correctly when starting the wizard or launcher, and save them correctly when exiting the launcher. 2017-10-15 01:59:21 +01:00
AnyOldName3
28ff677337 Save 'data=...' lines correctly when exiting the wizard 2017-10-15 00:07:46 +01:00
Miloslav Číž
af6eeddbe5 use operator instead of drawcallback 2017-10-15 00:04:14 +02:00
Miloslav Číž
65977b910e wrap weather around in all directions 2017-10-14 21:42:27 +02:00
Miloslav Číž
380a5799dd use bbox as wrap range & apply to all particle systems 2017-10-14 21:42:19 +02:00
Miloslav Číž
38bfa64100 transform weather particles to world space 2017-10-14 21:42:11 +02:00
Miloslav Číž
8114126a62 make use of renderinfo 2017-10-14 21:41:59 +02:00
Miloslav Číž
33a1459b11 search for particle system by class name 2017-10-14 21:41:47 +02:00
Miloslav Číž
b95c9ba483 rain independent from camera plus wrap-around 2017-10-14 21:40:28 +02:00
Kyle Cooley
11eae16645 Get rid of duplicate function, fix flag checking 2017-10-14 15:09:12 -04:00
scrawl
5fbdb64bb9 Add OPENMW_DECOMPRESS_TEXTURES environment variable to decompress textures in software if not supported by graphics hardware
Disabled by default due to requiring new functionality that was just added to OSG 3.6 or OpenMW/OSG.
2017-10-14 18:28:46 +00:00
Kyle Cooley
d27071f06a Fix LTEX import bug. 2017-10-14 13:18:54 -04:00
Kyle Cooley
98c38ad7d1 Merge cleanup. 2017-10-14 13:18:31 -04:00
Kyle Cooley
6d9d98c02c Merge Land/LandTextures 2017-10-14 11:32:42 -04:00
scrawl
548af6dbfb Fix jail screen fading 2017-10-14 14:03:16 +00:00
scrawl
f3ca9832b0 Merge pull request #1500 from akortunov/extraspell
Implement ExtraSpell magic effect
2017-10-14 14:01:49 +00:00
Andrei Kortunov
30b05b557b ExtraSpell magic effect: a basic implementation 2017-10-14 16:55:00 +04:00
scrawl
a5b39e0842 Update AUTHORS.md 2017-10-13 19:35:49 +00:00
scrawl
09d7681254 Merge pull request #1499 from lukago/bug4155
Bugfix #4155: NPCs don't equip a second ring in some cases
2017-10-13 19:35:03 +00:00
scrawl
cf1106f3eb Merge pull request #1498 from AnyOldName3/cmake-resource-handling
Make CMake copy the runtime resources to the correct location
2017-10-13 19:32:53 +00:00
glbwsk
83a5c7c3d8 removed unnecessary comments, added gitignore for clion cmake 2017-10-13 20:32:52 +02:00
scrawl
548e90a7bc Set cursor active when moving by controller 2017-10-13 16:22:44 +00:00
glbwsk
ff9cb22a58 npc swap cheaper ring during auto equip 2017-10-13 15:16:07 +02:00
glbwsk
e6e482ea98 added some comments for autoEquip 2017-10-13 14:47:26 +02:00
glbwsk
a25903b075 fixed autoequiping rings by npc - now checks if right hand is free 2017-10-13 14:39:44 +02:00
AnyOldName3
c9e86a8ebc Remove superfluous argument 2017-10-12 18:16:44 +01:00
AnyOldName3
a52c485090 Fix list length error 2017-10-12 18:16:10 +01:00
AnyOldName3
6af8ad70a5 Remove superfluous copy_all_files macro 2017-10-12 17:50:20 +01:00
AnyOldName3
76c4ff983a Fix getting cmake property as variable 2017-10-12 17:17:25 +01:00
AnyOldName3
1f86fa3c31 Fix resource copying on non-MSVC targets 2017-10-12 17:09:01 +01:00
AnyOldName3
b00b94f0db Use CMAKE_CONFIGURATION_TYPES instead of manually listing the possible configuration types. 2017-10-12 15:40:37 +01:00
AnyOldName3
f9a3562ccd Remove duplicate macro definition and fix warning 2017-10-12 02:45:50 +01:00
AnyOldName3
2652a89df4 Fix mismatched indentation that apparently the .editorconfig file doesn't handle automatically 2017-10-11 22:10:52 +01:00
AnyOldName3
5ceaaabeb2 Remove MESSAGE calls I accidentally left in 2017-10-11 22:08:49 +01:00
AnyOldName3
f8fe992dc0 Adjust CMake's run-time resource handling such that the Windows CI script does not have to copy these files 2017-10-11 21:58:55 +01:00
David Cernat
ec2c964ae1 Merge pull request #311 from TES3MP/0.6.1
Add hotfix commit for 0.6.1 from 10 Oct 2017
2017-10-10 06:26:33 +03:00
David Cernat
f532ab241d [Server] Avoid duplicates of the same player in a cell's loaders 2017-10-10 05:48:56 +03:00
David Cernat
c35101cc36 [Client] Don't use message box call boolean for regular message boxes 2017-10-10 04:11:36 +03:00
David Cernat
4f112ba3d7 [Client] Use regular message boxes where expected to do so
This helps us move towards using the same terminology as OpenMW for GUI elements, leading to less confusion.
2017-10-10 04:05:36 +03:00
David Cernat
41ff3fee89 Merge pull request #310 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
2017-10-09 14:41:55 +03:00
scrawl
479f9535b4 Allow training window exit() 2017-10-08 20:38:20 +00:00
scrawl
9cde3e4408 Merge pull request #1495 from akortunov/regressions
Add showsInInventory() check to the ContainerItemModel
2017-10-08 14:09:59 +00:00
scrawl
75c8628613 Merge pull request #1496 from ace13/add-nsis-autolaunch
Add a checkbox for launching OpenMW in the Windows installer
2017-10-08 14:09:42 +00:00
Alexander "Ace" Olofsson
dc127fbb93 Add a launch checkbox to the OpenMW installer 2017-10-08 11:58:38 +02:00
Andrei Kortunov
ea3729790f Add showsInInventory() check to the ContainerItemModel 2017-10-08 09:20:07 +04:00
David Cernat
182f8c1f06 [General] Print client version on startup 2017-10-08 06:17:53 +03:00
David Cernat
3d38da0e85 [Server] Put includes in a specific order 2017-10-08 05:17:14 +03:00
David Cernat
61b1a59814 [General] Move server's version printing method to Utils 2017-10-08 04:16:30 +03:00
David Cernat
08f34e5356 [Client] Fix recent problems with password window 2017-10-08 02:42:41 +03:00
David Cernat
711c4d83da [Client] Fix build after recent OpenMW changes to GUI 2017-10-07 23:33:36 +03:00
David Cernat
3e8d7c8416 Merge pull request #306 from OpenMW/master
Add OpenMW commits up to 7 Oct 2017
2017-10-07 21:54:21 +03:00
Kyle Cooley
b14404e9cc Fix region colors 2017-10-06 20:05:06 -04:00
scrawl
7021d354c6 Merge pull request #1493 from akortunov/regressions
Regression fixes
2017-10-06 16:21:16 +00:00
scrawl
2805781542 Fix a crash when exit() already hides the window (Fixes #4148) 2017-10-06 16:18:57 +00:00
Andrei Kortunov
ad27e0f945 Fix owned tooltip in the spellwindow 2017-10-06 11:38:27 +04:00
Andrei Kortunov
e2afd3690c Remove item by id from InventoryStore 2017-10-06 10:54:25 +04:00
David Cernat
38247ff086 Merge pull request #303 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwbase/dialoguemanager.hpp
#	apps/openmw/mwdialogue/dialoguemanagerimp.hpp
#	apps/openmw/mwgui/container.cpp
#	apps/openmw/mwgui/windowmanagerimp.cpp
#	apps/openmw/mwscript/dialogueextensions.cpp
2017-10-06 04:10:04 +03:00
scrawl
842a42ee66 Fix non-top level Windows accepting key focus 2017-10-05 18:41:02 +02:00
scrawl
8c0790580a Add screen fading for exterior cell transitions 2017-10-05 18:41:02 +02:00
scrawl
cd437f094d Fix exiting savegamedialog with 'esc' when no game is running 2017-10-05 18:35:09 +02:00
scrawl
d94235e3a7 Update the saves list/preview image when character selection changes to make it more convenient to flip through characters with the keyboard 2017-10-04 16:00:39 +00:00
scrawl
12510efab7 Fade screen out during loading screen (when travelling) 2017-10-04 16:00:38 +00:00
scrawl
a4737d8417 Use MyGUI frame events for ScreenFader 2017-10-04 16:00:38 +00:00
scrawl
e4f0f7157a Fix pinned windows not being updated 2017-10-04 16:00:37 +00:00
scrawl
49a0922f1b Remove 'visibility mask' gui feature which did not end up being useful 2017-10-04 16:00:37 +00:00
scrawl
7c68ed04b2 Don't require modal windows to be removed in the same order they were added 2017-10-04 16:00:37 +00:00
scrawl
b5c9977a7b Merge pull request #1489 from akortunov/guifixes
Use an "owned crosshair" feature for items in containers
2017-10-04 15:59:43 +00:00
David Cernat
13e7504348 [Documentation] Update information 2017-10-04 15:44:33 +03:00
Andrei Kortunov
1cb7ed5db1 Use owned tooltips for items in containers correctly 2017-10-04 12:13:45 +04:00
scrawl
433028e8d7 Fix GUI regressions 2017-10-03 22:07:56 +00:00
Nikolay Kasyanov
a795aa7685 Merge pull request #1490 from nikolaykasyanov/ci-dependency-update
[macOS, CI] Update dependencies
2017-10-03 21:46:16 +02:00
Nikolay Kasyanov
c598f1313c [macOS, CI] Update dependencies
The following changes are included:
- https://github.com/OpenMW/openmw-deps-mac/pull/37
- https://github.com/OpenMW/openmw-deps-mac/pull/38
2017-10-03 17:34:45 +02:00
Marc Zinnschlag
dd17f70068 Merge remote-tracking branch 'aesylwinn/landrecords' 2017-10-03 13:32:02 +02:00
scrawl
d7a5622485 Fix book window buttons overlap 2017-10-03 09:16:46 +00:00
Kyle Cooley
2f5449a68c Remove now unnecessary overrides. 2017-10-02 16:13:40 -04:00
Kyle Cooley
137ea872d3 Hide base land textures. 2017-10-02 15:56:22 -04:00
scrawl
b24fd77ea2 Merge pull request #1488 from akortunov/equipfix
AI: Autoequip armor when bound armor spell expires
2017-10-01 16:06:26 +00:00
scrawl
302e3c8b3d Merge pull request #1486 from akortunov/pickpocketfix
Fix some issues with pickpocketing (bug #4131)
2017-10-01 16:05:38 +00:00
Andrei Kortunov
21b6bd176f AI: Autoequip armor when bound armor spell expires 2017-10-01 17:11:30 +04:00
Andrei Kortunov
c5fcb9684e Improve owned crosshair feature behaviour 2017-09-30 21:29:02 +04:00
Andrei Kortunov
b8fd530ee1 Do not speak with unconscious creatures 2017-09-30 21:20:38 +04:00
Andrei Kortunov
f26206b630 Make unconscious actors do not speak and do not track targets 2017-09-30 20:55:42 +04:00
Andrei Kortunov
3ebb18ce18 Make unconscious actors do not report about crimes 2017-09-30 20:35:29 +04:00
Andrei Kortunov
34895157f9 Consider taking items from unconscious NPC as a theft 2017-09-30 20:22:26 +04:00
Andrei Kortunov
04452b0949 Use a pickpocket crime instead of theft when pickpocketing was failed 2017-09-30 20:11:53 +04:00
scrawl
3c62a8c5c2 Fix console selected object persisting on a new game 2017-09-30 15:40:47 +00:00
scrawl
097b9d90bc Fix travel service not showing 2017-09-30 15:40:47 +00:00
Kyle Cooley
dfcbee3ab1 Ignore case when comparing textures, also add new textures to lookup map. 2017-09-30 00:04:52 -04:00
scrawl
77ddaa869b Merge pull request #1484 from drummyfish/master
fix rain ripple bug
2017-09-29 22:53:48 +00:00
scrawl
841990fcdb Merge pull request #1485 from akortunov/master
Fix a failed assert in the getCell() check during a new game start
2017-09-29 22:53:10 +00:00
Andrei Kortunov
03daf2b9e3 Fix a failed assert in the getCell() check during a new game start 2017-09-29 22:28:09 +04:00
Miloslav Číž
4999c667b6 fix rain ripple bug 2017-09-29 19:56:16 +02:00
scrawl
5b10e3128e Use first resolution in fullscreen if current is not supported (Fixes #4113) 2017-09-29 14:58:25 +00:00
scrawl
64e27c032b Merge pull request #1481 from scrawl/keyfocus
WindowManager overhaul & improved keyboard support
2017-09-28 22:34:05 +00:00
scrawl
05348ab7ed Merge pull request #1483 from drummyfish/master
water shader improvements plus rain ripple effect (#452)
2017-09-28 22:31:13 +00:00
Miloslav Číž
64793a55dc get rid of buggy shader trick 2017-09-28 20:44:43 +02:00
scrawl
7bb0a76df2 Fix tooltips showing when cursor isn't visible 2017-09-28 19:42:16 +02:00
Miloslav Číž
c9c6326d87 fix non-refraction water rain ripples 2017-09-28 19:23:37 +02:00
Miloslav Číž
8416feaf5b link rain water ripple effect to actual rain 2017-09-28 19:04:31 +02:00
scrawl
14c9e858c8 Check to make sure button is enabled 2017-09-28 17:00:07 +00:00
scrawl
6ec66fa95f Restore keyfocus to goodbye when selecting a topic 2017-09-28 16:57:55 +00:00
David Cernat
44fb7518ee Merge pull request #300 from OpenMW/master
Add OpenMW commits up to 28 Sep 2017
2017-09-28 11:09:14 +03:00
scrawl
e5d1fd022f Merge pull request #1479 from akortunov/physics
Make physics framerate configurable
2017-09-27 22:31:00 +00:00
scrawl
1ad6cf90c6 Merge pull request #1482 from akortunov/ownerfix
Inherit owner, if an item is in container (regression #4128)
2017-09-27 21:08:54 +00:00
scrawl
0ae009eb21 Hide message box before deleting it
Fixes a crash when closing the game window during the 'plugin mismatch' dialog. Modal windows have to be hidden before they are deleted to prevent a dangling pointer in WindowManager.
2017-09-27 22:19:42 +02:00
scrawl
d53e7f8a3c Remove redundant code
Already worked around in WindowBase::setVisible
2017-09-27 22:07:49 +02:00
scrawl
0deda69a27 Fix wrong skin for levelup attribute values 2017-09-27 22:04:36 +02:00
scrawl
e9d81fdf5a Fix being able to escape interactive messageboxes 2017-09-27 22:00:20 +02:00
scrawl
db650df416 Fix 'blocking' messageboxes not handling key focus properly 2017-09-27 21:41:22 +02:00
scrawl
a0f5e32113 Fix 'new game' from the main menu not removing menu afterwards 2017-09-27 21:38:15 +02:00
scrawl
fb8306b61f Disable keyfocus for world map button
Fixes 'Tab' no longer working as a keybinding for closing the inventory window.
2017-09-27 21:30:31 +02:00
scrawl
0240a6c38b Fix controls window regression 2017-09-27 21:30:12 +02:00
Miloslav Číž
4a332a1807 improve rain ripples 2017-09-27 21:25:14 +02:00
David Cernat
b1aacd5028 Merge pull request #299 from OpenMW/master
Add OpenMW commits up to 27 Sep 2017
2017-09-27 21:29:56 +03:00
Andrei Kortunov
668a947210 Inherit owner, if an item is in container (regression #4128) 2017-09-27 20:00:41 +04:00
Miloslav Číž
5c50506c83 water shader refactor plus basic rain ripples 2017-09-27 17:13:21 +02:00
scrawl
f2146a2dc0 Update AUTHORS.md 2017-09-27 13:15:22 +00:00
scrawl
2d873a13ac Merge pull request #1469 from drummyfish/master
water shader improvements (partially fixes #3365)
2017-09-27 13:14:22 +00:00
scrawl
0ee57effcc Make 'Delete game' button not accept keyfocus, to prevent accidents 2017-09-27 12:56:12 +00:00
scrawl
c7a82704c6 Fix key focus resets in SaveGameDialog 2017-09-27 12:56:11 +00:00
scrawl
74e806d974 Additionally use movement keys (default WASD) to navigate GUI buttons 2017-09-27 12:56:10 +00:00
scrawl
3d2ad2d339 Include cleanup 2017-09-27 12:56:09 +00:00
scrawl
87311d86b5 Fix what looks like a copy/paste error 2017-09-27 12:56:08 +00:00
scrawl
879da9c69a Add key focus for some more button skins 2017-09-27 12:56:06 +00:00
scrawl
7a3fbfb34a Slightly improve journal window keyboard navigation 2017-09-27 12:56:05 +00:00
scrawl
05814c0929 Add key focus handling for WaitDialog
Default is 'until healed'. Up/Down arrows change the hour slider and implicitely change the button to 'Wait'.
2017-09-27 12:56:03 +00:00
scrawl
8964fc93d6 Fix dialogue window not being exited properly 2017-09-27 12:56:02 +00:00
scrawl
7a64098da3 Avoid rebuilding the dialogue topics pane unnecessarily
Also retaining key focus.
2017-09-27 12:56:02 +00:00
scrawl
44720bf41a Allow MWList items to retain key focus 2017-09-27 12:56:00 +00:00
scrawl
22929e53fa Don't ignore my own advice
Can't wait until MyGUI 3.2.2 is a build dependency, then we can use key focus events to handle the SDL text input.
2017-09-27 12:55:58 +00:00
scrawl
1714271a76 Improve KeyboardNavigation to better handle modal windows
It's no longer possible to cycle to widgets that aren't part of the current modal window.

The window manager will remember the focused widget of a modal window on a limited basis (it'll be discarded when a different modal window opens).
2017-09-27 12:55:58 +00:00
scrawl
41fe16013b Select first widget if we can't find the current widget 2017-09-27 12:55:55 +00:00
scrawl
475ac46f3e Workaround keyfocus issues in current versions of MyGUI 2017-09-27 12:55:54 +00:00
scrawl
b9341925f2 Set AutoSizedEditBox as Static by default
Would look very odd anyway to use it for editable text, with the widget resizing as you type.
2017-09-27 12:55:53 +00:00
scrawl
010a7ea5b3 Fix tooltip widgets being set to accept key focus 2017-09-27 12:55:52 +00:00
scrawl
a0ee1c5630 Fix order of buttons in book window layout for key cycling 2017-09-27 12:55:52 +00:00
scrawl
2514cc5cc8 Workaround key focus being reset in BookWindow when next/prev are hidden 2017-09-27 12:55:50 +00:00
scrawl
c88c535e0e Fix HBox/VBox not using Client widget with MyGUI <= 3.2.2 2017-09-27 12:55:50 +00:00
scrawl
fce9a14986 Hide the mouse cursor until it's used 2017-09-27 12:55:48 +00:00
scrawl
09e93319f5 Restrict the 'fake mouse movement' workaround to where it's actually required (Fixes #3978) 2017-09-27 12:53:52 +00:00
scrawl
60604ef5e8 Update AUTHORS.md 2017-09-26 23:07:58 +00:00
David Cernat
ddf0dfed55 Merge pull request #298 from OpenMW/master
Add OpenMW commits up to 26 Sep 2017
2017-09-26 21:54:55 +03:00
Andrei Kortunov
62177ebb30 Move physics framerate from setting to environment variable 2017-09-26 21:23:15 +04:00
scrawl
9b91ea5d34 Exit drag-and-drop if dragged item is deleted (Fixes #3097) 2017-09-26 16:51:19 +02:00
Andrei Kortunov
6062cd4b9c Make physics framerate configurable 2017-09-26 17:15:58 +04:00
Miloslav Číž
cde2c13900 make water depth independent of view frustum 2017-09-26 14:14:28 +02:00
scrawl
be7bdec2ed Merge pull request #1471 from crussell187/nif_stream_optimization
first pass on optimization of nif parsing functions from the file stream
2017-09-25 22:43:34 +00:00
scrawl
2ce79e07a4 Refactor dialogue GUI to talk to the dialogue manager, not the other way around and not both ways.
- Fix memory leaks in DialogueWindow
- Fix Link objects being deleted from their own event handler
2017-09-25 23:38:28 +02:00
scrawl
476bec41c5 Remove redundant code 2017-09-25 23:27:01 +02:00
scrawl
c5613e384e Remove duplicate disposition code 2017-09-25 21:30:03 +02:00
scrawl
e8c6a3b225 Fix crash in dialogue filter if local variables are not configured
This could happen e.g. by 'some_npc_in_remote_cell->forcegreeting'
2017-09-25 21:21:51 +02:00
scrawl
36c192a1dd Undo the console portion of 84657271c7 because it results in the console forgetting its object on opening 2017-09-25 21:15:38 +02:00
scrawl
717e68fab2 Remove redundant resetHistory argument 2017-09-25 19:58:34 +02:00
scrawl
e14573fa8c Add missing null check 2017-09-25 19:53:42 +02:00
scrawl
19e07fad30 Remove redundant Services enum 2017-09-25 19:52:20 +02:00
scrawl
f8ffd85146 Topic passed to keywordSelected() no longer has to be lower case
Remove redundant mDialogueMap
2017-09-25 19:03:38 +02:00
scrawl
b7752ec52d Make TradeWindow not depend on DialogueWindow 2017-09-25 18:07:49 +02:00
scrawl
82a211ba03 Fix duplicate code 2017-09-25 17:47:30 +02:00
scrawl
e4c9d84666 Disable NeedKey for ScrollView skins
The widget is set to accept key focus by default for no reason I can tell. Fix in MyGUI TBD
2017-09-25 01:20:46 +02:00
scrawl
d78e822833 Add 'delay' argument for screen fading operations 2017-09-25 00:47:10 +02:00
scrawl
c035548f37 Make Tab work if selected widget is marked as not needing keyfocus 2017-09-25 00:47:09 +02:00
scrawl
ad8d0c5302 Use keypad to control the camera 2017-09-25 00:47:09 +02:00
scrawl
94b538ac82 Fix crash due to not calling WindowModal::onClose() 2017-09-25 00:47:08 +02:00
scrawl
ca3b08b852 Make Activate key accept GUI buttons 2017-09-25 00:47:08 +02:00
scrawl
76ddf8d794 Support Up/DownArrow keys to change NumericEditBox value 2017-09-25 00:47:07 +02:00
scrawl
67dc4e019a Make Enter on trade window price attempt the trade 2017-09-25 00:47:07 +02:00
scrawl
8ae7e4c958 Make Enter on a name edit accept the dialog 2017-09-25 00:47:07 +02:00
scrawl
843106fc61 Handle the wait progress bar as part of the GUI mode 2017-09-25 00:47:06 +02:00
scrawl
9ed1b16553 Extend code that detects whether a key was consumed by the GUI (Fixes #4016) 2017-09-25 00:47:05 +02:00
scrawl
2c4b0cc408 Hide sneak indicator by default 2017-09-25 00:47:05 +02:00
scrawl
0e57f1317b Remove redundant setVisible(false) 2017-09-25 00:47:05 +02:00
scrawl
331192f2d6 Improve keyboard navigation of book/scroll windows 2017-09-25 00:47:04 +02:00
scrawl
d58ff4a736 Remove obsolete Container GUI keyboard handling 2017-09-24 19:08:16 +02:00
scrawl
c0d8bef82f Call changeInputMode() from updateVisible() 2017-09-24 19:08:16 +02:00
scrawl
222defc6d8 Extend HUD::clear() 2017-09-24 19:08:16 +02:00
scrawl
f6c227b966 Reset screen faders in clear()
Fixes a black screen when loading a game while waiting/resting.
2017-09-24 19:08:15 +02:00
scrawl
d10985e481 Remove unneeded window pointers 2017-09-24 19:08:15 +02:00
scrawl
f67dbc8aa0 Remove redundant update function 2017-09-24 19:08:15 +02:00
scrawl
e7d2a8a4dc Call clear() for every window 2017-09-24 19:08:15 +02:00
scrawl
c6c01870ec Call onResChange for every window 2017-09-24 19:08:15 +02:00
scrawl
2b03bc0c56 Call WindowBase::onFrame() for every active window 2017-09-24 19:08:15 +02:00
scrawl
ba7ae2663f Use a generic container to delete windows 2017-09-24 19:08:15 +02:00
scrawl
32f9c8058a Remove redundant RestBed gui mode 2017-09-24 19:08:14 +02:00
scrawl
9ead331741 Fix pinned windows showing in other GUI modes 2017-09-24 19:08:14 +02:00
scrawl
65a707348c Make Tab select the first widget if none is selected 2017-09-24 19:08:14 +02:00
scrawl
5f440a29bd Remember key focus per GUI mode
Among other things, this will remember the focused button in the container window, allowing quick looting of multiple containers.
2017-09-24 19:08:14 +02:00
scrawl
35110fb2f8 Remove unused and slightly broken custom button titles in ConfirmationDialog 2017-09-24 19:08:14 +02:00
scrawl
ad4b91131f toggleGui renamed to toggleHud, remove unused variable 2017-09-24 19:08:14 +02:00
scrawl
be19f51013 Adjust some more windows to be keyboard friendlier 2017-09-24 19:08:14 +02:00
scrawl
4fff2e2e34 Refactor exitCurrentGuiMode 2017-09-24 19:08:13 +02:00
scrawl
20766fb508 Associate open/close sounds with the GUI mode 2017-09-24 19:08:13 +02:00
scrawl
531e7ac586 Allow drag-and-drop to be cancelled (Esc or Inventory key) 2017-09-24 19:08:13 +02:00
scrawl
269094ba8d Restore the previous key focus widget when exiting modal dialog 2017-09-24 19:08:13 +02:00
scrawl
bbafe1e456 Remove redundant player cell variable 2017-09-24 19:08:13 +02:00
scrawl
84657271c7 Improve WindowManager API with a generic way of passing a Ptr to the opened GUI window 2017-09-24 19:08:12 +02:00
scrawl
3820416277 Refactor the unholy mess that is WindowManager::updateVisible
GUI modes are now defined in a general and extensible way. The next commits are going to take advantage of this.
2017-09-24 19:08:12 +02:00
scrawl
622e3ebd60 Remove excessive padding in some GUI layouts 2017-09-24 19:08:12 +02:00
scrawl
01391b7eed Rename WindowBase's open/close to onOpen/onClose 2017-09-24 19:08:12 +02:00
scrawl
5482ad0482 Fix tab completion in console to not cycle key focus 2017-09-24 19:08:11 +02:00
scrawl
c203a0774a Adjust some layouts to take better advantage of keyboard navigation 2017-09-24 19:08:11 +02:00
scrawl
1ad14b232f Adjust ImageButton to accept key focus and use the 'highlighted' texture 2017-09-24 19:08:11 +02:00
scrawl
c11fe6788f Add basic keyboard navigation for the GUI
(Shift)Tab cycles, arrow keys move to the next button in that direction, Enter/Space accepts.

Note: Unless MyGUI is hacked to bits, clicking on an empty space will annoyingly reset the key focus. Not sure how to deal with that yet.

The visual highlight for selected buttons requires MyGUI commit 632d007429d0bf0c7d7f6c5db4a08353a63dd839 or later to appear (to be released in 3.2.3).
2017-09-24 19:08:11 +02:00
scrawl
e7ad012977 Pass repeat key events to the GUI
For example, one can scroll to the last element in a list by holding down the 'Down Arrow' key.
2017-09-24 19:08:11 +02:00
scrawl
b22fedf4ae Check 'sYes' in addition to 'sOk' for message box's default keyfocus 2017-09-24 19:08:11 +02:00
scrawl
5d1392b452 Merge pull request #1476 from akortunov/wanderfix
Fix regressions in PR1474
2017-09-24 14:54:25 +00:00
Andrei Kortunov
7d703a13a3 Fix a crash in the World::isUnderwater() if the cell is empty 2017-09-24 16:28:05 +04:00
Andrei Kortunov
9b04a7c1e6 Fix idle animations playing 2017-09-24 16:26:41 +04:00
scrawl
2a14af2e27 Merge pull request #1474 from akortunov/swimanimations
Implement missing swim animations
2017-09-23 23:33:37 +00:00
scrawl
22222f07ae Merge pull request #1475 from akortunov/wanderfix
AiWander: reset spawn position, if an actor was moved to another cell
2017-09-23 23:10:35 +00:00
scrawl
2494c22d66 Merge pull request #1470 from MiroslavR/convertmprj
ESS-Importer: Convert magic projectiles
2017-09-23 22:55:56 +00:00
Andrei Kortunov
91adfc9fc0 AiWander: reset spawn position, if an actor was moved to another cell (bug #4010) 2017-09-23 20:59:06 +04:00
MiroslavR
b5f5268ff3 Clean up faraway projectiles 2017-09-23 18:54:17 +02:00
825de71b29 removed an iostream include used for debug prints from nifstream.hpp 2017-09-23 11:10:05 -05:00
Andrei Kortunov
a57f6ac2af Fix a typo in attack animation name 2017-09-23 08:25:58 +04:00
Kyle Cooley
1fe1ec63c4 Fix Qt4 build 2017-09-22 23:33:50 -04:00
Kyle Cooley
3981f79d38 Change flag for base land textures 2017-09-22 22:59:50 -04:00
Kyle Cooley
054e6a780e Use map for texture lookup. 2017-09-22 22:43:45 -04:00
Kyle Cooley
4921e7f5c1 Get rid of reinterpret cast. 2017-09-22 22:42:09 -04:00
30a213a9b3 updates for nifstream optimization including fixing the non-x86 path for little endian reads 2017-09-22 21:08:25 -05:00
Miloslav Číž
9dececcbd2 rename a constant in water shader 2017-09-22 21:10:05 +02:00
Miloslav Číž
28f58d5a32 add deleted letter in macro 2017-09-22 21:06:03 +02:00
Miloslav Číž
f274bc84cc fix depth computation in water shader 2017-09-22 21:03:09 +02:00
David Cernat
73e7aa838d Merge pull request #296 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwgui/container.cpp
2017-09-22 19:12:41 +03:00
Andrei Kortunov
bcad431cc5 Implement SwimTurnLeft/Right animations 2017-09-22 16:07:00 +04:00
Andrei Kortunov
1c6cfad3cc Implement SwimHit animation 2017-09-22 15:49:42 +04:00
Andrei Kortunov
3eb1308c0d Implement SwimKnockdown/out animations 2017-09-22 15:26:35 +04:00
Andrei Kortunov
6260bb1366 Implement SwimAttack1-3 and SwimDeathKnockDown/Out animations 2017-09-22 14:51:06 +04:00
scrawl
0e648222b8 Merge pull request #1446 from akortunov/takeallfix
Do not allow to equip a replacement, when take all items from a dead corpse
2017-09-22 09:14:21 +00:00
Miloslav Číž
8df79625e8 fix water shader 2017-09-22 10:53:02 +02:00
Andrei Kortunov
4580024d76 Unequip all items from dead corpse when take all items (bug #4095) 2017-09-22 12:32:47 +04:00
8834066dea make streaming to a type array in nif a direct copy from the file into the vector 2017-09-21 23:47:09 -05:00
090a8408b8 made nif basic type read optimizations more portable 2017-09-21 22:37:19 -05:00
Miloslav Číž
658fa0fdae fix typo 2017-09-21 22:33:57 +02:00
Miloslav Číž
c43baf6e94 remove commented code 2017-09-21 22:31:26 +02:00
Miloslav Číž
16d9773c6c fix water shader artifacts at shores 2017-09-21 22:25:36 +02:00
scrawl
75c047a6e0 Merge pull request #1472 from akortunov/equipfix
Do not play draw weapon animation when equip a new weapon
2017-09-21 13:05:14 +00:00
Andrei Kortunov
5da532a36c Do not play draw weapon animation when equip a new weapon (bug #4056) 2017-09-21 10:48:52 +04:00
c72aa19d6d first pass on optimization of nif parsing functions from the file stream 2017-09-20 23:53:12 -05:00
scrawl
f004622530 Fix global map arrow/button not showing for a split second when the window is opened for the first time 2017-09-20 22:24:20 +00:00
scrawl
aaa727757d Don't use MW_Dialog skin with plain Widgets
After MyGUI commit cfdaf5f , the 'Client' area will be used for every type of widget, whereas previously it would only be used for some widgets like 'Window'. Use 'Window' widget where the client was always used.

This fixes a wrong margin when built with cfdaf5f or later.
2017-09-20 22:24:20 +00:00
scrawl
58f9688433 Use client coordinates in HBox/VBox 2017-09-20 22:24:19 +00:00
scrawl
fe6f9ffff4 Fix skins incorrectly named 'Client' to avoid a collision with new MyGUI feature cfdaf5f 2017-09-20 22:24:19 +00:00
scrawl
fa364726b8 Merge pull request #1468 from akortunov/itemsorting
Improve item sorting in inventory and containers
2017-09-20 22:22:56 +00:00
scrawl
7dec773ea9 Fix global map arrow/button not showing for a split second when the window is opened for the first time 2017-09-20 23:03:14 +02:00
scrawl
d07fe91cfe Don't use MW_Dialog skin with plain Widgets
After MyGUI commit cfdaf5f , the 'Client' area will be used for every type of widget, whereas previously it would only be used for some widgets like 'Window'. Use 'Window' widget where the client was always used.

This fixes a wrong margin when built with cfdaf5f or later.
2017-09-20 22:56:57 +02:00
scrawl
fb975d02db Use client coordinates in HBox/VBox 2017-09-20 22:41:50 +02:00
scrawl
186cc1e370 Fix skins incorrectly named 'Client' to avoid a collision with new MyGUI feature cfdaf5f 2017-09-20 22:29:34 +02:00
MiroslavR
f15de6d3ca ESS-Importer: Convert magic projectiles (Closes #2320) 2017-09-20 18:58:56 +02:00
Andrei Kortunov
771f58ce58 Remove unwanted warnings 2017-09-20 19:47:14 +04:00
Miloslav Číž
566fa6c118 Merge branch 'master' of git://github.com/OpenMW/openmw 2017-09-20 16:39:31 +02:00
Miloslav Číž
2346c5338e increase water fudge to get rid of artifacts 2017-09-20 16:34:27 +02:00
scrawl
5ebb43a422 Merge pull request #1467 from akortunov/guifixes
Restack soulgems when use SoulTrap
2017-09-20 14:15:49 +00:00
David Cernat
7f0ea7d01f Merge pull request #294 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwmechanics/character.cpp
2017-09-20 16:52:44 +03:00
Andrei Kortunov
9d826b2deb Improve item sorting in inventory and containers 2017-09-20 11:57:00 +04:00
Andrei Kortunov
9342a0254f Restack soulgems when use SoulTrap 2017-09-20 10:44:24 +04:00
scrawl
26e3de1025 Merge pull request #1464 from akortunov/guifixes
Fixed padding of MessageBox buttons
2017-09-19 20:16:09 +00:00
scrawl
5688257837 Merge pull request #1462 from kcat/master
Minor animation fixes
2017-09-19 20:15:47 +00:00
scrawl
ed5b6320f3 Merge pull request #1463 from akortunov/getdetected
Allow to use GetDetected without a reference
2017-09-19 20:15:16 +00:00
David Cernat
4d4eb1bb9f Merge pull request #292 from OpenMW/master
Add OpenMW commits up to 18 Sep 2017
2017-09-19 09:40:45 +03:00
Andrei Kortunov
2806a35a61 Fixed padding of MessageBox buttons 2017-09-18 23:09:38 +04:00
Andrei Kortunov
65d8e2ff5d Allow to use GetDetected without a reference (bug #3110) 2017-09-18 21:46:57 +04:00
Chris Robinson
021627bdf8 Mark some functions with override
Fixes some Clang warnings about overriding a virtual function without the
override keyword.
2017-09-18 01:51:11 -07:00
Chris Robinson
917a3b5dff Avoid creating temp strings when looking for an animation stop key 2017-09-18 01:41:05 -07:00
Chris Robinson
b770c1493f Don't spam about missing animations 2017-09-18 01:28:40 -07:00
Chris Robinson
074be7d7c6 Remove a function from the sound manager interface 2017-09-18 01:28:39 -07:00
Marc Zinnschlag
e6caacec04 Merge remote-tracking branch 'plutonicoverkill/pref-pane-width' 2017-09-18 10:19:21 +02:00
Kyle Cooley
50d9d9f78f Get rid of some templates, exceptions instead of assert, and other small changes. 2017-09-17 20:29:51 -04:00
scrawl
d294d7e284 Fix possible fall damage when switching from falling to flying 2017-09-17 23:16:49 +00:00
scrawl
00034192dc Fix player Ptr in RenderingManager not being updated on cell changes
Noticed that 'setpos' wasn't working in the console with the player selected.
2017-09-17 23:07:17 +00:00
scrawl
fcb815f2c7 Move fall height reset into PhysicsSystem (Fixes #4049)
To avoid using onGround before it's actually set.
2017-09-17 23:06:51 +00:00
scrawl
a560841705 Merge pull request #1460 from AnyOldName3/invalid-death-count-cleaning
Check death counts are for valid actors before loading them
2017-09-17 14:42:56 +00:00
scrawl
242d085da0 Merge pull request #1455 from kcat/master
Print sound init info and preload sound buffer info
2017-09-17 13:24:15 +00:00
scrawl
f29d8f69d7 Merge pull request #1456 from loriel2/Docs-CS-manual-tour-chest
Docs cs manual tour chest
2017-09-17 13:18:45 +00:00
scrawl
c39c29722b Merge pull request #1459 from akortunov/cyclingfix
Cycle only through weapons which player can equip
2017-09-17 13:17:41 +00:00
scrawl
054380e46f Merge pull request #1458 from akortunov/precisionfix
Use default 0 precision in the float formatting (bug #4096)
2017-09-17 13:17:21 +00:00
scrawl
277b57b26f Merge pull request #1457 from akortunov/guifixes
[Feedback needed] Add scrollbar to a birth effect lists (bug #4105)
2017-09-17 13:16:28 +00:00
AnyOldName3
0be7e2a5a5 Fix really obvious flaw with ignored records not being skipped that I missed 2017-09-17 14:16:17 +01:00
Andrei Kortunov
10a0136b4a Cycle only through weapons which can be equipped by player (bug #4104) 2017-09-17 17:14:50 +04:00
AnyOldName3
5a5cb1a160 Check death counts are for valid actors before loading them 2017-09-17 14:09:29 +01:00
Andrei Kortunov
4bb349a525 Use default 0 precision in the float formatting (bug #4096) 2017-09-17 15:07:04 +04:00
Andrei Kortunov
3fb3c4c20f Add scrollbar to a birth effect lists (bug #4105) 2017-09-17 14:06:01 +04:00
PlutonicOverkill
5e60fb7c10 Fix preferences pane width 2017-09-17 21:09:28 +12:00
David Cernat
960b91a53c Merge pull request #290 from OpenMW/master
Add OpenMW commits up to 17 Sep 2017
2017-09-17 10:53:33 +03:00
David Walley
6b56f25f9e Update tour.rst 2017-09-17 07:47:27 +01:00
David Walley
19d034f370 Docs CS-Manual - tour - add ring to chest
Extend the ring tutorial in the CS-Manual to put the ring in a chest.

Images omitted pending decisions on style and where to store them
2017-09-17 07:43:26 +01:00
Chris Robinson
41bb35655b Avoid an extra call to get the buffer size 2017-09-16 16:25:32 -07:00
Chris Robinson
5c53ee42a1 Prepare all Sound_Buffers when retrieving the first one 2017-09-16 16:25:32 -07:00
Chris Robinson
4b448c74d2 Use range-for loops instead of for_each 2017-09-16 16:25:32 -07:00
Chris Robinson
1e729e8da9 Avoid more explicit loops 2017-09-16 16:25:32 -07:00
Chris Robinson
9dbb713b7c Print a bit more information for sound initialization 2017-09-16 16:25:32 -07:00
Chris Robinson
acd6d9cd72 Try opening the default device fallback in OpenAL_Output 2017-09-16 16:25:32 -07:00
scrawl
f594eda574 Reset attackStrength when starting a new attack (Fixes #3935) 2017-09-16 23:04:54 +00:00
David Walley
2d712b5288 Merge pull request #2 from OpenMW/master
Update
2017-09-16 20:07:22 +01:00
Bret Curtis
f24b807edc Merge pull request #1454 from loriel2/master
Docs - Reference Modding - Minor typoes
2017-09-16 19:49:59 +02:00
scrawl
5dd2e871c8 Merge pull request #1450 from kcat/master
Sound improvements
2017-09-16 15:59:13 +00:00
David Walley
f1751b7f50 Merge pull request #1 from loriel2/ref_mod_diff_typoes
Docs - Reference modding - minor typoes
2017-09-16 15:08:19 +01:00
David Walley
d2b5f7dea5 Update differences.rst 2017-09-16 15:04:15 +01:00
scrawl
340586bfea Merge pull request #1451 from loriel2/ring_tour
CS manual - extend tutorial tour to put ring into two npcs in the game
2017-09-15 21:01:17 +00:00
scrawl
820e0e9195 Merge pull request #1453 from MiroslavR/convertproj
ESS-Importer: Convert ballistic projectiles
2017-09-15 20:53:08 +00:00
scrawl
a8c287b692 Merge pull request #1447 from akortunov/stancechangefixes
Clear player fields upon reload (bug #2639)
2017-09-15 20:48:28 +00:00
Andrei Kortunov
44738e1141 Clear player fields upon reload (bug #2639) 2017-09-15 22:39:56 +04:00
Kyle Cooley
2abf7f1752 Remove unnecessary cache dump 2017-09-15 12:19:12 -04:00
Chris Robinson
d68e1581ee Use an std::array for the OpenAL stream buffers 2017-09-15 05:40:20 -07:00
Chris Robinson
780e82480d Make the PlayMode and PlayType enums scoped
Also shorten them by putting them in the MWSound namespace
2017-09-15 02:36:59 -07:00
Chris Robinson
0c1ad7c74e Replace a few more explicit loops 2017-09-15 02:36:46 -07:00
David Cernat
c98e6dc833 Merge pull request #288 from OpenMW/master
Add OpenMW commits up to 14 Sep 2017
2017-09-15 03:30:20 +03:00
Chris Robinson
1e123a22e1 Avoid some explicit loops 2017-09-14 16:56:46 -07:00
Chris Robinson
3757571d46 Set HRTF when initializing the device 2017-09-14 16:00:43 -07:00
Chris Robinson
c17edfd547 Don't be so throw-happy in the sound manager 2017-09-14 16:00:43 -07:00
Chris Robinson
abe80f5868 Move the soundlist when updating a Ptr instead of copying 2017-09-14 16:00:43 -07:00
Chris Robinson
605c937572 Ensure 3D sources are spatialized
Standard OpenAL does not spatialize non-mono sounds, although the game has some
stereo sounds meant to play in 3D. The desired behavior can be achieved with
the AL_SOFT_source_spatialize extension.
2017-09-14 16:00:43 -07:00
Chris Robinson
6f57233ba1 Avoid copying the same Ptr with each iteration 2017-09-14 16:00:42 -07:00
Chris Robinson
edfba68eb5 Apply reverb and a low-pass filter when underwater
This replaces the pitch-shift effect when available.
2017-09-14 16:00:42 -07:00
Chris Robinson
27eeaf90d0 Use unordered_map for the music playlist and sound buffer caches 2017-09-14 16:00:42 -07:00
Chris Robinson
ec01b89e59 Increase the default buffer cache sizes 2017-09-14 16:00:42 -07:00
Chris Robinson
033303b911 Properly update the near water sound volume 2017-09-14 16:00:42 -07:00
Chris Robinson
0b720cd90c Set the appropriate meter/unit scale for sound 2017-09-14 16:00:41 -07:00
Chris Robinson
c790fedd3f Load an effect and filter for underwater 2017-09-14 16:00:41 -07:00
Chris Robinson
3d37cb3cf6 Load EFX functions when available 2017-09-14 16:00:41 -07:00
Chris Robinson
c5a3fb7ccd Simplify checking for near water sfx change
Rather than checking every frame you're near the water, only check when the
current cell changed (the sfx will only change when moving between interior and
exterior). It also doesn't need to look through all playing sounds, as it's a
local one not attached to a Ptr.
2017-09-14 16:00:41 -07:00
Chris Robinson
617c05f557 Make Sound and Stream sibling types
To avoid being able to accidentally cast a Stream* to a Sound*, or vice-versa.
2017-09-14 16:00:40 -07:00
Chris Robinson
9e45f6d05f Make a note that stopTrack needs to be called for a stopping track 2017-09-14 16:00:40 -07:00
Chris Robinson
9e7a49f66e Include alext.h to get OpenAL extension definitions 2017-09-14 16:00:40 -07:00
Chris Robinson
1fe60dd8e2 Replace some shared_ptrs with pointers to deque entries 2017-09-14 16:00:30 -07:00
MiroslavR
a66d310a1d ESS-Importer: Fix uninitialized paid crime ID 2017-09-15 00:21:02 +02:00
MiroslavR
6e869c3123 ESS-Importer: Convert ballistic projectiles (Feature #2320) 2017-09-15 00:07:19 +02:00
Bret Curtis
e517ad3f7b add ktx support for splashscreens 2017-09-14 10:06:36 +02:00
scrawl
5817674651 Merge pull request #1452 from psi29a/loading_screens
add support for png and dds splashscreens
2017-09-13 23:10:00 +00:00
Stanislav Zhukov
f703dbd1df Merge pull request #283 from Johnnynator/tes3mp 2017-09-14 02:38:27 +08:00
Bret Curtis
dff0a766a8 adding 3 more extensions 2017-09-13 15:30:22 +02:00
Bret Curtis
b26887ef9b add support for png and dds splashscreens to begin with. 2017-09-13 13:52:05 +02:00
David Walley
b9de4b1eac Update tour.rst 2017-09-13 12:27:51 +01:00
David Walley
7e83caab11 Manual modding - extend mod installation instructions (#1448)
Add section on .bsa files
Extend plugins to include .esm files
Fix typo propper->proper.
2017-09-13 11:11:01 +00:00
David Cernat
bd541b1e5b Merge pull request #287 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
#	apps/openmw/CMakeLists.txt
2017-09-12 07:38:49 +03:00
scrawl
bd667c3847 Merge pull request #1435 from AnyOldName3/cmake-vs-debugging-dir
If CMake supports it, sets the debugger working directory for Visual …
2017-09-11 10:30:50 +00:00
scrawl
00ae9a01a1 Merge pull request #1445 from akortunov/guifixes
Allow to add levelup a description for levels > 20
2017-09-11 10:28:09 +00:00
scrawl
407640322d Merge pull request #1439 from akortunov/resistfix
Take in account elemental shields for GetResist and SetResist script commands
2017-09-11 10:27:47 +00:00
Marc Zinnschlag
5904e5a267 updated credits file 2017-09-11 10:47:35 +02:00
Marc Zinnschlag
9a8a4c744f Merge remote-tracking branch 'capostrophic/controlplus' 2017-09-11 10:46:34 +02:00
Andrei Kortunov
7760e4514c Allow to add levelup a description for levels > 20 2017-09-10 22:47:34 +04:00
scrawl
7688696765 Merge pull request #1437 from Capostrophic/nodemapfix
Use constant nodeMap during part updating in creature animation
2017-09-10 18:15:20 +00:00
Andrei Kortunov
c6fd75bf42 Take in account elemental shields for GetResist and SetResist script commands (bug #4093) 2017-09-10 22:05:58 +04:00
Capostrophic
97ff24b8d6 Change ctl to ctrl in OpenMW-CS shortcut manager 2017-09-10 20:48:09 +03:00
AnyOldName3
afbdc27a34 Move calls to cmake_minimum_required as early in the CMake process as possible. 2017-09-10 18:30:10 +01:00
scrawl
618ec6dcdd Merge pull request #1440 from akortunov/guardfix
Allow guards to attack fighting creatures only in fAlarmRadius range
2017-09-10 17:06:14 +00:00
scrawl
dcb2e20a55 Merge pull request #1436 from MiroslavR/missing-bookart
Log a warning in case of missing bookart instead of showing a pink rectangle
2017-09-10 16:59:02 +00:00
Andrei Kortunov
661232222f Allow guards to attack fighting creatures only in fAlarmRadius range 2017-09-10 15:26:48 +04:00
Kyle Cooley
09e645a0e0 Fix careless mistake. 2017-09-09 23:18:09 -04:00
AnyOldName3
de14e43680 Seemingly fix everything by setting policies that were unset upon entering the macro 2017-09-10 03:18:22 +01:00
Capostrophic
9503d61866 Use const nodeMap in creature animation 2017-09-09 23:22:16 +03:00
Kyle Cooley
25d4a0370f Changes to land data access in tables, also update Land once per frame in scene view. 2017-09-09 15:37:52 -04:00
AnyOldName3
33c77d7a2a Try using cmake_parse_arguments to make the macro work 2017-09-09 17:22:55 +01:00
Kyle Cooley
d030b595f8 Fix potential segfault, cleanup, get rid of warnings. 2017-09-09 11:48:13 -04:00
krizd
c9f099ce07 Change CMake version check to include 3.8 2017-09-09 03:06:03 +01:00
Kyle Cooley
72cb405de2 Some bug fixes, changes to land load code. 2017-09-08 21:03:52 -04:00
AnyOldName3
a9b95596bc Add a missed trailing new line. 2017-09-08 22:21:00 +01:00
AnyOldName3
8c74f16247 Restore trailing new lines to shrink PR 2017-09-08 22:20:04 +01:00
AnyOldName3
5ce34f1cbf Move new behaviour into macro to reduce code duplication 2017-09-08 22:17:42 +01:00
MiroslavR
1e585ac71a Log a warning in case of missing bookart instead of showing a pink rectangle (Fixes #3826) 2017-09-08 22:50:07 +02:00
scrawl
335ecd1162 Merge pull request #1434 from akortunov/guifixes
Update a disposition bar when a dialogue widget is disabled, but visible
2017-09-08 19:14:52 +00:00
Kyle Cooley
2eacc2f093 Changes to land creation, add ability to specifically clear terrain cache 2017-09-08 14:37:03 -04:00
AnyOldName3
3c0ec0d6d0 If CMake supports it, sets the debugger working directory for Visual Studio 2017-09-08 17:26:46 +01:00
Andrei Kortunov
ac2f20f983 Update a disposition bar when a dialogue widget is disabled, but visible 2017-09-08 19:42:06 +04:00
Kyle Cooley
ab607f3028 Tweaks to land loading, land cloning, terrain signals, placeholder land update handling 2017-09-08 00:51:46 -04:00
scrawl
8f1c8759e4 Merge pull request #1432 from akortunov/alchemyfix
Update alchemy effects after every created potion (#4079)
2017-09-07 20:51:42 +00:00
scrawl
a7cecd491c Merge pull request #1433 from akortunov/factionfix
Use base skill value when calculating rank requirements
2017-09-07 20:51:18 +00:00
Andrei Kortunov
dc0313a36f Use base skill value when calculating rank requirements 2017-09-07 21:06:10 +04:00
Andrei Kortunov
538498230b Declare mClient variable 2017-09-06 15:59:54 +04:00
Andrei Kortunov
7559d25317 Update alchemy effects after every created potion (#4079) 2017-09-06 15:11:47 +04:00
Kyle Cooley
99e90ef808 Cleanup. Also modify ltex index generation. 2017-09-05 19:29:07 -04:00
Kyle Cooley
97d0fd756a LTEX importing 2017-09-04 19:31:09 -04:00
scrawl
dca31b7ffa Remove redundant _boundingBoxComputed which no longer exists in osg master (Fixes #4075) 2017-09-04 19:35:42 +00:00
Kyle Cooley
5c3e90da88 Fix includes 2017-09-04 15:14:42 -04:00
Kyle Cooley
d3014cf394 Temporary fix for adding new lands, cloned lands will still reference old data though 2017-09-04 15:13:45 -04:00
David Cernat
b94c0a9991 [Client] Don't send Attribute & Skill packets as werewolf, part 2 2017-09-04 20:21:06 +03:00
David Cernat
b64f379949 Merge pull request #286 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
#	apps/openmw/mwmechanics/actors.hpp
2017-09-04 18:05:24 +03:00
Stanislav Zhukov
3ba6a0e000 Merge pull request #284 from Johnnynator/desktop
[General] Add .desktop file for Server Browser
2017-09-04 21:58:10 +08:00
David Cernat
8c9d6a0160 [Client] Ensure that LocalPlayer's isWerewolf starts out false 2017-09-04 15:44:10 +03:00
David Cernat
ccb15cc09e [Client] When players die, make guards willing to arrest them again 2017-09-04 15:13:05 +03:00
Kyle Cooley
90c485104a Land creator 2017-09-04 01:06:58 -04:00
Kyle Cooley
7cc95a11a4 Add more land table columns 2017-09-03 20:00:19 -04:00
Kyle Cooley
30ba1d4c25 Move touch command to creator, to allow customization and not break abstraction 2017-09-03 17:01:16 -04:00
Koncord
f5e23d5fc6 [General] Empty strings should be sent too 2017-09-04 04:03:02 +08:00
scrawl
84bbb83109 Merge pull request #1431 from Thunderforge/adding-note-about-reflect-actors
Documentation: Adding that Reflect Actors can be toggled in the video panel
2017-09-03 14:16:54 +00:00
scrawl
2e58024f1c Fix intersections with Rig/MorphGeometry, was caused by an issue in the LineSegmentIntersector not respecting the cullingActive flag of a drawable. 2017-09-03 14:14:15 +00:00
Koncord
d904628103 [General] Avoid limitation of 512 symbols in RakString Ctor 2017-09-03 18:53:45 +08:00
Thunderforge
10fff499a2 Adding that Reflect Actors can be toggled in the video panel 2017-09-02 19:02:55 -05:00
scrawl
7441f80e4c Merge pull request #1430 from Thunderforge/Bug-#4027-fix-OpenMW-CS-name
Fix OpenMW-CS internal name
2017-09-02 23:26:46 +00:00
Thunderforge
e0ffc94f3e Fix OpenMW-CS internal name 2017-09-02 18:07:12 -05:00
John
0060e457a6 [General] Add .desktop file for Server Browser 2017-09-02 16:30:52 +02:00
Koncord
74c9a26d16 [Server] Fix "wrong packet with id: 14" 2017-09-02 14:01:11 +08:00
scrawl
5e790b567e Fix node path issue
Needs to be set so that the 'cullingActive' flag of the node path's end can be checked
2017-09-01 22:12:40 +00:00
scrawl
4bef8260ab Add const qualifiers 2017-09-01 21:42:36 +00:00
scrawl
5d524a6a10 Add custom version of MorphGeometry replacing osgAnimation
Double buffering, custom bounding box and the update in the cull visitor (instead of update) are now all handled internally rather than needing hacks and/or callbacks.
2017-09-01 21:42:36 +00:00
scrawl
f1ebb129c1 Fix ShaderVisitor to deal with the fact RigGeometry no longer derives from Geometry 2017-09-01 21:42:35 +00:00
scrawl
4c5992a0d5 Warn if removing a node fails 2017-09-01 21:42:35 +00:00
scrawl
209e139aa8 Move double buffering implementation inside RigGeometry
The double buffering is an implementation detail so it should be handled as such, rather than mandating the scene graph to be structured in a certain way.

Override accept(NodeVisitor&) instead of using callbacks.
2017-09-01 21:42:34 +00:00
scrawl
132ac6001b Fix bug of Animation::mSkeleton not being assigned
This bug resulted in deactivating a Skeleton not working properly for creatures (that are out of processing range), therefore reduced performance.
2017-09-01 21:42:34 +00:00
scrawl
7a79ebb713 Merge pull request #1428 from akortunov/stancechangefixes
[Feedback needed] Stance switching changes, part II
2017-09-01 21:42:08 +00:00
John
51c7efa3f3 [CMake] CMake fix install 2017-09-01 19:57:11 +02:00
Andrei Kortunov
7f5f5458d4 Reset player attack animation when unequip weapon or tool 2017-09-01 18:03:23 +04:00
Andrei Kortunov
a5b01fefec Allow to interrupt an attack, if attack button is held 2017-09-01 14:28:21 +04:00
Andrei Kortunov
0d7279ea2a Fixes a regression with bound weapons equipping (bug #4050) 2017-09-01 08:59:05 +04:00
Kyle Cooley
1d480015b4 Add ability to touch records, LAND records in particular 2017-08-31 22:09:49 -04:00
Kyle Cooley
9e41f1340a Replace nonconst getId with setId, add template specialization and specialized derived classes for LandTexture 2017-08-31 22:09:49 -04:00
Kyle Cooley
5d14a2afcc Initial LTEX/LAND tables 2017-08-31 22:09:49 -04:00
scrawl
a8005c33d9 Revert unintended change to mOnGround variable that was somehow introduced with 38a2de3c51 2017-08-31 21:58:12 +00:00
scrawl
45f7563a55 Revert "Revert "Check for a Geometry node when attaching bodyparts""
Issue with shaders has been fixed with b9931fb71c

This reverts commit a1e3fb7604.
2017-08-31 21:40:35 +00:00
scrawl
b9931fb71c Set the shader on the node containing the StateSet 2017-08-31 21:39:21 +00:00
David Cernat
da7253bb57 [Documentation] Update documentation for 0.6.1 2017-08-31 23:06:16 +03:00
David Cernat
08df8f8d83 [General] Update version to 0.6.1 2017-08-31 18:45:41 +03:00
David Cernat
2e8718a0e0 Merge pull request #282 from OpenMW/master
Add OpenMW commits up to 31 Aug 2017, part 2
2017-08-31 18:42:54 +03:00
David Cernat
3fc1bdecb3 [Client] Shorten player names to 31 characters after they are inputted 2017-08-31 18:41:37 +03:00
David Cernat
ac3254d85f [General] Don't send PlayerAttribute and PlayerSkill packets as werewolf
This will prevent the server from overwriting a player's human form stats with their werewolf form stats.

Additionally, share PlayerShapeshift packets last when exchanging data with another player.
2017-08-31 18:21:38 +03:00
scrawl
d749b7f2a7 Merge pull request #1426 from akortunov/multiplesoundfix
Allow to play only one copy of given sound at time (bug #3647)
2017-08-31 14:59:08 +00:00
David Cernat
93d1aa2e4a [Client] Comment out the broken sending of custom spells until 0.7.0 2017-08-31 17:07:45 +03:00
David Cernat
e81dafb28a Merge pull request #281 from TES3MP/0.6.0
Add hotfix commits for 0.6.0 up to 31 Aug 2017
2017-08-31 15:46:06 +03:00
David Cernat
98a7769b91 Merge branch 'master' into 0.6.0 2017-08-31 15:44:27 +03:00
Andrei Kortunov
1aaa8a76c5 Allow to play only one copy of given sound at time (bug #3647) 2017-08-31 16:14:48 +04:00
David Cernat
4468e6ec4a Merge pull request #280 from OpenMW/master while resolving conflicts
# Conflicts:
#	.gitignore
#	apps/openmw/mwmechanics/actors.hpp
#	apps/openmw/mwmechanics/mechanicsmanagerimp.cpp
2017-08-31 15:14:13 +03:00
Koncord
54f5104345 [General] Escape format for strings 2017-08-31 20:09:05 +08:00
David Cernat
499c7db121 [Server] Initialize interiors correctly if exterior 0, 0 has been loaded 2017-08-31 14:48:23 +03:00
Andrei Kortunov
91dcd5bc6e Do not allow to unequip weapon from inventory during attack 2017-08-31 13:28:09 +04:00
Andrei Kortunov
6f22d819c5 Do not allow to switch weapon to probe or lockpick during attack 2017-08-31 12:36:54 +04:00
David Cernat
cca4991e74 [Utils] Use consistent names for utility functions added by tes3mp 2017-08-31 10:12:22 +03:00
David Cernat
cf4021a7b5 [Client] Only add valid quests to journal 2017-08-31 09:08:29 +03:00
David Cernat
134dd06d48 [Client] Only add valid inventory & equipment items to LocalPlayer
Also add related debug information.
2017-08-31 08:35:46 +03:00
David Cernat
c3d1eada89 [Client] Only add spells to players that are ensured to exist 2017-08-31 06:42:11 +03:00
David Cernat
f6d36d5d80 [Client] Ensure that objects searched for have a valid reference number 2017-08-31 03:40:36 +03:00
scrawl
8c6a8ca48d Respect the framelimit in all cases (Fixes #3531)
Affects loading screen, videos & modal dialogs. Also skips rendering if window is minimized.
2017-08-30 21:26:30 +00:00
scrawl
dc53573de4 Merge pull request #1405 from akortunov/stancechangefixes
Do not allow player to change weapon/spell during attack or spellcast
2017-08-29 23:11:23 +00:00
scrawl
a1e3fb7604 Revert "Check for a Geometry node when attaching bodyparts"
This reverts commit 3fc8634206.
2017-08-29 22:40:19 +00:00
David Walley
47d6c5091f OpenMW CS Manual - typo fixes etc (#1422)
* Update files-and-directories.rst
* OpenMW CS Manual - minor typo fixes
2017-08-29 22:39:24 +00:00
scrawl
43fda6cf07 Merge pull request #1423 from akortunov/spellpriority
Combat AI: use effective cast cost when rate enchanted weapon
2017-08-29 22:38:36 +00:00
scrawl
8a1e014bb8 Merge pull request #1424 from akortunov/guifixes
Display negative values on fatigue progress bars
2017-08-29 22:38:21 +00:00
David Cernat
833d2a5dbe Merge pull request #277 from TES3MP/0.6.0
Add hotfix commits for 0.6.0 up to 29 Aug 2017, part 1
2017-08-29 19:32:21 +03:00
David Cernat
92553b8e29 [Server] Log startup errors by not deleting logger too early 2017-08-29 19:30:37 +03:00
Andrei Kortunov
73d5efabee Display negative values on fatigue progress bar 2017-08-29 18:53:21 +04:00
scrawl
3fc8634206 Check for a Geometry node when attaching bodyparts (Fixes #3957) 2017-08-29 12:55:42 +00:00
Andrei Kortunov
8003dbee12 Combat AI: use effective cast cost when rate enchanted weapon 2017-08-29 16:40:55 +04:00
Andrei Kortunov
fb45995a41 Do not allow player to change weapon/spell during attack or spellcasting (bug #2445) 2017-08-29 15:53:23 +04:00
scrawl
bc82c6a35d Use white color if told to use nonexisting vertexcolors (Fixes #3833) 2017-08-27 21:22:44 +00:00
scrawl
5d2fe5e887 Implement lightmode/vertmode of NiVertexColorProperty 2017-08-27 21:22:17 +00:00
scrawl
4fba157d3b Implement releaseGLObjects for cached resources 2017-08-26 19:29:12 +00:00
Harry
86ae2ae395 Improved shuffle (#1412) 2017-08-25 20:08:49 +00:00
AnyOldName3
1578fcbec7 Escape content file names before sending them to the GUI 2017-08-25 10:05:56 +00:00
scrawl
20310cf5c6 Merge pull request #1421 from hristoast/normals-doc-update
Use "Remove Branch" instead of "Remove" in normals tutorial
2017-08-25 09:45:27 +00:00
Marc Zinnschlag
91f674bb6f Merge remote-tracking branch 'aesylwinn/master' 2017-08-25 10:24:17 +02:00
Hristos N. Triantafillou
663f3088d1
Use "Remove Branch" instead of "Remove" in normals tutorial
* Pherim over at nexusmods advised me that using "Remove" leaves stranded references at the end of the file, and that the proper way to fully remove the unwanted `NiTextureEffect` block is to use "Remove Branch".  This commit clarifies that in the normal map conversion tutorial.
2017-08-24 19:50:53 -05:00
Kyle Cooley
a8576d78ad Change default topic info values 2017-08-24 13:51:53 -04:00
Kyle Cooley
42b948dffe Fix pathgrid segfault 2017-08-23 11:35:26 -04:00
Marc Zinnschlag
f4110a72cc Merge remote-tracking branch 'aesylwinn/fixvideotable' 2017-08-23 11:24:51 +02:00
David Cernat
2597f018d2 Merge pull request #272 from TES3MP/0.6.0
Add hotfix commits for 0.6.0 up to 23 Aug 2017
2017-08-23 07:22:29 +03:00
David Cernat
a883c8f8aa [Client] Prevent scripts from creating PlayerTopic packet spam 2017-08-23 07:14:45 +03:00
Kyle Cooley
157ecb166c Fix wrong folder name 2017-08-23 00:02:02 -04:00
David Cernat
8f543fb34e [Client] Use less exploitable way of disabling console
Previously, large framerate drops allowed players to open and use the console for short periods of time.
2017-08-23 04:58:07 +03:00
David Cernat
056d54e9f7 [Client] Only send ObjectScale packets for objects located in cells 2017-08-23 02:45:38 +03:00
scrawl
30665b743d Merge pull request #1416 from akortunov/guifixes
Display large  journal entries correctly
2017-08-22 20:37:46 +00:00
scrawl
aa95cb3d91 Merge pull request #1406 from Aesylwinn/reloadassets
Editor: Asset Reloading
2017-08-22 20:17:30 +00:00
scrawl
13ccc73457 Merge pull request #1413 from akortunov/spellpriority
Combat AI: allow only one summoned creature at time
2017-08-22 20:11:41 +00:00
Andrei Kortunov
0177fe6602 Display large entries in journal correctly 2017-08-22 23:26:06 +04:00
Kyle Cooley
d3d04171f9 Fix seg fault, undo changes BsaArchive 2017-08-22 15:06:56 -04:00
Andrei Kortunov
e799cbdb51 Combat AI: allow only one summoned creature at time 2017-08-22 09:18:49 +04:00
Kyle Cooley
8c4b12a603 VFS changes, one VFS and resource system per document.
Added ability to reset a VFS::Manager.
Removed ability to rebuild the index for a VFS::Manager.
Moved VFS creation to CSM::Data.
2017-08-21 22:31:19 -04:00
Kyle Cooley
979b0d7211 Code cleanup and more cache clearing 2017-08-21 18:58:38 -04:00
Kyle Cooley
679a284735 Use scoped lock instead of directly locking/unlocking mutex 2017-08-21 13:33:11 -04:00
Kyle Cooley
3b9326d238 Clear terrain cache and reload terrain 2017-08-20 22:34:41 -04:00
Kyle Cooley
d4a722067d Reload water 2017-08-20 20:55:56 -04:00
Kyle Cooley
b62cb0e2a4 Clear out GPU texture/stateset cache 2017-08-20 19:55:16 -04:00
Kyle Cooley
7914fd5c9c Re-index BSAs 2017-08-20 19:36:21 -04:00
Kyle Cooley
d7744e8b16 A bit of cleanup 2017-08-20 19:07:23 -04:00
scrawl
c52a579410 Merge pull request #1409 from akortunov/guifixes
Minor GUI layout fixes
2017-08-20 20:37:19 +00:00
scrawl
2c11ed2454 Merge pull request #1411 from OpenMW/revert-1401-master
Reverts OpenMW/openmw#1401
2017-08-20 20:21:22 +00:00
scrawl
f0dea8b8e6 Revert "Implement a Fisher-Yates shuffle on background music" 2017-08-20 20:20:27 +00:00
Andrei Kortunov
6ef5d1408f Disabled transparency for description edit fields 2017-08-20 21:25:36 +04:00
Andrei Kortunov
765f982123 Removed cursor from Favorite Attributes label 2017-08-20 20:48:14 +04:00
David Cernat
ac27ca663b [Client] Don't send ObjectState packets for items in containers 2017-08-20 06:58:39 +03:00
Kyle Cooley
5950b26912 Update scene assets 2017-08-19 19:36:45 -04:00
scrawl
dbb8a5c959 Merge pull request #1401 from h313/master
Implement a Fisher-Yates shuffle on background music
2017-08-19 22:48:24 +00:00
scrawl
d200287b4a Merge pull request #1403 from akortunov/guifixes
Get only text from input fields (alternative implementation)
2017-08-19 22:46:51 +00:00
scrawl
dc8b35a3f7 Merge pull request #1407 from AnyOldName3/editorconfig
Add an EditorConfig file to force compatible editors to use the correct indentation style
2017-08-19 22:44:32 +00:00
scrawl
0ae77ed427 Merge pull request #1408 from AnyOldName3/more-gitignore
Add VS2017 aps files to gitignore
2017-08-19 22:40:29 +00:00
Kyle Cooley
742bd00ec6 Clear cached resources 2017-08-19 15:26:46 -04:00
Harry
2a85c5f011 Implement a Fisher-Yates shuffle on background music
This fixes sometimes getting repetitive background music
2017-08-19 14:48:00 -04:00
AnyOldName3
91597af051 Add VS2017 aps files to gitignore 2017-08-19 18:48:29 +01:00
AnyOldName3
f3361ed085 Add an EditorConfig file 2017-08-19 18:28:40 +01:00
Andrei Kortunov
65d05ee1cd Get only text from clipboard (bug #4025) 2017-08-19 15:32:17 +04:00
Andrei Kortunov
e0bb9c089b Revert commit 67d59bead5 (a better
implementation found)
2017-08-19 15:24:06 +04:00
Kyle Cooley
d31ed83b54 Preliminary asset reloading 2017-08-19 03:43:31 -04:00
scrawl
2611377081 Merge pull request #1350 from akortunov/deathanimationfix
Do not allow to loot fighting actors during death animation (bug #3528)
2017-08-18 22:04:12 +00:00
scrawl
f277007b49 Merge pull request #1404 from akortunov/ownedcrosshair
Owned crosshair feature improvements [discussion]
2017-08-18 20:21:23 +00:00
scrawl
f627db6ae7 Merge pull request #1402 from Capostrophic/knowneffects
Allow revealing up to 8 magic effects of a potion if the player's Alchemy skill is sufficient and the potion has more than 4 effects
2017-08-18 19:51:06 +00:00
Andrei Kortunov
7c80ddc9de Owned crosshair improvements (bug #2789) 2017-08-18 17:08:15 +04:00
Andrei Kortunov
641a6cd842 Added a delay before summoned creature corpse despawning 2017-08-18 11:58:28 +04:00
David Cernat
cffd985038 Merge pull request #266 from TES3MP/0.6.0
Add hotfix commits for 0.6.0 up to 18 Aug 2017
2017-08-18 07:45:36 +03:00
David Cernat
0820b7e92b [Server] Add GetCaseInsensitiveFilename() script function
Additionally, make header order consistent in script function files.
2017-08-18 07:13:08 +03:00
Capostrophic
6c8c883dc0 Making knownEffect aware that there can be more than 4 potion effects 2017-08-18 00:47:28 +03:00
scrawl
b73ed5ccac Merge pull request #1391 from akortunov/aifollow
AiFollow: add a threshold when turning to target
2017-08-17 20:17:11 +00:00
Andrei Kortunov
d8d47f081b AiFollow: add a threshold when turning to target 2017-08-17 22:52:34 +04:00
scrawl
c231d20413 Merge pull request #1362 from akortunov/spellpriority
Combat AI: use WhenUsed enchantments [Feedback needed]
2017-08-16 21:23:57 +00:00
scrawl
306b58349e Merge pull request #1387 from akortunov/movementfix
Check actual movement for GetPCRunning and GetPCSneaking [Feedback needed]
2017-08-16 20:50:49 +00:00
scrawl
d1161819bf Merge pull request #1396 from akortunov/dispelfix
Dispel only effects from spells
2017-08-16 20:49:40 +00:00
scrawl
d8ab6bcd1d Merge pull request #1398 from akortunov/guifixes
Get only text from input fields (bug #4025)
2017-08-16 20:48:40 +00:00
Andrei Kortunov
bc7353f100 Check animation state for GetPCRunning and GetPCSneaking 2017-08-16 20:30:47 +04:00
Andrei Kortunov
67d59bead5 Get only text from input fields (bug #4025) 2017-08-16 15:03:04 +04:00
Andrei Kortunov
1e983604db Dispel only effects from spells (bug #3995) 2017-08-15 09:35:29 +04:00
scrawl
8acf0ba633 Merge pull request #1394 from akortunov/followerattackfix
Prevent followers from attacking player if crime was reported
2017-08-14 22:19:46 +00:00
scrawl
24eaced7d2 Merge pull request #1395 from akortunov/tradeconfiscatefix
Confiscate an item when you try to sell it to its owner
2017-08-14 22:18:42 +00:00
Andrei Kortunov
ec64034160 Confiscate stolen item/gem when enchanting 2017-08-14 19:29:34 +04:00
Andrei Kortunov
7a5645b35d Prevent followers from attacking player if crime was reported 2017-08-14 18:42:19 +04:00
Andrei Kortunov
f84eb68b3d Confiscate an item when you try to sell it to its owner (bug #3944) 2017-08-14 11:31:17 +04:00
Kyle Cooley
249c1ae95a Fix orbit camera jumping back to old position 2017-08-13 19:26:32 -04:00
scrawl
1bdcecc32e Merge pull request #1390 from akortunov/referencecheck
Do not make target reference unavailable on cell change
2017-08-12 18:48:52 +00:00
Andrei Kortunov
3f159960b7 Restored pickpocket and werewolf check 2017-08-12 21:18:05 +04:00
scrawl
b6aaa2f2be Merge pull request #1389 from akortunov/autosave
Create autosave when waiting
2017-08-12 16:50:30 +00:00
Andrei Kortunov
b3b7d6aa9f Do not make target reference unavailable on cell change (bug #3898) 2017-08-12 09:36:09 +04:00
Andrei Kortunov
c542ae6875 Create autosave when waiting (bug #1452) 2017-08-12 09:06:31 +04:00
scrawl
1f2b62c541 Merge pull request #1388 from akortunov/guifixes
Make inventory avatar to fit within border
2017-08-11 20:31:02 +00:00
Andrei Kortunov
e4df17ccaf Make inventory avatar to fit within border (bug #4003) 2017-08-11 09:02:50 +04:00
David Cernat
d51736d68f [Client] Fix crashes caused by inventory items with disabling scripts 2017-08-11 05:49:33 +03:00
scrawl
0f983144a4 Merge pull request #1383 from akortunov/guifixes
Enable transparency for interactive messageboxes and tooltips in game mode
2017-08-10 21:55:24 +00:00
scrawl
4210c7c0a4 Merge pull request #1385 from Thunderforge/changing-to-retail-disc
Wizard: Changing "New Installation" to "Retail CD/DVD" for clarity
2017-08-10 21:54:25 +00:00
scrawl
0ad4f5d5ff Merge pull request #1386 from Thunderforge/fix-wrong-copy-paste-keys-macos
Swap the OIS Ctrl and Meta keys on macOS so Copy/Paste etc. work correctly
2017-08-10 21:51:53 +00:00
Thunderforge
54fe645703 Removing erroneous comment since Qt is not relevant here 2017-08-09 23:12:43 -05:00
Thunderforge
464c64a306 Swap the OIS Ctrl and Meta keys on macOS to match Qt 2017-08-09 20:03:27 -05:00
Thunderforge
f41a4bb937 Changing "New Installation" to "Retail CD/DVD" for clarity 2017-08-09 00:20:49 -05:00
Andrei Kortunov
56f5a5dee3 Added transparency to 'owned' tooltip 2017-08-08 22:57:39 +04:00
scrawl
af9db74010 Merge pull request #1377 from LennyPenny/master
Fade out music before change occurs
2017-08-08 17:34:50 +00:00
Andrei Kortunov
8c1c80ab91 Disable transparency for persuation dialogue menu 2017-08-08 20:39:25 +04:00
Andrei Kortunov
4cc8afd25d Add transparency for tooltips in game mode 2017-08-08 20:38:15 +04:00
Andrei Kortunov
6cb3c83248 Add transparency for interactive messageboxes in game mode 2017-08-08 20:36:50 +04:00
Lennart Bernhardt
546352dbe3 avoid starting sound updates more than necessary 2017-08-08 03:31:01 +02:00
Lennart Bernhardt
7b8278ae45 remove redundant mMusicFader variable 2017-08-08 03:17:40 +02:00
scrawl
551045e4cc Merge pull request #1370 from Siimacore/data_files_loc_fix
Correcting https://bugs.openmw.org/issues/3906.
2017-08-07 18:52:54 +00:00
scrawl
cd4525cf25 Merge pull request #1372 from akortunov/guifixes
Journalbook layout fixes
2017-08-07 18:49:13 +00:00
scrawl
4ec5060374 Merge pull request #1381 from akortunov/spellschoolfix
Fixes regression in spell school detection (bug #4007)
2017-08-07 16:59:45 +00:00
Andrei Kortunov
ab391f17db Fixes regression in spell school detection (bug #4007) 2017-08-07 12:12:57 +04:00
Andrei Kortunov
dd919b9f2c Do not allow to loot fighting actors during death animation (bug #3528) 2017-08-07 09:55:50 +04:00
scrawl
ba72eb77f4 Merge pull request #1374 from akortunov/guardfix
Disable AiPursue package for player's followers
2017-08-06 21:11:08 +00:00
scrawl
7f5b615295 Merge pull request #1375 from MiroslavR/missing-import
Add missing include for isatty function
2017-08-06 21:10:11 +00:00
scrawl
bf8d10587e Update AUTHORS.md 2017-08-06 21:09:29 +00:00
scrawl
4d1582dfc0 Merge pull request #1376 from spycrab/start_exterior_cell
Allow starting at an (unnamed) exterior cell using --start
2017-08-06 21:08:27 +00:00
scrawl
a7b1ecc4c8 Merge pull request #1379 from OpenMW/revert-1366-merge_input_events
Revert "Merge redundant input events"
2017-08-06 20:55:30 +00:00
scrawl
cef415509f Revert "Merge redundant input events" 2017-08-06 20:54:20 +00:00
spycrab
632d39ca76 Allow starting at an (unnamed) exterior cell using --start (Feature #3941) 2017-08-06 22:31:07 +02:00
Lennart Bernhardt
60a7d3d6e0 Fade out music before change occurs 2017-08-06 20:10:56 +02:00
MiroslavR
393f4ab758 Add missing include for isatty function (Fixes #4002) 2017-08-06 13:02:22 +02:00
David Cernat
77ce05b7d6 [Client] Fix spell casting probability synchronization 2017-08-06 00:11:54 +03:00
Andrei Kortunov
72ce118d02 Disable AiPursue package for player's followers 2017-08-05 12:38:26 +04:00
Andrei Kortunov
cf7a6232d0 Combat AI: use WhenUsed enchantments 2017-08-05 12:18:38 +04:00
scrawl
fe8437ae10 Merge pull request #1371 from akortunov/journalfix
Do not allow to use journal in a main menu
2017-08-04 21:45:44 +00:00
scrawl
bf70b97f89 Update AUTHORS.md 2017-08-04 21:44:20 +00:00
scrawl
ec67e7baaf Merge pull request #1373 from 16bitint/jailSkillDecreaseFloor
Ensure jail does not decrease a skill past zero
2017-08-04 21:41:47 +00:00
David Cernat
721b218cc2 Merge pull request #258 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
#	README.md
2017-08-05 00:09:34 +03:00
Jake Westrip
63343b6241 Ensure jail does not decrease a skill past zero 2017-08-05 06:15:15 +10:00
David Cernat
0e2038f045 [General] Record and get player positions before their last cell change 2017-08-04 21:45:52 +03:00
David Cernat
fbec0d9443 [Client] Remove inertia from players who are teleported via a packet 2017-08-04 21:43:01 +03:00
Andrei Kortunov
23bda7613b Do not allow to use journal in a main menu (bug #3991) 2017-08-04 07:31:41 +04:00
Siimacore
c920d083e4 Correcting https://bugs.openmw.org/issues/3906. 2017-08-03 23:15:26 +02:00
scrawl
a78f254883 Merge pull request #1368 from akortunov/tradefix
Trade window improvements
2017-08-03 21:09:57 +00:00
scrawl
a687a20aef Merge pull request #1366 from julianko/merge_input_events
Merge redundant input events
2017-08-03 21:06:51 +00:00
scrawl
a63b9e33fd Merge pull request #1369 from akortunov/tauntfix
Take in account a temporary disposition in isAggressive check (bug #3…
2017-08-03 21:01:03 +00:00
Andrei Kortunov
56a30d7aec Journalbook layout fixes 2017-08-03 20:27:14 +04:00
Andrei Kortunov
d1489f5b42 Take in account a temporary disposition in isAggressive check (bug #3987) 2017-08-03 19:18:31 +04:00
Andrei Kortunov
35beede065 Restock items after trade deal instead of trade window opening 2017-08-03 18:41:13 +04:00
Andrei Kortunov
487e72fd23 Play Up sounds instead of Down ones in trade window (bug #3982) 2017-08-03 18:39:59 +04:00
Bret Curtis
d32ea7f284 Merge pull request #1367 from Thunderforge/patch-2
Adding myself to Authors.md
2017-08-03 13:40:31 +02:00
Thunderforge
2fdffb1995 Adding myself to Authors.md
I've had a few pull requests merged, so I assume I'm ready to be added.
2017-08-02 18:05:33 -05:00
Julian
3cfd9af945 merge redundant input events 2017-08-02 18:54:16 +02:00
scrawl
cb32f1d60a Update AUTHORS.md 2017-08-02 16:05:05 +00:00
scrawl
954ec38af9 Merge pull request #1365 from elsid/fix_dangling_reference
Copy PathFinder::mPath back value when pass to MWMechanics::AiPackage…
2017-08-02 16:04:10 +00:00
elsid
748f5225a9 Copy PathFinder::mPath back value when pass to MWMechanics::AiPackage::pathTo as dest
May become dangling reference because method may remove all elements from mPath.
2017-08-02 11:35:53 +03:00
scrawl
60c7876c3d Merge pull request #1364 from OpenMW/openmw-42
Merge openmw-42
2017-08-01 22:16:45 +00:00
Nikolay Kasyanov
ffcdedced3 [macOS, CI] Use FTP URL from environment
This URL is also subject to change, moving to Travis settings.
2017-08-01 20:35:10 +02:00
scrawl
0d58a77f86 Merge pull request #1291 from MiroslavR/respawn_crash
Prevent respawned references from being added to the scene twice
2017-08-01 14:38:46 +00:00
scrawl
52ffd10222 Merge pull request #1361 from akortunov/spellpriority
Split weapons and spells rating code from combat actions
2017-08-01 14:37:41 +00:00
Andrei Kortunov
604f9ee323 Split weapons and spells rating code from combat actions 2017-08-01 09:05:35 +04:00
MiroslavR
d24286273b Prevent respawned references from being added to the scene twice in certain cases (Fixes #3864) 2017-08-01 00:11:14 +02:00
scrawl
6301fb8497 Merge pull request #1359 from akortunov/tgmfix
Fixed DamageHealth and AbsorbHealth effects applying (regression)
2017-07-31 21:35:35 +00:00
Andrei Kortunov
b7cfb1aaf4 Fixed DamageHealth and AbsorbHealth effects applying 2017-07-31 23:05:19 +04:00
scrawl
eac2e52841 Merge pull request #1329 from akortunov/priorityfix
Combat AI: make default spell priority calculation formula close to vanilla
2017-07-31 18:21:47 +00:00
Koncord
d7cbfc98eb [Browser] Fix crashing of browser (I hope) 2017-08-01 02:16:49 +08:00
scrawl
fde6e29628 Merge pull request #1326 from akortunov/spellpriority
Combat AI improvements [feedback needed]
2017-07-31 17:51:51 +00:00
scrawl
333648c975 Merge pull request #1324 from akortunov/doorfix
Improved doors detection
2017-07-31 17:42:53 +00:00
scrawl
60753515ab Merge pull request #1277 from akortunov/countfix
Fixed count widget buttons alignment
2017-07-31 17:29:39 +00:00
Andrei Kortunov
10eb6ec75f AI: Check angle between actor and door 2017-07-31 19:28:02 +04:00
Andrei Kortunov
a03cc8216e Fixed count widget buttons alignment 2017-07-31 18:51:44 +04:00
scrawl
c9d9461d3e Add Spacer class derived from AutoSizedWidget
Using a normal widget as a spacer with HStretch/VStretch may not work properly because for widgets not derived from AutoSizedWidget, the HBox/VBox treat the widget's current size as the requested minimum size. This leads the layout to break when resized more than once.

The new class sets HStretch and VStretch to true by default to save some typing.
2017-07-31 16:20:29 +02:00
scrawl
308ddabe90 Add feature additions policy 2017-07-31 12:39:33 +00:00
Koncord
1f632d8bc9 [Master] Fix REST servers/info 2017-07-31 19:32:27 +08:00
Koncord
bca594150c [Browser] Add debug info to QueryClient 2017-07-31 19:08:04 +08:00
Koncord
918658d383 [Master] Waiting ACK instead of immediately closing connection. 2017-07-31 19:08:04 +08:00
Koncord
1aabcdd09c [General] Add *_WITH_ACK_RECEIPT to master server packets 2017-07-31 19:08:04 +08:00
Koncord
8384a8aa8a [General] Return sent packet number 2017-07-31 19:08:04 +08:00
scrawl
9ac409e61c Merge pull request #1287 from akortunov/spellsorting
Spellbuying menu improvements
2017-07-31 09:43:47 +00:00
Nikolay Kasyanov
e7e8750816 [macOS, CI] Remove encrypted FTP credentials from repo
It seems more convenient to keep them in Travis settings.
2017-07-31 09:41:23 +02:00
scrawl
7d97d1d513 Merge pull request #1247 from pvdk/progressbar
Ini-importer progress bar fills the whole width of the ui element now
2017-07-30 23:38:49 +00:00
scrawl
fd4c4d1133 Merge pull request #1358 from Thunderforge/renaming-duplicate-horizontalSpacer
Renaming duplicate horizontalSpacer variable
2017-07-30 23:23:42 +00:00
Thunderforge
b98e175161 Renaming duplicate horizontalSpacer variable 2017-07-30 17:40:56 -05:00
scrawl
59b92dc67b Merge pull request #1349 from Thunderforge/prevent-parchment-from-being-cut-off
UI adjustments to prevent parchment scroll from being cut off (fixes #3910)
2017-07-30 22:01:58 +00:00
scrawl
43279c49b5 Go back to index when selecting 'cancel' on topics list 2017-07-30 23:51:44 +02:00
scrawl
196eedf1b0 Fix key focus issue with the journal hotkey 2017-07-30 23:51:07 +02:00
scrawl
4b51fd23e0 Merge pull request #1356 from akortunov/guifixes
Add missing journal sounds (bug #3974)
2017-07-30 21:36:04 +00:00
Nikolay Kasyanov
8be3928e98 Merge pull request #1357 from nikolaykasyanov/macos-improve-packaging
[macOS] Fixes accidental loading of plugins from system-wide Qt install
2017-07-30 20:59:27 +02:00
David Cernat
73118ea575 Merge pull request #253 from 16bitint/customspells
Added networking and saving for custom spells
2017-07-30 21:51:18 +03:00
Unknown
bfbfbeac43 Added networking and saving for custom spells 2017-07-31 03:45:47 +10:00
Nikolay Kasyanov
ccae232563 [macOS, CI] Use most recent available Qt 2017-07-30 16:34:49 +02:00
Nikolay Kasyanov
49b02a1bf4 [macOS] remove use of deprecated CMake policy 2017-07-30 15:48:00 +02:00
Nikolay Kasyanov
fd0be7008d [macOS] Fixes accidental loading of plugins from system-wide Qt install
I was too eager to remove the workaround in 014a2fc0e9.
Actually, config-based solution seems cleaner.
Respective Qt documentation: http://doc.qt.io/qt-5/qt-conf.html.

Also, moves Qt plugins from Contents/MacOS to Contents/PlugIns
for consistency.
2017-07-30 15:43:45 +02:00
Andrei Kortunov
99b5f21a46 Add missing journal sounds (bug #3974) 2017-07-29 19:41:46 +04:00
scrawl
a9b17d73dc Merge pull request #1355 from Allofich/animation
Fix problem with animations not looping
2017-07-29 14:30:20 +00:00
scrawl
03daa08a91 Merge pull request #1354 from OpenMW/patch-1
Add policy on original engine "fixes"
2017-07-29 14:29:00 +00:00
scrawl
deaeda464e Update CONTRIBUTING.md 2017-07-29 14:19:15 +00:00
Allofich
dae19412f2 Fix problem with animations not looping
Fixes #3804
2017-07-29 20:54:11 +09:00
Bret Curtis
cf6f368560 rtd backport fix 2017-07-29 11:52:13 +02:00
scrawl
6d4bb9e130 Add policy on original engine "fixes"
Since the topic came up again on #1350, I figured to write down this policy. It is what I gathered from many discussions in the past and some "bugs" that we had fixed then later reverted when complaints came in. Do we all agree on this?
2017-07-28 21:58:23 +00:00
scrawl
631d79f1c8 Merge pull request #1346 from akortunov/aibreathe
AiBreathe AI package (feature #1374)
2017-07-28 20:50:04 +00:00
scrawl
9749f8f486 Merge pull request #1352 from psi29a/rtd_fix
remove breath/doxygen autodoc
2017-07-28 20:48:23 +00:00
scrawl
c3c68667e9 Merge pull request #1351 from Thunderforge/patch-1
Fixing link to bug tracker
2017-07-28 20:47:03 +00:00
scrawl
4c2487d55f Merge pull request #1353 from akortunov/restfix
Update effects during rest (bug #3679)
2017-07-28 20:46:14 +00:00
David Cernat
f61664ff6d [General] Update version to 0.6.0 2017-07-28 23:22:58 +03:00
David Cernat
4db64e1721 [Client] Synchronize spellcasting for non-bipedal creatures 2017-07-28 20:49:26 +03:00
Bret Curtis
ac7b1bf97d appstream to new location: https://lintian.debian.org/tags/appstream-metadata-in-legacy-location.html 2017-07-28 19:16:32 +02:00
Andrei Kortunov
920021c61b Update effects during rest (bug #3679) 2017-07-28 16:50:52 +04:00
Bret Curtis
69359b6b4b expand to max-depth 3 and remove indices and tables 2017-07-28 13:13:45 +02:00
Bret Curtis
f2fc8351bb remove breath/doxygen autodoc 2017-07-28 10:42:30 +02:00
David Cernat
c9550fc560 [Server] Use case-insensitive filename comparison for plugins
Additionally, clarify the comments related to plugin comparison.
2017-07-28 06:57:15 +03:00
Thunderforge
622e758909 Fixing link to bug tracker
Bug tracker link was pointing to 0.41 bugs, but the Readme was talking about pre-1.0 features. Pointing to the main page makes more sense.
2017-07-27 16:44:17 -05:00
David Cernat
c82b59acc2 [Documentation] Bring documentation up to date 2017-07-28 00:11:05 +03:00
David Cernat
690f7dc7df Merge pull request #251 from OpenMW/master
Add OpenMW commits up to 27 Jul 2017, part 2
2017-07-27 20:55:56 +03:00
David Cernat
9d05063af4 [General] Add server script functions for banning & unbanning IPs
Additionally, use a more informative message for the client when trying to connecting to a server that it is banned from.
2017-07-27 19:29:17 +03:00
Marc Zinnschlag
6001e04e51 Merge remote-tracking branch 'rcutmore/bug-3148' 2017-07-27 16:29:44 +02:00
Andrei Kortunov
6ab36c0539 Spellbuying menu improvements 2017-07-27 13:20:18 +04:00
David Cernat
500bff9911 Merge pull request #250 from OpenMW/master
Add OpenMW commits up to 27 Jul 2017
2017-07-27 04:01:44 +03:00
Rob Cutmore
3f2cd9b669 Editor: Do color to int conversion in ColorEditor 2017-07-26 19:56:54 -04:00
Rob Cutmore
c7241c692f Editor: Do int to color conversion in ColorEditor 2017-07-26 19:43:37 -04:00
scrawl
ec6dad99fc Update AUTHORS.md 2017-07-26 22:07:23 +00:00
scrawl
1792886f1e Merge pull request #1344 from julianko/dialogue_performance
Fix dialogue window performance
2017-07-26 22:05:45 +00:00
David Cernat
2f551aba02 [Client] Don't start dialogue via client scripts if already in dialogue
This prevents infinite greeting spam in scripts such as hlormarScript.
2017-07-26 22:37:57 +03:00
David Cernat
e6e5d406b8 Merge pull request #248 from OpenMW/master
Add OpenMW commits up to 26 Jul 2017, part 2
2017-07-26 20:31:39 +03:00
David Cernat
796118c266 [Client] Send StatsDynamic packets more often 2017-07-26 20:15:35 +03:00
Julian
d7aa2a882d improve dialogue window performance 2017-07-26 18:58:27 +02:00
scrawl
d3be4769ea Merge pull request #1347 from akortunov/encumberancefix
Fixed encumberance check (bug #3963)
2017-07-26 16:20:16 +00:00
David Cernat
bfbf1bbac4 Merge pull request #247 from OpenMW/master
Add OpenMW commits up to 26 Jul 2017
2017-07-26 14:01:01 +03:00
Thunderforge
072fbcaee3 UI adjustments to prevent parchment scroll from being cut off (fixes #3910) 2017-07-25 22:12:29 -05:00
David Cernat
d543edbd9a [Server] Make sure players are initialized as non-werewolves 2017-07-26 06:01:48 +03:00
David Cernat
84662ed3fe [Client] Add temporary warnings when creating custom spells and items 2017-07-26 05:36:12 +03:00
Rob Cutmore
3fb7c42845 Editor: Use colour field for cell map colour 2017-07-25 19:11:47 -04:00
Rob Cutmore
0082f5a2dc Editor: fix handling of colour columns
Colours are stored as ints in the backend but the conversion from
QColor to int was broken.
2017-07-25 19:11:47 -04:00
scrawl
9920418947 Merge pull request #1345 from Thunderforge/bugfix/prevent-extra-column
Launcher: Move Morrowind Content Language label to section header
2017-07-25 21:21:41 +00:00
scrawl
c23b75ab9a Merge pull request #1339 from PlutonicOverkill/vs2017-support
Add Visual Studio 2017 support (Feature #3952)
2017-07-25 21:07:34 +00:00
David Cernat
cd8d064761 [Server] Add PlayerShapeshift to PlayerCellChange's information exchange 2017-07-25 18:44:06 +03:00
David Cernat
8b79cdd4f4 [Server] Document script functions, part 3
Also reorder functions in Cells and CharClass so they are consistent with the rest.
2017-07-25 18:07:09 +03:00
Andrei Kortunov
548814bfbc Added AiBreathe package (feature #1374) 2017-07-25 10:58:04 +04:00
Andrei Kortunov
325ea10594 Fixed encumberance check (bug #3963) 2017-07-25 10:28:33 +04:00
Thunderforge
8ded95201d Move Morrowind Content Language label to section header 2017-07-24 22:56:58 -05:00
David Cernat
3d1458b5a2 Merge pull request #246 from OpenMW/master
Add OpenMW commits up to 24 Jul 2017
2017-07-24 20:21:04 +03:00
Andrei Kortunov
3ba0a336b7 Move spell magicka cost calculation to standalone function 2017-07-24 21:11:59 +04:00
Marc Zinnschlag
cfc5cdd309 Merge remote-tracking branch 'plutonicoverkill/highlight-occurence-fix' 2017-07-24 09:18:24 +02:00
PlutonicOverkill
9924e4a35b Stop VS2017 spamming warnings
Disable warning caused by the string and stream-related standard headers.
2017-07-24 17:49:39 +12:00
scrawl
57a772c8d4 Merge pull request #1342 from akortunov/screenfade
Fade screen in on a new game start
2017-07-23 22:08:20 +00:00
David Cernat
2c1ece79fc Merge pull request #245 from OpenMW/master
Add OpenMW commits up to 22 Jul 2017
2017-07-23 22:02:16 +03:00
David Cernat
5e5440b697 [Server] Document script functions, part 2 2017-07-23 21:59:33 +03:00
PlutonicOverkill
16be1e1a84 Fix occurrence highlighting preferences panel 2017-07-23 20:29:42 +12:00
Andrei Kortunov
337f0f876d Fade screen in on a new game start 2017-07-23 11:04:58 +04:00
Nikolay Kasyanov
04184f5794 Merge pull request #1341 from nikolaykasyanov/macos-update-ci-dependencies
[macOS, CI] Use most recent dependencies
2017-07-22 22:54:03 +02:00
Nikolay Kasyanov
411b78562e [macOS, CI] Use most recent dependencies
Includes a fix for https://bugs.openmw.org/issues/3904.
2017-07-22 21:25:59 +02:00
scrawl
8feb495d17 Merge pull request #1340 from PlutonicOverkill/pause-when-minimised
Pause game when minimised on Windows (Bug #3943)
2017-07-22 10:16:37 +00:00
PlutonicOverkill
0eb54fa96a Remove TOOLSET and XP_TOOLSET 2017-07-22 17:58:04 +12:00
scrawl
9bc24ab629 Fix character preview zNear/zFar not being autocomputed as intended (Bug #3955) 2017-07-22 00:38:27 +02:00
scrawl
5c11266a46 Fix character preview item selection 2017-07-22 00:06:43 +02:00
scrawl
c9f8a220dc Update the tooltip when the focusObject is set 2017-07-20 20:59:36 +02:00
scrawl
0e2e23e9f8 Remove tooltip object as part of WindowManager::clear 2017-07-20 20:59:09 +02:00
David Cernat
cc91b32b2f [Server] Make spell script functions consistent with others 2017-07-20 17:58:00 +03:00
David Cernat
7173a48f4b [Client] Prevent ObjectState packet spam 2017-07-20 17:01:04 +03:00
PlutonicOverkill
5049fe4320 Pause game when minimised on Windows 2017-07-20 21:31:05 +12:00
David Cernat
b8b3856c73 Merge pull request #244 from OpenMW/master
Add OpenMW commits up to 19 Jul 2017
2017-07-19 20:49:56 +03:00
David Cernat
8bd33e5fbb [Server] Document script functions, part 1 2017-07-19 20:40:51 +03:00
scrawl
7f634514a8 Fix the viewport of the character preview being set a frame ahead due to a threading issue 2017-07-19 17:43:15 +02:00
scrawl
20606a2aff Add 'prediction time' setting for cell/terrain pre-loading 2017-07-19 16:44:37 +02:00
scrawl
3e03a0d7bd Terrain: remove ref argument that is now always true 2017-07-19 16:24:35 +02:00
scrawl
ac78d01b2b Terrain: use the main camera's viewpoint for intersection tests
Fixes lag spikes caused by intersection tests loading/unloading terrain pages.
2017-07-19 13:11:44 +02:00
scrawl
a629d48df6 Update the facedObject after the camera is updated 2017-07-19 13:05:51 +02:00
David Cernat
c8d965488f Merge pull request #243 from OpenMW/master
Add OpenMW commits up to 18 Jul 2017
2017-07-18 16:59:33 +03:00
scrawl
ffb6dff6aa Merge pull request #1338 from akortunov/valuefix
Change mValue type for clothes to unsigned short (bug #3960)
2017-07-18 10:13:51 +00:00
Andrei Kortunov
2bd105f5e2 Change mValue type for clothes to unsigned short (fixes #3960) 2017-07-18 11:51:19 +04:00
David Cernat
fd046e42ef Merge pull request #242 from OpenMW/master
Add OpenMW commits up to 16 Jul 2017
2017-07-17 21:34:44 +03:00
scrawl
2c7ce26fb7 Merge pull request #1336 from akortunov/evadefix
Combat AI: avoid enemy hits when casting Self-ranged spells
2017-07-16 20:05:21 +00:00
scrawl
3f7c2128e8 Merge pull request #1337 from akortunov/guifixes
Disable transparency for all popup lists
2017-07-16 20:05:04 +00:00
Andrei Kortunov
6795163265 Disable transparency for all popup lists 2017-07-16 23:03:53 +04:00
Andrei Kortunov
98f161c7fd Combat AI: avoid enemy hits when casting Self-ranged spells (fixes #3922) 2017-07-16 22:38:23 +04:00
scrawl
2c95f40640 Merge pull request #1333 from akortunov/guidistortionfix
Disable sound distortion for GUI actions and PlaySound command [discussion]
2017-07-16 18:28:03 +00:00
scrawl
4f6838c7db Merge pull request #1335 from akortunov/guifixes
GUI fixes
2017-07-16 18:25:40 +00:00
Andrei Kortunov
5bb9f1b187 Make popup in character select menu non-transparent 2017-07-16 13:18:59 +04:00
Andrei Kortunov
2b22d10ebc Spellview fixes 2017-07-16 13:14:19 +04:00
Andrei Kortunov
9179a019df Quick keys menu fixes 2017-07-16 13:11:34 +04:00
scrawl
12871dd8da Merge pull request #1334 from akortunov/guifixes
EditEffectDialog fixes
2017-07-15 21:37:02 +00:00
Andrei Kortunov
5be1c81913 Fixed Close button handler in EditEffectDialog (fixes #3956) 2017-07-15 14:03:36 +04:00
David Cernat
aeb1ec3394 [Client] Delimit and clarify changes made by tes3mp to engine and main 2017-07-15 12:44:00 +03:00
David Cernat
f65f996418 [Server] Add script functions for werewolf states 2017-07-15 11:09:28 +03:00
Andrei Kortunov
dca8317083 Disable sound distortion for player actions in GUI mode 2017-07-15 10:59:08 +04:00
Andrei Kortunov
3b163ce6ce Disable sound distortion for PlaySound script command 2017-07-15 10:58:19 +04:00
David Cernat
e3929df38a Merge pull request #239 from OpenMW/master
Add OpenMW commits up to 14 Jul 2017
2017-07-15 09:13:04 +03:00
David Cernat
43a3daf0aa [General] Add & implement PlayerShapeshift packet for werewolf states 2017-07-15 09:02:19 +03:00
scrawl
ada85aa1ee Merge pull request #1331 from akortunov/guidistortionfix
Prevent GUI sounds distortion
2017-07-14 19:55:33 +02:00
David Cernat
f17aa2a323 [Documentation] Update changelog and credits 2017-07-14 11:27:33 +03:00
PlutonicOverkill
2d7689b978 Add Visual Studio 2017 support
The new VS2017 configuration uses all the same settings as the
VS2015 one, but uses a different generator.

CMake by default looks for Boost libraries based on the compiler
being used, but Boost only has binaries for VS2015, so a hack is
used to make sure it looks for the correct ones.

I don't know what TOOLSET and XP_TOOLSET are for but I left them
just in case.
2017-07-14 12:07:16 +12:00
David Cernat
ad9fa0631a [General] Rename jailText to jailEndText and add jailProgressText in PlayerJail 2017-07-13 20:13:28 +03:00
David Cernat
708d3723eb [Client] Fix client script messagebox buttons that had always broken in tes3mp 2017-07-13 18:58:48 +03:00
David Cernat
e36c0afc59 [General] Send faction reputation via PlayerFaction packets 2017-07-13 13:36:00 +03:00
David Cernat
be93ec8ef6 [General] Implement ObjectState packet 2017-07-13 09:46:30 +03:00
David Cernat
083b46394d [General] Add ignoreJailSkillIncreases to PlayerJail packets 2017-07-12 18:24:37 +03:00
David Cernat
5962570c48 [General] Add jailText to PlayerJail packets 2017-07-12 16:39:31 +03:00
David Cernat
5774023f8b [Client] Add missing processor initialization for ProcessorPlayerJail 2017-07-11 14:31:32 +03:00
David Cernat
3280f0c5ee [General] Implement PlayerJail packet
Rework server's DeathFunctions into MechanicsFunctions

Remove connection between PlayerResurrect and jailing
2017-07-11 13:34:09 +03:00
David Cernat
b1b27728e2 [Server] Move functions dealing with PlayerKillCount to QuestFunctions 2017-07-11 07:15:06 +03:00
David Cernat
6f6a3ae74d Merge pull request #238 from OpenMW/master
Add OpenMW commits up to 11 Jul 2017
2017-07-11 03:37:53 +03:00
scrawl
40dc1dd6f5 Fix checking a variable before it's assigned (Bug #3950) 2017-07-10 23:50:24 +02:00
scrawl
be940656db Add '0' as an alias for 'OFF' for OPENMW_OPTIMIZE 2017-07-10 23:49:42 +02:00
Koncord
9cc07f100c [Server] Add OnObjectState callback 2017-07-11 02:21:19 +08:00
Andrei Kortunov
54b4d93f79 Added a special function for GUI sounds playing 2017-07-10 15:48:00 +04:00
David Cernat
c9c00d921e [Build] Add tes3mp_text_input to MyGUI's CMakeLists 2017-07-10 12:38:40 +03:00
David Cernat
3529f9b090 [General] Add placeholders for PlayerJail, ObjectState & ConsoleCommand 2017-07-10 12:33:53 +03:00
David Cernat
4e74910fdb [General] Disable automatic sync for PlayerJournal and PlayerFaction
Simplify PlayerFaction packets by removing BOTH action
2017-07-08 12:27:48 +03:00
David Cernat
6dde0ca9c9 [Server] Rework script functons by removing unnecessary vector buffers
Add new initialization script functions to allow clearing all player changes vectors in a manner consistent with Actor and World functions

Add toOthers boolean to all methods that send packets with player changes vectors
2017-07-07 09:25:48 +03:00
David Cernat
2c05b7f747 [Server] Rename InitiateEvent() into InitializeEvent() for consistency 2017-07-07 08:12:48 +03:00
David Cernat
1d504a665f [General] Add RANK, EXPULSION and BOTH actions to PlayerFaction packets 2017-07-05 07:06:33 +03:00
Koncord
940ae5c2fb [Server] Implement GetIP API function 2017-07-04 15:57:16 +08:00
Koncord
1f3cbb46e2 [Server] Use __ARM_ARCH definition for detecting ARM 2017-07-04 15:56:40 +08:00
Andrei Kortunov
37952c9a79 Added door detection based by ray casting 2017-07-03 22:08:29 +04:00
Koncord
b847914d6f [General] Fix finding CallFF includes 2017-07-04 01:15:11 +08:00
Koncord
768790e9b4 [Server] Move Base processors and Initializer to processors subdirectory 2017-07-04 01:13:10 +08:00
Koncord
60ac884d13 [Server] Delete commented line 2017-07-04 00:31:57 +08:00
Koncord
9bb586de77 [Client] Simplify setMapExplored() 2017-07-03 23:43:32 +08:00
Koncord
52349278e9 [Client] Fix warnings 2017-07-03 23:41:16 +08:00
Koncord
b2339f2f9a [Client] Fix building 2017-07-03 23:40:38 +08:00
David Cernat
60574ae667 [General] Implement jail time as a death penalty 2017-07-03 15:45:21 +03:00
David Cernat
71313c5aa6 [General] Implement PlayerMap packet, part 1 2017-07-03 09:28:27 +03:00
David Cernat
ad4b1d05bb [Client] Add comments for GUI additions made by tes3mp 2017-07-03 05:06:07 +03:00
David Cernat
b1fb9ba23e [Browser] Remove Favorites tab while it remains broken 2017-07-03 02:32:32 +03:00
David Cernat
c899525e30 [General] Use address keys with clearer meaning in tes3mp config files 2017-07-03 01:31:48 +03:00
David Cernat
99640da111 Merge pull request #234 from OpenMW/master
Add OpenMW commits up to 30 Jun 2017
2017-07-02 14:22:06 +03:00
David Cernat
1f682749d6 [General] Add optional notes to PasswordDialogs 2017-07-02 13:07:36 +03:00
Koncord
9630f95335 [Server] Remove debug output 2017-07-02 11:12:41 +08:00
Koncord
73cf134107 [General] Fix incoming password string 2017-07-02 11:11:33 +08:00
Koncord
0cf09adb44 [General] Move AddProcessor to BasePacketProcessor 2017-06-30 20:09:05 +08:00
Koncord
d9e98ec771 [Server] Add expected ‘;’ 2017-06-30 19:58:14 +08:00
Koncord
d14ad55a49 [Server] Fix compilation on arm 2017-06-30 19:46:27 +08:00
Koncord
f92117e73d [Server] change "__arm__" to "__ARM_ARCH" in ARM detection 2017-06-30 19:31:07 +08:00
Koncord
15a197cb9a [Server] Temporarily disable CallFF for ARM 2017-06-30 19:17:04 +08:00
Koncord
f015c3b2f6 [Server] Remove commented code 2017-06-30 18:03:01 +08:00
Koncord
653db9e266 [Server] Simplify native CallPublic & CreateTimerEx 2017-06-30 18:01:14 +08:00
Koncord
5292914325 [Server] Simplify native CallPublic & CreateTimerEx 2017-06-30 17:59:50 +08:00
Koncord
1c09e0c255 [Server] Add CallFF dependency 2017-06-30 17:58:41 +08:00
scrawl
9c94244b28 Fix crash introduced by commit 1d8a9ff622 (Fixes #3940) 2017-06-30 00:52:28 +02:00
scrawl
951c4e12e0 Fix crash introduced by commit 1d8a9ff622 (Fixes #3940) 2017-06-30 00:52:02 +02:00
Koncord
9506f9ca35 [General] Allow luajit-2.1 2017-06-30 04:00:43 +08:00
David Cernat
0b68e59060 [Client] Send ObjectLock packets when using lock spells 2017-06-29 22:29:49 +03:00
Koncord
9519c467eb [Client] Simplify updateEquipment for LocalPlayer & LocalActor 2017-06-29 14:52:23 +08:00
Koncord
596f42e408 [Client] Fix "invalid iterator" error 2017-06-29 14:36:56 +08:00
Andrei Kortunov
143fdae6fe Make spell priority calculation close to vanilla (bug #3937). 2017-06-28 14:02:51 +04:00
David Cernat
685bf15d52 Merge pull request #231 from OpenMW/master
Add OpenMW commits up to 27 Jun 2017
2017-06-28 05:58:19 +03:00
scrawl
ea5fe4b686 Merge pull request #1328 from akortunov/journalfix
Do not show empty journal entries (fixes #3891)
2017-06-27 17:56:29 +02:00
Koncord
ed3e089126 [General] Use C++11 way to delete Ctor 2017-06-27 22:56:02 +08:00
Koncord
5b2cab4c6b [General] Change NULL to nullptr 2017-06-27 22:49:28 +08:00
Koncord
2b1b4ce2f1 [General] Update PacketControllers to C++11 2017-06-27 22:41:37 +08:00
Koncord
0ed0d2417b [Client] Make foreach style consistent with other 2017-06-27 22:27:02 +08:00
Koncord
2427a4f877 [Client] Update DedicatedActor to C++11 2017-06-27 22:25:39 +08:00
Koncord
8f7da49152 [Client] Update DedicatedPlayer to C++11 2017-06-27 22:25:29 +08:00
Koncord
08666cabdb [Client] Update PlayerList to C++11 2017-06-27 22:24:34 +08:00
Koncord
a110ec1767 [Client] Update GUIController to C++11 2017-06-27 21:59:05 +08:00
Koncord
aa1f5c3cd3 [Client] Change pointer type to reference 2017-06-27 21:58:36 +08:00
Koncord
7499777b3a [Client] Update CellController to C++11 2017-06-27 21:56:40 +08:00
Koncord
7d4dd2ad1c [Client] Update Cell to C++11 2017-06-27 21:56:24 +08:00
Koncord
7918e887dd [Client] Update ActorList to C++11 2017-06-27 21:56:14 +08:00
Koncord
aa12b35d03 [Client] Update LocalActor to C++11 2017-06-27 21:12:00 +08:00
Koncord
689050e1d0 [Client] Long expression to lambda 2017-06-27 21:01:13 +08:00
Koncord
58a6a8c3bc [Client] Update LocalPlayer to C++11 2017-06-27 20:43:39 +08:00
Andrei Kortunov
7fcb22b867 Do not show empty journal entries (fixes #3891) 2017-06-27 15:54:16 +04:00
Koncord
6222c20e82 [Client] Convert MechanicsHelper to namespace 2017-06-27 16:43:53 +08:00
Koncord
7d3e08f031 [Client] Simplify loops 2017-06-27 16:32:16 +08:00
Koncord
f7341c021f [Client] Modernize loops in WorldEvent to C++11 2017-06-27 15:58:41 +08:00
Koncord
61cc3ced5d [Client] Remove boost from processors 2017-06-27 15:25:30 +08:00
Koncord
e68eee651a [Server] Fix Resurrect 2017-06-27 15:16:23 +08:00
Koncord
fcccd7b665 [General] Remove creatureStats.mDead from packets 2017-06-27 15:03:41 +08:00
Koncord
c58c26f6c0 [Server] Implement native CreateTimer & CreateTimerEx 2017-06-27 14:50:40 +08:00
Koncord
9ab58b6708 [Server] Remove redundant SetResurrectType
Rename SendResurrect to Resurrect
2017-06-27 14:49:39 +08:00
David Cernat
813a3c89c4 [General] Implement PlayerBook packet to track skill books read 2017-06-27 08:27:14 +03:00
David Cernat
b3b73c5cd2 [General] Implement resurrection at nearest shrine or temple 2017-06-27 01:01:45 +03:00
scrawl
ec458ef385 Don't reset idle time when there is no camera movement (Fixes #3902) 2017-06-26 23:27:40 +02:00
David Cernat
a358dc6af8 [Client] Revert 0020132 now that 534c819 provides a better fix 2017-06-26 07:36:57 +03:00
David Cernat
7d81b84dd8 [Client] Write list of loaded plugins to log 2017-06-26 06:49:58 +03:00
David Cernat
77758596a1 Merge pull request #230 from OpenMW/master
Add OpenMW commits up to 25 Jun 2017
2017-06-26 03:13:00 +03:00
scrawl
8d17565efd Fix joystick binding for an action being discarded when default for another action is loaded (Bug #3900) 2017-06-25 14:44:17 +02:00
scrawl
ca5b351eef Fix saved joystick bindings being discarded when running without joystick connected 2017-06-25 14:43:03 +02:00
scrawl
903e59f495 Don't reset idle time when there is no camera movement (Fixes #3902) 2017-06-25 13:08:55 +02:00
scrawl
44e2089098 Don't play 'menu click' sound for right clicks (Fixes #3919) 2017-06-25 12:52:59 +02:00
scrawl
534c81976c Add missing cell update for physics system (Fixes #3917) 2017-06-25 12:47:57 +02:00
David Cernat
9a519b5cc2 [Client] Avoid incrementing actor death count if we aren't its authority 2017-06-23 09:22:48 +03:00
David Cernat
66a3f3d475 [Server] Use cleaner solution for safely reading cell descriptions 2017-06-23 08:29:14 +03:00
David Cernat
78f29302ef [General] Fix PlayerJournal logic by sending only refIds for its actors
Additionally, make the refIds for actors usable in script functions.
2017-06-23 08:12:32 +03:00
David Cernat
48c63dbce9 [General] Fix ObjectLock packets by making hasCellData true for them 2017-06-22 05:49:44 +03:00
David Cernat
4ad87faac1 [Server] Create new Settings category for script functions 2017-06-20 07:24:15 +03:00
David Cernat
ebf7740969 [General] Repurpose GameConsole packet as GameSettings & add difficulty to it 2017-06-20 05:28:45 +03:00
David Cernat
df67ae4689 Merge pull request #229 from OpenMW/master
Add OpenMW commits up to 20 Jun 2017
2017-06-20 04:16:51 +03:00
scrawl
62f0ba6045 Merge pull request #1279 from Allofich/position
Fix actors not returning to their wander locations
2017-06-20 00:57:44 +02:00
scrawl
73fbaae97f Merge pull request #1325 from jordan-ayers/bugfix/3684-restock-soul-gems
Adjust restock calculations to ignore filled soul gems. (Bug #3684)
2017-06-20 00:39:39 +02:00
scrawl
07ebf00f9c Merge pull request #1327 from tlmullis/bugfix/pass-configuration-to-msbuild
build.msvc.sh msbuild configuration fix
2017-06-20 00:38:09 +02:00
scrawl
54bb1b13cb Change NCO/NCC flags to NC* (Fixes #3915) 2017-06-20 00:36:17 +02:00
scrawl
41fb17f39b Revert "Correcting https://bugs.openmw.org/issues/3906"
This reverts commit b0abed00e5.
2017-06-20 00:36:06 +02:00
tlmullis
fad760cc1d msbuild was always defaulting to building the Debug configuration so it was impossible to build any other configurations with build.msvc.sh 2017-06-19 06:00:42 -07:00
David Cernat
c6aee3b780 [Client] Fix build by changing boost::shared_ptr into std::shared_ptr 2017-06-18 19:36:06 +03:00
David Cernat
fa3baac0f3 Merge pull request #228 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
#	CMakeLists.txt
#	apps/openmw/main.cpp
2017-06-18 18:16:10 +03:00
Andrei Kortunov
1a8f2bfc11 Combat AI: select target by priority 2017-06-16 16:11:12 +04:00
Andrei Kortunov
a2be73295b Combat AI: take in account enemy weapon resistance 2017-06-16 13:33:42 +04:00
Andrei Kortunov
62b24eb078 Combat AI: do not use range weapons under water 2017-06-16 12:20:31 +04:00
Jordan Ayers
b277bd782e Adjust restock calculations to ignore filled soul gems.
Bug #3684
2017-06-15 21:59:13 -05:00
Allofich
4f08084e79 Make stationary actors return to position on load
Also makes wandering actors resume their previous destination when an interrupting combat or pursuit ends.

(Fixes #3656)
2017-06-15 18:33:50 +09:00
Koncord
2d91c60a11 [General] Change "Lib" to "lib" in FindRakNet cmake module 2017-06-15 13:07:13 +08:00
Koncord
6192543381 [General] Move bracket to the right position 2017-06-15 13:06:07 +08:00
scrawl
3356fb81ce Merge pull request #1280 from Allofich/guard
Make guards that are attacked try to arrest player
2017-06-15 00:39:57 +02:00
Allofich
028762a7dc Make guards that are attacked try to arrest player
(Fixes #3706)
2017-06-15 01:47:10 +09:00
Nikolay Kasyanov
160a67afe1 Merge pull request #1319 from OpenMW/ci-reenable-macos-packaging
[macOS, CI] reenable packaging & fix nightlies
2017-06-13 21:24:58 +02:00
scrawl
cd1821c464 Merge pull request #1322 from Siimacore/wizardthreadfix
Stopping the thread in the wizard that prevented it to stop correctly
2017-06-13 19:48:06 +02:00
scrawl
53264f34b3 Merge pull request #1321 from akortunov/spellpriority
Use mRange to check spell range instead of mArea.
2017-06-13 17:06:47 +02:00
Bret Curtis
dfed710e5e Merge pull request #1323 from Allofich/compile
Fixes for building in MSVC
2017-06-13 15:28:32 +02:00
Allofich
42402976e3 Fixes for building in MSVC 2017-06-13 19:38:12 +09:00
Siimacore
6af470ff03 Stopping the thread in the wizard that prevented it to stop correctly 2017-06-13 12:00:55 +02:00
Nikolay Kasyanov
97c3c45ba8 [macOS, CI] Use Qt 5.7 2017-06-13 09:18:02 +02:00
Andrei Kortunov
87939bf3b1 Use mRange to check spell range instead of mArea. 2017-06-13 11:02:40 +04:00
Nikolay Kasyanov
016da1f10c [macOS, CI] Use most recent dependencies 2017-06-13 08:44:55 +02:00
scrawl
63f101e0cd Update AUTHORS.md 2017-06-12 23:48:06 +02:00
scrawl
f7969fb178 Merge pull request #1317 from Siimacore/master
Correcting https://bugs.openmw.org/issues/3906
2017-06-12 23:47:07 +02:00
scrawl
dd3f612e88 Merge pull request #1316 from akortunov/doorfix
Doors usage improvements
2017-06-12 23:34:40 +02:00
scrawl
80eb2ea35d Merge pull request #1313 from akortunov/spellpriority
Make combat AI to do not cast target spells under water
2017-06-12 23:32:35 +02:00
scrawl
6d90f5a9a5 Merge pull request #1312 from akortunov/guifixes
Split greeting from topic response
2017-06-12 23:19:45 +02:00
Bret Curtis
830ecbe101 Merge pull request #1318 from psi29a/fix_deboosting
Fix deboosting
2017-06-12 07:25:11 +02:00
Koncord
3803535bd5 [General] Implement CleanChat() 2017-06-12 08:01:47 +08:00
Bret Curtis
c6805314c2 be explicit about what we are trying to catch instead of catching everything and fixed up formatting
use Allman style brackets not K&R style, additional formatting for fallback.cpp which needed some love

revert allman formatting changes
2017-06-12 00:32:29 +02:00
Bret Curtis
7c758a6293 std::stof can not handle comma in us localization and can not handle period in french localization, using std::replace is not a solution, going back to boost::lexical_cast 2017-06-12 00:32:28 +02:00
Bret Curtis
f0b21cca22 use own inline hash_combine function 2017-06-12 00:32:28 +02:00
scrawl
fb7479c194 Update CONTRIBUTING.md 2017-06-11 23:52:01 +02:00
Koncord
7b98f9f7ff [Server] Log all exceptions 2017-06-11 20:04:56 +08:00
Andrei Kortunov
e9d0bf7c12 Added missed return statement 2017-06-11 15:06:44 +04:00
Nikolay Kasyanov
913601facc [macOS, CI] reenable packaging to make nightlies work 2017-06-11 11:18:39 +02:00
Andrei Kortunov
9fdfb2a83f Spell priority: make AI do not cast target spells when enemy is under water 2017-06-11 10:13:00 +04:00
Siimacore
b0abed00e5 Correcting https://bugs.openmw.org/issues/3906 2017-06-10 21:36:35 +02:00
Andrei Kortunov
cab51d26cc Doors: small key search optimizations 2017-06-10 22:33:14 +04:00
Andrei Kortunov
188424d5d3 Allow AI to use keys to open doors 2017-06-10 22:31:17 +04:00
David Cernat
51b95f35cd [Server] Fix problem with fetching interior cell descriptions 2017-06-10 18:03:58 +03:00
David Cernat
db7709ee18 [Server] Modernize getting and setting of player cells 2017-06-10 17:49:41 +03:00
Bret Curtis
266ffc84ff Merge pull request #1315 from devnexen/getuid_build_fix
needs this head for getuid
2017-06-10 16:25:37 +02:00
David Cernat
0d3976950b [Server] Use consistent names for rotation script functions 2017-06-10 17:06:09 +03:00
David Carlier
8a5c62de97 needs this head for getuid 2017-06-10 14:50:43 +01:00
David Cernat
bea3afaec8 [Client] Ensure uninitialization of DedicatedActors for late packets 2017-06-10 15:49:00 +03:00
David Cernat
1ae5bd19e1 [Client] Don't set difficulty based on client settings 2017-06-10 15:29:09 +03:00
David Cernat
70d9374a6a [General] Implement PlayerKillCount packets 2017-06-10 14:04:19 +03:00
David Cernat
5b23da8e1c [General] Rename unused PlayerRegionChange packet into PlayerKillCount 2017-06-10 12:01:37 +03:00
David Cernat
ee5c9b65c5 [General] When changing region, send new region name in PlayerCellChange 2017-06-10 11:43:40 +03:00
David Cernat
e5f5b047bc [Client] Don't send empty ObjectSpawn packets for cells with no leveled creatures 2017-06-10 11:04:17 +03:00
Bret Curtis
11c4aed4e5 algo needed for std::min/max in msvc2013 2017-06-10 09:09:30 +02:00
David Cernat
f02ed0d621 [Server] Add script functions for getting and setting actor dynamic stat modifiers 2017-06-10 09:28:35 +03:00
David Cernat
79351c737e [Client] Disable back button in chargen race window 2017-06-10 08:10:56 +03:00
David Cernat
002013294a [Client] Add temporary fix for OpenMW crash caused by using default head 2017-06-10 06:49:07 +03:00
David Cernat
312fc84a6f [Client] Use update timer in mwmp::Cell instead of LocalActor 2017-06-10 03:29:51 +03:00
Bret Curtis
dbf149f9b2 gcd is not available in msvc until 2017.3 P2, back to boost::math::gcd for now 2017-06-10 00:51:19 +02:00
Andrei Kortunov
4600f24e27 Playing sound when AI is opening a door 2017-06-09 22:52:40 +04:00
Bret Curtis
c781d1f8ed purge unnecessary imports
add fstream back

add fstream back

add fstream back

add fstream back

add fstream back

add fstream back

add fstream back
2017-06-09 19:08:53 +02:00
Bret Curtis
d799954ca0 replace and purge boost::math::gcd and other non-used headers 2017-06-09 19:08:53 +02:00
Bret Curtis
154d7cffa2 replace and purge boost::function 2017-06-09 19:08:53 +02:00
Bret Curtis
d48b829b45 replace and purge boost::lexical_cast 2017-06-09 19:08:53 +02:00
Bret Curtis
98752a9702 replace boost::bind 2017-06-09 19:08:53 +02:00
Bret Curtis
b7c27e5e96 remove boost/tuple 2017-06-09 19:08:53 +02:00
Bret Curtis
d97aa9152b remove more unused imports, including boost headers 2017-06-09 19:08:53 +02:00
Bret Curtis
39185e6f8c purge the rest of boost::shared and any other boost related things that no longer are required
put boost system back in, clean others up

revert Qt

add back boost fstream
2017-06-09 19:08:53 +02:00
Bret Curtis
d785344fad purge all instances of <boost/shared_ptr.hpp>, clean up unused headers 2017-06-09 19:08:53 +02:00
Bret Curtis
07f75e1104 replace boost::shared_ptr in extern and components 2017-06-09 19:08:53 +02:00
Nikolay Kasyanov
dd882b69c6 [macOS, CI] Use Release configuration 2017-06-09 16:49:25 +02:00
Nikolay Kasyanov
071419db4a [macOS, CI] Enable OpenCS build and see what happens 2017-06-09 16:49:25 +02:00
Nikolay Kasyanov
bf630b99fa Use most recent Xcode 2017-06-09 16:49:25 +02:00
Bret Curtis
c8b67221d7 use nullptr instead of NULL 2017-06-09 16:49:25 +02:00
Ewan Higgs
38a2de3c51 convert std::autor_ptr to std::unique_ptr, originally by Ewan Higgs and updated by Bret Curtis 2017-06-09 16:49:25 +02:00
Nikolay Kasyanov
27a5c06f04 [OS X, CI] Disable packaging 2017-06-09 16:49:25 +02:00
Nikolay Kasyanov
c16506d07c [OS X, CI] Use Xcode 8/macOS 10.12 SDK 2017-06-09 16:49:25 +02:00
Nikolay Kasyanov
6260e15852 [OS X] Temporarily disable OpenCS build on CI 2017-06-09 16:49:25 +02:00
Nikolay Kasyanov
4138723bbf [OS X] Add libc++ to linker flags 2017-06-09 16:49:25 +02:00
Nikolay Kasyanov
231908d9cf [OS X, CI] Use dependencies build against libc++ 2017-06-09 16:49:25 +02:00
Bret Curtis
5fa2f46499 only set libc++ for APPLE 2017-06-09 16:49:25 +02:00
Bret Curtis
26c023efe2 stdlib to libc++ 2017-06-09 16:49:25 +02:00
Bret Curtis
cb26f52032 matching ifs 2017-06-09 16:49:25 +02:00
Bret Curtis
5a65d6e18d fix std::move 2017-06-09 16:49:25 +02:00
Bret Curtis
433129e728 only bundle with Qt5, for now 2017-06-09 16:49:25 +02:00
Bret Curtis
b6ee76b77b Switch to latest Qt5 version which is C++11-compatible 2017-06-09 16:49:25 +02:00
Bret Curtis
dbc29854b2 try to fix enums 2017-06-09 16:48:40 +02:00
Bret Curtis
b657517bea use c++11 and see what happens 2017-06-09 16:48:40 +02:00
David Cernat
18bf79e08b [Client] Correctly set mpNum for placed gold 2017-06-09 13:31:19 +03:00
Andrei Kortunov
3190f28710 Spell priority: make AI do not cast target spells under water 2017-06-09 10:23:46 +04:00
David Cernat
6ac7ee8fcd [Client] Fix problems with NPC equipment sync 2017-06-09 04:58:56 +03:00
David Cernat
34378fbb4f [General] Make coding style consistent 2017-06-08 23:34:56 +03:00
David Cernat
a84cf7c191 [General] Fix packet validation for ActorPackets sent by server scripts
This allows Lua scripts to send actor data again, which hadn't been possible anymore after 2ed1bfe
2017-06-08 23:28:58 +03:00
Andrei Kortunov
4bb9622c21 Handle greetings differently from responses 2017-06-08 22:40:31 +04:00
David Cernat
abaa26e32a Merge pull request #226 from OpenMW/master
Add OpenMW commits up to 8 Jun 2017
2017-06-08 05:25:47 +03:00
scrawl
59eb0aba7d Merge pull request #1310 from akortunov/guifixes
Removed empty space before dialogue entry (bug #3892)
2017-06-07 21:55:45 +02:00
Koncord
587b53bfed [Client] Reorder files 2017-06-07 00:06:10 +08:00
Koncord
568b0702fa [Server] Implement PasswordDialog 2017-06-06 23:34:27 +08:00
Koncord
b84f97ec2b [Client] Implement PasswordDialog 2017-06-06 23:33:59 +08:00
Koncord
cef58fa164 [Server] Change fprintf to LOG_MESSAGE_SIMPLE in GET_PLAYER 2017-06-06 16:35:05 +08:00
Koncord
186e5fe33e [Server] Remove GetAngleY & remove Y parameter from SetAngle 2017-06-06 16:33:34 +08:00
David Cernat
89f6c6df96 Merge pull request #225 from OpenMW/master
Add OpenMW commits up to 4 Jun 2017
2017-06-05 03:38:58 +03:00
Andrei Kortunov
c2962ced90 Removed empty space before dialogue entry (bug #3892) 2017-06-04 23:20:43 +04:00
Julian Ospald
7704dcfcce Fix build with osg >= 3.5.6 2017-06-04 12:52:51 +02:00
scrawl
6f878327bf Fix unused ICS_MAX warning 2017-06-04 12:50:25 +02:00
scrawl
172cc65be9 Merge pull request #1308 from akortunov/spellpriority
Spell priority: dispel usage improvements
2017-06-04 12:49:53 +02:00
Andrei Kortunov
00402b7154 Removed unused variable 2017-06-04 14:09:23 +04:00
scrawl
d6b97604ba Update AUTHORS.md 2017-06-04 11:19:28 +02:00
scrawl
70e02f4c28 Merge pull request #1306 from Nialsy/master
Fixed quickload with menus open
2017-06-04 11:18:49 +02:00
scrawl
305f5af4a6 Merge pull request #1309 from akortunov/enchantchance
Move a setting to show enchanting success chance to Game section
2017-06-03 22:17:41 +02:00
Andrei Kortunov
f4a187a9c2 Move a setting to show enchanting success chance from GUI to Game section 2017-06-03 23:03:24 +04:00
David Cernat
315ec46ff6 Merge pull request #224 from OpenMW/master
Add OpenMW commits up to 3 Jun 2017
2017-06-03 17:19:34 +03:00
scrawl
516e99c6e7 Merge pull request #1305 from akortunov/enchantchance
Show success chance when self-enchanting
2017-06-03 15:19:12 +02:00
Andrei Kortunov
9a1ba1e559 Show success chance when self-enchanting (Feature #3492) 2017-06-03 14:39:15 +04:00
scrawl
9032443272 Merge pull request #1307 from nikolaykasyanov/fix-macos-ci
Fix macOS CI
2017-06-03 11:21:46 +02:00
Andrei Kortunov
42f3c73c75 Spell priority: dispel usage improvements 2017-06-03 13:16:44 +04:00
Nikolay Kasyanov
224fcc9a4a [macOS, CI] Fix dependency installation 2017-06-03 10:42:49 +02:00
Koncord
2ed1bfe427 [General] Simplify ActorPackets 2017-06-03 03:42:10 +08:00
Koncord
fd8e833d6a [General] Simplify WorldPackets 2017-06-03 03:10:47 +08:00
Nicholas
f6f07f5497 clear mGoToJail flag on load 2017-06-02 13:33:47 -05:00
Koncord
556bf18535 [General] Minor improvements for player packets
Add compression, remove useless loop iterations
2017-06-03 02:23:34 +08:00
Koncord
ad873e16b8 [Client] Limiting updates to ~64 per second 2017-06-02 21:20:35 +08:00
Koncord
c2600bac8e [General] Allow single bit booleans in packets 2017-06-02 21:03:29 +08:00
Koncord
9742b0a801 [Client] Reset statTimer every timeout 2017-06-02 20:45:44 +08:00
Koncord
80631ae8bd [Client] Reset positionTimer on time expired 2017-06-02 20:45:19 +08:00
Koncord
7e5e877fda [General] Pack player->direction.pos to 1 byte 2017-06-02 20:16:23 +08:00
Koncord
dded330cc4 [General] Get rid Z axis in direction.pos 2017-06-02 18:33:59 +08:00
Koncord
a847d46984 [Client] Get rid Z axis in direction.pos 2017-06-02 18:33:51 +08:00
Koncord
d67db1a9bd [Client] Play rotation animation on dedicated players 2017-06-02 18:05:33 +08:00
Koncord
ae9e5750ac [General] Aggressive compression of rotations 2017-06-02 17:20:34 +08:00
Koncord
2ef1e26233 [Client] Fix ID_PLAYER_POSITION spam 2017-06-02 17:19:36 +08:00
Koncord
3905e0dae9 [General] Get rid direction.rot again 2017-06-02 15:44:51 +08:00
Koncord
5f30dfd5db [Client] Get rid direction.rot 2017-06-02 15:44:39 +08:00
David Cernat
8c785fb22c [Client] Send ObjectDelete packets when summoned creatures despawn 2017-06-02 09:15:08 +03:00
David Cernat
0bed33e39e [Client] Reset player fatigue when being resurrected
This way, players killed by strong hand-to-hand attacks will no longer be forced to lie on the ground when resurrected.
2017-06-02 06:58:33 +03:00
David Cernat
75a60a4700 [Client] Update debug in CellStore 2017-06-02 05:26:07 +03:00
David Cernat
d0a0b6ffa4 [General] Add basic integrity checks to all Actor and World packets 2017-06-02 01:35:32 +03:00
David Cernat
e042673779 [Client] Fix error when trying to delete player markers that don't exist 2017-06-01 22:42:57 +03:00
David Cernat
cf41956cad [Client] Prevent framerate drops caused by invalid rotation values 2017-06-01 21:45:36 +03:00
David Cernat
41de1876a3 Merge pull request #223 from OpenMW/master
Add OpenMW commits up to 31 May 2017
2017-06-01 08:11:46 +03:00
scrawl
9fd0d54a35 Merge pull request #1289 from akortunov/newrepair
Improved repair and recharge widgets
2017-05-31 22:47:38 +02:00
scrawl
4a9a741905 Merge pull request #1304 from akortunov/spellpriority
Combat AI: spell priority fixes
2017-05-31 22:47:28 +02:00
Andrei Kortunov
f6c3d4935e Spell priority: feather and burden 2017-05-31 19:23:44 +04:00
Andrei Kortunov
10d4cb15ad Improved repair widget 2017-05-31 19:11:49 +04:00
Andrei Kortunov
1164c3f16e Improved recharge widget 2017-05-31 19:11:49 +04:00
Andrei Kortunov
6c21e4ed31 Spell priority: ignore some effects useless in battle 2017-05-31 18:41:41 +04:00
scrawl
2638327593 Merge pull request #1303 from akortunov/guifixes
Character generation layout fixes
2017-05-31 15:25:41 +02:00
David Cernat
d8cd57a8be [Client] Make topic sync work with localized versions of the game 2017-05-31 14:11:16 +03:00
David Cernat
34a452d775 [Client] Fix logic for initialization and updating of player markers
Additionally, disable the Ptrs of players who move to cells that don't exist for us instead of placing them in ToddTest.
2017-05-31 10:54:19 +03:00
David Cernat
a353a21280 [General] Fix code style inconsistencies 2017-05-31 08:37:11 +03:00
David Cernat
97bf0252a4 [Client] Disable collision for actors loaded as dead from server 2017-05-31 07:52:45 +03:00
David Cernat
906b263a2d [Client] Update topics in current dialogue screen when receiving PlayerTopic packets 2017-05-31 06:51:50 +03:00
David Cernat
461ab790e2 [Client] Correctly disable auto-equipping for DedicatedPlayers & DedicatedActors 2017-05-31 05:11:39 +03:00
Andrei Kortunov
2b28d1a6d2 Select specialization menu layout fix 2017-05-30 17:15:10 +04:00
David Cernat
068a45be87 [General] Synchronize player & NPC rotation animations 2017-05-30 12:08:58 +03:00
David Cernat
f4cdedd8cb [General] Synchronize summoned creatures 2017-05-30 10:11:01 +03:00
David Cernat
1c6e359fe9 [Client] Set and clear hitAttemptActorId for DedicatedPlayers
This allows a DedicatedPlayer's follower NPCs to target enemies attacking the DedicatedPlayer.
2017-05-30 08:20:45 +03:00
David Cernat
4e5c8873e0 [General] Use ObjectSpawn instead of ObjectPlace for actors 2017-05-29 06:59:05 +03:00
David Cernat
c211d53190 [General] Use only direction.pos in ActorPosition, as advised by Koncord 2017-05-29 05:55:25 +03:00
David Cernat
0cce9908be Merge pull request #222 from OpenMW/master
Add OpenMW commits up to 29 May 2017
2017-05-29 04:53:23 +03:00
David Cernat
27148ce9eb [General] Add placeholders for 12 new packets, to be implemented soon
Additionally, make it slightly clearer who created which previously existing packets.
2017-05-29 04:43:52 +03:00
scrawl
a1661af864 Merge pull request #1301 from akortunov/tooltips
Tooltips layout fixes
2017-05-29 00:13:34 +02:00
scrawl
7f5b88bbc6 Merge pull request #1300 from akortunov/enchantformula
Fixed enchant points calculations formula
2017-05-28 23:54:05 +02:00
scrawl
d39da2b755 Merge pull request #1302 from hasufell/master
Fix build with osg >= 3.5.6
2017-05-28 23:07:48 +02:00
Julian Ospald
5d85fa9220
Fix build with osg >= 3.5.6 2017-05-28 17:30:01 +02:00
Koncord
b3b7003313 [Server] Add "--no-logs" option 2017-05-28 19:12:58 +08:00
Koncord
dbb636ac90 [Server] Parse program options 2017-05-28 19:10:16 +08:00
Koncord
c4686ec578 [Server] Remove debug line 2017-05-28 18:48:55 +08:00
Koncord
cc7efc6e37 [Server] Use first 10 characters of CommitHash for humans 2017-05-28 18:32:23 +08:00
Koncord
80925736c0 [Server] Add commit hash to the rules 2017-05-28 18:29:00 +08:00
Koncord
565889ccbc [Client] Add commit hash to password 2017-05-28 18:26:48 +08:00
Koncord
bc3612dfe9 [Server] Add commit hash to password 2017-05-28 18:26:38 +08:00
Koncord
f7473e3379 [General] Fix copy-posty bug 2017-05-28 17:00:52 +08:00
David Cernat
9fe5b4a305 [General] Remove debug line from ActorAnimFlags 2017-05-28 10:43:53 +03:00
Koncord
8478fed98a [General] Simplify Actor packets. 2017-05-28 15:23:16 +08:00
Koncord
f6fba70a4e [General] Use compression for Position packets 2017-05-28 14:57:30 +08:00
Koncord
4934be18f0 [General] Add compression flag to RW methods
Advantages: and 2 bytes per float value, using huffman algorithm for structures and strings.
Disadvantages: bad for performance and precision for float/double variables.
2017-05-28 14:56:51 +08:00
Koncord
6a472de1c0 [Browser] Remove servers before updating server list 2017-05-28 13:22:29 +08:00
David Cernat
b0c1aafc5a [Client] Use a 10 times higher maximum distance for linear interpolation 2017-05-28 03:30:23 +03:00
David Cernat
ea2a060c67 [Client] Sync actor movements from interiors to exteriors & vice versa 2017-05-28 01:11:32 +03:00
David Cernat
7f6c5e2f48 [Client] Only send PlayerJournal packets for new journal entries 2017-05-27 22:49:11 +03:00
David Cernat
6918ae7bc7 [Client] Don't crash when receiving certain packets from NULL players 2017-05-27 22:32:28 +03:00
David Cernat
2e45203bbb [Client] Clean up mapIndexes in CellController 2017-05-27 21:20:24 +03:00
David Cernat
619982b085 [Client] Only try to send actor data to other players when authorized 2017-05-27 18:55:14 +03:00
David Cernat
73b9683182 [General] Make most ActorPackets smaller by not including refIds in them 2017-05-27 16:59:23 +03:00
David Cernat
7177d56cfb [Client] Only require refNumIndex & mpNum for CellStore::searchExact() 2017-05-27 16:59:23 +03:00
Koncord
8f2ef83be1 [Browser] Fix QT warnings 2017-05-27 13:08:52 +08:00
Koncord
9f0ec849a0 [Browser] Disable refresh button when action in progress 2017-05-27 11:44:55 +08:00
Koncord
ec5d1b7a86 [Browser] Do not try to open window if server is no more reachable 2017-05-27 11:25:00 +08:00
Koncord
c8eb0f0eae [Browser] Move downloading query info to another thread 2017-05-27 10:57:34 +08:00
Koncord
e1766da83c [Master] Fix REST API for old servers 2017-05-27 09:26:32 +08:00
David Cernat
7c87ac80ee [Client] Ensure correct drawState when receiving an ActorAttack packet 2017-05-27 04:19:28 +03:00
David Cernat
bf2b3bbf51 [Browser] Once again refresh server list when starting 2017-05-27 03:18:02 +03:00
David Cernat
9d9581a1c2 [Client] Prevent DedicatedActors from automatically equipping torches 2017-05-27 02:52:26 +03:00
David Cernat
940a2b6eb5 [Server] Add script functions for setting and sending ActorEquipment 2017-05-27 00:57:40 +03:00
David Cernat
f47a10dd4a [Server] Add script callback and getter functions for ActorEquipment 2017-05-26 22:54:51 +03:00
David Cernat
311ce4119d [General] Fix logic issues related to ActorEquipment 2017-05-26 22:53:28 +03:00
Andrei Kortunov
46c8842808 Fixed enchant points calculations formula 2017-05-26 23:42:11 +04:00
David Cernat
cdfc2db2d1 Merge pull request #220 from OpenMW/master
Add OpenMW commits up to 26 May 2017
2017-05-26 17:38:59 +03:00
David Cernat
4f273932af [General] Implement sending and reading of ActorEquipment packets 2017-05-26 04:37:49 +03:00
David Cernat
ec921eefc8 [Client] Prevent players from getting stuck in drag and drop when their opened containers are deleted 2017-05-26 02:13:31 +03:00
David Cernat
20a72ec807 [Client] Send ObjectTrap packets when disarming traps with keys & probes 2017-05-26 01:47:59 +03:00
David Cernat
32879adc5b [General] Allow ObjectTrap to trigger traps, not just disarm them 2017-05-26 01:28:43 +03:00
David Cernat
93aa674eff [Server] Add SendObjectTrap() script function 2017-05-26 00:42:46 +03:00
David Cernat
7ac115b359 [Client] Implement sending and reading of ObjectTrap packets 2017-05-26 00:21:24 +03:00
Koncord
4082cddde5 [Browser] Do not allow to connect to unreachable servers 2017-05-26 03:10:53 +08:00
Koncord
f8c6ed8028 [Browser] Fix freeze when server is unreachable 2017-05-26 03:03:42 +08:00
Koncord
24d4e1c222 [General] Remove useless PacketSendMyID 2017-05-26 02:40:49 +08:00
Koncord
7a6c12bc2a [Browser] Simplify PingRakNetServer() 2017-05-26 01:37:16 +08:00
Koncord
a9fc096c9a [General] Move password of master server to header 2017-05-26 01:34:39 +08:00
Koncord
056ec2d434 [General] Fix CMake errors 2017-05-25 23:56:22 +08:00
Koncord
cb5e88ce5c [Master] Use add_definitions
Because CMAKE_CXX_STANDARD introduced in CMake 3.1
2017-05-25 23:00:18 +08:00
Koncord
3e284a1139 [General] Use unsigned int instead unsigned long
sizeof(unsigned long) != 8 on Windows
2017-05-25 22:55:37 +08:00
Andrei Kortunov
f17badb3cd Makes cells cache size configurable 2017-05-25 13:09:40 +04:00
David Cernat
97768be14b [Client] Send ObjectPlace packet for random creatures interrupting rest 2017-05-25 01:00:47 +03:00
David Cernat
dbdb11b5f0 [Server] Add script functions for dialogue 2017-05-24 23:22:43 +03:00
David Cernat
7ec431ce3d [General] Make packet style more consistent 2017-05-24 22:09:35 +03:00
David Cernat
11369f6513 [General] Implement sending and reading of PlayerTopic packets 2017-05-24 21:43:34 +03:00
David Cernat
08de349133 [General] Add placeholders for PlayerTopic & ObjectTrap packets 2017-05-24 19:01:28 +03:00
David Cernat
b1264cca92 [Client] Send ObjectLock whenever using spells or keys to unlock objects 2017-05-24 16:25:44 +03:00
David Cernat
870fd9a78b [General] Remove ObjectUnlock packet, use ObjectLock with 0 lock instead 2017-05-24 13:28:34 +03:00
David Cernat
48ee8fd536 [Client] Send PlayerFaction packets when getting expelled from factions 2017-05-24 12:19:11 +03:00
David Cernat
d0ec5c61e2 Merge pull request #219 from OpenMW/master
Add OpenMW commits up to 21 May 2017, part 2
2017-05-21 22:51:44 +03:00
scrawl
f9cdc2da94 Merge pull request #1293 from akortunov/spellpriority
aicombataction.cpp: implement some spell priority TODO's
2017-05-21 21:18:10 +02:00
MiroslavR
98daf4f043 Merge pull request #1296 from akortunov/jumpfatiguefix
Fixed jump fatigue loss formula (bug #3843)
2017-05-21 11:47:58 +02:00
David Cernat
d307876199 Merge pull request #218 from OpenMW/master
Add OpenMW commits up to 21 May 2017
2017-05-21 12:04:49 +03:00
Koncord
56012db86e [Master] Fix build for windows 2017-05-21 14:53:36 +08:00
scrawl
8cd8eab9dd Merge pull request #1294 from akortunov/constenchantfix
Swap enchant type when purge selected soulgem (bug #3878)
2017-05-20 23:44:14 +02:00
Andrei Kortunov
4f41c44cd6 Swap enchant type when clean selected soulgem widget (fixes #3878) 2017-05-20 18:30:11 +04:00
David Cernat
68fa82f03a [Master] Fix build in Visual Studio 2017-05-20 12:47:06 +03:00
Koncord
80bd268de6 [General] Use simple types for master server packets 2017-05-20 16:46:59 +08:00
David Cernat
b0cd636924 [General] Add basic integrity check to ProxyMasterPacket 2017-05-20 11:04:20 +03:00
Koncord
17af679c07 [Master] Enable RestAPI 2017-05-20 00:06:34 +08:00
Koncord
ec6614ba32 [Master] Add RestAPI 2017-05-20 00:06:34 +08:00
Koncord
892960f913 [General] Add ctor to MasteData::Plugin 2017-05-20 00:06:34 +08:00
David Cernat
10f84c125e [Browser] Start browser without needing to refresh first 2017-05-19 17:34:20 +03:00
Koncord
50c839d425 [Broser] Break while loop if connection was closed 2017-05-19 22:04:38 +08:00
Koncord
d3bf4ec577 [Browser] Do not try to receive packet if sending is failed. 2017-05-19 22:03:57 +08:00
Koncord
956b573323 [General] Use different ordering channels for packets 2017-05-19 20:02:16 +08:00
David Cernat
0595192129 [Server] Make GetFactionExpelledState() return a bool instead of an int 2017-05-18 21:51:24 +03:00
David Cernat
a2e2ca7cab [Server] Add script functions for factions 2017-05-18 20:56:50 +03:00
David Cernat
e6983993c2 [General] Implement sending and reading of PlayerFaction packets 2017-05-18 19:27:20 +03:00
David Cernat
04c9c5ed48 [General] Forward PlayerJournal packets to other players 2017-05-18 12:57:48 +03:00
David Cernat
0189dbf916 [General] Make JournalItem consistent with other packet structs 2017-05-18 10:32:23 +03:00
David Cernat
90c594b726 [Server] Make names for Player script callbacks shorter 2017-05-16 20:52:09 +03:00
David Cernat
a634a5d9bb [Server] Add missing includes for ProcessorInitializer 2017-05-16 19:53:58 +03:00
David Cernat
1d0167c3c9 [Client] Add missing include for PlayerFaction processor 2017-05-16 19:30:29 +03:00
David Cernat
ad388c7e12 [General] Add placeholders for ActorEquipment & PlayerFaction packets
Also reorder packets and packet processors.
2017-05-16 19:25:31 +03:00
David Cernat
f527fe9ebe [General] Add basic integrity check to reading of ActorList packets
Additionally, add newlines to files missing them.
2017-05-16 14:20:40 +03:00
David Cernat
252a28fe24 Merge pull request #217 from OpenMW/master
Add OpenMW commits up to 15 May 2017
2017-05-16 10:03:30 +03:00
Bret Curtis
4c27e2f2d9 Merge pull request #1292 from rhtucker/master
Converted all settings files to semantic linefeeds.
2017-05-15 11:53:10 +02:00
Ryan Tucker
d555c21c28 Converted all settings files to semantic linefeeds.
Corrected default segments in Windows settings.
Removed all default declarations in the prose of the setting descriptions except where clarification or additional information was also provided.
Some minor, but not thorough grammar corrections.
2017-05-14 22:04:20 -07:00
David Cernat
05564bd123 [General] Add basic integrity check to reading of Container packets 2017-05-14 20:24:06 +03:00
David Cernat
46501909ff [Client] Comment out spammy debug about Container packets 2017-05-14 11:08:53 +03:00
David Cernat
8f5e6531db [Client] Avoid updating positions and anim flags when framerate is low
Also rename DedicatedPlayer methods so they are consistent with those from DedicatedActor
2017-05-14 10:52:44 +03:00
David Cernat
271594f0ee [Client] Don't play death animations for NPCs saved as dead on server 2017-05-14 10:27:43 +03:00
David Cernat
da22639620 Merge pull request #216 from OpenMW/master
Add OpenMW commits up to 12 May 2017
2017-05-14 05:26:22 +03:00
Marc Zinnschlag
6906e35ac0 Merge remote-tracking branch 'origin/master' 2017-05-12 14:48:03 +02:00
PlutonicOverkill
5ec97811d8 Don't switch pages when right-clicking on list 2017-05-12 20:22:18 +12:00
PlutonicOverkill
7281e8b888 Remove C++11 features 2017-05-12 12:48:25 +12:00
PlutonicOverkill
cd75c5618c Move context menu code to PageBase 2017-05-11 19:46:51 +12:00
PlutonicOverkill
16f8341de3 Prevent context menu appearing for modifier settings 2017-05-10 21:24:12 +12:00
PlutonicOverkill
c2f427f48d Prevent context menu appearing when right-clicking shortcut setting 2017-05-10 20:43:52 +12:00
PlutonicOverkill
646ff72cdc Add a more elegant way of showing the context menu 2017-05-10 20:27:50 +12:00
PlutonicOverkill
bd9f657603 Show context menu when user clicks on empty space 2017-05-10 19:51:43 +12:00
David Cernat
2eb5221472 Merge pull request #215 from OpenMW/master
Add OpenMW commits up to 9 May 2017
2017-05-09 14:31:26 +03:00
David Cernat
3c30801eac [Server] Try to fix server crash from iterations through invalid players 2017-05-09 14:30:25 +03:00
David Cernat
5a786e6c56 [Client] Make all LocalActors get initialized correctly again 2017-05-09 14:19:25 +03:00
David Cernat
d7d4dec200 [Client] Don't spam AnimFlags packets when a Player or Actor is flying 2017-05-09 12:27:59 +03:00
PlutonicOverkill
30af92f575 Fix pointer initialisation bug 2017-05-09 20:58:32 +12:00
PlutonicOverkill
4879405097 Add reset context menu for key binding pages 2017-05-09 19:58:34 +12:00
PlutonicOverkill
3545cfa00a Rewrite feature to reset options to default 2017-05-09 19:50:16 +12:00
scrawl
5e03e75549 Merge pull request #1283 from Allofich/water
Don't make NPCs or player speak while underwater
2017-05-09 08:16:06 +02:00
David Cernat
1f747d4375 [Client] Only apply interpolation when positions don't change too much 2017-05-09 04:41:26 +03:00
David Cernat
22e2135ce1 Merge pull request #214 from OpenMW/master
Add OpenMW commits up to 8 May 2017, part 2
2017-05-09 03:12:04 +03:00
David Cernat
cc559cf8e2 [General] Don't send packets for dead LocalActors, to fix Position spam 2017-05-09 02:47:29 +03:00
Allofich
315ad54b29 Don't make NPCs or player speak while underwater
(Fixes #3851)
2017-05-08 19:55:54 +09:00
Bret Curtis
2f866fadcf Merge pull request #1288 from akortunov/travisfix
Fixed Travis CI build (removed tab from test_stringops.cpp)
2017-05-08 10:57:00 +02:00
Andrei Kortunov
de14e9811d Fixed Travis CI build 2017-05-08 11:16:03 +04:00
David Cernat
5bd95628ce [Client] Send an ObjectDelete packet when disposing of corpses 2017-05-08 08:44:43 +03:00
PlutonicOverkill
f30d1a3075 Revert everything 2017-05-08 17:24:28 +12:00
David Cernat
26087a182d Merge pull request #213 from OpenMW/master
Add OpenMW commits up to 8 May 2017
2017-05-08 01:03:19 +03:00
Koncord
31adb5d715 [Server] Allow timers callbacks to restart timers 2017-05-08 05:48:04 +08:00
scrawl
48c764a580 Update test 2017-05-07 23:31:06 +02:00
scrawl
813af876f6 Use a partial binary search in isReservedName (Fixes #3835) 2017-05-07 23:28:56 +02:00
scrawl
109bc3cb59 Merge pull request #1281 from akortunov/purgefix
Make InventoryStore::purgeEffect() purge all effects with argument ID instead only first
2017-05-07 21:08:30 +02:00
scrawl
796d2c59ca Merge pull request #1282 from MiroslavR/noenv_player_vo
Do not apply underwater effects to player's voice
2017-05-07 21:07:19 +02:00
Koncord
d82ed7d0ad [Client] Register ProcessorGameTime 2017-05-08 02:46:02 +08:00
Koncord
6c45b6dc5b [Client] Fix ProcessorGameTime ID 2017-05-08 02:45:44 +08:00
David Cernat
3fb0bbb58c [Client] Make it possible to turn off console again 2017-05-07 20:13:49 +03:00
PlutonicOverkill
a9760ec805 Fix indenting 2017-05-07 17:07:58 +12:00
PlutonicOverkill
d8a711f89f Fix tabs 2017-05-07 17:05:50 +12:00
PlutonicOverkill
477af73ad6 Missed another one 2017-05-07 17:00:26 +12:00
PlutonicOverkill
418aeb65f1 Remove unneeded dependencies 2017-05-07 16:58:15 +12:00
PlutonicOverkill
5fca37d0c8 Forgot to remove debugging code 2017-05-07 16:54:38 +12:00
PlutonicOverkill
dff3828710 Keep the settings page in sync with the real settings 2017-05-07 16:51:11 +12:00
David Cernat
34f0a5e076 [Client] Disable leveled creatures from their class instead of scene.cpp 2017-05-07 03:18:15 +03:00
David Cernat
aaaed8ab8b [Client] Fix potential object duplication in WorldEvent::placeObjects()
Also clean up the debug messages in WorldEvent so they don't take up multiple lines.
2017-05-07 03:17:19 +03:00
David Cernat
de49f5f175 [General] Add and use isActor bool for WorldObject 2017-05-07 03:07:09 +03:00
David Cernat
9d2c5c3502 [General] Simplify structure of BaseEvent 2017-05-06 21:57:29 +03:00
Koncord
250c199188 [Server] Fill query information about plugins 2017-05-07 02:52:28 +08:00
Koncord
87c172186e [Server] Add and implement PushPlugin method to MasterClient 2017-05-07 02:51:57 +08:00
Koncord
873da495b1 [Server] Trigger 'update' when added new rules in MasterClient 2017-05-07 02:51:25 +08:00
Koncord
f2b8a939ef [Server] Add postInit method and move getPluginListSample in to it 2017-05-07 02:49:58 +08:00
Koncord
8422ae0ce8 [General] Fix iterators in ProxyMasterPacket 2017-05-07 02:48:02 +08:00
Koncord
3f34d328b8 [Browser] use range-based 'for' instead regular 'for' 2017-05-07 02:21:52 +08:00
Koncord
96212e96f4 [Browser] Fix rules list 2017-05-07 02:17:15 +08:00
Koncord
26445355e6 [Server] Fix initialization of mclient 2017-05-07 02:17:15 +08:00
Koncord
a4a77ddeff [Server] Add SetRuleString and SetRuleValue to script API 2017-05-07 02:17:15 +08:00
Koncord
a0b71eda23 [Server] FIx deadlock 2017-05-07 02:17:15 +08:00
Koncord
c2ce2f2ce7 [Server] Use MasterServer update rate from config 2017-05-07 02:17:15 +08:00
David Cernat
dcc61a095a [Client] Allow multiple WorldObjects to be added to a WorldEvent 2017-05-06 20:44:39 +03:00
Koncord
32284787de [Server] Add OnServerPostInit callback 2017-05-07 01:42:01 +08:00
Koncord
9992058942 [Browser] Use constant instead magic value in PingRakNetServer 2017-05-07 01:06:39 +08:00
Koncord
b7e45f269b [Browser] Detach ping from GUI thread 2017-05-07 00:56:50 +08:00
Koncord
db16e45e76 [Browser] Add PingUpdater & PingHelper classes for detached ping 2017-05-07 00:56:50 +08:00
Koncord
42eaa7a8fd [Browser] Optimize PingRakNetServer() function 2017-05-07 00:56:50 +08:00
David Cernat
93bd3207db Merge pull request #212 from OpenMW/master
Add OpenMW commits up to 6 May 2017
2017-05-06 18:39:42 +03:00
Bret Curtis
c262ae9279 Merge pull request #1285 from ace13/patch-5
Update Windows CI scripts to use ffmpeg 3.2.4
2017-05-06 13:28:49 +02:00
PlutonicOverkill
64879c03e4 Add option to reset settings to default 2017-05-06 20:18:31 +12:00
Alexander "Ace" Olofsson
fd03c76e68 And apparently they're only doing zips now 2017-05-06 09:38:14 +02:00
Alexander "Ace" Olofsson
ae05c37a46 Update Windows CI scripts to use ffmpeg 3.2.4 2017-05-06 09:21:02 +02:00
David Cernat
bdc8b7f863 [Client] Send level creatures in ObjectPlace reply to ActorList request 2017-05-06 08:40:36 +03:00
David Cernat
9eef867928 [Client] Disable regular spawning of leveled creatures 2017-05-06 08:37:51 +03:00
David Cernat
3def111ca1 [Client] Fix graphical glitches related to DedicatedActor initialization 2017-05-06 04:49:49 +03:00
David Cernat
62aa6ed7ea [Client] Send PlayerPosition packets based on a timeout 2017-05-06 00:59:54 +03:00
David Cernat
ef12a37d59 [Client] Send ActorPosition packets based on a timeout 2017-05-06 00:33:48 +03:00
David Cernat
db3859565b [Client] Send ActorStatsDynamic packets only when stats change enough 2017-05-05 23:17:15 +03:00
David Cernat
4d81455020 [General] Rework and simplify death reasons so they work with NPCs 2017-05-05 22:16:31 +03:00
David Cernat
b745a33f18 [Client] Resurrect DedicatedActors that aren't supposed to be dead 2017-05-05 20:38:28 +03:00
David Cernat
8b4e167efe [Client] Prevent NPC subtitles from being added to open Dialogue window 2017-05-05 20:16:20 +03:00
David Cernat
bcdbecf608 [Client] Initialize Cell before moving DedicatedActor to it 2017-05-05 19:54:20 +03:00
David Cernat
a7b06b342f Merge pull request #211 from OpenMW/master
Add OpenMW commits up to 5 May 2017
2017-05-05 18:50:46 +03:00
David Cernat
60cf623455 [Client] Make DedicatedActors transition into LocalActors when eligible 2017-05-05 07:37:09 +03:00
scrawl
8d84869432 Fix commit 8f71b65d38 (don't overwrite the previous user data)
This resulted in a crash/corruption because the KeyframeController, for performance reasons, does not check that the expected user data is there and of correct type.

(Fixes #3829)
2017-05-05 05:27:00 +02:00
David Cernat
06f3c07116 [Server] Only read Actor packets from players who are still authorities 2017-05-05 06:13:34 +03:00
David Cernat
206c9cc357 [Client] Use CellController pointers to make code easier to read 2017-05-05 04:58:44 +03:00
David Cernat
e05adbfe65 [Client] Add better debug for Actor cell changes 2017-05-05 04:46:40 +03:00
David Cernat
950a8eae3d [Client] Move Actors to Cells rather than reinitialize them from scratch 2017-05-05 03:52:41 +03:00
David Cernat
8b8d55e8d3 [Client] Set a very high processing range for AI for the time being 2017-05-05 03:17:28 +03:00
David Cernat
8d41a0c53b [Client] Make LocalActor initialization include newly spawned Actors 2017-05-05 02:46:16 +03:00
David Cernat
79691254a4 Merge pull request #210 from OpenMW/master
Add OpenMW commits up to 3 May 2017
2017-05-03 17:44:08 +03:00
Marc Zinnschlag
a2e863e7dd Merge remote-tracking branch 'origin/master' 2017-05-03 14:31:21 +02:00
Andrei Kortunov
4d927439ca Spell priority: item wearing check when disintegrate weapon/armor 2017-05-03 11:13:35 +04:00
Koncord
93edd67681 [Client] Use boolean var instead requestQuit or throwing runtime_error 2017-05-03 14:52:32 +08:00
Koncord
e0139c33b3 [Client] Remove destructor in Cell 2017-05-03 14:46:25 +08:00
Koncord
4eb02af8fb [Client] Use __WINDOWS define 2017-05-03 14:44:38 +08:00
Koncord
8fa8b8d310 [General] Add __WINDOWS define 2017-05-03 14:44:16 +08:00
Koncord
47e6820f97 [General] Move printWithWidth and intToHexStr to components 2017-05-03 14:38:44 +08:00
Andrei Kortunov
d598809ac6 Spell priority: check spell resistance, check if actor is already has a non-magnitude effect 2017-05-03 10:35:56 +04:00
David Cernat
34e77c5dae [Client] Initialize Actors based on the guid of an ActorAuthority packet 2017-05-03 04:47:04 +03:00
David Cernat
e01cadad23 [Server] Send ActorAuthority packets to all players who loaded the cell 2017-05-03 04:45:55 +03:00
David Cernat
63dd2d9246 [General] Remove code related to ActorAuthority packets that is not used 2017-05-03 04:43:59 +03:00
David Cernat
0b40cb8919 [Client] When there are more client than server plugins, print them all 2017-05-03 03:14:11 +03:00
David Cernat
92e277d75d [Client] Prevent application hang on Windows when plugins don't match 2017-05-03 02:17:19 +03:00
David Cernat
0284f18876 [Client] Replace plugin load order message with a clearer one at the top 2017-05-03 02:15:14 +03:00
David Cernat
1dbe9f0eaa [Client] Print plugin comparison in a better-looking way on Windows 2017-05-03 01:51:47 +03:00
David Cernat
f80a16b897 [Client] Don't use try/catch when printing missing plugins
Also move load order note to bottom where it fits better.
2017-05-03 00:15:43 +03:00
David Cernat
4294508082 [Client] Don't print null for missing plugins when comparing with server 2017-05-02 23:22:37 +03:00
David Cernat
c3c04bbfc3 [General] Make coding style consistent 2017-05-02 22:47:58 +03:00
Koncord
afcf5a7fc8 [Client] Fix segmentation fault 2017-05-03 02:43:58 +08:00
Koncord
ccae9590cc [Client] Fix comparison between signed and unsigned integer expressions 2017-05-03 02:43:00 +08:00
Koncord
01bdbfecfb [Client] Fix wrong checksum collection 2017-05-03 02:41:36 +08:00
Koncord
7bee82cedb [Client] Add notification about strict order 2017-05-02 23:50:36 +08:00
Koncord
f6bea7a114 [Client] Read answer about ID_GAME_PREINIT from server 2017-05-02 23:37:18 +08:00
Koncord
bda9a76d29 [Server] Send server plugin list to client 2017-05-02 23:33:50 +08:00
Koncord
931a5896ec [General] Improve PacketPreInit 2017-05-02 23:31:30 +08:00
Koncord
f00c4dc107 [Server] Improve preload logic for parsing plugin lists 2017-05-02 20:21:08 +08:00
Koncord
5ddad6a4c6 [Server] Implement getPluginListSample() 2017-05-02 20:21:08 +08:00
Koncord
b223d0fa1e [Server] Register new callback 2017-05-02 20:21:08 +08:00
PlutonicOverkill
829560719e Make name highlighting more consistent and only for variable names 2017-05-02 17:28:42 +12:00
David Cernat
377aa9b6c9 [Server] Refresh cellActorList's count after removing Actors from it 2017-05-02 03:39:00 +03:00
David Cernat
cad3eb8968 [Client] Iterate through CellStore's mergedRefs when initializing Actors 2017-05-02 03:31:40 +03:00
David Cernat
ebf9df3fe2 [Client] Add getMergedRefs() method to CellStore 2017-05-02 03:29:52 +03:00
David Cernat
f59609fcd7 [Client] Fix actor memory leaks, part 2 2017-05-02 02:45:18 +03:00
David Cernat
9b58973929 [Client] Remove variable added by tes3mp to CellStore that is not used 2017-05-02 02:42:37 +03:00
David Cernat
83ba4b62b1 [Server] Remove Actors from a Cell's ActorList when they change cells 2017-05-02 01:39:08 +03:00
David Cernat
a77bd6652f [Client] Read ActorPosition packets sent from Lua script cell loads 2017-05-01 21:55:50 +03:00
David Cernat
4c35c328a9 [Server] Add SendActorPosition() script function 2017-05-01 20:58:40 +03:00
David Cernat
e5e888ac21 [Server] Add script functions for checking what data an Actor has 2017-05-01 20:55:36 +03:00
David Cernat
fafed96bf4 [Server] Store data from ActorPosition in the ActorLists of Cells 2017-05-01 20:42:54 +03:00
Andrei Kortunov
da828a1089 Class choice layout fix 2017-05-01 21:37:37 +04:00
Andrei Kortunov
ba78e187c7 Listbox spacing fix 2017-05-01 21:28:42 +04:00
David Cernat
1a699329e5 [General] Set new BaseActor booleans in corresponding packets 2017-05-01 20:18:22 +03:00
Andrei Kortunov
0e35e6a700 Class generation menu layout fixes 2017-05-01 20:51:54 +04:00
Andrei Kortunov
1520a4d7db Levelup menu layout fixes 2017-05-01 20:48:39 +04:00
David Cernat
730df061b3 [General] Add hasPositionData and hasStatsDynamicData bools to BaseActor 2017-05-01 19:44:23 +03:00
Koncord
5517d871c6 [Server] Handle ID_CONNECTION_ATTEMPT_FAILED in MasterClient
And fix log message
2017-05-02 00:24:24 +08:00
Koncord
1ce8c0f9ec [Server] Fix id in log message for ID_PLAYER_CELL_STATE processor 2017-05-02 00:16:54 +08:00
David Cernat
48b773bfcb [Client] Use float scale for WorldEvent::sendObjectScale() 2017-05-01 19:09:44 +03:00
Koncord
60f4a1d9e5 [Client] Fix issues when changing npc model to creature 2017-05-01 22:54:43 +08:00
Koncord
6ddab0d323 [Server] Add and implement "look like creature" functions 2017-05-01 21:15:12 +08:00
Koncord
9c7c0f9989 [General] Send creatureModel & useCreatureName via PacketPlayerBaseInfo 2017-05-01 21:14:30 +08:00
Koncord
6739233aa3 [General] Change master server port to 25560 2017-05-01 18:56:09 +08:00
Koncord
e77b109ef5 [Browser] Show only fully connected players in main window 2017-05-01 18:48:47 +08:00
Andrei Kortunov
26ec467df0 Tooltips: faction, magic effects layout fixes 2017-05-01 10:00:51 +04:00
David Cernat
62d93a09c1 [Server] Add new script callbacks for cells, remove a couple of others
OnPlayerCellState and OnActorStatsDynamic are now removed as callbacks.

The old OnCellUnload is now renamed into OnCellDeletion.

OnCellLoad and a new OnCellUnload relating to a specific player's load/unload are added.
2017-05-01 02:36:13 +03:00
David Cernat
e1ee4a4f49 [Server] Store data from ActorStatsDynamic in the ActorLists of Cells 2017-05-01 00:53:08 +03:00
David Cernat
217894100a [Server] Add ReadCellActorList() script function 2017-05-01 00:49:58 +03:00
David Cernat
a73cbac226 [Server] Store a BaseActorList in every Cell to keep track of Actor data 2017-05-01 00:42:34 +03:00
Andrei Kortunov
987677db75 Tooltips: dynamic stats, birthsign and hand-to-hand layout fixes 2017-04-30 22:39:05 +04:00
Andrei Kortunov
27181367e2 Tooltips: skills and attributes layout fixes 2017-04-30 21:26:13 +04:00
MiroslavR
d24bcbac15 Do not apply underwater effects to player's voice (Fixes #3850) 2017-04-30 18:51:49 +02:00
Andrei Kortunov
6331cc6ab9 Tooltips: level, race, class, specialization layout fixes 2017-04-30 19:45:36 +04:00
David Cernat
e8e0090b9b [General] Use new SimpleCreatureStats struct in BaseActor 2017-04-30 18:44:59 +03:00
David Cernat
0e8d115794 [Server] Clean up ActorFunctions by using readActorList pointer
Also rename scriptActorList into writeActorList, and also rename matching methods, for clarity.
2017-04-30 17:12:15 +03:00
David Cernat
b54560a362 [Server] Clean up WorldFunctions by using readEvent pointer
Also rename scriptEvent into writeEvent, along with matching methods, for clarity.
2017-04-30 16:35:56 +03:00
David Cernat
809b4d78ba [Client] Split off DedicatedPlayer and PlayerList into different files 2017-04-30 14:57:43 +03:00
David Cernat
f2ec6ce02c Merge pull request #209 from OpenMW/master
Add OpenMW commits up to 30 Apr 2017
2017-04-30 13:31:16 +03:00
scrawl
9f1527b7da Merge pull request #1272 from akortunov/guifixes
Service menus layout fixes
2017-04-30 12:27:21 +02:00
Koncord
eda74ddf44 [Client] Fix memory leaks 2017-04-30 13:56:30 +08:00
Koncord
3372f27f3a [Client] Notify player about current chat mode 2017-04-30 13:56:11 +08:00
David Cernat
f6a218025a [Client] Fix actor memory leaks, part 1 2017-04-30 04:19:28 +03:00
David Cernat
0ba8a407bc [Server] Reuse Cell deletion code in CellController 2017-04-30 04:03:03 +03:00
David Cernat
b62969d3cf [Server] Add OnCellUnload script callback 2017-04-30 03:32:04 +03:00
David Cernat
234510a87f [Server] Split off Cell and CellController into two different files 2017-04-29 23:05:12 +03:00
Koncord
8492929738 [Client] Use RussoOne for chat 2017-04-30 01:08:19 +08:00
Koncord
805c346bd7 [Client] Fix copy-paste mistake 2017-04-30 01:06:47 +08:00
Koncord
465a05bad0 [Client] Add ability to look like a creature for the DedicatedPlayers 2017-04-30 00:18:44 +08:00
Koncord
7af73782f3 [OpenMW] Implement MWWorld::createRecord for Creatures 2017-04-30 00:16:19 +08:00
David Cernat
a2f6d99dfd [Server] Use new CreatureStats in ActorFunctions to fix invalid pointer 2017-04-29 18:20:01 +03:00
David Cernat
d333c0b484 [Client] Read ActorStatsDynamic packets sent from Lua script cell loads 2017-04-29 17:44:46 +03:00
Koncord
fbd8e8b3a1 [Client] Use CreatureStats instead NpcStats 2017-04-29 22:40:22 +08:00
Koncord
26c00c3141 [Client] Change chat font to RussoOne for better visibility 2017-04-29 20:34:36 +08:00
Koncord
db0e25cb6c [Client] Allow colors in the chat window 2017-04-29 20:34:36 +08:00
David Cernat
6ff9091afd [Server] Add script functions for setting actor dynamic stats 2017-04-29 02:10:14 +03:00
David Cernat
9d7142f684 [Server] Clean up order for StatsFunctions 2017-04-29 01:42:11 +03:00
David Cernat
03c56e01f9 [Server] Add script functions for getting actor dynamic stats 2017-04-29 01:15:19 +03:00
David Cernat
3d6b21942c [Server] Add OnActorStatsDynamic script callback 2017-04-29 00:32:23 +03:00
David Cernat
e419e25e72 [Client] Don't initialize actors without unique indexes 2017-04-28 23:17:23 +03:00
David Cernat
328b4fb763 [Server] Fix invalid pointers when using ActorFunctions::GetActorCell() 2017-04-28 20:31:02 +03:00
David Cernat
a71dbc7d09 [Server] Add script functions for setting actor cells and positions 2017-04-28 18:44:01 +03:00
David Cernat
9c5eb47e90 [Server] Add and use Utils::getCellFromDescription() 2017-04-28 16:33:58 +03:00
David Cernat
cc3dfd7da0 Merge pull request #208 from OpenMW/master
Add OpenMW commits up to 28 Apr 2017
2017-04-28 12:48:46 +03:00
PlutonicOverkill
95f60d2bb3 Merge branch 'master' into mark-variable 2017-04-28 20:15:48 +12:00
PlutonicOverkill
cbb2b8b119 Add setting so feature can be turned off 2017-04-28 19:57:49 +12:00
PlutonicOverkill
a8e7628e83 Enable highlighting when cursor is placed over a name (script editor) 2017-04-28 19:28:05 +12:00
Marc Zinnschlag
8299f8677b updated credits file 2017-04-28 08:45:16 +02:00
Marc Zinnschlag
7919c4d672 Merge remote-tracking branch 'plutonicoverkill/master' 2017-04-28 08:40:07 +02:00
David Cernat
aeab851ed8 [Server] Add script functions for getting actor position coordinates 2017-04-28 00:05:12 +03:00
David Cernat
1ce60fbf30 [Server] Add GetActorCell() script function 2017-04-27 14:59:49 +03:00
PlutonicOverkill
e685de0f84 Fix script editor undo/redo context menu actions 2017-04-27 19:48:01 +12:00
PlutonicOverkill
6063d8e31b Fix existing context menu in script editor 2017-04-27 16:31:45 +12:00
Koncord
e53916da10 [Browser] Add Rules tab to ServerInfo 2017-04-27 11:41:45 +08:00
Koncord
db2b53c1b8 [Browser] Update to new protocol 2017-04-27 11:41:45 +08:00
Koncord
e7a1474e04 [Browser] Implement QueryClient 2017-04-27 11:41:45 +08:00
Koncord
d40a55a748 [Master] Update server via operator= instead map::insert 2017-04-27 11:41:45 +08:00
Koncord
b677a0455d [Server] Fix MasterClient crashes 2017-04-27 11:41:45 +08:00
Koncord
a4e45de6ca [General] Fix playersCount 2017-04-27 11:41:45 +08:00
David Cernat
752848834a Merge pull request #207 from OpenMW/master
Add OpenMW commits up to 26 Apr 2017
2017-04-27 00:15:24 +03:00
Andrei Kortunov
f484ef8ffb Fixed jump fatigue loss formula (fixes #3843) 2017-04-26 18:28:59 +04:00
Andrei Kortunov
bba822c014 Purge all effects with same ID instead only first (fixes #3839) 2017-04-26 17:18:06 +04:00
Marc Zinnschlag
61e6b0d03c improved ScriptErrorTable handling of script errors that don't have line/column associated with them (also avoiding a segfault) 2017-04-26 15:03:30 +02:00
PlutonicOverkill
3d1e640388 Add setting to change keyboard shortcut and fix another crash 2017-04-26 19:42:03 +12:00
PlutonicOverkill
1f699552f7 Fix infinite recursion bug in uncommentSelection() 2017-04-26 15:49:39 +12:00
David Cernat
9a89284bca [Server] Add OnActorCellChange script callback 2017-04-25 23:31:37 +03:00
David Cernat
6a21ec1fdc [General] Rename PlayerPos into PlayerPosition 2017-04-25 22:11:33 +03:00
David Cernat
7b07d6651f [General] Add and use PlayerBounty packet and matching script functions 2017-04-25 21:24:39 +03:00
David Cernat
6658531713 [General] Fix names for two PlayerProcessors 2017-04-25 19:01:56 +03:00
David Cernat
7dbcfbd3b1 [Client] Use better check for empty CreatureStats in DedicatedActor 2017-04-25 16:55:58 +03:00
David Cernat
11605bd19a [Client] Make aggressive actors initiate combat with DedicatedPlayers
Previously, they were only attacking DedicatedPlayers who had attacked them first.
2017-04-25 16:08:14 +03:00
PlutonicOverkill
61e374fdfc Implement commentSelection() and uncommentSelection() 2017-04-25 19:12:18 +12:00
PlutonicOverkill
83ff7d162c Add comment/uncomment actions to the context menu 2017-04-25 16:12:59 +12:00
David Cernat
a4165325fa [Client] Improve synchronization of Actor swings 2017-04-25 01:47:43 +03:00
David Cernat
ce9605957a [Client] Use different way of preventing attacks on players in dialogue 2017-04-25 01:11:01 +03:00
David Cernat
ea7c3f2dc7 [Client] Make tes3mp combat code work with Creatures, not just NPCs 2017-04-24 21:06:23 +03:00
David Cernat
a82646a130 [Client] Delineate tes3mp-only code more clearly, part 2 2017-04-24 19:46:12 +03:00
David Cernat
44476248b7 [Client] Add and use DedicatedPlayer::update() 2017-04-24 18:38:57 +03:00
David Cernat
e11a24f446 [Client] Add back statement that should not have been removed in e4a261e 2017-04-24 18:10:05 +03:00
David Cernat
e4a261ea2e [Client] Remove unused include and variables, fixing warnings 2017-04-24 17:53:50 +03:00
Koncord
51422da641 [Server] Remove outdated code 2017-04-24 20:27:15 +08:00
Koncord
0f30f57d4d [Server] Handle IS_PENDING and IS_CONNECTING in switch 2017-04-24 20:26:19 +08:00
Koncord
d0c3d190e1 [Server] Send players list to master server 2017-04-24 20:24:39 +08:00
Koncord
6e8750b9e4 [General] Change list players to vector players 2017-04-24 20:22:13 +08:00
Koncord
3e00d42067 [Server] Reworking MasterClient to new master server 2017-04-24 20:01:05 +08:00
Koncord
9643eb6026 [Master] Notify server about announce state
Rename structure Server to QueryData
2017-04-24 19:58:48 +08:00
David Cernat
841e6a63f8 [Client] Initialize Creatures as LocalActors 2017-04-24 11:58:39 +03:00
David Cernat
661da98941 [Documentation] Update readme and credits slightly 2017-04-24 11:52:35 +03:00
David Cernat
850b19badf [Client] Add clearer debug messages for Actor initialization 2017-04-24 11:04:28 +03:00
David Cernat
2082f8ff4f [Client] Send LocalActor cell changes at end of mwmp::Cell's update 2017-04-24 10:59:47 +03:00
David Cernat
1f6ba9d9ee [Client] Remove jump check from LocalActor that is irrelevant for NPCs 2017-04-24 10:58:39 +03:00
David Cernat
e70faf1016 [Client] Fix crashes in PlayerProcessors from NULL players
Also rename ProcessorPlayerDrawState into ProcessorPlayerAnimFlags
2017-04-24 01:46:27 +03:00
David Cernat
dba0d47973 [Client] Revert position changes on invalid cell changes to fix glitches 2017-04-23 22:25:16 +03:00
David Cernat
5c5c62f33a Merge pull request #206 from OpenMW/master
Add OpenMW commits up to 23 Apr 2017, part 2
2017-04-23 21:35:09 +03:00
David Cernat
284f863292 [Client] Add linear interpolation for DedicatedActors 2017-04-23 21:28:23 +03:00
MiroslavR
1c5c82dd9f Fix wrong incrementation in InventoryStore::visitEffectSources (Fixes #3838) 2017-04-23 19:19:40 +02:00
scrawl
80d1bb571c Merge pull request #1274 from MiroslavR/incr_bug
Fix wrong incrementation
2017-04-23 19:18:46 +02:00
MiroslavR
eada8c6822 Fix wrong incrementation in InventoryStore::visitEffectSources (Fixes #3838) 2017-04-23 18:05:41 +02:00
David Cernat
2eaa25e7d4 [General] Update version to 0.6-alpha 2017-04-23 17:31:08 +03:00
David Cernat
a12694c6ef [Client] Fix crash caused by late-arriving ActorAuthority packets 2017-04-23 17:12:45 +03:00
David Cernat
14e1ff27cb [Client] Rename CellController's cellsActive to cellsInitialized for clarity 2017-04-23 16:53:24 +03:00
David Cernat
ef634a1c52 Merge pull request #205 from OpenMW/master
Add OpenMW commits up to 23 Apr 2017
2017-04-23 14:47:10 +03:00
David Cernat
27186f555d [Client] Enable reading of ActorPackets, and thus NPC sync, by default 2017-04-23 14:01:13 +03:00
David Cernat
871d8c8308 [Client] Send and read ActorCellChange packets 2017-04-23 14:01:13 +03:00
David Cernat
f4c3a28141 [General] Finalize ActorCellChange packet structure 2017-04-23 14:01:13 +03:00
David Cernat
9ea69f4c1f [Client] Add LocalActor & DedicatedActor cell transition logic to World::moveObject() 2017-04-23 14:01:13 +03:00
David Cernat
4e86d8781f [Client] Clean up & simplify logic for DedicatedPlayer cell transitions 2017-04-23 14:01:13 +03:00
David Cernat
87ada3e763 [Client] Add CellController::isSameCell() and use it in LocalPlayer 2017-04-23 14:01:13 +03:00
Koncord
d1df9dde14 [Server] Add processors to source groups 2017-04-23 13:59:17 +08:00
Koncord
c35d5a2c6c [Master] Implement Master server 2017-04-23 13:39:43 +08:00
Koncord
4c939f6d0a [General] Split tes3mp components in CMakeLists by group 2017-04-23 13:39:43 +08:00
Koncord
546bb42abb [General] Add Master Packets 2017-04-23 13:39:43 +08:00
Koncord
5854f680f0 [General] Add Master data types 2017-04-23 13:39:43 +08:00
Koncord
41005b1add [General] Add orderChannel to packets 2017-04-23 13:39:43 +08:00
Andrei Kortunov
c2706ac3e7 Merchant repair and travel window scroll fix 2017-04-23 09:15:25 +04:00
Andrei Kortunov
bc9080d9d7 Removed 31 symbols cap from service menus 2017-04-23 08:56:54 +04:00
scrawl
0e37e71ea2 Merge pull request #1266 from akortunov/handsfallbackfix
Improved hands bodyparts selection fallback
2017-04-23 00:36:48 +02:00
Andrei Kortunov
4544caf7f3 Improved bodypart select fallback (fixes #2594) 2017-04-22 22:23:10 +04:00
scrawl
45d9e38616 Fix check for default material 2017-04-22 14:27:45 +02:00
David Cernat
4ebc9f1314 Merge pull request #204 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwdialogue/dialoguemanagerimp.cpp
2017-04-22 14:33:26 +03:00
Koncord
a27815fa7d [General] Allow backslashes in add_component_dir to specify subgroups 2017-04-22 13:56:03 +08:00
MiroslavR
0737d6cb72 Merge pull request #1270 from Allofich/scriptfix
Check for NULL before running voice dialogue scripts
2017-04-22 01:58:20 +02:00
Allofich
f34e35eb19 Check for NULL before running voice scripts
(Fixes #3834)
2017-04-22 07:51:31 +09:00
David Cernat
a5484d237b Merge pull request #203 from OpenMW/master
Add OpenMW commits up to 21 Apr 2017, part 2
2017-04-21 21:07:37 +03:00
scrawl
8fbf9dc597 Merge pull request #1253 from akortunov/pinned
Remember "pinned" windows across game restarts
2017-04-21 18:44:47 +02:00
Andrei Kortunov
2b3b6d558f Move updatePinnedWindows() function to private section 2017-04-21 19:37:09 +04:00
scrawl
931310d2e2 Merge pull request #1268 from Allofich/anim
Add enabled check to animation script commands
2017-04-21 17:02:27 +02:00
Andrei Kortunov
f986e3fafa Remove unused code 2017-04-21 18:39:01 +04:00
Allofich
143ee387cc Add enabled check to animation script commands
(Fixes #3793)
2017-04-21 23:27:24 +09:00
scrawl
7998583a7b Merge pull request #1267 from Allofich/scriptsign
Treat =< and => as == in scripts
2017-04-21 15:34:34 +02:00
scrawl
fc56fc0b81 Merge pull request #1265 from akortunov/develop
Use "sLevel" GMST instead of hardcoded text in load game menu
2017-04-21 15:30:15 +02:00
Allofich
e095817ac2 Treat =< and => as == in scripts
(Fixes #3744)
2017-04-21 22:26:13 +09:00
scrawl
2c879ddbbf Merge pull request #1264 from Allofich/script
Run scripts for voiced dialogue
2017-04-21 15:26:09 +02:00
Andrei Kortunov
e717d046f2 Escaped class name string 2017-04-21 17:21:57 +04:00
scrawl
1956602aa2 Merge pull request #1262 from Allofich/warnings
Fix more warnings
2017-04-21 14:34:36 +02:00
Andrei Kortunov
f67ec9c9ce Use sLevel GMST instead of hardcoded text in load game menu 2017-04-21 09:40:25 +04:00
David Cernat
fec82dc033 Merge pull request #202 from OpenMW/master
Add OpenMW commits up to 21 Apr 2017
2017-04-21 07:58:13 +03:00
Andrei Kortunov
6c1e3a0618 Merged from upstream master 2017-04-21 08:48:22 +04:00
Allofich
ff3cb18d4f Fix shadowing warnings 2017-04-21 11:06:18 +09:00
Allofich
60c67bc327 Run scripts for voiced dialogue
(Fixes #3787)
2017-04-21 10:39:11 +09:00
scrawl
c2240e3af1 Call the WindowManager::updatePlayer after the startup script is run 2017-04-21 00:51:13 +02:00
scrawl
1ffb9e1bf3 Remove renderWorldMap() 2017-04-21 00:50:22 +02:00
scrawl
bfdde0262f Merge pull request #1260 from akortunov/levitationfix
Purge existing levitation effects when levitation is disabled (fixes #3766)
2017-04-21 00:25:09 +02:00
scrawl
83dbe3ac99 Merge pull request #1261 from rhtucker/master
Added all settings that are in settings.cfg but were not yet documented.
2017-04-21 00:18:56 +02:00
scrawl
5eb12ea8b5 Merge pull request #1263 from akortunov/chargenfixes
Chargen menus fixes
2017-04-21 00:18:43 +02:00
Andrei Kortunov
c65c643abe Fixed race menu skills layout 2017-04-20 21:30:13 +04:00
Allofich
ff3e307059 Pass parameters by const reference 2017-04-20 23:47:03 +09:00
David Cernat
10d554af5b [Client] Make NPCs react to DedicatedPlayer & DedicatedActor attacks 2017-04-20 17:00:40 +03:00
Andrei Kortunov
0a90b48e60 Fixed progressbars layout in review menu 2017-04-20 17:37:37 +04:00
Andrei Kortunov
90d90b6d81 Fixed dynamic stats tooltips in review menu 2017-04-20 17:24:34 +04:00
Andrei Kortunov
39682d616c Merge branch 'master' of https://github.com/OpenMW/openmw into guifixes 2017-04-20 17:20:20 +04:00
Allofich
2e5fd74db0 Fix invalid iterator warning 2017-04-20 19:30:35 +09:00
Ryan Tucker
29cf296be5 Added all settings that are in settings.cfg but were not yet documented. 2017-04-19 22:28:18 -07:00
David Cernat
edb155869b Merge pull request #201 from OpenMW/master
Add OpenMW commits up to 19 Apr 2017
2017-04-19 22:12:33 +03:00
David Cernat
6aa0fa85ab [Client] Send and read ActorAttack packets 2017-04-19 22:10:06 +03:00
David Cernat
2e8714afaa [Client] Rethink and restructure tes3mp combat code so it works for NPCs 2017-04-19 22:06:04 +03:00
scrawl
df3b4fe6a5 Merge pull request #1259 from Allofich/warnings
Fix a few Cppcheck warnings
2017-04-19 20:32:40 +02:00
David Cernat
6c2bbd6608 [Client] Fix assignAttackTarget() not assigning LocalPlayer as target 2017-04-19 20:51:31 +03:00
Andrei Kortunov
f0f1df3a96 Properly clear inventory 2017-04-19 20:54:09 +04:00
Allofich
e87d2aa1af Remove unused function 2017-04-20 01:47:30 +09:00
Allofich
60a2625b89 Add parentheses to clarify calculations 2017-04-20 01:38:21 +09:00
scrawl
30081393a6 Add InventoryWindow::clear() as part of world cleanup 2017-04-19 18:28:49 +02:00
Allofich
f299f26720 Remove unused variable 2017-04-20 01:22:33 +09:00
Allofich
5a00b239ac Reduce scope of variables 2017-04-20 01:22:30 +09:00
Allofich
c655875584 Change mWaterEnabled from float to bool 2017-04-20 01:09:52 +09:00
David Cernat
61cedfa192 [Client] Add CellController methods to fetch Actors without needing Ptrs 2017-04-19 18:20:12 +03:00
Andrei Kortunov
04eb4ea6b6 Check for disabled levitation (fixes #3766) 2017-04-19 18:38:25 +04:00
David Cernat
0ef9e014eb [Client] Add resetAttack() and getSpellSuccess() to MechanicsHelper 2017-04-19 17:09:35 +03:00
scrawl
50f3794d12 Merge pull request #1258 from akortunov/drownfix
Fixed drowning widget initialization with non-default "fHoldBreathTime" GMST value
2017-04-19 16:08:55 +02:00
David Cernat
f2e8e14665 [General] Add shouldSend boolean to mwmp::Attack 2017-04-19 16:43:58 +03:00
Andrei Kortunov
3c4c47d1e6 Reduced scope of fHoldBreathTime variable 2017-04-19 15:52:15 +04:00
David Cernat
c3375ba86f [Client] Add MechanicsHelper::assignAttackTarget() 2017-04-19 11:05:13 +03:00
David Cernat
17c4b6d4de [Client] Add MechanicsHelper methods for easily getting Attacks from Ptr 2017-04-19 10:36:23 +03:00
Andrei Kortunov
c3fd327bb2 Fixed drowning widget initialization 2017-04-19 08:48:16 +04:00
scrawl
f90e5081f9 Merge pull request #1257 from akortunov/chargen
Chargen menus fixes
2017-04-18 22:23:30 +02:00
David Cernat
82e455f736 [Client] Organize headers 2017-04-18 18:51:40 +03:00
David Cernat
014ff7a059 [Client] Replace usage of Networking::isDedicatedPlayer() 2017-04-18 18:07:39 +03:00
David Cernat
1f6d05dfe5 [Client] Remove unused Networking::attack() method 2017-04-18 17:45:26 +03:00
David Cernat
53081a6a6f [Client] Clean up more checks by using PlayerList::isDedicatedPlayer() 2017-04-18 12:38:26 +03:00
Koncord
0a9768860b [Client] Add Processors to subgroups in cmakelists 2017-04-18 16:50:51 +08:00
Koncord
505905ab7d [General] Allow backslashes in add_openmw_dir to specify subgroups 2017-04-18 16:49:21 +08:00
Koncord
9cbb8af9d2 [Client] Remove WorldController from cmakelists 2017-04-18 16:04:58 +08:00
Koncord
67aba35d37 [Client] Simplify Processors 2017-04-18 15:05:39 +08:00
David Cernat
cc2250815d [General] Add packet data for attacks on and by Actors 2017-04-18 10:03:58 +03:00
Koncord
1db30a65cb [Client] Remove unecessary calls 2017-04-18 14:42:43 +08:00
Koncord
6969742ef0 [Client] Enable actor processors 2017-04-18 14:38:23 +08:00
Koncord
2c62c501f6 [Client] Add & init Actor processors 2017-04-18 14:37:35 +08:00
Koncord
7ec897a829 [Client] Add ActorProcessor 2017-04-18 14:37:35 +08:00
David Cernat
29f9453554 [Client] Clean up headers in Networking 2017-04-18 09:32:40 +03:00
Stanislav Zhukov
ad62968397 Merge pull request #200 from TES3MP/tes3mp-introduce-Client-processors
[Client] Use protected member instead local variable
2017-04-18 13:16:57 +08:00
Koncord
8128a5c39c [Client] Use protected member instead local variable 2017-04-18 13:15:31 +08:00
David Cernat
818fc459aa Merge pull request #199 from TES3MP/tes3mp-introduce-Client-processors
Add tes3mp-introduce-Client-processors commits up to 18 Apr 2017
2017-04-18 08:06:49 +03:00
Koncord
25fef1a7b8 [Client] FIx conflicts 2017-04-18 12:17:58 +08:00
Koncord
578d305d86 [Client] Enable world processors 2017-04-18 11:51:05 +08:00
Koncord
7dcaef5a5a [Client] Init world processors 2017-04-18 11:50:22 +08:00
Koncord
fd3a7d2ad0 [Client] Add world processors 2017-04-18 11:50:22 +08:00
Koncord
f0805ca6f7 [Client] Fix typo 2017-04-18 11:50:22 +08:00
Koncord
740bfea0b2 [Client] Use processors for player packets 2017-04-18 11:49:00 +08:00
Koncord
e98fa6ad07 [Client] Add ProcessorInitializer 2017-04-18 11:45:54 +08:00
Koncord
f09dc2b65b [Client] Add player processors 2017-04-18 11:38:40 +08:00
Koncord
a6111b6599 [Client] Add PlayerProcessor & WorldProcessor 2017-04-18 11:38:40 +08:00
David Cernat
07c2d4251e [Client] Add and use mwmp::PlayerList::isDedicatedPlayer() 2017-04-17 20:36:20 +03:00
David Cernat
b1a394cd02 [General] Change chars into bools in mwmp::Attack for clarity 2017-04-17 19:54:31 +03:00
David Cernat
7c45888f05 [Client] Reorder methods in DedicatedPlayer 2017-04-17 19:34:32 +03:00
David Cernat
0aaf68c994 [Client] Rename mwmp::Players into mwmp::PlayerList for clarity 2017-04-17 19:10:33 +03:00
David Cernat
c05c456b11 [Client] Clean up parts of LocalPlayer and DedicatedPlayer 2017-04-17 18:50:20 +03:00
David Cernat
a650683bae [General] Add and use Target struct in mwmp::Attack 2017-04-17 18:31:39 +03:00
David Cernat
9882ceedf3 [General] Remove attackerGuid from mwmp::Attack because it is redundant 2017-04-17 18:03:33 +03:00
David Cernat
340ad09c97 [Server] Rename variables in ProcessorPlayerAttack 2017-04-17 17:43:03 +03:00
David Cernat
caf5428532 [General] Rename mwmp::Attack vars in preparation for Actor support 2017-04-17 17:24:11 +03:00
David Cernat
2050d06b31 [Client] Process PlayerAttack in MechanicsHelper::processAttack() 2017-04-17 16:09:07 +03:00
David Cernat
2397afc6ce [General] Move mwmp::Attack to BaseStructs 2017-04-17 15:12:11 +03:00
David Cernat
cf155c9279 [Client] Add MechanicsHelper and move linear interpolation code to it 2017-04-17 14:37:19 +03:00
David Cernat
2565816b22 [Client] Delimit and clarify combat changes made by tes3mp
Additionally, revert unneeded small changes to the formatting of OpenMW code
2017-04-17 11:55:22 +03:00
David Cernat
9f226253d4 [General] Rename mwmp::Attack's refid into refId for consistency 2017-04-17 09:35:18 +03:00
David Cernat
b09e6644a9 [Client] Prevent infinite guard arrest loops 2017-04-16 20:26:06 +03:00
Andrei Kortunov
aac78d29a4 Service menus layout fixes 2017-04-16 20:30:20 +04:00
David Cernat
f0f0b2dcc9 [General] Send and read ActorSpeech packets 2017-04-16 18:43:13 +03:00
David Cernat
d2178e5414 [Client] Assign LocalActor movement settings before rotations get reset 2017-04-16 17:09:47 +03:00
David Cernat
1fb11dafef [General] Send and read ActorStatsDynamic packets 2017-04-16 16:42:07 +03:00
David Cernat
678edffb5a [Client] Rename updateDynamicStats() into updateStatsDynamic() 2017-04-16 14:11:55 +03:00
David Cernat
00aa8839d4 [General] Update CMakeLists in components folder 2017-04-16 09:03:51 +03:00
David Cernat
870886192b [General] Rename DYNAMICSTATS into STATS_DYNAMIC 2017-04-16 09:00:18 +03:00
David Cernat
f64580bc10 [Client] Enable head rotation AI for DedicatedActors 2017-04-16 08:42:49 +03:00
David Cernat
8ebe7ed683 [Client] Remove isLocalActor (no longer needed) from LiveCellRefBase 2017-04-16 07:54:44 +03:00
David Cernat
ca8fd1aa72 [General] Remove ActorHeadRotation packet because it would be too spammy 2017-04-15 15:49:40 +03:00
David Cernat
2872675f5e [General] Send and read ActorAnimPlay packets 2017-04-15 13:42:30 +03:00
David Cernat
56aeb85965 [Client] Update method names in ActorList 2017-04-15 11:45:20 +03:00
David Cernat
5c1d7f614a [Client] Rename readDrawStates() into readAnimFlags() 2017-04-15 10:47:53 +03:00
David Cernat
bf17464074 Merge pull request #198 from OpenMW/master
Add OpenMW commits up to 14 Apr 2017
2017-04-15 05:36:50 +03:00
Andrei Kortunov
c93cf822c7 Reviewmenu: read name, race, class and birthsign from player stats (fixes bug #2628) 2017-04-14 23:21:20 +04:00
Andrei Kortunov
fb0c4700a4 Save a proto gender in racemenu 2017-04-14 23:19:48 +04:00
Andrei Kortunov
8581d68b8e Updated documentation for windows settings 2017-04-14 22:46:24 +04:00
scrawl
f63b1e81cd Merge pull request #1228 from akortunov/master
Options to show hidden weapon parameters
2017-04-14 20:01:08 +02:00
Andrei Kortunov
00e06095c1 Updated documentation for new weapon tooltips options 2017-04-14 21:49:15 +04:00
scrawl
8f71b65d38 sceneutil/attach: inherit the UserDataContainer to avoid the resource cache from being cleared incorrectly 2017-04-14 15:04:53 +02:00
David Cernat
e7960eee76 [General] Rename DrawState packets into AnimFlags ones for clarity 2017-04-14 16:00:34 +03:00
David Cernat
11a9e3bdb1 Merge pull request #197 from OpenMW/master
Add OpenMW commits up to 14 Apr 2017
2017-04-14 05:57:28 +03:00
scrawl
17125e6c4d Merge pull request #1256 from Allofich/equip
Adjustments to RemoveItem behavior
2017-04-14 01:08:29 +02:00
scrawl
26e48a0695 Merge pull request #1255 from akortunov/manafix
Fixed magicka calculation on chargen (bug #3694)
2017-04-14 00:56:26 +02:00
David Cernat
de8d28e2c3 [Client] Improve logic for updating LocalActors & sending their packets 2017-04-13 18:59:22 +03:00
David Cernat
9e25a95861 [Server] Initialize processors for recently added ActorPackets 2017-04-13 18:57:48 +03:00
David Cernat
426d5a7fc2 [Client] Add missing usage of sendDrawStateActors() 2017-04-13 18:56:38 +03:00
Andrei Kortunov
dc036e96d4 fixed magicka calculation on chargen (bug #3694) 2017-04-13 18:30:36 +04:00
Allofich
6e405aed8c Adjustments to RemoveItem behavior
(Fixes #3796)
2017-04-13 22:33:13 +09:00
David Cernat
d2fe777f89 [General] Send and read ActorDrawState packets 2017-04-13 15:26:48 +03:00
David Cernat
9c731990a9 [Client] Use clearer var names in LocalPlayer::updateDrawStateAndFlags() 2017-04-13 14:10:42 +03:00
David Cernat
10ad5b2a99 [General] Remove BaseActor's AnimStates that are no longer needed 2017-04-13 13:06:09 +03:00
David Cernat
c6cd0a2953 Merge pull request #196 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwmechanics/spellcasting.cpp
2017-04-13 07:07:49 +03:00
scrawl
8d8f293a65 Merge pull request #1246 from akortunov/develop
Menu improvements
2017-04-12 23:57:00 +02:00
scrawl
d8943d911c Merge pull request #1254 from Allofich/warning
Remove unnecessary line
2017-04-12 23:49:29 +02:00
Allofich
56dfa615e1 Minor changes to getActorsSidingWith 2017-04-12 22:41:33 +02:00
Allofich
fe4fb82646 Cache allies found while iterating engageCombat
(Fixes #3814)
2017-04-12 22:41:28 +02:00
scrawl
caacf31a09 Merge pull request #1210 from Allofich/fix
Fix frame rate drop during actor update
2017-04-12 22:40:43 +02:00
Allofich
470988f9ef Minor changes to getActorsSidingWith 2017-04-13 04:45:44 +09:00
Andrei Kortunov
c3d49d5ca5 Fixed inventory crash and skipmenu launch 2017-04-12 22:57:32 +04:00
Allofich
6272e1c674 Cache allies found while iterating engageCombat
(Fixes #3814)
2017-04-13 02:02:38 +09:00
Andrei Kortunov
1fe3a3efe4 Count dialog layout changes 2017-04-12 19:15:22 +04:00
Allofich
5020d03c78 Remove unnecessary line 2017-04-12 22:59:28 +09:00
Andrei Kortunov
72a16dc78b Merge branch 'master' into pinned since added PR #1250 2017-04-12 13:17:06 +04:00
Andrei Kortunov
506cc47c9d Add option to show reach and attack speed for melee weapons 2017-04-12 09:12:25 +04:00
scrawl
993860a4b1 Merge pull request #1250 from resilar/mapbutton
Hide WorldButton when in game mode
2017-04-11 21:34:53 +02:00
scrawl
8f335b3484 Merge pull request #1245 from akortunov/tgm
Vanilla-like tgm
2017-04-11 21:34:44 +02:00
David Cernat
0d196af685 [General] Add placeholders for 7 new ActorPackets 2017-04-11 11:37:38 +03:00
Marc Zinnschlag
59a9a7aafb updated changelog 2017-04-11 10:28:08 +02:00
Marc Zinnschlag
13517e723a increased version number 2017-04-11 10:05:57 +02:00
David Cernat
9852076590 [Client] Send all NPC data to newly arriving players 2017-04-10 18:24:30 +03:00
David Cernat
15f91e7825 [Client] Add CellController methods for getting and checking Cells 2017-04-10 18:13:22 +03:00
David Cernat
69f820f3a0 [Client] Rename CellController's getCell() into getCellStore() 2017-04-10 17:30:57 +03:00
David Cernat
d14102716d [Client] Retool LocalActors and DedicatedActors for ActorPosition packet 2017-04-10 17:10:18 +03:00
David Cernat
cbd2af972d [Client] Get movement settings for NPCs before they are reset 2017-04-10 17:06:44 +03:00
David Cernat
7700b82952 [General] Clean up BaseEvent and BaseStructs 2017-04-10 16:33:07 +03:00
David Cernat
7662297334 [General] Use ESM::Position to store BaseActor's movement 2017-04-10 16:32:10 +03:00
David Cernat
2709de83fb [Client] Use clearer variable names in LocalPlayer::UpdatePosition() 2017-04-10 14:53:59 +03:00
David Cernat
742d6f653a [General] Add ActorPosition packet 2017-04-10 12:38:30 +03:00
David Cernat
b6c3830ea0 [General] Rename WorldObject's pos into position for consistency 2017-04-10 09:25:20 +03:00
Andrei Kortunov
95ce7637f3 Adds persisted pin (feature #2834, bug #2489) 2017-04-10 10:18:00 +04:00
David Cernat
174f316787 [General] Rename PacketActorFrame into PacketActorTest 2017-04-10 08:37:18 +03:00
David Cernat
a5d0486c82 [General] Set actor data correctly 2017-04-10 07:22:03 +03:00
David Cernat
69bf2749a5 [Server] Add ActorFunctions for getting and setting basic actor data 2017-04-10 06:15:03 +03:00
David Cernat
e9c3abc2c3 [Server] Reset variables more elegantly in WorldFunctions 2017-04-10 02:37:43 +03:00
David Cernat
b9d68c0ab2 Merge pull request #195 from OpenMW/master
Add OpenMW commits up to 10 Apr 2017
2017-04-10 01:20:42 +03:00
scrawl
1cd901d113 Merge pull request #1248 from akortunov/missedsound
Adds missing recharge and repair sounds
2017-04-09 21:33:12 +02:00
scrawl
969dda2e41 Merge pull request #1252 from MiroslavR/correctActorModelPath
Fix correctActorModelPath
2017-04-09 21:30:48 +02:00
MiroslavR
c962b6dd6d Fix correctActorModelPath to work properly when both backward and forward slashes are used in the path (Fixes #3822) 2017-04-09 18:34:36 +02:00
David Cernat
c52084a028 [General] Use BaseActorLists in ActorPackets 2017-04-09 16:32:44 +03:00
David Cernat
1b714fbfa7 [Server] Make script functions more consistent 2017-04-09 12:28:38 +03:00
David Cernat
a24ef3a25e [Server] Create ActorFunctions placeholder 2017-04-09 12:24:33 +03:00
David Cernat
4f3d05eed2 [General] Add ActorList class 2017-04-09 10:50:35 +03:00
David Cernat
070c6a3bd4 [General] Add ActorPacketController & make controller var names clearer 2017-04-09 08:51:28 +03:00
David Cernat
a1d0b4908f [Client] Fix Travis CI build by not using nullptr 2017-04-08 16:46:38 +03:00
David Cernat
c8a486de6c [Client] Fix Ptr initialization in mwmp::Cell 2017-04-08 16:02:59 +03:00
David Cernat
0ccbe70e61 [Client] Rename methods to make their purpose clearer 2017-04-08 14:31:22 +03:00
David Cernat
6da6c4e62d [Client] Prevent NPCs from attacking a player engaged in dialogue 2017-04-08 13:06:42 +03:00
David Cernat
b883b4c7ce [Client] Reorder includes 2017-04-08 12:54:38 +03:00
David Cernat
3d6dc74bdc [Client] Fix logic for mwmp::Cell initialization 2017-04-08 12:33:41 +03:00
David Cernat
89a8ace41c [Server] Print debug info only for certain world packets 2017-04-08 12:00:07 +03:00
David Cernat
417284c701 [Client] Implement head rotation sync for NPCs 2017-04-08 11:40:19 +03:00
David Cernat
b8ca2382c7 [General] Remove variables that are not going to be used in ActorFrame 2017-04-08 11:27:08 +03:00
David Cernat
f52fc19762 [Client] Reorder methods and don't set variables that are no longer used 2017-04-08 10:58:25 +03:00
David Cernat
d3f3fb5d05 [Client] Correctly implement movement animation sync for NPCs 2017-04-08 08:59:21 +03:00
David Cernat
5b43e62c50 [Client] Make it possible to get DedicatedActor from CellController 2017-04-08 07:46:33 +03:00
David Cernat
6557577c03 Merge pull request #193 from OpenMW/master
Add OpenMW commits up to 7 March 2017
2017-04-07 16:13:09 +03:00
David Cernat
e6536c7473 [Client] Disable basic NPC sync in preparation for overhaul 2017-04-07 16:04:21 +03:00
David Cernat
1101ff1e28 [Client] Update DedicatedActors every frame to allow interpolation 2017-04-07 15:51:34 +03:00
Marc Zinnschlag
9d5c46027d Merge remote-tracking branch 'rcutmore/bug-3484' 2017-04-07 10:38:16 +02:00
David Cernat
ae92117d21 [Client] Add missing return 2017-04-07 11:32:42 +03:00
David Cernat
18be1880f0 [Client] Make it possible to get LocalActor from CellController 2017-04-07 10:16:23 +03:00
David Cernat
10be52d40d [Client] Add localActorsToCells map to more easily find LocalActors 2017-04-07 08:12:50 +03:00
David Cernat
e89265e469 [Client] Turn CellController's cellsActive into a map instead of a deque 2017-04-07 05:52:07 +03:00
Rob Cutmore
0ff56677f6 Remove unused code 2017-04-06 19:56:18 -04:00
Rob Cutmore
84bad9316d Editor: flag orbit camera for re-initialization
After swapping cells the orbit cam controller needs to be
re-initialized to properly center on the new cell.
2017-04-06 19:40:26 -04:00
David Cernat
d829d219c3 [General] Add (very) partial animation sync for NPCs 2017-04-06 15:11:51 +03:00
David Cernat
e8638d9884 [Client] Add basic position sync for NPCs 2017-04-06 11:46:56 +03:00
David Cernat
c6c0e4acc9 [Server] Fix Cell::sendToLoaded() part 2, and fix Player::sendToLoaded() 2017-04-06 08:39:11 +03:00
David Cernat
8616323bae [Server] Fix logic in Cell::sendToLoaded() 2017-04-06 08:27:04 +03:00
David Cernat
fae3bcaeeb [Server] Send actor packets only to players in the same cell 2017-04-06 06:42:25 +03:00
David Cernat
89ed318d3c [Client] Remove usage of nullptr that Travis CI is getting stuck on 2017-04-06 06:17:27 +03:00
David Cernat
67ec81ad0c [Client] Use utility function for converting strings in mwmp::Cell 2017-04-06 05:45:49 +03:00
David Cernat
d4a12856ee [Client] Enable AI for LocalActors 2017-04-06 04:59:55 +03:00
David Cernat
0d766a7a04 [Client] Add and use mwmp::Cell class 2017-04-06 04:00:50 +03:00
David Cernat
9beaf9b7a1 [Client] Initialize and update LocalActors while their cells are active 2017-04-06 00:49:20 +03:00
David Cernat
8df9d55331 [Client] Create placeholder DedicatedActor class 2017-04-06 00:48:20 +03:00
David Cernat
d24cde16dd [General] Add simple BaseActor and LocalActor classes 2017-04-05 12:52:27 +03:00
David Cernat
679e790d8d [Client] Rename WorldController into CellController to avoid confusion with Networking's WorldPacketController 2017-04-05 12:00:21 +03:00
David Cernat
ba8341bfb5 [Server] Add SendActorAuthority() script function 2017-04-05 11:02:11 +03:00
David Cernat
c2d6265ffd [Client] Reorder methods in WorldEvent, placing packet senders at bottom 2017-04-05 09:12:02 +03:00
David Cernat
9759764699 [Client] Clean up getting and resetting of WorldEvent 2017-04-05 09:04:41 +03:00
David Cernat
d7a760490e [Client] Simplify sending of world packets, part 2 2017-04-05 08:43:35 +03:00
David Cernat
b55a3d5eb2 [Client] Add placeholder editActors() method for random creature sync 2017-04-05 08:07:53 +03:00
David Cernat
4abe295a80 [Client] Simplify sending of world packets by adding WorldEvent methods 2017-04-05 07:54:23 +03:00
David Cernat
1d23a48a42 [Client] Print mpNums when objects are found in a cell 2017-04-05 07:10:22 +03:00
David Cernat
0df14320e0 [Client] Set mMpNum to 0 for ManualRef 2017-04-05 06:58:59 +03:00
David Cernat
6c60c9c78e [Client] Clean up debug messages for when objects are found in a cell 2017-04-05 06:30:12 +03:00
David Cernat
bb9ea6ccd4 [Client] Also include list of creatures in reply to ActorList 2017-04-05 06:22:01 +03:00
David Cernat
ca92be14a5 [Client] Reply to ActorList request with list of NPCs 2017-04-05 05:54:25 +03:00
David Cernat
8f18dc87c4 [General] Model ActorList on Container more closely by including action 2017-04-05 04:45:51 +03:00
David Cernat
c65e94587c [Server] Add SendActorList() script function 2017-04-05 04:44:47 +03:00
David Cernat
8c2469bf6d [General] Add placeholder ActorList, ActorAuthority & ActorFrame packets 2017-04-05 04:06:45 +03:00
Rob Cutmore
f7664d4bb9 Editor: reset camera after cell drag and drop
When replacing a viewed cell via drag and drop the camera position is
not updated to better view the new cell. This flags the camera position
as not being set so a better default is set.
2017-04-04 18:54:58 -04:00
David Cernat
316720e710 [Server] Rename getNextMpNum() into incrementMpNum() 2017-04-05 01:30:15 +03:00
David Cernat
068835ba71 [Server] Add OnMpNumIncrement() script callback 2017-04-05 01:18:42 +03:00
David Cernat
3b34b9cd3e [Server] Fix typo in MiscellaneousFunctions 2017-04-04 12:49:29 +03:00
David Cernat
2716078a30 [Server] Add GetCurrentMpNum() and SetCurrentMpNum() script functions 2017-04-04 12:43:17 +03:00
David Cernat
8b8c01f389 [General] Make ID_OBJECT_PLACE take effect only when sent back by server 2017-04-04 11:43:33 +03:00
David Cernat
2bd81c3de0 [Client] Use mpNum for every WorldObject 2017-04-04 11:07:16 +03:00
David Cernat
82f38dcfad [Server] Set mpNum in AddWorldObject() 2017-04-04 10:34:35 +03:00
David Cernat
ddedcac510 [General] Read and write mpNums in world packets 2017-04-04 10:16:09 +03:00
David Cernat
4644235cf6 [Client] Use mpNum in exact searches for objects 2017-04-04 10:07:15 +03:00
David Cernat
665fe09fd0 [Server] Add GetObjectMpNum() and SetObjectMpNum() script functions 2017-04-04 09:30:17 +03:00
David Cernat
8cc61b6048 [General] Generate mpNums on the server when forwarding ID_OBJECT_PLACE 2017-04-04 09:23:34 +03:00
David Cernat
31cd836558 [General] Small tweaks to debug info 2017-04-04 08:24:11 +03:00
David Cernat
06acd3cbc4 [Client] Add a multiplayer object index and matching methods to CellRef 2017-04-04 07:42:02 +03:00
David Cernat
d242f3790f [Server] Don't try to send late-arriving container packets about now unloaded cells 2017-04-04 07:21:02 +03:00
David Cernat
e5cf632e1d [Client] Stop creating new reference numbers for placed/spawned objects 2017-04-04 06:01:48 +03:00
David Cernat
d8712ee1ea [Server] Fix script crashes by reusing BaseEvent in WorldProcessor 2017-04-04 05:03:14 +03:00
David Cernat
5ff40c5563 [Server] Make coding style consistent 2017-04-04 03:05:37 +03:00
David Cernat
106c9edead Merge pull request #192 from OpenMW/master
Add OpenMW commits up to 3 Apr 2017
2017-04-04 01:48:43 +03:00
David Cernat
174937f412 [Server] Add LogMessage() and LogAppend() script functions 2017-04-04 01:47:37 +03:00
def
785b3c3d01 Hide WorldButton when in game mode 2017-04-03 09:40:12 +03:00
MiroslavR
395e97cf40 Remove evil "implicit GetJournalIndex" hack from expression parser 2017-04-03 01:44:26 +02:00
Koncord
1d2a6d9056 [Server] Rename dontRead to avoidReading 2017-04-03 06:44:14 +08:00
Koncord
47924f5bb0 [Server] Move packet.Read() to parent 2017-04-03 06:13:56 +08:00
Koncord
4daf471874 [General] Add dontRead flag 2017-04-03 06:13:00 +08:00
Koncord
ead92fff61 [Server] Move setPlayer() to PlayerProcessor 2017-04-03 06:05:18 +08:00
Koncord
0317e2523b [Server] Remove unused code 2017-04-03 05:57:03 +08:00
Koncord
c8fb7d9c1a [Server] Move packet.Send(true) to parent class 2017-04-03 05:56:29 +08:00
Koncord
9ecc70d17c [Server] Fix ID in ProcessorContainer 2017-04-03 05:49:23 +08:00
Koncord
f5600c508f [Server] Move all world handlers to WorldProcessors 2017-04-03 05:46:46 +08:00
Koncord
3ab25fb3f1 [Server] Move player processors to processors/player 2017-04-03 05:45:41 +08:00
Koncord
0a1041bf56 [Server] Add WorldProcessor 2017-04-03 05:40:17 +08:00
Andrei Kortunov
31bd70f334 Added missed recharge and repair sounds 2017-04-02 23:19:43 +04:00
Pieter van der Kloet
8d76903392 Ini-importer progress bar fills the whole width of the ui element now 2017-04-02 03:15:32 +02:00
David Cernat
e7b5097c13 [Client] Print plugin paths correctly for Windows 2017-04-01 05:57:27 +03:00
David Cernat
dff52d8fbe Merge pull request #191 from OpenMW/master
Add OpenMW commits up to 31 Mar 2017
2017-04-01 03:27:44 +03:00
Koncord
3b52549a3d [Server] Rename init_processors to ProcessorInitializer 2017-04-01 08:14:26 +08:00
Koncord
e8a5fd1cd0 [Server] Move all message handlers to PlayerProcessors 2017-04-01 02:36:24 +08:00
Koncord
020167df08 [Server] Add PlayerProcessor 2017-04-01 02:35:34 +08:00
Koncord
b01734888f [Server] Add missing header 2017-04-01 02:33:39 +08:00
Koncord
48a59cf9e9 [General] Add new class BasePacketProcessor 2017-04-01 02:33:03 +08:00
Marc Zinnschlag
ab8294b281 Merge remote-tracking branch 'rcutmore/bug-2838' 2017-03-31 16:47:26 +02:00
Andrei Kortunov
df5a43363a Confirmation dialogs size fix 2017-03-30 17:05:56 +04:00
Rob Cutmore
343f2cb81d Editor: add creator for body parts
Added creator subclass for body parts to allow adding first person
parts. IDs for first person body parts are expected to end with ".1st".
2017-03-30 08:20:43 -04:00
Koncord
691dc75401 [Browser] Fix sign compare warnings 2017-03-30 00:39:01 +08:00
scrawl
3c9f3a0f7f Merge pull request #1242 from Allofich/warnings
Fix AppVeyor warnings
2017-03-29 07:28:00 +02:00
scrawl
6a745cb2cc Fix text colorMode (Bug #3815) and render bin 2017-03-29 07:10:55 +02:00
Andrei Kortunov
e5a0f89934 List scroll fix 2017-03-28 12:49:23 +04:00
David Cernat
7647715dac Merge pull request #190 from OpenMW/master
Add OpenMW commits up to 27 Mar 2017
2017-03-28 08:05:23 +03:00
Andrei Kortunov
edadcb338c Savegame dialog improvements 2017-03-27 23:10:57 +04:00
scrawl
9e7ade4ba4 Merge pull request #1244 from akortunov/develop
MyGUI vertical alignment
2017-03-27 20:14:09 +02:00
Allofich
3780d94214 Cast LAND_SIZE to integer to avoid linking error 2017-03-28 01:57:31 +09:00
Allofich
db2f97f308 Fix shadowing warning 2017-03-27 20:22:20 +09:00
Andrei Kortunov
a35d4334c3 Encumberance text fix 2017-03-27 14:54:04 +04:00
Andrei Kortunov
c9cf0ec977 Buttons and widgets captions vertical alignment 2017-03-27 14:38:40 +04:00
Andrei Kortunov
7d09a5d644 Progress bars vertical alignment 2017-03-27 13:33:28 +04:00
scrawl
a036a98fd0 Merge pull request #1243 from akortunov/develop
Journal improvements
2017-03-27 02:56:35 +02:00
scrawl
b064dd29cc Fix reset of blend function (Bug #3811) 2017-03-27 02:51:23 +02:00
Andrei Kortunov
658ab5e941 Minor journal improvements 2017-03-26 22:56:36 +04:00
Allofich
2a505b427d Remove second LAND_SIZE definition 2017-03-27 03:45:53 +09:00
scrawl
2a74f79bf1 Merge pull request #1240 from Allofich/follow
Adjust AI follow distances
2017-03-26 20:35:11 +02:00
Allofich
6253a5218e Adjust AI follow distances
(Fixes #3225)
2017-03-27 03:31:25 +09:00
scrawl
0a061d45b7 Merge pull request #1239 from akortunov/projectilefix
Disable explosion effect for 0-range projectiles (bug #3730)
2017-03-26 20:30:43 +02:00
scrawl
f3a7be3339 Merge pull request #1238 from LennyPenny/patch-1
Ignore /MSVC* (Feature #3795)
2017-03-26 20:30:25 +02:00
scrawl
82e0bac297 Merge pull request #1237 from MiroslavR/haggling_fix
Fix selling success chance (Fixes #3802)
2017-03-26 20:30:17 +02:00
Rob Cutmore
77bf1efc1a Editor: Fix labels for creator user inputs 2017-03-26 09:14:32 -04:00
Rob Cutmore
8d4441bb5e Editor: document subclasses without ID checks
- Removes ID validation for PathgridCreator.
- Adds comments explaining why ID validation isn't used in some cases.
2017-03-26 09:05:05 -04:00
Andrei Kortunov
14b59e0e4b Vanilla-like tgm (fixes #3798) 2017-03-25 22:40:11 +04:00
Andrei Kortunov
860b556713 Disables explosion effect for 0-range projectiles (fixes #3730) 2017-03-25 19:53:24 +04:00
Lennart Bernhardt
e56089aff4 Ignore /MSVC* (Feature #3795) 2017-03-25 15:26:14 +01:00
MiroslavR
da6b28eb40 Fix selling success chance (Fixes #3802) 2017-03-25 15:21:16 +01:00
scrawl
97dbd07ed2 Merge pull request #1236 from akortunov/guifixes
Minor GUI fixes
2017-03-25 13:36:58 +01:00
Andrei Kortunov
7bd0c74aa8 Fixes mWatchedTimeToStartDrowning initialization (fixes bug #3801) 2017-03-25 14:15:16 +04:00
Andrei Kortunov
e383e4d023 Disabled hit overlay for damage/absorb mana/fatigue spells 2017-03-25 14:10:19 +04:00
scrawl
9653b99add Merge pull request #1235 from akortunov/guifixes
Vanilla style progress bars
2017-03-24 19:39:07 +01:00
Andrei Kortunov
4daa88351b Vanilla style progress bars 2017-03-24 21:38:33 +04:00
scrawl
373bd78cf3 Merge pull request #1233 from akortunov/guifixes
Vanilla style drowning widget
2017-03-24 18:10:11 +01:00
scrawl
a60302f6d6 Merge pull request #1234 from LennyPenny/patch-1
Ignore /deps (Feature #3795)
2017-03-24 18:06:42 +01:00
Lennart Bernhardt
76548a5e4c Ignore /deps (Feature #3795)
Implements https://bugs.openmw.org/issues/3795
2017-03-24 15:37:26 +01:00
Andrei Kortunov
b89fdcfd27 Vanilla style drowning widget (partially fixes bug #3801). 2017-03-24 09:41:18 +04:00
David Cernat
1d83098619 [Build] Use slilghtly retooled version of CMake's default FindLua51 2017-03-24 07:29:04 +02:00
David Cernat
c10dd1b002 Merge pull request #188 from OpenMW/master
Add OpenMW commits up to 24 Mar 2017
2017-03-24 07:24:55 +02:00
scrawl
338592b99b Don't clear the animation queue when turning (Bug #3581)
Otherwise, the turnAnimationThreshold would make it difficult to estimate when we can start playing the animation.
2017-03-23 20:05:06 +01:00
scrawl
a5d7b36c28 Don't clear idle animation when movement ends (Bug #3581)
This caused problems when AiWander tried to start an idle animation in the frame after movement stops.
2017-03-23 20:05:05 +01:00
scrawl
c611ddba8d Remove stray term 2017-03-23 20:05:05 +01:00
scrawl
f676b62711 Remove unused variable 2017-03-23 19:35:07 +01:00
scrawl
f230df3d1c Merge pull request #1232 from akortunov/tooltipfix
Tooltip maximum width cap
2017-03-23 17:12:36 +01:00
Andrei Kortunov
1a47b9727b Changed tooltip maximum width (bug #3800) 2017-03-23 14:31:01 +04:00
scrawl
02c6c1897e Merge pull request #1230 from Allofich/stats
Change bounds behavior of stat script commands
2017-03-22 20:22:45 +01:00
scrawl
7d0eeee568 Merge pull request #1229 from Allofich/appveyor
Fix AppVeyor not finding curl
2017-03-22 20:22:13 +01:00
scrawl
7075a3a99b Merge pull request #1231 from Allofich/tooltips
Show names on combat actors when RMB GUI is active
2017-03-22 20:21:58 +01:00
Marc Zinnschlag
77edb20783 Merge remote-tracking branch 'origin/master' 2017-03-22 15:52:12 +01:00
Marc Zinnschlag
021cef74ff Merge remote-tracking branch 'rcutmore/bug-3345' 2017-03-22 15:51:01 +01:00
Allofich
5282556ae0 Show names on combat actors when RMB GUI is active
Fixes (#3797)
2017-03-22 20:04:29 +09:00
Allofich
57aeec59d5 Change bounds behavior of stat script commands
Fixes (#3776)
2017-03-22 15:17:44 +09:00
Allofich
6c686fa242 Fix "curl: command not found" error
Fixes (#3799)
2017-03-22 11:10:57 +09:00
Rob Cutmore
3714c2a0f2 Editor: add ID validator to pathgrid input 2017-03-21 08:14:04 -04:00
Rob Cutmore
207695e094 Editor: switch input for pathgrid creator
Switched from QComboBox to DropLineEdit for pathgrid creator input.
This allows the input the use auto-complete and be a drop target from
the cells table.
2017-03-21 07:58:01 -04:00
David Cernat
ab92b9f795 Merge pull request #187 from OpenMW/master
Add OpenMW commits up to 20 Mar 2017
2017-03-20 04:59:12 +02:00
scrawl
c992cb6e82 Fix texture not being applied on rendering the composite map (Fixes #3791) 2017-03-19 19:15:22 +01:00
Marc Zinnschlag
c2ecd47acd Merge remote-tracking branch 'rcutmore/bug-3345' 2017-03-19 13:24:40 +01:00
scrawl
4a1406c638 Merge pull request #1226 from MiroslavR/scdt_size
Downgrade SCDT size mismatch error to a warning
2017-03-18 19:04:31 +01:00
MiroslavR
06dc94552f Log a warning if size in SCHD (script header) does not match SCDT (bytecode) size instead of failing 2017-03-18 15:42:24 +01:00
Rob Cutmore
0dcb6a9bd4 Editor: update pathgrid creator input on changes
When data changes the cell input for pathgrid creator is repopulated
with valid choices. This handles the case where a cell is added or
removed, and also when a cell's pathgrid is added or completely
removed.
2017-03-18 10:20:16 -04:00
Rob Cutmore
491fd3d0be Editor: set combo box events for pathgrid creator
- Handles when combo box should automatically gain or lose focus.
- Checks user input when combo box selection changes.
2017-03-18 09:20:14 -04:00
Rob Cutmore
95d164a6e6 Editor: use combo box when creating pathgrids
Instead of using QLineEdit for user input, use a QComboBox populated
with valid choices. This prevents user from being able to create a
pathgrid for a non-existent cell.
2017-03-18 07:49:46 -04:00
Andrei Kortunov
1286754fb3 Add a new option to show arrow damage (feature #2923) 2017-03-18 08:07:36 +04:00
David Cernat
5eb183bacf Merge pull request #186 from OpenMW/master
Add OpenMW commits up to 15 Mar 2017
2017-03-15 23:13:24 +02:00
scrawl
f151eccc23 Update AUTHORS.md 2017-03-15 18:51:52 +01:00
scrawl
3a2a5a90bd Merge pull request #1225 from akortunov/master
Disable weapons and spells cycling in GUI mode
2017-03-15 18:51:12 +01:00
scrawl
a070551af3 Attempt to fix naming conflict on windows 2017-03-15 17:51:00 +01:00
scrawl
3d58ba7301 Fix boolean test 2017-03-15 17:50:13 +01:00
Andrei Kortunov
eb81ab5b24 Disables weapon and spells cycling in GUI mode (bugs #2409, #2483, #2645) 2017-03-15 17:07:25 +04:00
David Cernat
60037e4081 Merge pull request #185 from OpenMW/master
Add OpenMW commits up to 14 Mar 2017
2017-03-15 11:20:06 +02:00
scrawl
e987fe85d0 Add abort flag to TerrainPreloadItem 2017-03-14 21:28:57 +01:00
scrawl
aed4cbaf29 Update settings documentation 2017-03-14 21:28:57 +01:00
scrawl
42e9891504 Fix issues caused by loading multiple views into the same terrain View 2017-03-14 20:27:55 +01:00
scrawl
97ed999097 Fix cleanup issue 2017-03-14 20:02:22 +01:00
scrawl
fd215caa02 Add local LandCache to cut down on store searches 2017-03-14 19:27:57 +01:00
scrawl
088d5604bf Use a shader if required to display the composite map
Fixes composited terrain not respecting the 'clamp lighting' setting.
2017-03-14 19:27:56 +01:00
scrawl
7f5beb3172 Remove unused includes 2017-03-14 19:27:56 +01:00
scrawl
5044816770 Remove unused code 2017-03-14 19:27:56 +01:00
scrawl
b66c2abfe3 Build the bounding sphere in the loading thread (only relevant for TerrainGrid) 2017-03-14 19:27:56 +01:00
scrawl
9e9c028f1d Skip light collection for far away terrain 2017-03-14 19:27:56 +01:00
scrawl
0782839a42 Avoid redundant culling tests on the transform/drawable 2017-03-14 19:27:56 +01:00
scrawl
fb8ac06524 Reduce the minSize of quad tree nodes for better performance 2017-03-14 19:27:56 +01:00
scrawl
a041546b54 Use the quad tree's minSize in the LodCallback 2017-03-14 19:27:56 +01:00
scrawl
c22fde2bcd Preload terrain while reading savegame 2017-03-14 19:27:56 +01:00
scrawl
e4e8821902 Refactor update of lodFlags 2017-03-14 19:27:56 +01:00
scrawl
2aa09639a9 Re-enable terrain intersections 2017-03-14 19:27:56 +01:00
scrawl
9371100fde Reuse the intersection visitor and set a traversal number to allow the terrain component to manage its view more efficiently 2017-03-14 19:27:56 +01:00
scrawl
db00d47ca2 Hold a ref to the intersection visitor's view if possible 2017-03-14 19:27:56 +01:00
scrawl
59bf100907 Fill exteriorPositions in preloadFastTravel 2017-03-14 19:27:56 +01:00
scrawl
11bee6ee35 Avoid compiling composite maps that are no longer referenced 2017-03-14 19:27:56 +01:00
scrawl
03c07d3bd5 Remove old code 2017-03-14 19:27:56 +01:00
scrawl
86e75f0987 Preload terrain even when cell preloading is disabled 2017-03-14 19:27:56 +01:00
scrawl
9eed7fa6f5 Fix composite map when force shaders is enabled 2017-03-14 19:27:56 +01:00
scrawl
d055dc25bf Add custom traversal for local map camera to avoid loading terrain nodes that are exactly outside the border to another cell 2017-03-14 19:27:56 +01:00
scrawl
7d50b6c2e2 Add QuadTreeWorld::cacheCell to preload cells at max LOD for local maps 2017-03-14 19:27:56 +01:00
scrawl
6ccb6009ee Use the View-based preloading for TerrainGrid as well 2017-03-14 19:27:56 +01:00
scrawl
3c29e2dbeb Refactor ownership of terrain views 2017-03-14 19:27:56 +01:00
scrawl
28fd492711 Don't use terrain LOD for the map camera 2017-03-14 19:27:56 +01:00
scrawl
e7a0878c10 Add CompositeMapRenderer info to the stats panel 2017-03-14 19:27:56 +01:00
scrawl
ec0b743123 Revert "Change ordering of LocalMap nodes to make sure they are traversed before the CompositeMapRenderer."
This reverts commit 7d72c70c93ee3c0cc3d00d37b22c339d0103cd19.
2017-03-14 19:27:56 +01:00
scrawl
c921620ef3 Compile the drawables of a composite map one by one to avoid frame drops for larger maps 2017-03-14 19:27:56 +01:00
scrawl
47ca8aeee5 Use the time elapsed instead of # compiled as limit 2017-03-14 19:27:56 +01:00
scrawl
8a6d909b22 Fix composite map being compiled twice 2017-03-14 19:27:56 +01:00
scrawl
683e625c6c Rewrite CompositeMapRenderer to be based on Drawable and share the FBO 2017-03-14 19:27:56 +01:00
scrawl
4549196b31 Use the new way of terrain preloading in CellPreloader/Scene 2017-03-14 19:27:56 +01:00
scrawl
4baa795152 Add preloading implementation to QuadTreeWorld 2017-03-14 19:27:56 +01:00
scrawl
9db71e3f62 Recompute the LOD stitching when the view changes 2017-03-14 19:27:56 +01:00
scrawl
ef704db877 Fix reset of changed flag 2017-03-14 19:27:56 +01:00
scrawl
1c15686353 Remove non required use of WorkQueue 2017-03-14 19:27:56 +01:00
scrawl
19d516cbda Use the QuadTreeWorld based on distant terrain setting now that it sort of works. 2017-03-14 19:27:56 +01:00
scrawl
433900fca5 Fix waiting on initial quad tree build 2017-03-14 19:27:56 +01:00
scrawl
4dbd224249 Hide the terrain in non-exterior cells 2017-03-14 19:27:56 +01:00
scrawl
2580de11a4 Refactor ownership of ViewDataMap 2017-03-14 19:27:56 +01:00
scrawl
5a3c645c89 Enable lazy compiling of composite maps 2017-03-14 19:27:56 +01:00
scrawl
99e18f0d68 Clear the ViewData on exit 2017-03-14 19:27:56 +01:00
scrawl
bb991850da Add LOD stitches 2017-03-14 19:27:56 +01:00
scrawl
6bd286d924 Fix unnecessary resizing in ViewData 2017-03-14 19:27:56 +01:00
scrawl
8c151364df Add special handling for CullVisitor to QuadTreeWorld.
- Cull only against bounding box, not bounding sphere, as this appears to perform better.
- Also traverse into non visible nodes to compute their LOD, this is to avoid nodes having to be loaded in when the player turns the view around, and will avoid unnecessary refs/unrefs of rendering data in the View. This should probably be turned off at some point for static cameras, such as the local maps.
2017-03-14 19:27:56 +01:00
scrawl
f19a88be9d Reject QuadTreeNodes with invalid bounds 2017-03-14 19:27:56 +01:00
scrawl
7d004bf757 Preliminary rendering of QuadTreeWorld 2017-03-14 19:27:55 +01:00
scrawl
e36bdb490e Add view data structure for efficient collection of LOD nodes to use for a given camera/intersection 2017-03-14 19:27:55 +01:00
scrawl
0efc54c749 Subdivide the composite maps 2017-03-14 19:27:55 +01:00
scrawl
c684860e3b Change ordering of LocalMap nodes to make sure they are traversed before the CompositeMapRenderer. 2017-03-14 19:27:55 +01:00
scrawl
0756fc4ae6 Optimize getBlendmaps for the general case that most points are within the given cell 2017-03-14 19:27:55 +01:00
scrawl
81c9853fe9 Fix handling in getBlendmaps when the chunk is >1 ESM::Cell 2017-03-14 19:27:55 +01:00
scrawl
b384087e28 Fix handling in fillVertexBuffers when the chunk is >1 ESM::Cell 2017-03-14 19:27:55 +01:00
scrawl
819860081f Remove custom bounding box 2017-03-14 19:27:55 +01:00
scrawl
ce8c4ad4f5 Add quad tree implementation (no rendering yet) 2017-03-14 19:27:55 +01:00
scrawl
2d549d088e Get the world size from the ESM::Land store 2017-03-14 19:27:55 +01:00
scrawl
14225a42c6 Remove unused pointer to IncrementalCompileOperation 2017-03-14 19:27:55 +01:00
scrawl
c487df0abb Move updateTextureFiltering and material into the base class 2017-03-14 19:27:55 +01:00
scrawl
5eff286c71 Use separate node mask and parent for CompositeMapRenderer to allow the loading screen to pre compile composite maps. 2017-03-14 19:27:55 +01:00
scrawl
7e4450da55 Change the renderOrder of composite maps to ensure they are updated before water reflections or other cameras that may be using it. 2017-03-14 19:27:55 +01:00
scrawl
b1d4bb5708 Add CompositeMapRenderer
Temporarily render all terrain using composite maps for testing purposes
2017-03-14 19:27:55 +01:00
scrawl
e323b2fa7b Use the SceneManager's ShaderManager 2017-03-14 19:27:55 +01:00
scrawl
0fc465da59 Store the min/max height in LandData 2017-03-14 19:27:55 +01:00
scrawl
051c17a184 Make reportStats const 2017-03-14 19:27:55 +01:00
scrawl
5fb854036d Use a forward declaration to avoid having to workaround Qt MOC
Don't think that guard was still needed, but a forward declaration is better anyways.
2017-03-14 19:27:55 +01:00
scrawl
80a0398f9d Load LandData into the LandObject to avoid threading conflicts when the same data is being loaded by two threads 2017-03-14 19:27:55 +01:00
scrawl
20d30bb8d7 Move mDataLoaded into LandData 2017-03-14 19:27:55 +01:00
scrawl
16b5cadd9e Fix order of operations w.r.t clearing cache 2017-03-14 19:27:55 +01:00
scrawl
2c68ed4fb4 Remove no longer required use of UnrefQueue as the new resource manager will naturally clear the cache from the worker thread 2017-03-14 19:27:55 +01:00
scrawl
35d53acc65 Factor out terrain chunk loading/caching into a new resource manager 2017-03-14 19:27:55 +01:00
scrawl
274690f790 Refactor BufferCache to allow caching buffers of different sizes 2017-03-14 19:27:55 +01:00
scrawl
9a3a64f0c4 Add resource manager for ESM::Land to allow data to be unloaded when no longer required 2017-03-14 19:27:55 +01:00
scrawl
b898315962 cellpreloader: abort all tasks first before waiting 2017-03-14 19:27:55 +01:00
scrawl
5f76317807 Wait for completion of CreateMapItem on exit to avoid potential threading issue 2017-03-14 19:27:55 +01:00
scrawl
804f873649 terrain: factor out texture caching into a separate class 2017-03-14 19:27:55 +01:00
scrawl
4cd4457d21 Add support for Functors to ObjectCache 2017-03-14 19:27:55 +01:00
scrawl
9d72d9f0c9 Change order of operations in SceneManager::updateCache to allow deleting of StateSets that just got unreferenced by the scene 2017-03-14 19:27:55 +01:00
scrawl
eef63a880a terrain: use a custom drawable for multi-pass render instead of osgFX::Effect
osgFX::Effect is awkward to use because of the lazy-definition of passes, no support for compileGLObjects, useless 'Technique' abstraction and having to define silly methods like 'effectAuthor()'

Handling the multi-pass rendering inside the Drawable also avoids redundant culling tests against the same bounding box for each pass.
2017-03-14 19:27:55 +01:00
scrawl
34130fc5cc Fix handling in LightListCallback when the node is not a Group 2017-03-14 19:27:55 +01:00
scrawl
b78a9f89af Refactor LightListCallback to allow for integration in custom Drawables. 2017-03-14 19:27:55 +01:00
scrawl
ccfebdd2c3 Set the underwater fog relative to default view distance 2017-03-14 19:27:44 +01:00
David Cernat
bbedf888b2 [Documentation] Add subreddit link to readme 2017-03-14 14:07:33 +02:00
David Cernat
0c4447dfd0 [Documentation] Update readme and credits 2017-03-14 14:02:05 +02:00
David Cernat
d94850fbdf Merge pull request #184 from OpenMW/master
Code style
2017-03-14 13:24:24 +02:00
scrawl
fe439e7bbf Add missing default material state for character preview 2017-03-14 05:02:31 +01:00
scrawl
37c71c15f2 Remove redundant state 2017-03-14 04:57:36 +01:00
scrawl
4c9bbce1e2 Fix node mask being reset 2017-03-14 01:01:50 +01:00
scrawl
c1fe9f2a89 Avoid warping the mouse cursor more than necessary
Apparently, the SDL_WarpMouseInWindow can be very expensive (anywhere from 0.1-5ms) due to XSync() in the implementation.

This was causing no-grab=1 configurations to suffer from terrible stuttering when turning the view.
2017-03-14 00:31:27 +01:00
David Cernat
e0234dc362 Merge pull request #183 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
#	CMakeLists.txt
2017-03-13 18:20:07 +02:00
MiroslavR
a8517c34eb Code style 2017-03-13 13:57:05 +01:00
scrawl
a556475fae Explicitely set the user data type to avoid const/non-const mismatch 2017-03-13 02:48:23 +01:00
scrawl
5de5be77f3 Fix Ptr/ConstPtr userdata mismatch (Bug #3784) 2017-03-13 02:48:23 +01:00
scrawl
928e2061f7 Remove redundant tolower 2017-03-13 02:48:23 +01:00
scrawl
13a6070629 Remove warning spam in skeleton.cpp
If the root bone is missing, that is caused by all bones being missing which will have been logged already.
2017-03-13 02:48:22 +01:00
scrawl
e093a30736 Update AUTHORS.md 2017-03-13 02:34:25 +01:00
scrawl
a9b5ea4f8c Merge pull request #1224 from schwitzerm/master
fix skill window update
2017-03-13 02:33:21 +01:00
Mitchell Schwitzer
421b92ae05 fix styling & add missing lines regarding max proficency 2017-03-12 17:24:43 -07:00
Mitchell Schwitzer
f31e5ba85e fix display maximum proficency reached 2017-03-12 17:02:07 -07:00
Mitchell Schwitzer
7960d5a9a7 fix skill progress bar v2
both widgets display their own progess indicator. it was being set for
value (when you hovered over the level of your skill, eg the "5" in
"Acrobatics    5"), but not for the name.

this fixes that, but the progress information is being stored/displayed
by two different widgets for one skill
2017-03-12 16:52:29 -07:00
Mitchell Schwitzer
465b7361e1 fix skill window update
invoke winMgr->updateSkillArea() in mechanicsmanagerimp.cpp after looping
over ESM::Skill::SkillEnum if any updates have occurred.
2017-03-12 15:18:02 -07:00
Koncord
3d294500ba [General] Use std::replace() instead for-each in Utils::convertPath() 2017-03-08 12:06:47 +08:00
scrawl
809f5cd01b Fix bad override 2017-03-08 01:28:56 +01:00
scrawl
21aad00612 Don't pass key events to the viewer when Alt modifier is held
Fixes the stats panel briefly showing up when using 'Alt+F4' to exit.
2017-03-08 01:27:04 +01:00
scrawl
fc95a45cb6 Don't pass repeat key events to the viewer's eventQueue 2017-03-08 01:27:04 +01:00
scrawl
70841ea3b7 Merge pull request #1222 from OpenMW/macos-nightly
Setup macOS nightly builds on Travis
2017-03-08 01:26:23 +01:00
scrawl
a6429a2518 Merge pull request #1223 from MiroslavR/rifle_sounds
Fix for incorrect gun sounds with the Clean Hunter Rifles mod
2017-03-07 22:06:20 +01:00
Nikolay Kasyanov
7f429f26e1 Allow getting available version information even when clone is shallow 2017-03-07 21:53:49 +01:00
Nikolay Kasyanov
e24cb0fe5d [macOS, CI] Configure deployment of nightly builds to FTP 2017-03-07 21:53:49 +01:00
MiroslavR
af1fe64408 GetSoundPlaying called on an equipped item now also looks for sounds played by the equipping actor (Fixes #3781) 2017-03-07 19:00:09 +01:00
David Cernat
90387aedea Merge pull request #182 from OpenMW/master
Add OpenMW commits up to 5 Mar 2017
2017-03-06 18:40:13 +02:00
Koncord
2a723279b1 [Client] Send ID_GAME_PREINIT packet 2017-03-06 22:52:18 +08:00
Koncord
2c26ed8aee [Server] Process ID_GAME_PREINIT packet 2017-03-06 22:51:17 +08:00
Koncord
435d9780a7 [General] Fix PacketPreInit 2017-03-06 18:40:53 +08:00
Koncord
690211ad99 [General] Extract BaseEvent & BasePlayer from packets to functions
Move Send and Read functions to BasePacket
2017-03-06 18:40:07 +08:00
Nikolay Kasyanov
57c5ecfba8 [macOS, CI] Use most recent prebuilt dependencies 2017-03-05 23:01:16 +01:00
Nikolay Kasyanov
f1abc5d7cb [macOS, CI] Use Release configuration 2017-03-05 23:01:16 +01:00
Nikolay Kasyanov
672aa80dc5 Revert "Make Travis build test-release-build-on-travis"
4eb5183d73
2017-03-05 14:05:19 +01:00
Koncord
6076346df4 [Client] Add Networking::preInit() method 2017-03-05 16:55:05 +08:00
Koncord
0c1905e842 [General] Add PreInit packet 2017-03-05 16:46:11 +08:00
Koncord
0d53a6916d [General] Move repeated code in Packet() to base class 2017-03-05 16:27:41 +08:00
David Cernat
df051a777a Merge pull request #181 from OpenMW/master
Add OpenMW commits up to 4 Mar 2017
2017-03-04 22:56:16 +02:00
scrawl
c1b1d502ee Fix up commit 330e5fefd1 2017-03-04 21:48:31 +01:00
scrawl
4123398cbc Change no-grab setting to respect the value given 2017-03-04 21:48:31 +01:00
scrawl
7eb48ea83b Don't wrap mouse to window bounds when the gamepad axis did not move and fix off-by-one error 2017-03-04 21:48:31 +01:00
scrawl
4051018862 optimizer: fix FlattenStaticTransformsVisitor not respecting the is permissible callback 2017-03-04 21:48:31 +01:00
scrawl
5866f0f80b Add OPENMW_OPTIMIZE env variable to help debugging optimizer-related issues
Example:

OPENMW_OPTIMIZE=OFF
OPENMW_OPTIMIZE="~FLATTEN_STATIC_TRANSFORMS"
2017-03-04 21:48:31 +01:00
scrawl
42a04de37c Fix a crash that occurred when a carried light fails to be attached. 2017-03-04 21:48:31 +01:00
scrawl
2776727794 Allow gamepad and mouse/keyboard to be used at the same time (Fixes #3093) 2017-03-04 21:48:31 +01:00
scrawl
29556a1802 More consistent wording of errors/warnings
A Warning indicates a potential problem in the content file(s) that the user told OpenMW to load. E.g. this might cause an object to not display at all or as intended, however the rest of the game will run fine.

An Error, however, is more likely to be a bug with the engine itself - it means that basic assumptions have been violated and the engine might not run correctly anymore.

The above mostly applies to errors/warnings during game-play; startup issues are handled differently: when a file is completely invalid/corrupted to the point that the engine can not start, that might cause messages that are worded as Error due to the severity of the issue but are not necessarily the engine's fault.

Hopefully, being a little more consistent here will alleviate confusion among users as to when a log message should be reported and to whom.
2017-03-04 21:48:31 +01:00
Nikolay Kasyanov
4eb5183d73 Make Travis build test-release-build-on-travis 2017-03-04 21:44:14 +01:00
David Cernat
82dcec5ec5 [Server] Use consistent pattern for script function category names 2017-03-04 14:11:17 +02:00
Koncord
cea1425db1 [Client] Remove redundant newlines & keep ~120 columns 2017-03-04 14:55:35 +08:00
Koncord
4015c3e9a9 [Client] Use constant instead magic value in Lerp function 2017-03-04 14:24:26 +08:00
Koncord
a10cf4360c [Client] Print all esm/esp files in load queue with idx & CRC32 checksum 2017-03-04 13:23:26 +08:00
Koncord
9199446edd [Client] Add Files::Collections to Main::init() arguments 2017-03-04 13:11:46 +08:00
Koncord
c353e18645 [General] Move Utils from server to components
Rewrite CRC32 functions to the Boost equivalent
2017-03-04 13:08:22 +08:00
David Cernat
9cffc1f661 [Client] Don't open up main menu when player's death animation finishes 2017-03-04 02:29:57 +02:00
David Cernat
0d32bf5943 [General] Add extra death debug, don't request data from player on death 2017-03-04 00:29:01 +02:00
David Cernat
c4b11a1251 [Client] Remove now unused sendData() and BitStream declarations 2017-03-04 00:17:16 +02:00
David Cernat
cf6de6c474 [Client] Update old packet-sending code in LocalPlayer and GUIChat 2017-03-03 23:36:29 +02:00
David Cernat
a2ef39c655 Merge pull request #178 from OpenMW/master
Add OpenMW commits up to 2 Mar 2017
2017-03-02 22:14:15 +02:00
David Cernat
6887930c04 [Client] Let scripts handle respawn point instead of hardcoding it 2017-03-02 22:12:46 +02:00
scrawl
599f0a36eb Update AUTHORS.md 2017-03-02 18:37:13 +01:00
scrawl
1692b7f38e Merge pull request #1209 from dhustkoder/master
Added ConstContainerStoreIterator (Task #3092)
2017-03-02 18:36:21 +01:00
scrawl
62cc091414 Fix incorrect setting of TexMat in terrain material 2017-03-02 18:07:01 +01:00
scrawl
a759ef5d2e Leave the MyGUI::PixelFormat as Unknown when loading from file as its not required. 2017-03-01 19:04:05 +01:00
scrawl
8fc7942d64 Refactor osgMyGUI::OSGTexture to store width/height inside the object 2017-03-01 19:04:05 +01:00
David Cernat
db8218545f Merge pull request #177 from OpenMW/master
Add OpenMW commits up to 1 Mar 2017
2017-03-01 18:24:26 +02:00
scrawl
d8505e4f48 Fix a multithreading crash caused by modification of live Geometry 2017-03-01 03:36:04 +01:00
scrawl
2873c10284 Clean the object root of StateSets and hidden nodes 2017-03-01 03:09:32 +01:00
scrawl
4e0011bfc8 Improve NPC loading performance by caching the cleaned objectRoot 2017-03-01 03:00:49 +01:00
scrawl
058681ad73 ShaderVisitor: avoid reset of rig geometry when not required 2017-03-01 03:00:08 +01:00
Rafael Moura
6c2ce2b2a1 Porting more ContainerStoreIterator usage to const version #4
removed const_cast revision
2017-02-28 19:11:00 +00:00
Rafael Moura
7fa2703715 Porting more ContainerStoreIterator usage to const version #3 2017-02-28 14:31:51 +00:00
David Cernat
03984685e5 [Client] Remove unnecessary type specifiers 2017-02-28 12:35:51 +02:00
David Cernat
5c269a5f8d [General] Rename ID_GAME_DIE and ID_GAME_RESURRECT 2017-02-28 01:38:25 +02:00
David Cernat
4aaa9ed694 [General] Update version to 0.5.2 2017-02-28 00:11:36 +02:00
Rafael Moura
18a4b64f1a Porting more ContainerStoreIterator usage to const version #2 2017-02-27 21:50:10 +00:00
David Cernat
e6bc7ad463 [General] Make all flying players fly correctly, including TCL users 2017-02-27 23:01:33 +02:00
David Cernat
48125913c3 Merge pull request #175 from OpenMW/master
Add OpenMW commits up to 27 Feb 2017
2017-02-27 12:09:47 +02:00
Koncord
0442ebd607 [Server] Remove redundant newlines & keep ~120 columns 2017-02-27 17:13:07 +08:00
Koncord
83d0cbedb2 [Server] Remove redundant type casts 2017-02-27 16:29:28 +08:00
Koncord
8f96ca22c1 [Server] Fix typo in RakNet name 2017-02-27 16:25:29 +08:00
Koncord
aa91126ce3 [Server] Minor cleanup in Networking 2017-02-27 16:23:14 +08:00
David Cernat
02487dce13 [Client] Prevent invalid race used by other player from freezing client 2017-02-27 01:45:27 +02:00
scrawl
0772a03e98 Print the object ID that animateCollisionShapes did not find the node for 2017-02-27 00:41:27 +01:00
scrawl
1402e0b872 Don't optimize billboard nodes (Fixes #3774) 2017-02-27 00:39:35 +01:00
David Cernat
4110fac629 Merge pull request #174 from OpenMW/master
Add OpenMW commits up to 26 Feb 2017, part 2
2017-02-27 01:05:02 +02:00
David Cernat
8c8414f098 [Client] Spawn DedicatedPlayer in center of exterior cell 0,0 2017-02-27 01:02:59 +02:00
scrawl
d4781d419f Merge pull request #1220 from MiroslavR/tcl_collision
Fix actors colliding with noclipping player
2017-02-26 23:27:40 +01:00
scrawl
706ac45c76 Fix missing particles caused by shallow copy of ParticleSystemController 2017-02-26 23:10:41 +01:00
scrawl
9b27ec4945 Remove redundant and ambiguous NiNode::makeBone()
Ambiguous because a skeleton can have multiple skinned meshes, with their own bone weights/bind matrix each.
2017-02-26 22:39:23 +01:00
scrawl
aba3c471a9 nifloader: fix setting of dataVariance for non-controlled bones and refactor the code 2017-02-26 22:34:45 +01:00
Rafael Moura
05cc69f6f1 Porting more ContainerStoreIterator usage to const version 2017-02-26 21:24:51 +00:00
David Cernat
684517e02f [Server] Fix Miscellaneous category of script functions 2017-02-26 23:07:52 +02:00
David Cernat
0baada0aa2 [Server] Add GetLastPlayerId() script function in Miscellaneous category 2017-02-26 23:00:51 +02:00
David Cernat
deb10919ab [Server] Delete cells that become empty when a player disconnects 2017-02-26 19:45:04 +02:00
scrawl
6f4c03aa32 Avoid retrieving setting every frame 2017-02-26 17:34:24 +01:00
David Cernat
048ddf6a34 [Server] Use LOG_APPEND for older debug messages in Cell 2017-02-26 18:06:26 +02:00
David Cernat
a58601fb2b [Client] Delineate tes3mp-only code more clearly, part 1 2017-02-26 16:59:53 +02:00
David Cernat
341ec28b1f [Client] Don't allow actors to cast spells that don't exist on client 2017-02-26 15:34:15 +02:00
David Cernat
5d30ba0abd Merge pull request #173 from OpenMW/master
Add OpenMW commits up to 26 Feb 2017
2017-02-26 14:13:37 +02:00
David Cernat
fb93ce57f9 [Server] Fix debug message 2017-02-26 14:12:18 +02:00
David Cernat
ae37daca70 [Server] Ensure no information exchange takes place with nullptr player 2017-02-26 14:11:45 +02:00
David Cernat
7f51ca5298 [Server] Add permanent debug to Cell and CellController 2017-02-26 14:06:34 +02:00
Koncord
366c24ab04 [CI] Update secure token 2017-02-26 19:31:15 +08:00
MiroslavR
498a3d450b Fix actors colliding with noclipping player 2017-02-26 04:28:28 +01:00
scrawl
5caf53b6a3 optimizer: avoid reordering nodes
Fixes an osgParticle cloning issue.

(Fixes #3773)
2017-02-26 03:25:17 +01:00
scrawl
a95773beef Fix unnecessary copy of ParticleSystem in SceneUtil::CopyOp 2017-02-26 03:15:57 +01:00
David Cernat
9035908f6d [Client] Spawn DedicatedPlayer in exterior 0,0 (for other master files) 2017-02-25 23:18:50 +02:00
scrawl
585524805f Add 'tri ' variant of part filters to optimizer ignore list 2017-02-25 21:48:07 +01:00
David Cernat
0527690b88 [Server] Add permanent debug to ID_PLAYER_CELL_CHANGE and ID_CONTAINER 2017-02-25 21:50:41 +02:00
David Cernat
7917badedf [Server] Set guid of baseEvent, previously done in a constructor before 7065569f9b 2017-02-25 17:37:44 +02:00
David Cernat
c63be981d2 [Documentation] Update change log slightly 2017-02-25 13:31:01 +02:00
David Cernat
2fd279a5ef [Server] Remove debug message 2017-02-25 13:26:57 +02:00
Koncord
1956045e99 [Browser] Fix continuous loop when connection was failed 2017-02-25 19:22:10 +08:00
David Cernat
4a5b8c927f [Server] Add an extra check to Cell::sendToLoaded to be on the safe side 2017-02-25 12:44:20 +02:00
David Cernat
060e440ab2 [General] Update version to 0.5.1 2017-02-25 12:17:22 +02:00
Koncord
45d081ba42 [Server] Compare new cells with loaded cells correctly 2017-02-25 16:47:11 +08:00
Battlerax
c9dc75f589 [Browser] Fixed two crashes relating to invalid data 2017-02-25 07:59:48 +03:00
Battlerax
76e866c5c9 [Browser] Crash Fix 2017-02-25 07:59:48 +03:00
David Cernat
ff0d21ef38 [Client] Spawn in 0,0 if Pelagiad doesn't exist (for other master files) 2017-02-24 19:42:33 +02:00
David Cernat
aab5b69c80 [Client] Unready weapon & spell upon death to avoid attack inability bug 2017-02-24 11:50:43 +02:00
David Cernat
a94d1ed296 Merge pull request #169 from OpenMW/master
Add missing copy of callbacks when a Transform is replaced by Group
2017-02-24 09:56:54 +02:00
Battlerax
186e3c2337 [Browser] Crash fix (#168)
* [Browser] Crash Fix

* Update NetController.cpp
2017-02-24 09:52:52 +02:00
scrawl
48e0f098ff Add missing copy of callbacks when a Transform is replaced by Group
(Fixes #3770)
2017-02-24 07:38:03 +01:00
Koncord
3adbf17545 [Server] Fix memory leak in CellController 2017-02-24 13:58:40 +08:00
Koncord
715422aff6 [General] Fix memory leak in Log dtor 2017-02-24 13:41:11 +08:00
Koncord
ebaf3d3cc9 [Server] FIx memory leak 2017-02-24 13:32:20 +08:00
David Cernat
328e3b6618 Merge pull request #167 from OpenMW/master
Add OpenMW commits up to 24 Feb 2017
2017-02-24 06:57:39 +02:00
Koncord
b33e604a61 [Server] Set sendToLoaded function as constant
Add assertions for CellController singleton
2017-02-24 12:33:59 +08:00
Koncord
e3f4c63ea6 [General] Delete invalid & redundant code 2017-02-24 12:30:18 +08:00
scrawl
330e5fefd1 optimizer: consider a Group with more than one child redundant as well
While there could be some value in this hierarchy (i.e. improved culling), we don't know if this is being used sensibly; and using a 'flat' hierarchy helps other optimizations.
2017-02-24 02:58:41 +01:00
scrawl
75677f03e7 Remove SceneManager::notifyAttached 2017-02-24 02:58:41 +01:00
scrawl
afa39d121f Fix 'part has no parent' warning caused by destructing in the wrong order 2017-02-24 02:58:41 +01:00
scrawl
a55604c549 Avoid unnecessary AABB update when actor position has not changed 2017-02-24 02:58:41 +01:00
scrawl
fb073e5c14 Avoid unnecessary AABB update for rotationally invariant collision shapes 2017-02-24 02:58:41 +01:00
scrawl
5198fc897d Fix collision glitch caused by Bullet AABB not being updated when an actor moves without turning 2017-02-24 02:58:41 +01:00
scrawl
3df7a8c4d8 Avoid FLATTEN_STATIC_TRANSFORMS optimization for non-Geometry drawables 2017-02-24 02:58:41 +01:00
scrawl
e4c12e5e56 optimizer: don't merge Geometry that has transparency sorting enabled 2017-02-24 02:58:27 +01:00
scrawl
ebfd845eae optimizer: run MERGE_GEOMETRY after removing redundant nodes 2017-02-23 23:28:50 +01:00
scrawl
43f31d6e54 optimizer: fix MERGE_GEOMETRY to work with Geometries not attached to a Geode 2017-02-23 23:28:50 +01:00
scrawl
f2a323238f optimizer: merge groups as part of REMOVE_REDUNDANT_NODES 2017-02-23 23:28:50 +01:00
scrawl
af716d4b61 optimizer: remove hardcoded condition in RemoveRedundantNodesVisitor 2017-02-23 23:28:50 +01:00
scrawl
698738c649 optimizer: use asXYZ() instead of dynamic_cast 2017-02-23 23:28:50 +01:00
scrawl
f7cb4bd245 optimizer: remove some cruft 2017-02-23 23:28:50 +01:00
scrawl
e33829d493 Add fork of osgUtil::Optimizer with backported fixes that have not been released yet
Remove optimizers that won't be used.
2017-02-23 23:28:50 +01:00
scrawl
5e2335f250 Use the osgUtil::Optimizer post loading in the SceneManager 2017-02-23 23:28:50 +01:00
scrawl
305cccd263 Don't print Geometry data (vertices, triangles, etc.) in showscenegraph 2017-02-23 23:28:50 +01:00
scrawl
4e5a1e6123 nifloader: improve setting of DataVariance 2017-02-23 23:28:50 +01:00
scrawl
1d6b5b2a52 Add StringUtils::CiComp operator 2017-02-23 23:28:50 +01:00
scrawl
25ca89b560 Avoid redundant allocations in Store::search 2017-02-23 23:28:50 +01:00
scrawl
6e996bf2a3 Create TriShapes with an identity transform as a Group 2017-02-23 23:28:50 +01:00
scrawl
6e5d9efa93 Remove NifLoader::optimize, to be replaced with something better 2017-02-23 23:28:50 +01:00
scrawl
c231b06320 Remove boneOffset node after using it 2017-02-23 23:28:50 +01:00
scrawl
d75a3fd0fb Add SharedStateManager to the stats panel 2017-02-23 23:28:49 +01:00
scrawl
732212070d crashcatcher: complain when launching gdb fails 2017-02-23 23:28:49 +01:00
David Cernat
0d6636018f Merge pull request #166 from OpenMW/master
Add OpenMW commits up to 23 Feb 2017
2017-02-23 14:37:14 +02:00
Koncord
cbace41e14 [Client] Fix crash on LInux 2017-02-23 17:40:22 +08:00
Marc Zinnschlag
8e82c161c6 updated credits file 2017-02-23 09:11:36 +01:00
Marc Zinnschlag
765401531d Merge remote-tracking branch 'origin/master' 2017-02-23 09:03:31 +01:00
David Cernat
ed2176c984 [Client] Reuse 1 BaseEvent over and over instead of creating new ones 2017-02-23 09:19:09 +02:00
Koncord
b158e89f77 [Server] Change signatures of GetLastEventAction & SetScriptEventAction 2017-02-23 15:17:00 +08:00
Koncord
059043fea9 [General] Change signature of BaseEvent::action 2017-02-23 15:16:28 +08:00
Koncord
cbe31149e3 [Server] Remove redundant constructor 2017-02-23 14:36:35 +08:00
David Cernat
af35ee38d1 [Server] Rename ClearScriptEvent into InitScriptEvent with pid argument 2017-02-23 08:23:46 +02:00
Koncord
868c837aa0 [Server] Move baseEvent from Networking.cpp to class as member 2017-02-23 13:53:10 +08:00
David Cernat
7065569f9b [Server] Reuse 2 BaseEvents over and over instead of creating new ones 2017-02-23 07:47:00 +02:00
David Cernat
1b59ce8c8f [Client] Send ID_PLAYER_DRAWSTATE when teleported by server 2017-02-23 06:26:42 +02:00
Koncord
f8a25747ba [Client] Some tabs have been killed in GUIChat 2017-02-23 11:48:10 +08:00
Stanislav Zhukov
8f9b831662 Update tes3mp-credits.md 2017-02-23 11:14:08 +08:00
David Cernat
586a7f6656 [Client] Prevent DedicatedPlayer from spawning on ground from 0 fatigue 2017-02-23 04:35:07 +02:00
David Cernat
fb34e2c4ba Revert "[Build] Fix for MSYS2 build while maintaining MSVC fix"
This reverts commit faf1c416f3.
2017-02-23 02:29:25 +02:00
David Cernat
4b497a18c6 Merge pull request #165 from Battlerax/battlerax-dev
[Build] Fix for MSVC linking issue with RakNet while maintaining MSYS2 compatibility
2017-02-23 02:23:27 +02:00
Battlerax
79e996aed3 Merge pull request #3 from Battlerax/master
tes3mp & openmw changes
2017-02-22 17:49:29 -06:00
Battlerax
090b9af987 Merge pull request #2 from TES3MP/master
tes3mp & openmw changes
2017-02-22 17:47:49 -06:00
David Cernat
d4ff136837 [Client] Add comments about spellcasting as a result of merge conflict 2017-02-23 01:05:45 +02:00
David Cernat
38ccc2671c Merge pull request #164 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwmechanics/spellcasting.cpp
2017-02-23 00:52:53 +02:00
Battlerax
faf1c416f3 [Build] Fix for MSYS2 build while maintaining MSVC fix 2017-02-22 16:22:05 -06:00
Battlerax
b47260f9dc [Build] Fixed linker issue 2017-02-22 15:49:46 -06:00
David Cernat
b373a3e0ba Merge pull request #163 from Battlerax/battlerax-dev
[Client] You can now cancel the chat box by pressing enter without a message
2017-02-22 23:13:28 +02:00
Battlerax
fd845198ad [Client] You can now cancel the chat box by pressing enter without a message. 2017-02-22 15:03:59 -06:00
Battlerax
ba4b77f2c3 Merge pull request #1 from TES3MP/master
tes3mp changes
2017-02-22 14:54:33 -06:00
scrawl
d163228199 Fix updatePtr 2017-02-22 21:02:34 +01:00
scrawl
00d4fea91c Derive Animation from osg::Referenced to allow the UnrefQueue to delete it 2017-02-22 15:27:20 +01:00
scrawl
a5247394dc (Re)set the inventory listener outside of the Animation class 2017-02-22 15:08:22 +01:00
scrawl
8f79fa3d72 Add resource statistics panel opened with F4 2017-02-22 14:28:45 +01:00
Koncord
68c288761a [Server] Send other players position to loader 2017-02-22 16:56:09 +08:00
Koncord
b0ebad8b83 [Client] Fix crash on Linux 2017-02-22 16:30:07 +08:00
Koncord
b1460cf010 [Server] Send ID_PLAYER_POS every ID_PLAYER_CELL_CHANGE 2017-02-22 14:05:40 +08:00
David Cernat
90275f777e [Client] Don't crash when dying while inside a container 2017-02-22 06:41:25 +02:00
Koncord
443c0ed309 [Server] Fix Cell iterators 2017-02-22 12:03:03 +08:00
David Cernat
67b67ce1c4 [Client] Don't automatically rescale objects on cell change 2017-02-22 04:21:25 +02:00
scrawl
b40ca9b60a Set the window rectangle on the Viewer's EventQueue 2017-02-22 01:49:54 +01:00
David Cernat
e4ae8c5f9f [Client] Cancel drag for teleported players, fix ID_OBJECT_SCALE debug 2017-02-22 02:44:00 +02:00
scrawl
3693f05ef5 Transform world-space particle systems in update callback so that animations are accounted for 2017-02-21 23:27:20 +01:00
scrawl
0fbd29ccb8 Use additive alpha blending on the character preview 2017-02-21 18:29:18 +01:00
scrawl
e38221edc9 Set character preview's simulationTime to 0 to avoid flickering lights 2017-02-21 18:25:25 +01:00
scrawl
c45013c983 Fix particle systems not being rendered in their first frame 2017-02-21 18:15:30 +01:00
scrawl
a45335ffc3 Do not reduce magicka in god mode 2017-02-21 16:33:18 +01:00
scrawl
eefe1ed1a8 Fix being affected by Silence in god mode 2017-02-21 15:48:45 +01:00
FedeWar
e9076088ca Another tab fix 2017-02-21 11:51:11 +01:00
FedeWar
4e7f7cf84f Fixed tabs 2017-02-21 11:49:04 +01:00
Koncord
3d88e657cd [Server] Fix printVersion() for ARM 2017-02-21 18:25:41 +08:00
FedeWar
370c12e78a Verification results are ordered by Type in alphabetical order. 2017-02-21 11:15:53 +01:00
Koncord
a75da18f31 [Server] Fix argument in log message 2017-02-21 18:14:02 +08:00
Koncord
7dde4db1fb [Server] Add FORCE_LUA parameter to CMakeLists.txt 2017-02-21 18:04:06 +08:00
David Cernat
a1988ac6ef Merge pull request #161 from OpenMW/master
Add OpenMW commits up to 21 Feb 2017
2017-02-21 07:02:59 +02:00
scrawl
b9740fd2a1 Fix btHeightFieldTerrainShape triangle layout to match rendering 2017-02-21 04:47:11 +01:00
scrawl
4aa40d16bc Increase the importance of light radius when sorting lights (Bug #2759) 2017-02-21 04:32:59 +01:00
scrawl
3f27c8cc97 Always print context for script warnings to remove the need for verbose option
(Fixes #2813)
2017-02-21 04:32:59 +01:00
David Cernat
d9229071ef [Browser] Move password column to the right and shorten its name 2017-02-21 02:56:00 +02:00
David Cernat
58795119b6 [Server] Add debug about information exchange in ID_PLAYER_CELL_CHANGE 2017-02-21 02:41:07 +02:00
David Cernat
37e7d2c15b [Client] Don't get invalid cells in LocalPlayer::sendJournalEntry() 2017-02-21 02:09:39 +02:00
David Cernat
b320910c5f [Client] Don't add/remove all spells from ingame scripts for LocalPlayer 2017-02-21 01:22:21 +02:00
David Cernat
bf2f932e18 [Client] If in a container, don't crash when teleported to another cell 2017-02-21 01:01:30 +02:00
David Cernat
f5470e0b49 [Client] Print cell descriptions for WorldEvents only once 2017-02-21 00:20:19 +02:00
David Cernat
92439e6e62 [Client] Reduce WorldPacket debug because it can cause freezes 2017-02-20 23:48:08 +02:00
David Cernat
96d01fcde4 [Server] Stop resending attacks because they cause infinite death loops 2017-02-20 22:19:39 +02:00
scrawl
9728a6967e Reset fall height when teleporting (Fixes #2629) 2017-02-20 20:27:05 +01:00
scrawl
05ad0dca34 Use ActionTeleport in COE/COC commands 2017-02-20 20:26:45 +01:00
David Cernat
ca0b1a8813 [Browser] Change column names slightly 2017-02-20 20:58:56 +02:00
scrawl
7e02bb7348 Preload summoned creature models before the spell is cast 2017-02-20 19:58:00 +01:00
scrawl
22482b7eec Don't use xmesh.nif over mesh.nif for classes that don't make use of the separated keyframes 2017-02-20 19:04:02 +01:00
Koncord
81513082ff [Browser] Some tweaks to password column 2017-02-21 01:13:09 +08:00
Koncord
edfade2a90 [Server] Some fixes in requests to the master server 2017-02-21 01:02:00 +08:00
Koncord
b7ab831c46 [Server] Update MasterClient to new protocol 2017-02-20 23:14:59 +08:00
Koncord
6f2d12d2c6 [Browser] Add ability for connect to passworded servers 2017-02-20 22:40:09 +08:00
Koncord
0e92f43822 [Browser] Add version column 2017-02-20 22:40:09 +08:00
Koncord
ea9c31a8f7 [Client] Add password to client params and to config file 2017-02-20 22:40:09 +08:00
Koncord
158e9b3b09 [Server] Add ability to set password to server from config & scripts 2017-02-20 22:40:09 +08:00
David Cernat
3e50cf60e7 [General] Update version to 0.5.0 2017-02-20 15:05:12 +02:00
Koncord
78f5a760f4 [Server] Use variable instead method in Player. 2017-02-20 20:46:20 +08:00
Koncord
ec4d016100 [Server] Don't crash server every time a player disconnects. Again. 2017-02-20 20:44:01 +08:00
David Cernat
13a47b400d [Documentation] Update project readme 2017-02-20 14:27:56 +02:00
Koncord
ee494887e1 [Server] Fix log message 2017-02-20 19:45:43 +08:00
David Cernat
e909652b9b [Documentation] Update changelog and credits 2017-02-20 13:32:28 +02:00
David Cernat
a4526605a6 [General] Remove goldValue from ContainerItem because it is never useful 2017-02-20 12:31:11 +02:00
David Cernat
7321774ae2 Merge pull request #160 from TES3MP/tes3mp-LoadedCell
[Server] Don't crash server every time a player disconnects
2017-02-20 01:49:49 +02:00
David Cernat
b829f0252a [Server] Don't crash server every time a player disconnects 2017-02-20 01:47:39 +02:00
David Cernat
cdffbc05f7 Merge pull request #159 from OpenMW/master
Add OpenMW commits up to 19 Feb 2017
2017-02-19 23:47:32 +02:00
David Cernat
00cddabc12 Merge pull request #158 from TES3MP/tes3mp-LoadedCell
Add functionality for storing cell loads on the server
2017-02-19 23:45:54 +02:00
David Cernat
3e031faa96 [Server] Exchange position information correctly between players 2017-02-19 23:30:43 +02:00
David Cernat
ed91f20cd3 [General] Print action used for ID_CONTAINER when receiving one 2017-02-19 23:11:26 +02:00
David Cernat
24251cafd0 [Server] Send large ID_CONTAINER packets on a need-to-know basis 2017-02-19 20:20:44 +02:00
David Cernat
791089d342 [Server] Add Cell::sendToLoaded() for sending events to loaded players 2017-02-19 19:42:16 +02:00
David Cernat
eb0744aa77 [Server] Add CellController:getCell() for getting Cell through ESM::Cell 2017-02-19 19:39:53 +02:00
David Cernat
ee1ba1728e [Server] Rename getCellByID() into getCellByName() to avoid confusion 2017-02-19 18:37:20 +02:00
David Cernat
275dfaf05f [Server] Add Cell::getDescription() for debugging purposes 2017-02-19 17:27:38 +02:00
Rafael Moura
9963601484 Porting code to ConstContainerStoreIterator #1 2017-02-19 15:18:35 +00:00
David Cernat
887b436ee7 [Server] Make style for new methods consistent with rest of project 2017-02-19 16:53:15 +02:00
Koncord
fd36ec7613 [Server] Iterate cells where player was loaded instead all 2017-02-19 22:43:57 +08:00
Koncord
67099e437a [Server] Remove player from Cells when disconnected 2017-02-19 22:27:00 +08:00
Koncord
f2ce46ffed [Server] Rename doForNearest to forEachLoaded 2017-02-19 21:32:25 +08:00
scrawl
3b24bb9a5e Use OS X cursor workaround for GL_VENDOR ATI and add an environment variable for control 2017-02-19 13:46:40 +01:00
Koncord
3aae782a51 [Server] Send info about loader to others 2017-02-19 20:41:50 +08:00
Koncord
465d0fe4b4 [Server] Fix log messages in CellController 2017-02-19 20:38:17 +08:00
Koncord
ca68831395 [Server] Rename sendToNearest to sendToLoaded 2017-02-19 20:37:26 +08:00
scrawl
481c440698 Print OSG version on startup 2017-02-19 13:26:45 +01:00
Koncord
931ecd5acb [Server] Imrpove debug info in CellController 2017-02-19 19:29:14 +08:00
Koncord
cce49e355a [Server] Some fixes to sendToNearest & doForNearest 2017-02-19 18:44:52 +08:00
scrawl
e4741db069 Merge pull request #1213 from Allofich/equip
Change AI equip logic
2017-02-19 10:47:19 +01:00
Koncord
033472d939 [Server] Add doForNearest function 2017-02-19 17:42:39 +08:00
Koncord
b760015071 [Server] Send some packets only to nearest players 2017-02-19 16:46:42 +08:00
Koncord
846ceacc90 [Server] Add begin & end iterators to Cell class 2017-02-19 16:21:40 +08:00
Koncord
bbc062de62 [Server] Use lowCamelCase in Cell 2017-02-19 16:07:44 +08:00
Koncord
08f78e21c1 [Server] Use CellController in Networking 2017-02-19 13:27:39 +08:00
Koncord
8887a267c7 [Server] Add Cell and CellController 2017-02-19 13:27:10 +08:00
David Cernat
b1009ad33d [Server] Add GetContainerItemActionCount() for getting drag count 2017-02-19 00:11:09 +02:00
David Cernat
4f2b88df8a [General] Remove owner var from ContainerItem because it is always empty 2017-02-18 23:59:02 +02:00
MAtahualpa
fb8a2093cd Replace "Female" check box with a combo box, part 2/2 (fixes #3757)
Replaces the "Female" check box in BodyPart records with a "Gender" combo box. This is the second of two related fixes, the first one covering NPC records.

Related issue:
- Fixes #3757: Editor: Replace "Female" check box in BodyPart records with "Gender" combo box (https://bugs.openmw.org/issues/3757)

Tests:
The changes were successfully tested in OpenMW-CS by manipulating several BodyPart records.
2017-02-18 15:40:07 +01:00
Rafael Moura
ecbde7b11e Added ConstContainerStoreIterator
using base template for ContainerStoreIterators

less template arguments for ContainerStoreIteratorBase
2017-02-18 13:47:18 +00:00
Allofich
bc60421615 Change NPC equip logic to be more like original
(Bug #3754)
2017-02-18 21:59:09 +09:00
David Cernat
fd4827b3a7 Merge pull request #157 from OpenMW/master
Add OpenMW commits up to 18 Feb 2017, part 2
2017-02-18 12:12:30 +02:00
David Cernat
d9a566f0f6 Merge pull request #156 from OpenMW/master
Add OpenMW commits up to 18 Feb 2017
2017-02-18 11:19:50 +02:00
Marc Zinnschlag
bef0b1f1d6 Merge remote-tracking branch 'matahualpa/openmw-cs_gender' 2017-02-18 09:57:09 +01:00
Koncord
74cfc4a821 [Client] Use enum instead magic values 2017-02-18 15:26:11 +08:00
Koncord
a95cf0e07a [Server] Fix crash when call StopServer() function in OnServerInit() 2017-02-18 13:00:01 +08:00
Koncord
1fb2176cfa [Server] Add forgotten type for callbacks 2017-02-18 12:58:12 +08:00
scrawl
aa8459b5c7 Revert "Remove redundant allocations for NIF meshes"
This reverts commit a7c5beb7c5.

Conflicts:
	components/nif/data.cpp
	components/nifbullet/bulletnifloader.cpp
	components/nifosg/nifloader.cpp
2017-02-18 02:33:41 +01:00
scrawl
6a37909ee7 Revert "Fix race conditions caused by Array <-> GLBufferObject interactions (Bug #3580)"
This reverts commit 115e563a7a.
2017-02-18 02:33:41 +01:00
David Cernat
0d75264221 Merge pull request #155 from OpenMW/master
Add OpenMW commits up to 17 Feb 2017, part 2
2017-02-17 23:19:30 +02:00
David Cernat
c01ab63239 [Server] Add script functions for setting container item info 2017-02-17 23:11:38 +02:00
scrawl
f2174ee9f4 Merge pull request #1217 from Allofich/follow
Fix loading 0-duration Follow and Escort packages
2017-02-17 21:10:15 +01:00
scrawl
cb142f01e4 Merge pull request #1215 from MiroslavR/armor_rating
Fix incorrect calculation of armor rating
2017-02-17 18:52:07 +01:00
Allofich
3897c49e30 Fix loading 0-duration Follow and Escort packages
(Fixes #3755)
2017-02-18 01:55:50 +09:00
MAtahualpa
520e82ed4f Fix for commit "affc0eb..." in PR 1216 (fixes #3756)
Fixed use of tab character.
2017-02-17 17:54:38 +01:00
David Cernat
941d6269c1 [General] Slightly reorder variables in ID_OBJECT_PLACE 2017-02-17 18:34:11 +02:00
David Cernat
aa1549606f [Server] Add script functions for getting container item info 2017-02-17 18:33:20 +02:00
MAtahualpa
affc0eb37f Replace "Female" check box with a combo box, part 1/2 (fixes #3756)
Replaces the "Female" check box in NPC records with a "Gender" combo box. This is the first of two related fixes, the second one covering BodyPart records.

Related issue:
- Fixes #3756: Editor: Replace "Female" check box in NPC records with "Gender" combo box (https://bugs.openmw.org/issues/3756)

Tests:
The changes were successfully tested in OpenMW-CS by manipulating several NPC records.
2017-02-17 17:05:46 +01:00
David Cernat
70470e12b4 [Server] Reorder World script functions 2017-02-17 16:24:40 +02:00
David Cernat
8a5bc77699 [Server] Add GetBaseEventAction script function 2017-02-17 14:51:36 +02:00
David Cernat
e0bc557aa4 Merge pull request #154 from OpenMW/master
Add OpenMW commits up to 17 Feb 2017
2017-02-17 14:45:45 +02:00
Bret Curtis
e0afaf3a7d finish up openmw-cs 2017-02-17 12:23:24 +01:00
Bret Curtis
a4372b6c5f get openmw-cs model covered 2017-02-17 12:23:24 +01:00
Bret Curtis
a39b593b9b add beginning of openmw-cs docs 2017-02-17 12:23:24 +01:00
Marc Zinnschlag
79956e4b49 Merge remote-tracking branch 'origin/master' 2017-02-17 08:54:19 +01:00
Marc Zinnschlag
23818ec409 Merge remote-tracking branch 'matahualpa/openmw-cs_emittertype' 2017-02-17 08:48:32 +01:00
MiroslavR
f883951d75 Fix incorrect calculation of armor rating (Bug #3754) 2017-02-17 03:11:37 +01:00
MAtahualpa
fb2618fe7b Update request for AUTHORS.md
If you don't mind, please update our credits file with the following changes.
(Sorted the name entries in the PR section along the way.)
2017-02-16 22:05:15 +01:00
scrawl
96ca50e108 Merge pull request #1211 from Allofich/warnings
Fix Clang and OS X Travis CI warnings
2017-02-16 19:16:53 +01:00
Allofich
621d3e56cf Fix Clang and OS X Travis CI warnings 2017-02-17 02:08:39 +09:00
David Cernat
27c4015f50 [General] Remove unused packet placeholder ID_OBJECT_HEALTH 2017-02-16 18:46:39 +02:00
David Cernat
1198caddf6 [Server] Add OnContainer script callback 2017-02-16 18:34:11 +02:00
David Cernat
5300bcd711 Merge pull request #153 from OpenMW/master
Add OpenMW commits up to 16 Feb 2017, part 2
2017-02-16 18:25:21 +02:00
Bret Curtis
e8bc57c232 add the rest of the openmw source documentation 2017-02-16 16:03:43 +01:00
Bret Curtis
3b4c4f6f63 Merge pull request #1205 from psi29a/sphinx
make local documentation development easier
2017-02-16 14:48:49 +01:00
David Cernat
eba7d8408f [Server] Use script function to get spellbook action 2017-02-16 14:23:27 +02:00
Bret Curtis
d4ea85a4c6 reorganization and added mwgui 2017-02-16 13:19:22 +01:00
MAtahualpa
dab8b328c4 Replace light emitter check boxes with a combo box (fixes #3752)
Replaces the four emitter check boxes in Light records with an "Emitter Type" combo box.

Related issue:
- Fixes #3752: Editor: Replace emitter check boxes in Light records with "Emitter Type" combo box (https://bugs.openmw.org/issues/3752)

Tests:
The changes were successfully tested in OpenMW-CS by manipulating several Light records. Please note that this fix also prevents users from erroneously assigning two or more emitter types at the same time. (I don't know which one would prevail in that case.)
2017-02-16 12:48:47 +01:00
David Cernat
5b3fabdb9d [Client] Send ID_CONTAINER with all containers in cell when requested 2017-02-16 13:34:32 +02:00
David Cernat
c32c004516 Merge pull request #151 from OpenMW/master
Add OpenMW commits up to 16 Feb 2017
2017-02-16 11:53:02 +02:00
MAtahualpa
7be46eb1f0 Fix for commit "d4972ab..." in PR 1208 (fixes #3751)
Replaces the two "Xyz blood" check boxes in NPC and Creature records with a "Blood Type" combo box.

Fix:
- corrected false logic operation in refidadapterimp.cpp
- corrected names of the used flags
2017-02-16 00:08:38 +01:00
MAtahualpa
d4972ab166 Replace "Xyz blood" check boxes with a combo box (fixes #3751)
Replaces the two "Xyz blood" check boxes in NPC and Creature records with a "Blood Type" combo box.

Related issue:
- Fixes #3751: OpenMW-CS: Replace "Xyz Blood" check boxes in NPC and Creature records with "Blood Type" combo box (https://bugs.openmw.org/issues/3751)

Tests:
The changes were successfully tested in OpenMW-CS by manipulating several NPC and Creature records. Please note that this fix also prevents users from erroneously assigning two blood types at the same time. (I don't know which one would prevail in that case.)
2017-02-15 23:06:36 +01:00
scrawl
f10edb71cc Add environment variable for disabling IncrementalCompileOperation 2017-02-15 21:01:25 +01:00
scrawl
c4a89065a2 Preload VFX of spells selected by AI actors 2017-02-15 21:01:25 +01:00
scrawl
57b585570a Preload magic effect visuals of the player's selected weapon/spell 2017-02-15 21:01:25 +01:00
Marc Zinnschlag
e46fb1770c Merge remote-tracking branch 'matahualpa/openmw-cs_booktype' 2017-02-15 19:47:39 +01:00
David Cernat
4c240038e1 Merge pull request #150 from OpenMW/master
Add OpenMW commits up to 14 Feb 2017, part 2
2017-02-15 20:15:30 +02:00
David Cernat
3b604a432e [General] Restructure ID_CONTAINER to allow multiple containers at once 2017-02-15 20:14:25 +02:00
MAtahualpa
2c34a8706b Replace "Scroll" check box with a combo box (fixes #3748)
Replaces the "Scroll" check box in Book records with a "Book Type" combo box.

Related issue:
- Fixes #3748: OpenMW-CS: Replace "Scroll" check box in Book records with "Book Type" combo box. (https://bugs.openmw.org/issues/3748)

Tests:
The changes were successfully tested in OpenMW-CS by manipulating several Book records. Please note that the actual logic behind this entry is not implemented yet: Books which are of type "Scroll" can have an enchantment attached, normal books ("Book") cannot.
2017-02-15 18:59:55 +01:00
Bret Curtis
4073115159 add mwdialogue 2017-02-15 17:23:23 +01:00
Bret Curtis
19f732c4ee automate the task of including all the necessary files for openmw 2017-02-15 16:48:59 +01:00
David Cernat
88f891b5bd [Client] Make it possible to easily iterate through container items 2017-02-14 23:10:45 +02:00
David Cernat
c8cbfbef62 [General] Sketch out server requests to players for container data 2017-02-14 19:31:56 +02:00
scrawl
884c01fc3c Merge pull request #1206 from OpenMW/authors-update
I'm not inactive, just busy. ;)
2017-02-14 14:25:32 +01:00
MAtahualpa
607bd8b853 Replace "Scroll" check box with a combo box (fixes #3748)
Replaces the "Scroll" check box in Book records with a "Book Type" combo box.

Related issue:
- Fixes #3748: OpenMW-CS: Replace "Scroll" check box in Book records with "Book Type" combo box. (https://bugs.openmw.org/issues/3748)

Tests:
The changes were successfully tested in OpenMW-CS by manipulating several Book records. Please note that the actual logic behind this entry is not implemented yet: Books which are of type "Scroll" can have an enchantment attached, normal books ("Book") cannot.
2017-02-14 11:48:37 +01:00
Bret Curtis
7886dd4c0a I'm not inactive, just busy. ;) 2017-02-14 09:33:24 +01:00
David Cernat
2ed9ae5739 Merge pull request #149 from OpenMW/master
Add OpenMW commits up to 14 Feb 2017
2017-02-14 10:27:53 +02:00
scrawl
183c46b0ef Fix summoning effects 2017-02-14 07:58:16 +01:00
scrawl
a495b9b884 Fix wasteful allocations in Store<Land>::search 2017-02-14 07:58:16 +01:00
scrawl
72c6b11cf8 Move global map render to the worker thread 2017-02-14 07:58:16 +01:00
scrawl
026a05718f Construct the WorkQueue in Engine 2017-02-14 07:58:16 +01:00
scrawl
ddd6605608 Move WNAM out of LandData to avoid redundant (de)allocations on startup 2017-02-14 07:58:16 +01:00
scrawl
e00b420f68 Move saving of LandData into Land::save 2017-02-14 07:58:16 +01:00
scrawl
325bf66653 Return const Land in ESMStore 2017-02-14 07:58:16 +01:00
scrawl
e295a72d43 Add align=Center to GUI dialogs (Fixes #2289) 2017-02-14 07:58:16 +01:00
Bret Curtis
4d29bdc85e make source documentation great again 2017-02-13 21:53:53 +01:00
David Cernat
a5d7c5fd39 Merge pull request #148 from OpenMW/master
Add OpenMW commits up to 13 Feb 2017
2017-02-13 21:29:51 +02:00
Bret Curtis
4cc13a20de make source auto doc easier 2017-02-13 20:09:10 +01:00
Bret Curtis
8044663acd use breathe not breath 2017-02-13 12:40:56 +01:00
Bret Curtis
6483218cb5 create warnings for missing libs 2017-02-13 10:48:37 +01:00
Bret Curtis
8d1c7edcf6 fix warnings, replace fonts with font, make breath/doxygen/cmake imports optional 2017-02-13 10:29:20 +01:00
Marc Zinnschlag
5c3f914ff6 updated credits file 2017-02-13 10:17:26 +01:00
Marc Zinnschlag
93c5630e02 Merge remote-tracking branch 'matahualpa/openmw-cs_tablecontents' 2017-02-13 10:06:08 +01:00
MAtahualpa
2d1af3ee4a Update record.cpp
This should be the last instance of "mSkillID". Let's see what Travis says about it...
2017-02-12 20:55:50 +01:00
scrawl
051b4038d9 Merge pull request #1203 from Allofich/magic
Make AI not go hostile when absorbing/reflecting
2017-02-12 17:18:10 +01:00
MAtahualpa
c46eadae90 Update actionread.cpp
*grrr* Forgot to change the latter "mSkillID" in line 47...
2017-02-12 17:17:33 +01:00
scrawl
cdf65ef681 Merge pull request #1201 from Allofich/hit
Prevent AI actors from hitting unintended targets
2017-02-12 16:25:52 +01:00
scrawl
342c25dffa Fix weather sounds playing at full volume before fading in 2017-02-12 15:44:33 +01:00
scrawl
892d1b162d nifloader: ignore nodes named 'bounding box' (Fixes #3650) 2017-02-12 15:44:09 +01:00
Allofich
72c3ee0a3d Make AI not go hostile when absorbing/reflecting 2017-02-12 23:14:09 +09:00
MAtahualpa
b4ef9e2314 Update loadbook.cpp 2017-02-12 13:53:10 +01:00
MAtahualpa
5a58ab1837 Update loadbook.hpp 2017-02-12 13:52:36 +01:00
MAtahualpa
7bc65ce05b Update actionread.cpp
Code cosmetics: Change member variable "mSkillID" to "mSkillId" for Book records.
2017-02-12 13:52:11 +01:00
MAtahualpa
347fb1ff4b Update converter.hpp
Code cosmetics: Change member variable "mSkillID" to "mSkillId" for Book records.
2017-02-12 13:51:36 +01:00
MAtahualpa
c5dcfe0794 Update refidadapterimp.cpp
Code cosmetics: Change member variable "mSkillID" to "mSkillId" for Book records.
2017-02-12 13:50:58 +01:00
MAtahualpa
6587880171 Update refidcollection.cpp
Makes Book records display skill IDs instead of attribute IDs for teached skills.
Related issue:
- Bug #3746: OpenMW-CS: Book records show attribute IDs instead of skill IDs for teached skills entry.
2017-02-12 13:03:37 +01:00
Allofich
6b53541571 Prevent AI actors from hitting unintended targets
(Fixes #3254)
2017-02-12 19:51:19 +09:00
scrawl
9fa8e88366 Revert "Don't create a CharacterController for objects with no animations"
This reverts commit cce42b6e9d.
2017-02-12 10:22:11 +01:00
David Cernat
d528a0edb5 Merge pull request #147 from OpenMW/master
Add OpenMW commits up to 11 Feb 2017
2017-02-11 21:27:51 +02:00
scrawl
03a10f217a Catch exceptions in AiSequence::execute 2017-02-11 17:53:11 +01:00
scrawl
5a12407436 Revert "Rearranged check for better performance"
This reverts commit 332ceb51a2.
2017-02-11 17:53:11 +01:00
scrawl
f2d4f290cc traceDown fix 2017-02-11 17:53:11 +01:00
scrawl
ec5587ddd3 Merge pull request #1200 from Allofich/fix
Fix trying to access stats on non-actors
2017-02-11 13:38:36 +01:00
Allofich
e047679595 Fix trying to access stats on non-actors 2017-02-11 19:59:42 +09:00
David Cernat
6763718412 Merge pull request #146 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwclass/npc.cpp
#	apps/openmw/mwmechanics/actors.cpp
2017-02-10 21:39:16 +02:00
scrawl
bef29fc717 Merge pull request #1199 from ace13/ci-update
Update Bullet to 2.86 for Windows
2017-02-10 18:52:17 +01:00
Alexander "Ace" Olofsson
cda83559aa Update Bullet to 2.86 2017-02-10 11:37:36 +01:00
scrawl
332ceb51a2 Rearranged check for better performance 2017-02-10 06:48:03 +01:00
scrawl
8752ae9c6a Fix include 2017-02-10 06:28:23 +01:00
scrawl
bbcba57495 Disable hitAttemptActorId saving code for now 2017-02-10 06:26:32 +01:00
scrawl
2ea0db1d1a Merge pull request #1198 from Allofich/combat
Make combat engagement logic more like vanilla
2017-02-10 06:20:04 +01:00
scrawl
dd54887783 Fix node mask of CharacterPreview being reset 2017-02-10 03:31:37 +01:00
scrawl
6ecc008813 Fix an issue uncovered by the last commit related to changing actor position without properly moving the actor 2017-02-10 02:43:49 +01:00
scrawl
cf7b0098ed Slightly increase backoff value 2017-02-10 02:05:12 +01:00
scrawl
b3d5c2bd7f Use the actor's collision shape in findGround()
The cylinder base is no longer appropriate as of the change to capsules.

This also works around a bug when tracing a small cylinder/box shape apparently introduced with bullet 2.86.
2017-02-10 02:00:52 +01:00
David Cernat
f02840d638 [Client] Fix log messages when sending ID_CONTAINER 2017-02-09 21:48:22 +02:00
David Cernat
ae23c6d6a5 Merge pull request #145 from OpenMW/master while resolving conflicts
# Conflicts:
#	CMakeLists.txt
2017-02-09 12:17:27 +02:00
scrawl
67e4a7e37b Change some osg::clone's to direct copy constructor to avoid dynamic_cast overhead 2017-02-09 04:51:20 +01:00
scrawl
93c582064e Remove item shadows for equipped weapon/spell indicators 2017-02-09 04:13:13 +01:00
scrawl
3f3d00ffc9 Add CellPreloader::clear to avoid potential dangling CellStore pointer and to more aggressively clear preload state from a previous game 2017-02-09 04:03:38 +01:00
scrawl
0be86f69bc Write the player object first to increase the chance of preloading the player cells in time 2017-02-09 03:55:10 +01:00
scrawl
1d8a9ff622 Preload player cell as soon as the player is read from the savegame
Giving the worker thread something to do while the rest of the savegame is parsed.
2017-02-09 03:47:36 +01:00
scrawl
d141b98f0c Add base animations to preloadCommonAssets 2017-02-09 03:32:40 +01:00
scrawl
066aa2e60e Always run preloadCommonAssets even when the menu is skipped
Move to before the content files are loaded so we can do preloading in parallel with content file loading
2017-02-09 03:16:36 +01:00
scrawl
839928e210 Fix light data being reset for the wrong light 2017-02-09 02:46:30 +01:00
scrawl
c68f662c9a Predict player movement when preloading cells to better handle moving at high speed 2017-02-09 01:34:42 +01:00
scrawl
a46593fa74 Add PreloadItem::abort() to avoid no longer required cells from blocking the work thread 2017-02-09 01:08:07 +01:00
scrawl
d62c4259bd CellPreloader: load the terrain first to match the order in the main thread 2017-02-09 01:07:27 +01:00
scrawl
d3e1dbe920 Fix race conditions in terrain loader caused by static variables 2017-02-09 00:53:48 +01:00
scrawl
d1e86d22ca Check which local map textures actually need to be updated
On a typical exterior cell transition, we'll save 3 of 9 map renders. When moving back and forth between 2 cells, we can even reuse 6 of 9.
2017-02-08 22:20:57 +01:00
scrawl
4d53ab6c32 nifloader: attempt to remove redundant root node when a Skeleton is added 2017-02-08 20:04:17 +01:00
scrawl
2a42c4781e nifloader: override animflags instead of accumulating them 2017-02-08 19:53:02 +01:00
scrawl
0187f2ce4c nifloader: combine animFlags and particleFlags (Bug #2100) 2017-02-08 19:53:02 +01:00
scrawl
bccfd6cef8 nifloader: handle textures with no image that are later assigned in a FlipController
As found in vurt's trees (Bug #2100)
2017-02-08 19:52:33 +01:00
scrawl
792f505b2a Fix potential crash in ShaderVisitor for textures with no image assigned 2017-02-08 19:16:07 +01:00
scrawl
43d9f3d5c7 Update bullet debug drawer even when the game is paused so the collision mesh will show instantly even when the console is up 2017-02-08 18:53:24 +01:00
scrawl
249fe9077b Handle 'tcb' command as an alias for 'tcg' 2017-02-08 18:51:07 +01:00
scrawl
45ae8d5ffa Add support for GL_AMBIENT colorMode to shaders as required by particle systems 2017-02-08 18:39:24 +01:00
scrawl
206e2bf975 Fix camera rotation not being set after save game load (regressed with 1eb3384043) 2017-02-08 04:42:15 +01:00
scrawl
c00532d82d Add LightStateCache to avoid redundantly setting the same gl_Light
Normally, osg::State would do this for us (via lastAppliedAttribute), but since we're using a custom StateAttribute to apply all lights at once, we have to track ourselves.

Further reduction of GL calls in a typical scene by ~2%
2017-02-07 23:37:57 +01:00
scrawl
4d4dc1b9c1 Add specialized DisableLight state attribute for more efficient undoing of light state
Seems to reduce # of GL calls by 10-15% in a typical scene.
2017-02-07 23:01:36 +01:00
scrawl
cdca9b0488 Accept bullet 283 on appveyor as well 2017-02-07 20:40:07 +01:00
scrawl
dfa43af818 Update bullet dependency to 2.86 2017-02-07 18:05:24 +01:00
David Cernat
b651c4deb4 [Server] In Item script functions, rename itemId into refId for clarity 2017-02-07 13:50:28 +02:00
scrawl
35bb467c7a Fix inverted setting of variable 2017-02-07 05:28:06 +01:00
David Cernat
6144ca95d8 Set version to 0.4.2 2017-02-06 23:25:46 +02:00
David Cernat
5038353792 [General] Rename BaseEvent's state into doorState & adjust related funcs 2017-02-06 23:09:50 +02:00
David Cernat
e52823394c [Client] Use correct count for ID_CONTAINER when dropping items 2017-02-06 22:53:18 +02:00
David Cernat
d8a9a5f6c9 [General] Send item owner in ID_CONTAINER 2017-02-06 22:45:23 +02:00
David Cernat
ad3eac624f [Client] Disable quicksaving and quickloading 2017-02-06 21:34:54 +02:00
David Cernat
3614b21e10 [General] Send charge and goldValue in ID_CONTAINER 2017-02-06 21:28:03 +02:00
Allofich
5d2090684a Store mHitAttemptActorId in save files 2017-02-07 01:26:26 +09:00
Allofich
25c64dbb0f Make combat engagement logic more like vanilla
(Fixes #2678, Fixes #3705)
2017-02-07 01:25:12 +09:00
David Cernat
e703dd42aa [Client] Rename LocalEvent into WorldEvent 2017-02-06 17:40:32 +02:00
scrawl
5a939418fc Add missing avcodec_close (Fixes #3741) 2017-02-06 15:49:13 +01:00
David Cernat
182b238b5f [General] Rename WorldEvent into BaseEvent 2017-02-06 12:53:41 +02:00
David Cernat
27242cdab9 Merge pull request #142 from OpenMW/master
Add OpenMW commits up to 6 Feb 2017
2017-02-06 09:13:19 +02:00
scrawl
91939c4687 Switch actors to capsule shapes now that the jumping bug is gone (Fixes #2116, Fixes #2909)
The culprit was - surprise, surprise - d39d4f2619
2017-02-06 05:40:49 +01:00
scrawl
03aa270551 Construct PhysicActor as on ground by default to avoid a jumping animation from playing in the first frame after a savegame load 2017-02-06 05:23:00 +01:00
scrawl
bc29a99a53 Fix broken timer 2017-02-06 05:10:40 +01:00
scrawl
d39d4f2619 Revert a problematic and performance costly workaround that should never have been applied and is no longer required as of the last commit. 2017-02-06 04:52:41 +01:00
scrawl
541fbb4792 Movement solver: add usage of 'on slope' flag to improve handling of steep slopes
Previously we were handling 'on slope' synonymously with 'in air' which caused some odd effects.

Practical changes:
 - Sliding down a slope no longer applies fall damage.
 - Fixed a climbing exploit that would allow climbing steep slopes with repeated use of the Jump function.
2017-02-06 04:50:58 +01:00
scrawl
cce42b6e9d Don't create a CharacterController for objects with no animations 2017-02-06 03:43:08 +01:00
scrawl
fe0cf5be05 StatsWindow: don't rebuild all skill widgets when one skill changes 2017-02-06 02:40:35 +01:00
scrawl
e7b6ea4e3f Add cycle weapon/spell actions to the list of controller actions (Fixes #3613) 2017-02-05 20:23:49 +01:00
David Cernat
1f03c12d96 [Client] See when other players use the Take All button with a container 2017-02-05 20:04:50 +02:00
David Cernat
d2c5a3387a [Client] See when other players add items to containers 2017-02-05 19:33:11 +02:00
David Cernat
75392297b5 [General] Use vector::at in most places 2017-02-05 19:01:06 +02:00
David Cernat
60d6a6d463 [Client] See when other players remove items from containers 2017-02-05 18:45:23 +02:00
David Cernat
25d79dbcfe [Client] Revert c0d67f67fb after discovering its negative consequences 2017-02-05 17:40:10 +02:00
David Cernat
cdd796aba1 [Client] Send ID_PLAYER_INVENTORY from two more locations 2017-02-05 16:14:26 +02:00
David Cernat
c0d67f67fb [Client] Move code for sending a packet for picking up world items
Previously, an ID_OBJECT_DELETE was sent from inventorywindow.cpp, but this is now sent from hud.cpp because 2 other packets are also sent from there.
2017-02-05 15:50:21 +02:00
David Cernat
b2cdec8efa [Client] Send ID_PLAYER_INVENTORY upon dropping an item, 2nd attempt 2017-02-05 15:35:40 +02:00
David Cernat
f314b13edf [General] Rename item health into charge, for consistency with OpenMW 2017-02-05 14:56:27 +02:00
David Cernat
f03724be7b [Client] Send ID_PLAYER_INVENTORY upon dropping an item 2017-02-05 14:38:04 +02:00
David Cernat
ecc456fea9 [General] Include charge int in WorldObject & send it w/ ID_OBJECT_PLACE 2017-02-05 13:45:12 +02:00
David Cernat
04d45b9dbb [General] Rename packets to show they are for players only, not NPCs 2017-02-05 09:01:33 +02:00
David Cernat
3a29b2d41d Merge pull request #141 from OpenMW/master
Add OpenMW commits up to 5 Feb 2017
2017-02-05 07:11:45 +02:00
scrawl
3065600a86 Skip expensive visitEffectSources call if no summoned creatures or summon effects are active 2017-02-05 02:26:28 +01:00
scrawl
ee4073541c Animation: cache getVelocity() 2017-02-05 02:26:28 +01:00
scrawl
a2cede8f34 Add timer for updateEquippedLight 2017-02-05 02:26:28 +01:00
scrawl
1eb3384043 Avoid rotating by zero in CharacterController 2017-02-05 02:26:28 +01:00
scrawl
7201cf5fe2 ItemWidget: skip setImageTexture if the icon has not changed 2017-02-05 02:26:27 +01:00
David Cernat
9c76b805b2 [Client] Send ID_CONTAINER when starting to drag a container item 2017-02-04 21:33:50 +02:00
David Cernat
9f8bed9be1 [General] Add action types to WorldEvent's ContainerChanges 2017-02-04 21:32:06 +02:00
David Cernat
a07e616878 [General] Add ContainerItem and ContainerChanges structs to WorldEvent 2017-02-04 20:14:39 +02:00
scrawl
5f2539adb6 Optimize scrollbar/progress skins by using one widget for the track instead of one widget per pixel 2017-02-04 16:05:22 +01:00
scrawl
1447bfa215 Improve scene loading performance by creating collision objects with the correct rotation right away instead of adjusting it later 2017-02-04 15:12:01 +01:00
David Cernat
6328ffb9aa [General] In ID_GAME_ATTRIBUTE & ID_GAME_SKILL, rename GAME into PLAYER 2017-02-04 14:25:43 +02:00
David Cernat
9130c1f302 [General] Rename ID_CONTAINER_ADD into ID_CONTAINER 2017-02-04 13:14:37 +02:00
David Cernat
d2cf96af99 [General] Repurpose the unused ID_CONTAINER_REMOVE into ID_OBJECT_HEALTH 2017-02-04 13:05:15 +02:00
David Cernat
57f54aa370 [Client] Don't store multiple cellStates for the same cell 2017-02-04 09:46:27 +02:00
David Cernat
a2e3fe18fe [Client] Send ID_PLAYER_CELL_STATE to server at end of CharGen
Also, allow requests for ID_PLAYER_CELL_STATE from the server.
2017-02-04 09:13:15 +02:00
David Cernat
44e27148d5 Merge pull request #140 from OpenMW/master
Add OpenMW commits up to 4 Feb 2017
2017-02-04 07:37:17 +02:00
scrawl
739a76f5fb docs/settings: fix setting range 2017-02-04 06:18:23 +01:00
scrawl
76f6964583 docs/settings: add preload settings 2017-02-04 06:04:28 +01:00
scrawl
884d306bf3 Throw exception when told to use 0 threads 2017-02-04 05:58:12 +01:00
scrawl
209f271f5f docs/settings: remove 'This setting was added in OpenMW version X.Y"
Most of these are ancient by now, plus we have the version selector on readthedocs.io
2017-02-04 04:58:42 +01:00
scrawl
0f9ec3f0c7 docs/settings: don't specify setting type redundantly 2017-02-04 04:55:13 +01:00
scrawl
2db7292bcb Add new setting for the number of preloading worker threads
If you have CPU cores to spare, consider setting 2 or 3. Up to about 3 threads, preloading performance seems to increase in a linear fashion, but with 4 or more threads I/O bottlenecks and synchronization overhead starts to show.
2017-02-04 02:59:28 +01:00
scrawl
eaeba4138b Move the deletion of PreloadItem to the worker thread 2017-02-04 02:36:44 +01:00
scrawl
a1069dce3c Change UnrefQueue to accept osg::Referenced instead of osg::Object 2017-02-04 02:24:42 +01:00
scrawl
33e654f94d Add explicit handling of most commonly used nodes to NodeVisitors to avoid excessive virtual function calls 2017-02-04 02:16:26 +01:00
scrawl
c95868969b Early out for scene graphs with no update callbacks in SceneManager::notifyAttached 2017-02-04 01:22:43 +01:00
scrawl
83a9435167 Fix unnecessary use of CopyFramebufferToTextureCallback when loading is too fast for a loading screen to be displayed 2017-02-03 23:39:39 +01:00
scrawl
767eba941f Speed up finding of attachment node by using the cached nodeMap 2017-02-03 23:15:37 +01:00
scrawl
a76d693627 Speed up ControllerVisitor by skipping sub graphs that have no ChildrenRequiringUpdateTraversal() 2017-02-03 23:10:14 +01:00
scrawl
c58fc6d276 Improve performance of loading screen by not recomputing the bounding sphere of the entire scene after each loading step 2017-02-03 22:29:38 +01:00
David Cernat
f4a9f27977 [Server] Stop crashing browser when receiving a query from it 2017-02-03 21:46:39 +02:00
David Cernat
c1427b2558 [General] Simultaneously send loads & unloads in ID_PLAYER_CELL_STATE 2017-02-03 20:27:40 +02:00
David Cernat
63974af131 Merge pull request #139 from OpenMW/master
Add OpenMW commits up to 3 Feb 2017
2017-02-03 07:57:14 +02:00
scrawl
30b101b175 Fix build error in OSG_USE_FLOAT_MATRIX=OFF mode due to a double implicit conversion to double (pun doubly intended) 2017-02-03 06:49:34 +01:00
scrawl
0be811c519 Update the resource cache every second instead of every frame
A dry run takes about ~1.5ms. Even though it's all done in the worker thread, the locks used can stall loading operations that are about to happen in other threads, and just in general this CPU load is unnecessary.
2017-02-03 03:44:30 +01:00
scrawl
b4a6b6387b Create own instance of osgDB::SharedStateManager so we control when to call prune()
prune() is now called in the background thread, just like the resource cache update.

Seems to improve performance by ~0.3 ms/frame
2017-02-03 03:27:12 +01:00
scrawl
84a92e665c Improve performance in RigGeometry by optimizing for the most common case of identity geomToSkelMatrix 2017-02-03 02:18:44 +01:00
scrawl
f3045331f1 Fix regression in handling of NiZBufferProperty 2017-02-03 01:49:49 +01:00
scrawl
6d8c414071 Set osgViewer ReleaseContextAtEndOfFrameHint to false for better performance when in SingleThreaded mode
The flag is normally set to off by default when using Viewer::run() - however since we're using our own frame loop, we have to unset the flag ourselves
2017-02-02 22:16:59 +01:00
scrawl
53e4db8a8f Add dummy serializer for CameraRelativeTransform to allow serializing content of Sky Root 2017-02-02 21:57:18 +01:00
scrawl
c5f8ff6e0e Add names to several nodes for debugging purposes 2017-02-02 21:49:52 +01:00
Koncord
aed0651dc2 [Server] Some fixes for MasterClient 2017-02-03 00:55:59 +08:00
David Cernat
d9f5dfe65c Merge pull request #138 from OpenMW/master
Add OpenMW commits up to 2 Feb 2017
2017-02-02 13:07:11 +02:00
scrawl
851f61ac82 Always assign osg::Material when a material controller is used 2017-02-01 21:10:43 +01:00
scrawl
625c5040ce Fix build 2017-02-01 15:49:20 +01:00
David Cernat
7ebad596d6 [Server] Use double instead of int for scale in WorldFunctions 2017-02-01 12:53:51 +02:00
David Cernat
018b0e6699 [Server] Add script functions & callbacks for locking, unlocking & doors 2017-02-01 12:43:19 +02:00
Koncord
1808cf815f [Browser] Some minor fixes 2017-02-01 18:00:03 +08:00
David Cernat
958ff06ca8 [General] Rename ID_DOOR_ACTIVATE into ID_DOOR_STATE 2017-02-01 11:54:40 +02:00
David Cernat
8e438a1b82 [Server] Add OnObjectScale callback, part 2 2017-02-01 10:00:54 +02:00
Koncord
f78c749981 [Client] Use "NULL" instead "nullptr"
nullptr keyword introduced in C++11
2017-02-01 15:58:29 +08:00
David Cernat
9f8f62b765 Merge pull request #137 from OpenMW/master
Add OpenMW commits up to 1 Feb
2017-02-01 09:28:23 +02:00
David Cernat
5bd2fdcf66 [Server] Add OnObjectScale callback, and set scale for WorldObject 2017-02-01 09:25:47 +02:00
Koncord
0b8d0224d1 [Server] Change type in second argument in SetConsoleAllow to "bool" 2017-02-01 13:44:50 +08:00
Koncord
75afa58981 [Server] Add bool type for scripts 2017-02-01 13:43:17 +08:00
scrawl
1808b8567e Add 'small feature culling pixel size' setting specifically for water RTTs, by default set higher than the one in [Camera] 2017-02-01 06:00:14 +01:00
scrawl
fcb4129aee Add 'small feature culling pixel size' setting 2017-02-01 06:00:14 +01:00
scrawl
9180089a3b Add sharing for more State Attributes, most notably BlendFunc and AlphaFunc, to improve the state tracking in osg::State and reduce the number of GL calls 2017-02-01 06:00:14 +01:00
scrawl
960d4a96c3 Reduce the number of osg::Material state by setting the default state on the graph root 2017-02-01 06:00:14 +01:00
scrawl
e399e10607 Add missing lock in shareMaterial 2017-02-01 06:00:14 +01:00
scrawl
34deb6e7b1 Add 'showSceneGraph' command to export the scene or a particular object to .osgt for debugging purposes 2017-02-01 06:00:14 +01:00
scrawl
e90941a8b3 Wrap the scene template reference in another object for const correctness and to avoid it from being serialized with the osgDB serializer 2017-02-01 06:00:14 +01:00
David Cernat
8c019f2c61 [Server] Update OnObjectPlace and OnObjectDelete callbacks 2017-01-31 23:26:49 +02:00
David Cernat
87dce73b90 [Server] Add script function for sending world object scale 2017-01-31 23:07:02 +02:00
David Cernat
705589e3e3 [Server] Add script functions for getting/setting world object scale 2017-01-31 22:54:36 +02:00
David Cernat
8e4a51dc17 Merge pull request #136 from OpenMW/master
Add OpenMW commits up to 31 Jan
2017-01-31 09:50:52 +02:00
David Cernat
703f253712 [Client] Delete new LocalEvents after sending them 2017-01-31 09:48:37 +02:00
scrawl
29abb62dee Merge pull request #1197 from nikolaykasyanov/gamecontrollerdb-update
Update gamecontrollerdb.txt from upstream
2017-01-31 04:03:57 +01:00
Koncord
239c1aaebf [Browser] Kill RakNet thread before return 2017-01-31 00:25:34 +08:00
David Cernat
1fc9dd4f93 [Server] Remove WorldFunctions index parameters that are no longer used 2017-01-30 17:42:29 +02:00
David Cernat
9f998c9901 [Server] Improve getter methods in WorldFunctions 2017-01-30 17:09:14 +02:00
Koncord
42b6a456f0 [Client] Fix code style 2017-01-30 22:53:22 +08:00
Koncord
c5035cd174 [Client] Fix crash and memory leak when erasing spellbook 2017-01-30 22:37:09 +08:00
David Cernat
88e648aaa9 [Server] Fix crash caused by setting too many WorldObject refIds, try 2 2017-01-30 12:26:45 +02:00
David Cernat
fe9e30a4d8 [Server] Fix crash caused by setting too many WorldObject refIds 2017-01-30 09:10:33 +02:00
David Cernat
da2f66d6ba Merge pull request #135 from OpenMW/master
Add OpenMW commits up to 29 Jan
2017-01-30 07:32:44 +02:00
David Cernat
8e1dff8e02 [Browser] Change "Not fully" into "Not full" 2017-01-30 07:30:58 +02:00
David Cernat
bcee35ca1d Merge branch 'master' of https://github.com/TES3MP/openmw-tes3mp 2017-01-30 06:48:40 +02:00
David Cernat
d503a65849 [Client] Replace tab characters with spaces 2017-01-30 06:47:22 +02:00
Koncord
c147d13a73 [Browser] Move hardcoded title to UI 2017-01-30 07:22:32 +08:00
Koncord
cb0f5524be [Browser] Implement filters 2017-01-30 07:17:21 +08:00
Koncord
e3a304dd03 [Browser] Add filters to UI 2017-01-30 07:16:22 +08:00
Koncord
f86d17d8a6 [Browser] Add custom proxy model 2017-01-30 07:14:11 +08:00
Koncord
dba98f9261 [Browser] Not trying to download extended data if server is unreachable 2017-01-30 04:17:18 +08:00
Koncord
6b42f870a7 [Browser] Use constant instead magic value 2017-01-30 04:15:42 +08:00
Koncord
3070ecdea7 [Browser] Allow connecting by double click 2017-01-30 04:14:09 +08:00
David Cernat
5eff2ece21 [Server] Fix memory leaks related to WorldEvents as suggested by Koncord 2017-01-29 20:18:19 +02:00
David Cernat
6b9fba7885 [Server] Add script functions for getting/setting world object rotation 2017-01-29 17:38:29 +02:00
David Cernat
920c1113a3 [Server] Add script functions for setting world object placement info 2017-01-29 16:16:01 +02:00
David Cernat
2c5cc82f49 [Server] Add script functions for getting world object placement info 2017-01-29 15:29:40 +02:00
MiroslavR
d97e9cfe7e Fix InterpreterContext::updatePtr updating mLocals to the implicit ref's locals when interpreting a targeted global script (Fixes #3738)
The interpreter context of a targeted global script would point to the target's locals instead of the global script instance's locals when the target changed cell during script execution. Credit to scrawl for the solution.
2017-01-29 13:29:53 +01:00
David Cernat
27ac314cb1 [Server] Add script functions for getting world object refIds & refNums 2017-01-29 13:21:41 +02:00
David Cernat
b549da996e [Server] On second thought, keep cell description as argument to them 2017-01-29 13:16:17 +02:00
David Cernat
5989bbd97e [Server] Remove arguments from OnObjectPlace & OnObjectDelete callbacks 2017-01-29 12:56:11 +02:00
David Cernat
2cecce6c72 [Server] Use static WorldEvent variable in Networking 2017-01-29 10:24:12 +02:00
David Cernat
08faad9f32 Merge pull request #134 from OpenMW/master
Add OpenMW commits up to 28 Jan
2017-01-29 07:07:06 +02:00
David Cernat
15ed4b8da6 [Components] Use 24 hour format instead of 12 for log file timestamps 2017-01-28 20:20:47 +02:00
David Cernat
8bc6dfe590 [General] Remove duplicate constructor in PacketObjectUnlock 2017-01-28 18:19:24 +02:00
scrawl
4c4ec6b108 Merge pull request #1196 from Allofich/warnings
Fix MSVC warnings
2017-01-28 16:09:07 +01:00
David Cernat
dddc253d70 [Client] Fix console message for LocalPlayer's cell change 2017-01-28 16:39:03 +02:00
David Cernat
f11df211fa [Server] Add script functions for dealing w/ WorldEvents & WorldObjects 2017-01-28 16:22:30 +02:00
David Cernat
9f1e491a75 [General] Make WorldEvents store information about multiple objects 2017-01-28 12:34:45 +02:00
Nikolay Kasyanov
9e8e9aef86 Update gamecontrollerdb.txt from upstream 2017-01-28 11:02:06 +01:00
Allofich
0f20312012 Fix MSVC warnings 2017-01-28 04:37:47 +09:00
David Cernat
624b85347a [Client] Create LocalEvent class and use it instead of WorldEvent 2017-01-27 20:57:47 +02:00
David Cernat
ee86c9161d [Client] Set InterpreterContext's sendPackets to false in constructor 2017-01-27 16:01:53 +02:00
Koncord
b658adf7b0 [Server] Killed another tab character 2017-01-27 21:51:13 +08:00
Stanislav Zhukov
74ecbbb975 Merge pull request #133 from TES3MP/tes3mp-travis-patches
Travis patches
2017-01-27 16:49:22 +03:00
Koncord
19bd7e50ba [CI] Use QT5 instead QT4 2017-01-27 21:35:14 +08:00
David Cernat
9c3a37a790 [Server] Make GetCellStateDescription's cstrDescription null-terminated 2017-01-27 14:16:27 +02:00
Koncord
316e5fa22e [CI] Disable Browser 2017-01-27 19:44:35 +08:00
Koncord
0e9746044d [CI] Disable OS X build, again 2017-01-27 19:39:33 +08:00
Koncord
1c810ecad5 [Server] Fix memory leak in GetCellStateDescription() 2017-01-27 19:05:18 +08:00
David Cernat
268a1501ad [GUI] Make tes3mp_dialog_list larger 2017-01-27 11:59:26 +02:00
David Cernat
7efb374f75 [Client] Avoid fetching guiMessageBox.type again for every condition 2017-01-27 10:41:10 +02:00
David Cernat
0917184359 [GUI] Replace "Yes" button with "OK" in tes3mp_dialog_list 2017-01-27 10:29:55 +02:00
David Cernat
0ccfe66212 [Server] Send stable C string in GetCellStateDescription() 2017-01-27 08:14:27 +02:00
David Cernat
4f288ab558 [Server] Read contents of ID_PLAYER_CELL_STATE 2017-01-26 17:53:36 +02:00
David Cernat
6331c55bc7 [Server] Add colons missing from CELLAPI 2017-01-26 16:42:55 +02:00
David Cernat
2f644e9b14 [Server] Add script functions for getting info about cell state changes 2017-01-26 16:37:47 +02:00
David Cernat
70823d011d [Server] Define CELLAPI 2017-01-26 16:16:28 +02:00
David Cernat
0cc20d26ce [Server] Move script functions for cells to a new CellFunctions class 2017-01-26 16:10:45 +02:00
David Cernat
5a22032a41 Merge branch 'master' of https://github.com/TES3MP/openmw-tes3mp 2017-01-26 15:50:12 +02:00
David Cernat
62f359e250 [Server] Rename Translocations into Positions 2017-01-26 15:48:47 +02:00
Koncord
ab3c2544b5 [Client] Use constant instead magic value 2017-01-26 21:47:28 +08:00
Koncord
34a46e6811 [Client] Simplify hasFinishedCharGen method 2017-01-26 21:42:12 +08:00
David Cernat
96bd21a7ca [Server] Rename OnPlayerCellLoad to OnPlayerCellState, add action param 2017-01-26 14:18:47 +02:00
David Cernat
244da19a51 [General] Turn ID_PLAYER_CELL_LOAD into ID_PLAYER_CELL_STATE for clarity 2017-01-26 13:49:20 +02:00
David Cernat
055376c8ee [Client] Only send ID_PLAYER_CELL_LOAD when CharGen is over 2017-01-26 13:14:22 +02:00
David Cernat
b5b5551fcd [Client] Add LocalPlayer::hasFinishedCharGen() method 2017-01-26 13:13:43 +02:00
David Cernat
4dc0ba21ec [General] Fix packet ID for ID_PLAYER_CELL_LOAD 2017-01-26 12:19:49 +02:00
David Cernat
97aabf4a7d [General] Sketch out sending of cell loading/unloading info in packets 2017-01-26 09:02:01 +02:00
David Cernat
158d606477 [General] Leave one blank line at the end of every tes3mp code file 2017-01-26 06:17:29 +02:00
David Cernat
2158e94a96 [Client] Fix setting of attack parameters after recent changes 2017-01-25 18:04:20 +02:00
David Cernat
73d39c1a0a [General] Stop using virtual functions in BasePlayer, part 2 2017-01-25 17:19:53 +02:00
David Cernat
63c8a98083 [General] Stop using virtual functions in BasePlayer 2017-01-25 17:06:15 +02:00
David Cernat
c62a575a9e [Server] Change order of words in the names of script callbacks 2017-01-25 14:59:23 +02:00
David Cernat
1d9c6ddd81 [General] Add placeholders for the new packet ID_PLAYER_CELL_LOAD 2017-01-25 14:51:43 +02:00
David Cernat
25e535e8ad [Server] Fix integer types for new script callbacks 2017-01-25 07:51:44 +02:00
David Cernat
f9feaf05f0 [Server] Add script callbacks for object placement and deletion 2017-01-25 05:30:25 +02:00
David Cernat
35e453dec3 [General] Sketch out most of functionality for journal saving/loading 2017-01-24 19:32:25 +02:00
Koncord
c3c3c57a98 [Browser] Fix errors for Windows build 2017-01-22 18:18:32 +08:00
Koncord
843a18f347 [Browser] Fix errors and warnings in MSVC 2017-01-22 18:02:38 +08:00
Koncord
db75c4874c [Browser] Fix declaration of 'data' hides class member 2017-01-22 18:02:38 +08:00
David Cernat
0cd7c3ea3d Merge pull request #131 from OpenMW/master
Add OpenMW commits up to 21 Jan
2017-01-22 11:20:20 +02:00
Koncord
dc3f87a81a [Browser] Change iterator types in "for" loops to C++11 style 2017-01-22 17:18:19 +08:00
Koncord
33339fa786 [Browser] Rename addServer to addServerAndUpdate 2017-01-22 17:11:44 +08:00
Koncord
1bd4db5e8b [Browser] Implement update info by index 2017-01-22 17:11:13 +08:00
Koncord
a86739f080 Add addServer by address method 2017-01-22 16:02:21 +08:00
Koncord
ecf82a5df7 Save/Load favorites in browser 2017-01-22 15:59:00 +08:00
Koncord
777a570d93 Init modName 2017-01-22 15:09:52 +08:00
Koncord
4c2294d105 Override closeEvent in MainWindow 2017-01-22 15:09:17 +08:00
Koncord
86d8b0630f Do not allow override ServerModel 2017-01-22 15:07:42 +08:00
Koncord
5b88f3fc44 Use C++11 in browser 2017-01-22 15:01:05 +08:00
Koncord
0af5e1269a Move browser xml files to files/tes3mp/ui 2017-01-22 15:00:28 +08:00
scrawl
7b0a498e83 Merge pull request #1193 from MiroslavR/disabled_player
ESS-import: player is no longer disabled
2017-01-21 05:52:18 +01:00
MiroslavR
c64351b3e8 ESS-import: player is no longer disabled (Bug #3246) 2017-01-21 03:39:51 +01:00
David Cernat
68727751ed Fix arguments for OnPlayerChangeSpellbook in server Networking 2017-01-20 12:54:03 +02:00
David Cernat
869b32383e Fix arguments for OnPlayerChangeJournal in server Networking 2017-01-20 12:52:03 +02:00
David Cernat
d308897f95 Rename PacketItems, PacketSpells into InventoryChanges, SpellbookChanges 2017-01-20 12:43:05 +02:00
David Cernat
e2c595fc5d Add preliminary structure for journal changes 2017-01-20 12:05:45 +02:00
David Cernat
e9b22814b9 Create placeholder for ID_GAME_JOURNAL 2017-01-20 11:15:10 +02:00
David Cernat
a69f294ef0 Rename ID_GAME_CELL into ID_PLAYER_CELL_CHANGE 2017-01-20 10:30:50 +02:00
David Cernat
745ddd9a69 Merge pull request #130 from OpenMW/master
Add OpenMW commits up to 19 Jan
2017-01-20 09:42:55 +02:00
David Cernat
83277a1512 Send spellbook in LocalPlayer CharGen & change UPDATE action name to SET 2017-01-20 09:07:07 +02:00
David Cernat
0f7748d9d2 When clearing LocalPlayer's spells, keep race and birthsign abilities 2017-01-20 08:06:48 +02:00
David Cernat
e7675d94d4 Make server script functions for spells consistent with those from items 2017-01-20 06:00:14 +02:00
scrawl
115e563a7a Fix race conditions caused by Array <-> GLBufferObject interactions (Bug #3580)
The first part of the fix is to assign VBO/EBO's upon loading the array in the Nif reader. This avoids triggering the 'addVertexBufferObjectIfRequired' code path in osg::Geometry which has the race condition when two threads add the same Array at the same time. Essentially, we want the Arrays to be 'const' when they come out of the Nif reader.

The second part of the fix is to make sure not to create empty arrays in the Nif reader (importantly, not assigning a VBO to the empty array). This empty array would be deleted when the NIFFile is cleaned up, and the detachment of the VBO assigned to it (which is still in use by other arrays) would cause threading issues.

This rare crash bug was first introduced with commit a7c5beb7c5. When using OSG dev version 3.5 the crashes were a little more prevalent, because 'addVertexBufferObjectIfRequired' in osg::Geometry is now used even when VBO's are disabled (as part of the VAO support changes).
2017-01-19 22:23:41 +01:00
David Cernat
6b14ca0775 Finish renaming of script functions for sending items and spells 2017-01-19 18:30:31 +02:00
David Cernat
33e85c54de Rename BasePlayer Inventory & Spellbook into PacketItems & PacketSpells
This avoids confusion when either of those is used to store and send a single item, and no longer requires coming up with confusing variable names like realSpellbook or realInventory for actual full spellbooks and inventories.
2017-01-19 18:06:59 +02:00
David Cernat
be851f5e1a Send packet with spells gained at character generation 2017-01-19 16:56:21 +02:00
David Cernat
78c6ab2a99 Clean up client Networking by putting item & spell logic in LocalPlayer 2017-01-19 15:18:37 +02:00
David Cernat
b8a6020af1 Check for update to inventory when closing a container 2017-01-19 13:08:24 +02:00
David Cernat
6eb7706390 Merge branch 'master' of https://github.com/TES3MP/openmw-tes3mp 2017-01-19 12:14:45 +02:00
David Cernat
0fe2d743a7 Rename tes3mp-netlauncher into tes3mp-browser 2017-01-19 12:14:25 +02:00
David Cernat
c77120df6d Merge pull request #129 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwworld/actiontake.cpp
2017-01-19 06:34:09 +02:00
scrawl
ac61535d2c optimize OSGVertexBuffer by double buffering the vertex array instead of recreating it on every modification 2017-01-19 03:19:17 +01:00
scrawl
cc19b4bd8a Fix door rotation order in collision case (Bug #3707) 2017-01-19 02:19:44 +01:00
scrawl
45fb4f04b1 Update reference of the interpreter context when an Activate results in a take action (Fixes #3727) 2017-01-18 21:57:50 +01:00
scrawl
70c5f64caa Fix mLocals not being updated in InterpreterContext::updatePtr 2017-01-18 21:55:58 +01:00
David Cernat
cf8a507860 Set window title for netlauncher 2017-01-18 16:44:59 +02:00
David Cernat
b2577498a9 Use tes3mp icon for netlauncher 2017-01-18 16:37:06 +02:00
David Cernat
fa8650f99a Merge pull request #128 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/mwmechanics/combat.cpp
2017-01-18 15:38:18 +02:00
scrawl
c6822b9eb6 Merge pull request #1192 from damiel/water_refactor
Added refactoring of shader handling from visvalda's fog shader
2017-01-16 18:26:28 +01:00
scrawl
8f5418c12c Merge pull request #1170 from NeveHanter/bugfix-3617
Enchanted arrows don't explode when hitting the ground (Bug #3617)
2017-01-15 23:00:25 +01:00
Martin-Kevin Neumann
5a8efa1649 added refactoring of shader handling from visvalda's fog shader 2017-01-15 14:17:22 +01:00
NeveHanter
e82d542d89 Merge remote-tracking branch 'upstream/master' into bugfix-3617 2017-01-15 09:49:45 +01:00
NeveHanter
811e9ad9f3 Fixed bug https://bugs.openmw.org/issues/3617 by allowing touch and target enchantments from ranged weapons and their projectiles to explode even when colliding with non-activable objects, terrain, water slab or when shoot underwater.
Also allowed projectiles to fly through the dead bodies as in vanilla.
2017-01-15 09:49:25 +01:00
David Cernat
f376b8416e Merge pull request #127 from OpenMW/master
Add OpenMW commits up to 15 Jan
2017-01-15 02:51:15 +02:00
scrawl
edf04667e0 Merge pull request #1191 from Allofich/ai
Stop combat when adding an AI package to an actor
2017-01-14 19:28:33 +01:00
Allofich
f2240dde9c Allow command spells to work when cast by AI on AI
(Fixes #3723)
2017-01-15 01:56:22 +09:00
Allofich
e825010107 Apply command spell effects on impact
Command spells should apply their effects, including taking an actor out
of combat, every time a spell successfully hits, even if a previous
command effect is still active.
2017-01-15 01:53:22 +09:00
Allofich
a46c4de918 Stop combat when adding an AI package to an actor
(Fixes #3722)
2017-01-15 01:53:22 +09:00
David Cernat
afebc9c60f Don't require C++14 for netlauncher 2017-01-14 17:56:29 +02:00
David Cernat
ba493435f3 Prevent crash when trying to remove -1 rows in netlauncher 2017-01-14 17:54:50 +02:00
David Cernat
b1bcba3055 Use Qt 5 by default 2017-01-14 17:31:13 +02:00
David Cernat
76162fbfde Fix netlauncher target properties in CMake for Visual Studio 2017-01-14 17:14:04 +02:00
scrawl
b87abb0456 Reset activation flags when an object is copied (Fixes #3671, Fixes #3719) 2017-01-14 15:29:36 +01:00
David Cernat
70b43ecef6 Merge pull request #126 from OpenMW/master
Add OpenMW commits up to 14 Jan
2017-01-14 05:59:16 +02:00
Koncord
0ab02006de Detect ARM CPUs 2017-01-14 11:17:36 +08:00
scrawl
69ce9f32bc Activate/OnActivate fix (Bug #3712) 2017-01-14 00:10:43 +01:00
David Cernat
2e3f508a56 Fix broken default keys and enable master server in configs 2017-01-13 10:33:21 +02:00
David Cernat
253ded1ee3 Use new getFilenameStamp() method to generate timestamps for filenames 2017-01-13 08:49:21 +02:00
David Cernat
3932654d5d Use log filenames w/ timestamps instead of adding numbers to their ends 2017-01-13 07:58:40 +02:00
David Cernat
213bc1e733 Print correct variable for Terra's library 2017-01-12 13:46:17 +02:00
David Cernat
10a0f165dd Print paths used for server dependencies in CMake, change tabs to spaces 2017-01-12 13:45:04 +02:00
Koncord
3c9eaad5ce Rename Main class to MainWindow 2017-01-12 10:46:48 +08:00
David Cernat
610ba1d867 Merge pull request #125 from OpenMW/master
Add OpenMW commits up to 12 Jan
2017-01-12 04:33:25 +02:00
Koncord
f7dc30387c Run tes3mp-netlauncher instead openmw in the OpenMW Launcher 2017-01-12 08:55:21 +08:00
Koncord
90908ed113 rename openmw-netlauncher to tes3mp-netlauncher 2017-01-12 08:54:11 +08:00
scrawl
73aa07b81b Merge pull request #1189 from Allofich/attack
Match best attack selection to vanilla behavior
2017-01-11 18:36:10 +01:00
scrawl
4307c7dd89 Merge pull request #1190 from Allofich/command
Don't make Command spells cancel AI packages
2017-01-11 18:35:24 +01:00
Allofich
2322ab3125 Don't make Command spells cancel AI packages
(Fixes #3649)
2017-01-12 00:07:22 +09:00
Koncord
4604ee49bf Fix waiting answer when browser not connected to the master server 2017-01-11 23:00:46 +08:00
Koncord
968546b20c Use master server address from config file 2017-01-11 22:58:50 +08:00
Koncord
cb799ee446 Server browser 2017-01-11 22:05:40 +08:00
Allofich
c10585fb07 Match best attack selection to original MW
(Fixes #3721)
2017-01-11 22:22:46 +09:00
David Cernat
dfb87e9e0d Merge pull request #124 from OpenMW/master
Add OpenMW commits up to 11 Jan
2017-01-11 13:30:22 +02:00
David Cernat
56cd18d967 Rename "tes3mp Team" into "tes3mp Credits" and add Special Thanks 2017-01-11 10:19:14 +02:00
Koncord
b6f9a21d7f Do not allow 0 update rate 2017-01-10 20:38:33 +08:00
Koncord
03a92b3a91 Use LOG_VERBOSE instead LOG_INFO 2017-01-10 20:37:40 +08:00
Koncord
01900c2be8 Use modname in Send function 2017-01-10 20:36:39 +08:00
Koncord
2b0ae7b9ca Fix variable name in JSON 2017-01-10 20:35:30 +08:00
Koncord
e92df0c465 Implement SetModname, SetHostname functions 2017-01-10 19:22:02 +08:00
Koncord
f510a5583f Move MasterClient to Networking class
Rename MOTD to hostname
2017-01-10 19:21:31 +08:00
Koncord
b5c586d5b7 Add and implement ID_MASTER_QUERY 2017-01-10 18:33:02 +08:00
Koncord
32615d05cf Prevent allocate memory if player doesn't exists 2017-01-10 18:31:51 +08:00
scrawl
dc1f6cdada Merge pull request #1186 from MiroslavR/autoequip-crea
Creatures now auto-equip shields (Fixes #3704)
2017-01-09 19:05:11 +01:00
Bret Curtis
a4766e25d4 Merge pull request #1188 from rhtucker/master
Added fonts to index and a note on quotes
2017-01-09 07:21:55 +01:00
Ryan Tucker
072a678a60 Added fonts to index and a note on quotes 2017-01-08 19:11:07 -08:00
scrawl
ec19938367 Merge pull request #1187 from rhtucker/master
Added fonts and paths documents.
2017-01-09 03:03:47 +01:00
Ryan Tucker
b02bbe2bf4 Placed note under proper list item 2017-01-08 12:03:53 -08:00
Ryan Tucker
3f272e2935 Added fonts and paths documents
We should have paths on RTD as well because if we change the paths
again, we want the versioning to reflect that without a million notes
informing us of the change.

Also fixed an autocount to work correctly.
2017-01-08 11:58:56 -08:00
Bret Curtis
a30dfac388 Merge pull request #1185 from AnyOldName3/patch-1
Correct lack of quotes in instructions for adding data= lines in documentation
2017-01-08 20:58:07 +01:00
MiroslavR
f1f9209814 Creatures now auto-equip shields (Fixes #3704) 2017-01-08 20:52:04 +01:00
AnyOldName3
577e9838b3 Correct lack of quotes in instructions for adding data= lines 2017-01-08 17:35:07 +00:00
HiPhish
c822b1fa35 Write chapters about tables and record types.
The "Tables", "Record Types" and "Record Filters" chapters have been
adapted from the already existing manual.
2017-01-08 15:43:33 +01:00
scrawl
d88f51f13e Merge pull request #1106 from rhtucker/master
Started settings guide and general edits
2017-01-08 14:40:52 +01:00
Ryan Tucker
777c4b9aad Merge branch 'master' of https://github.com/OpenMW/openmw 2017-01-07 23:50:20 -08:00
Koncord
97dd8704a3 Ignore ping packets 2017-01-07 23:05:22 +08:00
scrawl
421f967ef1 Merge pull request #1183 from Allofich/persuasion
Fix attempting to access NPC stats on creatures
2017-01-05 20:02:46 +01:00
Allofich
5e992a0342 Fix attempting to access NPC stats on creatures 2017-01-06 02:58:24 +09:00
scrawl
d18c86ec2d Merge pull request #1182 from nikolaykasyanov/macos-update-ci-dependencies
[macOS] Use newer prebuilt dependencies on CI
2017-01-05 15:16:39 +01:00
Nikolay Kasyanov
7bd95c8ce3 [macOS] Use https link to download dependencies on CI 2017-01-05 14:06:52 +03:00
Nikolay Kasyanov
07423f973f [macOS] Use newer prebuilt dependencies on CI 2017-01-05 14:02:10 +03:00
scrawl
0cd4fc8cae Merge pull request #1181 from Assumeru/teleportation
Fix teleportation being unreachable
2017-01-04 14:17:21 +01:00
Assumeru
1a073ca642 Fix teleportation being unreachable 2017-01-03 22:02:23 +01:00
Koncord
dbbdb1071c Use default FindLua51 instead homebrew 2017-01-03 19:12:34 +08:00
Koncord
cbae39412a Fix RakNet module 2017-01-03 19:07:42 +08:00
Koncord
27afb91936 RPI v3 patch #1 2017-01-03 19:03:51 +08:00
scrawl
cba1aff9ab Merge pull request #1180 from Allofich/dispel
Make dispel an instant effect again (Fixes #3695)
2017-01-02 15:34:13 +01:00
Allofich
eee49b7ea7 Make dispel an instant effect again (Fixes #3695) 2017-01-02 17:35:50 +09:00
scrawl
80c008906b Fix texture coordinates 2017-01-02 04:50:33 +01:00
scrawl
48a23d61b2 Mask out water in global map overlay 2017-01-02 04:01:04 +01:00
scrawl
7b5f3e3cdc Fix crash in ProjectileManager when a sound id fails to play or is not found 2017-01-01 21:34:31 +01:00
scrawl
911807ad4f Update AUTHORS.md 2017-01-01 20:45:37 +01:00
scrawl
708009eac4 Merge pull request #1158 from logzero/move3
[RFC] Movement solver experiments
2017-01-01 20:44:41 +01:00
scrawl
97d7b1a3b8 Update AUTHORS.md 2017-01-01 20:20:02 +01:00
scrawl
212e85e810 Merge pull request #1174 from Allofich/combat
Adjustments to AI combat engaging and disengaging
2017-01-01 19:36:09 +01:00
scrawl
da3815f5a6 Merge pull request #1179 from Armada651/fix-audio-cutoff
OpenAL_Output: When a source is finished, rewind it instead of stopping it.
2017-01-01 19:13:32 +01:00
logzero
dbf0fa6766 Skip stepping if movement tracer hits actor. 2016-12-31 10:57:06 +01:00
David Cernat
59c3dbe6af Merge pull request #120 from OpenMW/master while resolving conflicts
# Conflicts:
#	README.md
2016-12-30 23:59:30 +02:00
Koncord
6311745595 Update version 2016-12-30 02:54:00 +08:00
Stanislav Zhukov
b3795256af Update README.md 2016-12-30 02:43:52 +08:00
Koncord
b9c3849cc7 Change keycode to scancode 2016-12-30 02:33:44 +08:00
Koncord
7595b33461 Implement spellbook 2016-12-29 21:19:57 +08:00
Marc Zinnschlag
dedd95f52a Merge remote-tracking branch 'miroslavr/save-cleanup' 2016-12-29 08:37:59 +01:00
Jules Blok
e9d8ff532f OpenAL_Output: When a source is finished, rewind it instead of stopping it.
This works around a bug in the MacOS OpenAL implementation.
2016-12-29 01:03:13 +01:00
Marc Zinnschlag
41499ea11f Merge branch 'openmw-41' 2016-12-27 13:35:36 +01:00
David Cernat
fba4878fee Merge pull request #118 from OpenMW/master
Add OpenMW changes up to 27 Dec
2016-12-27 03:49:52 +02:00
MiroslavR
c9dd63af8d Merge pull request #1171 from NeveHanter/travel-followers-cost
Implemented "paying" for travelling followers
2016-12-26 22:34:39 +01:00
NeveHanter
8568cd049f Removed "less" character from the documentation by the requested opportunity. 2016-12-26 21:46:43 +01:00
Allofich
54fa921dad Change some AI combat engagements to not need LOS 2016-12-26 22:42:46 +09:00
Allofich
6fa0354a17 Make AI attack player also if it attacks follower 2016-12-26 22:42:45 +09:00
Allofich
5a6ea4e84e Cleanup 2016-12-26 22:42:44 +09:00
Allofich
e10c4d8814 Stop combat between AI when canFight is false 2016-12-26 22:42:42 +09:00
David Cernat
5bdfb72752 Merge pull request #116 from OpenMW/master
Add OpenMW changes up to 26 Dec
2016-12-26 01:09:20 +02:00
Allofich
e8c7ad2f4b Change environment check to canFight check
Instead of just checking that combatants are in compatible environments,
allow combat if in attack range using canFight. Together with previous
commit, fixes #3690.
2016-12-26 02:14:01 +09:00
Allofich
588442b6cc Make enemies start combat with player followers
Recreates vanilla behavior of enemies starting combat with player
followers and escorters. (Fixes #3691)
2016-12-26 02:13:54 +09:00
logzero
a5360483bb Back off slightly when we are touching something.
This can reduce the amount of movement solver failures significantly.
I've observed a drop of 8 iteration cases by almost factor of ten.
2016-12-25 15:34:43 +01:00
scrawl
fc47e2e66d Merge pull request #1176 from nikolaykasyanov/switch-to-xcode8
[macOS] Switch CI to Xcode 8.2
2016-12-25 01:34:14 +01:00
scrawl
761472f6f1 Merge pull request #1177 from MiroslavR/essimporter-enam
ESSImporter: Convert last known exterior cell
2016-12-25 01:33:57 +01:00
logzero
00f3bfba27 Use tracer hit height to skip stepping up in movement solver. 2016-12-24 23:07:44 +01:00
MiroslavR
c2b491cd70 ESSImporter: Convert last known exterior cell (Fixes #3693)
+ some research
2016-12-24 18:30:39 +01:00
Nikolay Kasyanov
a0990e5899 [macOS] Switch CI to Xcode 8.2 2016-12-24 16:05:24 +01:00
scrawl
cf47299723 Merge pull request #1175 from MiroslavR/pcrank-condition
Fix for "PC Rank" info condition
2016-12-24 13:10:46 +01:00
logzero
ab1724d3db Compare new velocity to the original velocity.
Using old velocity seems awkward,
probably a copypaste/refactoring bug.
2016-12-24 12:38:23 +01:00
logzero
e58de5e410 Remove superfluous velocity reflection in movement solver.
The slide projection negates the reflection effect.
Just to be sure I've compared the resulting vectors
with and without reflection at runtime.
2016-12-24 12:29:09 +01:00
NeveHanter
ff4aba2a6e Moved duplicated code to common ActionTeleport static method and reordered travel price calculations 2016-12-23 21:27:29 +01:00
MiroslavR
5f234f8952 Dialogue: "PC Rank" condition now uses speaker's faction if "PC Faction" is not given (Fixes #3689) 2016-12-23 19:03:59 +01:00
MiroslavR
87fd011a28 Clean-up saves by dropping references with invalid RefNums (Fixes #1956) 2016-12-22 20:48:58 +01:00
scrawl
cf496287f7 Silence static analysis warnings 2016-12-22 14:43:54 +01:00
Ryan Tucker
15cdc06162 Finished transferring settings guide from wiki 2016-12-21 22:04:52 -08:00
Ryan Tucker
6429a610ff Merge branch 'master' of https://github.com/OpenMW/openmw 2016-12-21 20:52:47 -08:00
logzero
50fd913058 Refactor stepMove function into a Stepper object
to be able to reuse up stepper results
for successive movement solver iterations.
This can reduce the number of convex casts
almost by half in some cases.
2016-12-21 19:02:42 +01:00
logzero
4f6e65e481 Apply sliding upward check to new velocity.
This helps to capture the case where new velocity
only differs in the z component (normal pointing up).
TODO: Find a better way to handle the normal pointing up case.
2016-12-21 19:02:42 +01:00
logzero
0b08802910 Integrate MinStep move attempt into stepMove.
This can save 1 to 3 convex casts per iteration.
2016-12-21 19:02:41 +01:00
logzero
25a0219e4d Use cosine of max slope angle for walkable slope checks in movement solver. 2016-12-21 19:02:41 +01:00
logzero
561e0cbbf9 Use squared length for distance checks in movement solver. 2016-12-21 19:02:40 +01:00
scrawl
dc1f788cff Use osg::PI over M_PI 2016-12-21 16:49:37 +01:00
Koncord
6e6237541a Fix "comparison between signed and unsigned integer expressions" 2016-12-21 16:13:39 +08:00
Koncord
af7b232789 Fix type mismatch 2016-12-21 15:46:02 +08:00
Koncord
0d9a4f2b6f Fix "Unhandled PlayerPacket with identifier 135" 2016-12-21 15:01:18 +08:00
Koncord
561a88d441 Fix "comparison between signed and unsigned integer expressions" 2016-12-21 14:46:36 +08:00
NeveHanter
15cd3c178b Clamp price multiplication to 1, as it resulted in player alone traveling at no fee. 2016-12-20 21:23:55 +01:00
NeveHanter
8902bb5b13 Player now pays for the following actors when travelling, with the exception of the first follower who travels for free, refactored getFollowers to getActorsFollowing/getActorsSidingWith 2016-12-20 12:38:51 +01:00
Ryan Tucker
ec471365f5 Merge branch 'master' of https://github.com/OpenMW/openmw 2016-12-19 21:24:14 -08:00
Ryan Tucker
0c71fde523 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	docs/source/openmw-mods/index.rst
2016-12-19 21:09:34 -08:00
Ryan Tucker
bf805813e5 Merge branch 'master' of https://github.com/OpenMW/openmw
# Conflicts:
#	docs/source/openmw-mods/index.rst
2016-12-19 21:06:36 -08:00
David Cernat
ab238e07c4 Fix unnoticed merge conflict 2016-12-20 05:25:31 +02:00
David Cernat
bf0a96d552 Merge pull request #114 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
2016-12-20 05:21:24 +02:00
Marc Zinnschlag
3c89b03568 Merge remote-tracking branch 'origin/openmw-41' into openmw-41 2016-12-19 15:28:49 +01:00
Marc Zinnschlag
9c56ecac77 fixed changelog 2016-12-19 15:28:27 +01:00
scrawl
44ca881614 Merge pull request #1169 from nikolaykasyanov/fix-macos-ci
Reenable macOS CI
2016-12-19 12:09:03 +01:00
Nikolay Kasyanov
2967fbdf4c [CI] Fix email notification configuration 2016-12-18 18:22:43 +01:00
Nikolay Kasyanov
37c8a36dd8 [macOS] Parametrize Qt5 version used on CI 2016-12-18 18:22:43 +01:00
Nikolay Kasyanov
525af97ffc [macOS] Use newer Xcode version on CI 2016-12-18 18:22:43 +01:00
Nikolay Kasyanov
9b74adbb2c [macOS] Reenable CI 2016-12-18 18:22:43 +01:00
Nikolay Kasyanov
6d8d9e5dbc [macOS] Take Qt prefix path from Homebrew for CI resilience
Recent CI failure was caused by path changed by Homebrew.
2016-12-18 18:22:43 +01:00
scrawl
465ff1ffd6 Merge pull request #1168 from MiroslavR/essimporter-mark
ESSImporter: Import mark location
2016-12-18 15:17:39 +01:00
Koncord
efb40b3c66 Remove redundant code 2016-12-18 14:14:52 +08:00
Koncord
11be8ed005 Rename copyOldLog to renameOldLog 2016-12-18 12:48:23 +08:00
Koncord
e44ebca0aa Keep old client logs 2016-12-18 12:45:03 +08:00
Koncord
f08ab0b161 Keep old server logs 2016-12-18 12:45:03 +08:00
Koncord
f7b4aea85b add function for keeping old logs 2016-12-18 12:45:03 +08:00
MiroslavR
cd13570230 ESSImporter: Import mark location 2016-12-18 04:37:59 +01:00
scrawl
f2f0e9f1e7 Clear the Skeleton's bone cache when a node is added/removed (Fixes #3663) 2016-12-17 23:26:33 +01:00
scrawl
b5e8c98b40 Enable waterCollision after moving the player above water (Fixes #3672) 2016-12-17 23:26:17 +01:00
scrawl
6140768783 Enable waterCollision after moving the player above water (Fixes #3672) 2016-12-17 23:21:33 +01:00
David Cernat
973db7c78a Merge pull request #113 from OpenMW/master
Add OpenMW commits up to 17 Dec
2016-12-17 23:27:09 +02:00
scrawl
340bc2c1b0 Merge pull request #1164 from Aussiemon/emptypathfix
Added check to prevent attempted wandering of empty paths
2016-12-17 19:08:55 +01:00
scrawl
d7f01b499d Merge pull request #1167 from lkrieg/sdl_event_0x304_fix2
Handle SDL event 0x304 by doing nothing (#3670)
2016-12-17 14:15:53 +01:00
Leon Krieg
170e723cc7 Handle SDL event 0x304 by doing nothing (#3670) 2016-12-17 12:51:11 +01:00
scrawl
ebfbd88e7d Merge pull request #1166 from OpenMW/revert-1165-sdl_event_0x304_fix
Revert "Handle SDL event 0x304 by doing nothing (#3670)"
2016-12-17 12:04:14 +01:00
scrawl
63e093bcd0 Revert "Handle SDL event 0x304 by doing nothing (#3670)" 2016-12-17 12:04:03 +01:00
scrawl
21897e493e Merge pull request #1165 from lkrieg/sdl_event_0x304_fix
Handle SDL event 0x304 by doing nothing (#3670)
2016-12-17 12:02:39 +01:00
Leon Krieg
c2d6e074c2 Handle SDL event 0x304 by doing nothing (#3670) 2016-12-17 11:52:17 +01:00
scrawl
eae35af13d Check if the bounding box changed before calling dirtyBound() 2016-12-17 00:23:22 +01:00
Aussiemon
2f66b91ac5 Added check to prevent attempted wandering of empty paths 2016-12-16 15:18:28 -07:00
scrawl
2b2a51d3b2 Update AUTHORS.md 2016-12-16 20:50:50 +01:00
scrawl
913a8fe1bd Merge pull request #1160 from Aussiemon/actorupdatecollision
[Do not merge yet] Added check before attempting to remove actor's collision object
2016-12-16 20:46:00 +01:00
scrawl
aafff1deb6 Fix memory leak 2016-12-16 20:40:15 +01:00
Aussiemon
b794aa7c2f Helper methods for updateCollisionMask(), prevent water collision being removed twice, remove Bullet 2.8.5 methods 2016-12-16 12:22:07 -07:00
scrawl
f8690dcd20 Set the drag-and-drop state after initiating the drag, not before (Fixes #3134) 2016-12-16 20:16:59 +01:00
scrawl
cca75499ee Clear the Skeleton's bone cache when a node is added/removed (Fixes #3663) 2016-12-16 20:09:20 +01:00
David Cernat
2d46b33c5f Removed duplicate team list 2016-12-16 19:42:53 +02:00
David Cernat
b36415465a Tweaked readme and added first draft of real changelog 2016-12-16 19:39:57 +02:00
Stanislav Zhukov
f72bea175a Update README.md 2016-12-17 00:52:58 +08:00
U-VirtualBox-PC\Admin
6229269506 Some patches for lua on windows 2016-12-16 19:04:47 +03:00
David Cernat
35de28e239 Fix setting of longer environmental variables on Windows 2016-12-16 17:57:02 +02:00
Marc Zinnschlag
34389e15cd Merge remote-tracking branch 'origin/master' 2016-12-16 12:28:22 +01:00
Marc Zinnschlag
827c78a4cd added text column to ref id table (books) 2016-12-16 12:28:09 +01:00
Koncord
804259b2c9 Change some printf to LOG_MESSAGE_SIMPLE
printf is not streamed to files
2016-12-16 18:50:34 +08:00
Koncord
2eda48acca Fix issue #111 2016-12-16 18:13:44 +08:00
Koncord
f74734cfba Fix server crash if player is not fully connected 2016-12-16 17:53:56 +08:00
Koncord
3ee82a761b Remove redundant include 2016-12-16 17:51:00 +08:00
Koncord
4371a65fc6 fix spaces 2016-12-16 17:31:41 +08:00
Koncord
9ca206dda9 Add hooks for containers 2016-12-16 17:27:19 +08:00
Koncord
536715cf46 Cleanup tes3mp headers 2016-12-16 16:59:15 +08:00
scrawl
f97be48bf4 Merge pull request #1162 from lkrieg/death_collision_fix
Disable NPC collision only when death animation has finished (#3666)
2016-12-15 22:45:49 +01:00
scrawl
c0faeea938 RigGeometry check if mesh has normals (Fixes #3667) 2016-12-15 22:39:21 +01:00
Leon Krieg
12c8c3276a Disable NPC collision only when death animation has finished (#3666) 2016-12-15 19:33:14 +01:00
scrawl
81b9b07820 Merge pull request #1161 from Aussiemon/sdlfix
[Bug #2771] Handle SDL event 0x302 by doing nothing
2016-12-15 16:10:52 +01:00
scrawl
0168c55c2d Merge pull request #1159 from lkrieg/spelling_fixes
More spelling fixes
2016-12-15 16:10:25 +01:00
Leon Krieg
739cd5ba45 Fixed more spelling mistakes 2016-12-15 13:09:40 +01:00
Aussiemon
369272fc70 Handle SDL event 0x302 by doing nothing 2016-12-14 21:08:20 -07:00
Aussiemon
7c2a088b34 Added check before removing water collision object from world 2016-12-14 20:13:23 -07:00
Aussiemon
e30dfb13d3 Added check before attempting to remove actor's collision object from world 2016-12-14 19:05:30 -07:00
scrawl
2eb6ef50ca Revert "[OS X] Reenable CI"
This reverts commit c99d9a47e8.
2016-12-14 20:03:42 +01:00
scrawl
e6332d7c12 Merge pull request #1157 from lkrieg/spelling_fixes
Multiple spelling fixes
2016-12-14 17:56:51 +01:00
Leon Krieg
c7b4b2cdd7 Fixed multiple spelling mistakes 2016-12-14 16:39:33 +01:00
scrawl
8bdd5d1131 Merge pull request #1151 from Aussiemon/projectilelightsfix
Update to implementation of projectile lights
2016-12-14 14:33:09 +01:00
mrohrlach
71e74f5a93 Moved projectile light calculation to separate method 2016-12-13 18:04:20 -07:00
Bret Curtis
065bf47e38 Merge branch 'master' into master 2016-12-13 22:07:40 +01:00
Bret Curtis
582acc8c71 Merge pull request #1156 from jeffreyhaines/patch-2
Minor grammar and sentence changes
2016-12-13 22:05:50 +01:00
Bret Curtis
3f9b36dc3d Merge branch 'master' into patch-2 2016-12-13 21:57:54 +01:00
jeffreyhaines
829f684899 Removed Oxford comma 2016-12-13 15:39:30 -05:00
jeffreyhaines
6fadcc6748 Replaced "prior" with "previous" 2016-12-13 13:29:22 -05:00
jeffreyhaines
2fe2b57faa Replaced choose with select 2016-12-13 13:27:43 -05:00
Bret Curtis
49e6232de5 Merge pull request #1155 from jeffreyhaines/patch-1
Minor spelling correction
2016-12-13 19:18:12 +01:00
jeffreyhaines
d95a663510 Minor grammar and sentence changes 2016-12-13 11:11:21 -05:00
jeffreyhaines
2d928fac36 Minor spelling correction 2016-12-13 10:46:16 -05:00
scrawl
88e07640d5 Merge pull request #1154 from MiroslavR/swish
Fix swish sound ID and play swish sound effects for all creatures
2016-12-11 21:18:55 +01:00
MiroslavR
76ee5845ac Fix swish sound ID and play swish sound effects for all creatures (Fixes #3653) 2016-12-11 19:35:53 +01:00
scrawl
7e797eeda0 Merge pull request #1153 from MiroslavR/itemshadow-bug
Remove item shadows properly
2016-12-10 22:25:56 +01:00
MiroslavR
8c97ac269d Remove item shadows properly (Fixes #3652) 2016-12-10 22:22:41 +01:00
scrawl
b7f8b572ae Merge pull request #1152 from Aussiemon/disintegration2
Bug #2777: Fix for disintegration efffects eliminated by framerate (attempt #2)
2016-12-10 18:02:02 +01:00
mrohrlach
f0f78c9d64 Slight adjustments to disintegration fix 2016-12-09 19:55:26 -07:00
mrohrlach
9624d8aade Added new method and variable to track float remainders of disintegration effections 2016-12-09 19:48:56 -07:00
mrohrlach
f5da179a90 Removed two more bad casts 2016-12-09 18:15:40 -07:00
mrohrlach
3b0c791892 Removed bad casts and unnecessary comments 2016-12-09 18:10:06 -07:00
Allofich
19143f9bc7 Require line of sight for AI attacks (Fixes #3646) 2016-12-06 20:27:04 +01:00
Allofich
e5c9a82a29 Fix fortify maximum magicka expiration (Fixes #3648) 2016-12-06 20:26:58 +01:00
scrawl
876d9c6a84 Merge pull request #1148 from Allofich/aicombat
Require line of sight for AI attacks
2016-12-06 20:02:39 +01:00
scrawl
5f92cc413d Merge pull request #1146 from Allofich/fortify
Fix fortify maximum magicka expiration
2016-12-06 18:02:23 +01:00
Allofich
a6dae51d87 Require line of sight for AI attacks (Fixes #3646) 2016-12-07 01:35:30 +09:00
Allofich
6816e935f1 Fix fortify maximum magicka expiration (Fixes #3648) 2016-12-06 21:00:03 +09:00
scrawl
9febb3e824 Merge pull request #1147 from MiroslavR/NiSphericalCollider
Implement NiSphericalCollider (Closes #3644)
2016-12-06 02:31:11 +01:00
MiroslavR
99bcf47167 Implement NiSphericalCollider (Closes #3644) 2016-12-06 01:32:13 +01:00
Koncord
61f7ad2f76 Add new paths for native & lua libs
If you want to add the native lib you should place it to {PATH_TO_MOD}/lib/
for external Lua libs: {PATH_TO_MOD}/lib/lua/
2016-12-05 23:54:29 +08:00
scrawl
3ac66ec9d4 Update AUTHORS.md 2016-12-05 00:56:11 +01:00
scrawl
4269a2d140 Merge pull request #1144 from Aussiemon/master
Feature #3523:  Light source on magic projectiles
2016-12-05 00:55:50 +01:00
mrohrlach
c2e5f24e98 Tidying up 2016-12-04 16:31:11 -07:00
mrohrlach
ef5cf76ad8 Implemented retrieval of effect colors for lights, made recommended changes 2016-12-04 16:11:21 -07:00
mrohrlach
e1deb8b1d4 Merge branch 'master' of https://github.com/openmw/openmw 2016-12-04 16:09:22 -07:00
scrawl
1e654ca4c3 Update AUTHORS.md 2016-12-04 15:33:37 +01:00
scrawl
250c862ded Merge pull request #1143 from kurnevsky/crash-fix
Crash fix when item is disabled before it casts spell.
2016-12-04 15:32:41 +01:00
mrohrlach
3816d0f6dc Changed light values to better match vanilla. Still need to pull diffusion properties from spells 2016-12-03 19:44:52 -07:00
mrohrlach
099e79edbe Changed a line that did not need to be changed apparently 2016-12-03 19:12:25 -07:00
mrohrlach
61097d93b9 Replaced tabs with spaces (oops) 2016-12-03 19:09:03 -07:00
mrohrlach
49ce80346c Changed methods slightly to ensure non-magic projectiles do not receive lights 2016-12-03 15:42:24 -07:00
mrohrlach
83945cf280 Added reasonable approximation of magic bolt lights 2016-12-03 15:24:21 -07:00
Koncord
7b3e487f91 Register packet ActiveSkills in packet controller 2016-12-03 23:40:30 +08:00
Koncord
b1bb552b65 Add packet ActiveSkills 2016-12-03 23:38:40 +08:00
Koncord
753dc50131 Fix crash if connection has failed 2016-12-03 23:36:53 +08:00
Kurnevsky Evgeny
28639c3b2f Crash fix when item is disabled before it casts spell. 2016-12-03 17:13:31 +03:00
Koncord
75061e2504 Update gitignore for new version of the CLion 2016-12-03 15:50:36 +08:00
scrawl
908cc699ce Merge pull request #1141 from MiroslavR/water-sounds
Implement water sounds
2016-12-02 14:40:22 +01:00
scrawl
9d8275580b Movement solver: performance improvement for the minimum stepping distance check, no need to waste time doing a second stepMove if we did not hit a slope or the step was already large enough to begin with. 2016-12-02 14:34:25 +01:00
scrawl
e0afd6d0f7 Movement solver: performance improvement for the minimum stepping distance check, no need to waste time doing a second stepMove if we did not hit a slope or the step was already large enough to begin with. 2016-12-02 02:25:05 +01:00
David Cernat
d30cc88450 Merge pull request #110 from OpenMW/master
Add OpenMW changes up to 29 Nov
2016-11-29 10:29:28 +02:00
MiroslavR
c34d85ffc2 Implement water sounds (Closes #451) 2016-11-28 21:34:58 +01:00
scrawl
be14ce414e Update AUTHORS.md 2016-11-27 05:36:48 +01:00
scrawl
6759f70229 Merge pull request #1140 from ShadowRadiance/master
Slowfall now reduces momentum based on magnitude when jumping
2016-11-27 05:36:02 +01:00
ShadowRadiance
354a89e3bc Slowfall now reduces momentum based on magnitude when jumping
(Allows Constant Effect Slowfall to work as in MW)
2016-11-26 06:27:11 -05:00
David Cernat
7bbeed629d Merge pull request #109 from OpenMW/master
Add OpenMW changes up to 25 Nov
2016-11-26 01:58:43 +02:00
Nikolay Kasyanov
4f2a64ae17 [macOS] Set OpenMW working dir to <bundle>/Contents/MacOS 2016-11-25 02:54:10 +01:00
Nikolay Kasyanov
ee7f5d7d85 [macOS] Move all configs & resources into app bundles
Fixes #3566 (https://bugs.openmw.org/issues/3566).
2016-11-25 02:54:02 +01:00
scrawl
5297d7b5be Merge pull request #1137 from nikolaykasyanov/osx-structure
[macOS] Move all resources files inside application bundles (fixes #3566)
2016-11-25 02:51:32 +01:00
Marc Zinnschlag
f5943ccd5d updated changelog 2016-11-24 17:09:53 +01:00
Marc Zinnschlag
0874d69546 increased version number 2016-11-24 17:07:52 +01:00
Nikolay Kasyanov
ea888519c7 [macOS] Set OpenMW working dir to <bundle>/Contents/MacOS 2016-11-23 22:32:54 +01:00
Nikolay Kasyanov
db69342b5d [macOS] Move all configs & resources into app bundles
Fixes #3566 (https://bugs.openmw.org/issues/3566).
2016-11-23 22:32:54 +01:00
scrawl
762460f042 Use negative count when restocking item to ensure that its properly tracked (Fixes #3635) 2016-11-22 22:42:04 +01:00
scrawl
42b1163504 Merge pull request #1139 from MiroslavR/thrown-ench
Fix thrown weapon sources being used to apply on strike enchantments
2016-11-22 20:26:14 +01:00
MiroslavR
46a3244107 Fix thrown weapon sources being used to apply on strike enchantments (Fixes #3634) 2016-11-22 18:18:20 +01:00
scrawl
b6d02d9b14 Fix order of operations when undoing werewolf transformation of an NPC 2016-11-22 16:37:49 +01:00
scrawl
505250f6ec Do not use architecture dependent type size_t in esm format (Fixes #3633) 2016-11-22 15:47:06 +01:00
David Cernat
4e23fc0a5b Send action parameter to OnPlayerChangeSpellbook 2016-11-22 02:32:02 +02:00
David Cernat
9e290ad799 Fix spacing irregularities 2016-11-21 23:40:50 +02:00
David Cernat
d4b5c826f8 Fix typo in spell script functions 2016-11-21 20:42:53 +02:00
David Cernat
c81b58e1be Add spell script functions to tes3mp server 2016-11-21 20:37:04 +02:00
David Cernat
8aeb3a6cc6 Reorder script function classes in tes3mp server's CMakeLists.txt 2016-11-21 19:17:28 +02:00
David Cernat
95efb77e53 Implement sending of ID_GAME_SPELLBOOK from client 2016-11-21 06:07:29 +02:00
David Cernat
6ea5f08e9c Create placeholder for ID_GAME_SPELLBOOK 2016-11-21 02:28:05 +02:00
David Cernat
6c8c0827ea Move RequestData() method to BasePacket 2016-11-21 01:31:07 +02:00
David Cernat
fd6dd5daa8 Fix packetID for new packet 2016-11-21 00:03:41 +02:00
David Cernat
1feec58ed2 Merge pull request #108 from OpenMW/master
Add OpenMW changes up to 20 Nov, part 3
2016-11-20 22:57:47 +02:00
David Cernat
ae39daf76a Add and implement ID_MUSIC_PLAY 2016-11-20 22:54:49 +02:00
scrawl
c326564e20 Merge pull request #1136 from Allofich/deletespell
Allow deleting spells that have the "always succeeds" flag
2016-11-20 19:23:25 +01:00
scrawl
16a913c549 Add emission of water ripple particles for water-walking actors (Fixes #3608) 2016-11-20 18:47:12 +01:00
David Cernat
f9ca98498d Merge pull request #107 from OpenMW/master
Add OpenMW commits up to 20 Nov, part 2
2016-11-20 19:30:24 +02:00
Allofich
c82df2553c Allow deleting spells that have the "always succeeds" flag (Fixes #3627) 2016-11-21 02:26:02 +09:00
David Cernat
7a3d490121 Rename dumps into crashdumps to make the folder's purpose clear to users 2016-11-20 19:25:55 +02:00
David Cernat
f865246955 Fix Breakpad using changes provided by Stanislav in a gist 2016-11-20 18:34:22 +02:00
scrawl
385db50f2d Merge pull request #1131 from Allofich/waterwalking
Make water walking mechanics closer to original MW
2016-11-20 17:19:15 +01:00
scrawl
37ae6fac85 Merge pull request #1135 from MiroslavR/Wmismatched-tags
Fix -Wmismatched-tags clang warning
2016-11-20 17:18:56 +01:00
MiroslavR
c1e52bbcf7 Fix -Wmismatched-tags clang warning 2016-11-20 15:10:37 +01:00
Allofich
0e429ae41d Make water walking mechanics closer to original MW 2016-11-20 22:21:33 +09:00
David Cernat
456aee65d9 Add and implement ClearInventory() script function 2016-11-20 04:06:33 +02:00
David Cernat
80b40bfb70 Prevent inventory requests from making LocalPlayer send inventory twice 2016-11-20 03:21:15 +02:00
David Cernat
7fae28ce91 Prevent RemoveItem() script function from clearing inventorySendBuffer
Up to this commit, the following commands in a Lua script led to the target player receiving all three items, as expected:

    tes3mp.AddItem(self.pid, "common_shirt_01", 1, -1)
    tes3mp.AddItem(self.pid, "common_pants_01", 1, -1)
    tes3mp.AddItem(self.pid, "common_shoes_01", 1, -1)
    tes3mp.SendInventory(self.pid)

This, on the other hand, only led to the removal of the last item specified (in this case, the shoes):

    tes3mp.RemoveItem(self.pid, "common_shirt_01", 1)
    tes3mp.RemoveItem(self.pid, "common_pants_01", 1)
    tes3mp.RemoveItem(self.pid, "common_shoes_01", 1)
    tes3mp.SendInventory(self.pid)

Inventory functions are bound to remain confusing, but they should at least be consistent in their behavior.
2016-11-20 03:06:04 +02:00
David Cernat
c6eac31d94 Merge pull request #106 from OpenMW/master
Add OpenMW changes up to 20 Nov
2016-11-20 01:20:25 +02:00
scrawl
f51e06bc47 Recreate shaders if necessary when the NpcAnimation is rebuilt
This fixes certain equipment losing the 'invisibility' effect after a view-mode switch with shaders enabled. Because the initial build of shaders done by the resource manager is not aware of the override state in the NpcAnimation's object root, we have to build new shaders here.
2016-11-19 23:53:22 +01:00
scrawl
e823cbf018 Fix incorrect priority of animation sources (Bug #3626) 2016-11-19 23:53:22 +01:00
scrawl
4a62273d6e Merge pull request #1134 from MiroslavR/review-spells
Show starting abilities, powers and spells in stat-review window
2016-11-19 22:53:43 +01:00
MiroslavR
8f91732b09 Show starting abilities, powers and spells in stat-review window (Fixes #2410) 2016-11-19 21:51:19 +01:00
David Cernat
49a78d8462 Merge pull request #105 from OpenMW/master
Add OpenMW changes up to 19 Nov
2016-11-19 22:24:48 +02:00
David Cernat
843e84ba26 Once again use RakNetGUID as index for player map everywhere
Because of frequent server crashes, I tried to simplify the player map indexes with commit c91e240664, but it had no noticeable effect and was later partially reverted by Koncord in commit 902e968fd9, apparently for reasons of readability.

For the sake of consistency, this commit completes his reversion.
2016-11-19 22:16:21 +02:00
scrawl
99521fe6f4 Merge pull request #1130 from lysol90/master
More updates to bump map tutorial
2016-11-19 17:04:00 +01:00
Joakim Berg
3adf69f91e Update convert_bump_mapped_mods.rst 2016-11-19 14:34:35 +01:00
scrawl
0f97d856ab Merge pull request #1133 from MiroslavR/gmst-defaults
Fix default values of some GMSTs
2016-11-18 14:38:29 +01:00
David Cernat
234266755e Prevent player-controlled NPCs from auto-unequipping candles and torches 2016-11-18 02:47:59 +02:00
David Cernat
7f25abb9c8 Implement UnequipItem() script function 2016-11-18 01:50:55 +02:00
David Cernat
c1bd4f1ce3 Use correct item count in LocalPlayer::setEquipment() for new items 2016-11-18 01:33:46 +02:00
David Cernat
56928bdc4c Clean up inventory script functions so they are usable for equipment too 2016-11-18 00:52:17 +02:00
David Cernat
356143faed Rename GetEquipmentSlotCount() into GetEquipmentSize() 2016-11-18 00:46:42 +02:00
David Cernat
977e93288e Add GetEquipmentSlotCount() to item script functions 2016-11-17 23:07:29 +02:00
David Cernat
fcd24ebb7e Rename methods to show they deal with Equipment instead of Inventory 2016-11-17 22:33:30 +02:00
David Cernat
c2abcd3869 Fix installation target for tes3mp 2016-11-17 21:43:05 +02:00
David Cernat
b028f0b51f Merge pull request #104 from OpenMW/master
Add OpenMW commits up to 17 Nov
2016-11-17 21:13:58 +02:00
David Cernat
120a4400d9 Merge branch 'master' of https://github.com/TES3MP/openmw-tes3mp 2016-11-17 20:51:22 +02:00
David Cernat
6e630e6123 Send inventory packets when picking up world items 2016-11-17 20:51:07 +02:00
MiroslavR
7e5ba4d435 Fix default values of some GMSTs 2016-11-17 19:43:02 +01:00
scrawl
9d125bcaa2 Merge pull request #1129 from PhillipAnd/phillipand-cmake-fix
Fix various build issues with Visual Studio environment
2016-11-17 18:25:23 +01:00
scrawl
2368382ea5 Fix upside down rain particle texture 2016-11-17 17:52:20 +01:00
Koncord
f5f1a29f31 Change printf to LOG_MESSAGE_SIMPLE 2016-11-18 00:35:38 +08:00
David Cernat
a7f081dfa5 Remove out-of-date changelog 2016-11-17 17:38:24 +02:00
David Cernat
3a733eb122 Make tes3mp includes consistent 2016-11-17 17:16:25 +02:00
scrawl
2da4de85be Merge pull request #1132 from MiroslavR/aiflee
Implement fleeing AI
2016-11-17 15:48:57 +01:00
David Cernat
faea5221d3 Use LocalPlayer's updateInventory() every cell change, not every frame 2016-11-17 15:32:04 +02:00
Koncord
19240b825d Fix macro for MSVC 2016-11-17 20:51:03 +08:00
Koncord
18026d4a50 Fix include guard 2016-11-17 13:22:34 +08:00
Koncord
902e968fd9 Use RakNetGUID instead uint64_t in TPlayers 2016-11-17 13:12:06 +08:00
Koncord
e2359b01ea Use constant instead magic value 2016-11-17 13:02:24 +08:00
Koncord
b57ed2c119 Fix parameter type mismatch 2016-11-17 12:43:29 +08:00
Koncord
e2522fa366 Simplify LOG macros 2016-11-17 12:39:35 +08:00
David Cernat
eedd40328a Add and use SendInventory() method in LocalPlayer, and clarify some code 2016-11-16 21:34:46 +02:00
MiroslavR
5e46121046 Implement fleeing AI (Closes #1118) 2016-11-16 20:15:25 +01:00
David Cernat
c5c72a3b17 Use consistent names for booleans in LocalPlayer 2016-11-16 20:01:47 +02:00
David Cernat
46b41b605a Revert "Use lowerCamelCase in tes3mp server script function names, part 1"
This reverts commit 0e2b589cdb.
2016-11-16 19:28:22 +02:00
David Cernat
ad43cb5473 Revert "Use lowerCamelCase in tes3mp server script function names, part 2"
This reverts commit 80d16fe1fd.
2016-11-16 19:27:46 +02:00
David Cernat
1a25434d33 Turn overlooked instance of GetCell() into getCell() 2016-11-16 17:48:39 +02:00
David Cernat
6cd959fac8 Rename BasePlayer's GetCell() into getCell() 2016-11-16 17:43:58 +02:00
David Cernat
80d16fe1fd Use lowerCamelCase in tes3mp server script function names, part 2 2016-11-16 17:39:44 +02:00
David Cernat
0e2b589cdb Use lowerCamelCase in tes3mp server script function names, part 1 2016-11-16 16:52:16 +02:00
David Cernat
25dc2b19e7 Use lowerCamelCase in tes3mp server networking function names 2016-11-16 02:05:14 +02:00
David Cernat
7be86388db Fix build for server 2016-11-16 01:16:02 +02:00
David Cernat
fa9d6e810e Use lowerCamelCase in tes3mp client function names like OpenMW does 2016-11-15 21:54:06 +02:00
David Cernat
527024a026 Stop WorldPackets about invalid cells from causing framelistener errors 2016-11-15 19:51:05 +02:00
David Cernat
a430ee011a Use WorldController to fetch CellStore for WorldPackets received 2016-11-15 19:13:36 +02:00
David Cernat
3dcb8738c1 Create placeholder WorldController class 2016-11-15 18:42:52 +02:00
David Cernat
8d2793401e Merge pull request #103 from OpenMW/master
Add OpenMW commits up to 13 Nov
2016-11-14 14:08:16 +02:00
Phillip Andrews
c18fc113e5 Changed missing library dependencies to simple fix 2016-11-14 00:01:22 -06:00
Phillip Andrews
aeaedbc57a Moved install commands to target-specific cmakelists so that all configurations work. 2016-11-13 22:49:01 -06:00
Phillip Andrews
7383cc9de4 Forgot to undo my test edits because I am a big dum-dum 2016-11-13 17:06:00 -06:00
Phillip Andrews
59eba1dede Changed tabs to spaces, oops 2016-11-13 16:59:36 -06:00
Phillip Andrews
86b4673539 Removed math constants in openmw-cs, which are apparently not going to be used 2016-11-13 16:43:07 -06:00
Phillip Andrews
a1225ff4ec Additional MSVC library dependencies 2016-11-13 14:34:12 -06:00
Phillip Andrews
1861302dbd Include various libraries for Visual Studio environment 2016-11-13 14:27:59 -06:00
scrawl
02b9e81f89 Merge pull request #1127 from Allofich/warnings
Fix shadowing warnings
2016-11-13 20:49:26 +01:00
scrawl
233c9e37b0 Merge pull request #1128 from MiroslavR/Woverloaded-virtual
Fix overloaded virtual function warning
2016-11-13 20:49:14 +01:00
Phillip Andrews
2efd38b1ab Fix install procedure so it works with all MSVC build configurations, not just Release 2016-11-13 13:32:42 -06:00
MiroslavR
175cfd4dff Fix overloaded virtual function warning 2016-11-13 17:22:50 +01:00
Allofich
3420121c3f Fix shadowing warnings 2016-11-13 23:20:51 +09:00
scrawl
5658817581 Merge pull request #1126 from Allofich/waterwalking
Don't allow resting on water with water walking
2016-11-13 13:58:26 +01:00
Allofich
fee39afe38 Don't allow resting on water with water walking 2016-11-13 19:50:33 +09:00
David Cernat
f7b5e5e638 Ignore packets from server that try to move LocalPlayer to invalid cells 2016-11-12 22:21:02 +02:00
David Cernat
dc9b814ff6 Fix typo in server script translocations 2016-11-12 21:36:03 +02:00
David Cernat
841e93d5e0 Use new SendCell() method in server scripts to send cell packets 2016-11-12 21:27:09 +02:00
David Cernat
5b39916894 Use new SendPos() method in server scripts to send position packets 2016-11-12 21:16:05 +02:00
David Cernat
e0c88150c3 Reorder functions for server script translocations 2016-11-12 21:01:38 +02:00
Koncord
c85e6a5f91 Fix sucess chance 2016-11-12 20:43:18 +08:00
Koncord
799842b5da Reduce using of the CPU 2016-11-12 20:11:27 +08:00
Koncord
56959ebfda Implement magic 2016-11-12 19:39:16 +08:00
Joakim Berg
12dd60fe20 Update convert_bump_mapped_mods.rst
Forgot to fix one link.
2016-11-11 22:53:25 +01:00
Joakim Berg
2feddcbcc5 Updated the bump mapping tutorial
Fixed some linking errors, edited a few backslashes to become forwardslashes (the backslashes couldn't even be viewed), made all the paths a bit more correctly formatted by writing them with a ./ first (please tell me if that is a bad idea) and added a link to the On The Rocks! mod, since it is a very common mod with this problem (it is featured in MGSO and Morrowind Rebirth).
2016-11-11 22:52:14 +01:00
David Cernat
729da2c0ba Improve logic and clarity of LocalPlayer's charGenThread()
Until now, the fact that charGenThread() returned false whenever the player had a menu open was preventing Main::UpdateWorld() from running at all with a menu open.

The result was that no player packets from LocalPlayer::Update() were being sent by a player in a menu.
2016-11-11 23:46:17 +02:00
Joakim Berg
2e391782ba Merge pull request #1 from OpenMW/master
Updating my own fork
2016-11-11 22:28:03 +01:00
David Cernat
dc5bb32f2a Merge pull request #100 from OpenMW/master
Add OpenMW commits up to 11 Nov
2016-11-11 10:24:53 +02:00
scrawl
f0d5cf7afb Merge pull request #1112 from Assumeru/waterwalking
Move actors out of the water if there's room for them. Fixes #1138
2016-11-10 19:02:51 +01:00
Assumeru
05cc258ed3 Start trace from collision object origin 2016-11-10 15:38:14 +01:00
Bret Curtis
02d859e298 minor fix to remove Index:, it isn't necessary 2016-11-10 10:50:43 +01:00
Bret Curtis
1ffdd2dd0f Merge pull request #1125 from lysol90/master
Further updating of normal map conversion documentation
2016-11-10 10:44:40 +01:00
Joakim Berg
303fe013ea Update convert_bump_mapped_mods.rst 2016-11-09 22:51:27 +01:00
Joakim Berg
e957e2b3cc Update convert_bump_mapped_mods.rst
Ok, so another update then. Sorry for another one so soon after the first PR, but I think (or hope) that this will be the last edit for some time. It looks good to me now. ´

Mainly, I changed changed some "=" headers to "-", and while at it, I fixed some typing errors and just edited some text to read better.
2016-11-09 22:47:39 +01:00
Bret Curtis
a1c1db467e Merge pull request #1124 from lysol90/master
Create convert_bump_mapped_mods.rst
2016-11-09 21:32:45 +01:00
Assumeru
99bc4f733f Trace up to waterlevel + halfextent 2016-11-09 18:03:10 +01:00
Joakim Berg
d7bf2b9e85 Update index.rst
Added convert_bump_mapped_mods to the table of contents.
2016-11-09 15:56:07 +01:00
Joakim Berg
3ee28bfeac Update convert_bump_mapped_mods.rst
This should be correct according to the style-guide. Well, except for the British/American spelling. I need a Brit and/or an American to confirm that.
2016-11-09 15:47:50 +01:00
Joakim Berg
1b8cfee5eb Update convert_bump_mapped_mods.rst 2016-11-09 15:38:49 +01:00
lysol90
2d48c38d0d Create convert_bump_mapped_mods.rst
A tutorial to how normal mapping works with different mods in Morrowind and how they work in OpenMW. It also covers how to convert the mods made for Morrowind to be used with OpenMW.
2016-11-09 13:14:50 +01:00
David Cernat
48ca4d29bc Merge pull request #99 from OpenMW/master
Add OpenMW commits up to 7 Nov
2016-11-08 00:24:39 +02:00
scrawl
92d42ef49b Merge pull request #1123 from Allofich/warnings
Fix dereference of null pointer warning
2016-11-07 22:22:32 +01:00
scrawl
4f8bfb7702 Merge pull request #1122 from MiroslavR/slow-repair
Improve performance of repairing/recharging
2016-11-07 22:16:11 +01:00
Allofich
c7313606f5 Fix dereference of null pointer warning 2016-11-07 22:39:20 +09:00
David Cernat
8aaf44e5a8 Fix accidental line duplication 2016-11-06 19:07:03 +02:00
David Cernat
ec211e58d0 Merge pull request #98 from OpenMW/master while resolving conflicts
# Conflicts:
#	apps/openmw/CMakeLists.txt
2016-11-06 19:03:35 +02:00
MiroslavR
e80636f0ca Improve performance of repairing/recharging (Fixes #2493) 2016-11-06 11:01:46 +01:00
scrawl
7af1e09151 Merge pull request #1120 from nikolaykasyanov/osx-link-libz
Link OpenMW with libz on macOS explicitly
2016-11-05 15:43:23 +01:00
Nikolay Kasyanov
3adf4cb97f Link OpenMW with libz on macOS 2016-11-05 12:18:22 +01:00
Nikolay Kasyanov
0115a3a874 Revert "Link OpenMW with libz on macOS"
This reverts commit 0c4dd05118.
2016-11-05 12:11:04 +01:00
Nikolay Kasyanov
0c4dd05118 Link OpenMW with libz on macOS 2016-11-05 12:09:47 +01:00
scrawl
d8b506155e Merge pull request #1118 from MiroslavR/resize-perf
Fix horrible performance when resizing/moving the settings window
2016-11-04 20:24:27 +01:00
David Cernat
817b63922c Put DedicatedPlayer in ToddTest if his cell doesn't exist on our client 2016-11-04 20:53:19 +02:00
David Cernat
4d053743a0 Merge branch 'master' of https://github.com/TES3MP/openmw-tes3mp 2016-11-04 15:52:13 +02:00
David Cernat
25afa47e08 Only declare ptrCellStore for WorldPackets that need it 2016-11-04 15:47:55 +02:00
Koncord
82f202c891 Implement GetAvgPing(pid) function 2016-11-04 20:15:14 +08:00
Koncord
37e9cafbf7 Add new API function: SetConsoleAllow
example:
tes3mp.SetConsoleAllow(pid, 0) -- disallow console to the player

The console is allowed by default
2016-11-04 03:01:26 +08:00
Koncord
3759127627 Woops 2016-11-04 00:57:51 +08:00
Koncord
6f6993255a Fix string in breakpad() 2016-11-04 00:24:16 +08:00
Koncord
adb49b7c7d Add New GUI dialog: ListBox
Example:

local GUI_LISTBOX = 42

function OnPlayerSendMessage(pid, message)
    if message == "/lb" then
        local items = "consectetur adipiscing elit\nsed do eiusmod tempor incididunt ut labore\net dolore magna aliqua." -- items can be separated through newline
        local label = "Lorem ipsum dolor sit amet"
        tes3mp.ListBox(pid, GUI_LISTBOX, label, items)
    end
end

function OnGUIAction(pid, idGui, data)
    if idGui == GUI_LISTBOX then
        print("ID: " .. idGui .. " data: " .. tostring(data)) -- if value higher than last item id
    end
end
2016-11-04 00:24:16 +08:00
David Cernat
107dacac6d Add OnPlayerChangeInventory server script callback 2016-11-03 16:39:31 +02:00
David Cernat
6ff47bbde9 Merge pull request #93 from OpenMW/master
Add OpenMW commits from 1 Nov
2016-11-02 12:31:20 +02:00
scrawl
681efdb6ca Merge pull request #1119 from nikolaykasyanov/use-local-config-path-in-launcher
Use local config path from configuration manager in the launcher
2016-11-01 21:48:28 +01:00
Nikolay Kasyanov
5d4734c02e Use local path from configuration manager to load openmw.cfg in launcher 2016-11-01 21:27:35 +01:00
Nikolay Kasyanov
224d7f27b0 Revert "Use local path from configuration manager to load openmw.cfg in launcher"
89e85a6acf
2016-11-01 21:19:27 +01:00
Nikolay Kasyanov
89e85a6acf Use local path from configuration manager to load openmw.cfg in launcher 2016-11-01 21:14:24 +01:00
MiroslavR
5cd04af3fa Fix horrible performance when resizing/moving the settings window
Resize widgets instead of reconstructing them.
2016-11-01 16:37:00 +01:00
David Cernat
66e697953c Add missing break statement in Networking to prevent default nighttime 2016-10-31 22:53:32 +02:00
David Cernat
31d02e8bf1 Move Networking code for ID_GAME_INVENTORY next to ID_GAME_EQUIPMENT 2016-10-31 17:16:41 +02:00
David Cernat
4d72e7ce37 Merge pull request #91 from OpenMW/master
Add OpenMW commits up to 31 Oct
2016-10-31 12:22:37 +02:00
David Cernat
06152fde77 Stop player-controlled NPCs from reporting crimes committed by players 2016-10-31 11:00:56 +02:00
David Cernat
4621363b65 Make capitalization reflect name of filename, and remove unused check 2016-10-31 01:23:31 +02:00
David Cernat
373011f883 Only send information to POSTLOADED player about other POSTLOADED ones 2016-10-31 01:14:17 +02:00
scrawl
d073999340 Merge pull request #1117 from nikolaykasyanov/fix-osx-ci
Fix & reenable OS X CI
2016-10-30 23:27:57 +01:00
Nikolay Kasyanov
cf2e59c983 [OS X] Use Qt 5.5 on CI
Newer Qt versions require C++11.
2016-10-30 21:36:43 +01:00
Nikolay Kasyanov
c99d9a47e8 [OS X] Reenable CI 2016-10-30 21:36:43 +01:00
David Cernat
cd798d5f23 Merge pull request #89 from OpenMW/master
Add OpenMW commits up to 30 Oct
2016-10-30 21:49:07 +02:00
scrawl
e0f613661e Fix char -> int, fix shadowing warning 2016-10-30 20:10:33 +01:00
David Cernat
05cfc918f5 Temporarily use a whitelist for scripts instead of a blacklist 2016-10-30 21:00:54 +02:00
scrawl
cac8de0b29 Merge pull request #1116 from Allofich/paused
Don't update ripple simulation when paused
2016-10-30 19:26:56 +01:00
scrawl
e5cb7306c3 Merge pull request #1115 from Allofich/conversion
Fix narrowing conversion warning
2016-10-30 19:26:51 +01:00
scrawl
f514f53f52 Merge pull request #1114 from Allofich/warnings
Fix shadowing warnings
2016-10-30 19:26:38 +01:00
Allofich
19db070fca Don't update ripple simulation when paused 2016-10-31 01:19:38 +09:00
David Cernat
621faf368e Fix server crash caused by invalid player GUIDs, 2nd attempt 2016-10-30 18:07:23 +02:00
Allofich
68ed264f40 Fix narrowing conversion warning 2016-10-31 00:53:17 +09:00
David Cernat
ffb7683a5f Use suicide as death reason when an attacker leaves the server 2016-10-30 17:39:45 +02:00
Allofich
125e94ef0e Fix shadowing warnings 2016-10-31 00:39:31 +09:00
David Cernat
3c4b74cd14 Fix frame listener errors for player markers 2016-10-30 16:39:59 +02:00
David Cernat
eebe1f156a Change logic for death reasons so it makes sense 2016-10-30 13:19:48 +02:00
David Cernat
9c12aa2141 Fix formatting 2016-10-30 12:58:58 +02:00
David Cernat
6929cd6c4c Delete debug about player map that is no longer needed 2016-10-30 02:30:17 +03:00
David Cernat
cee7843576 Send ID_OBJECT_DELETE when taking world items through inventory screen 2016-10-30 02:26:32 +03:00
David Cernat
41504bd02a Use more accurate position for ID_OBJECT_PLACE 2016-10-30 00:51:23 +03:00
David Cernat
a4647de048 Break away from OpenMW by giving RefNum indexes to new created objects 2016-10-30 00:21:55 +03:00
David Cernat
3c88f6f0cd Fix server crash caused by invalid player GUIDs 2016-10-29 16:41:29 +03:00
David Cernat
937bf97883 Send gold values correctly with ID_OBJECT_PLACE 2016-10-29 00:34:46 +03:00
David Cernat
180aa3f2f3 Send item count ID_WORLD_OBJECT_PLACE 2016-10-28 22:35:01 +03:00
David Cernat
1f982e4dc7 Find objects from world packets using both ID and reference number 2016-10-28 21:31:41 +03:00
David Cernat
d93e66207e Update player markers only when getting a position packet 2016-10-27 19:09:05 +03:00
David Cernat
7f98cddfdf Don't send animation packets from blacklisted scripts 2016-10-27 17:41:48 +03:00
David Cernat
e414261121 Send ID_OBJECT_ANIM_PLAY from ingame scripts 2016-10-27 16:46:47 +03:00
David Cernat
46397a7dac Add and implement ID_OBJECT_ANIM_PLAY 2016-10-27 16:09:02 +03:00
David Cernat
344f2b535a Fix setting of index for ID_SCRIPT_MEMBER_SHORT in InterpreterContext 2016-10-27 15:02:40 +03:00
David Cernat
fd4085725e Set version to 0.3.0 2016-10-27 14:05:20 +03:00
David Cernat
fff6833950 Send ID_SCRIPT_MEMBER_SHORT from MWScript::InterpreterContext 2016-10-27 02:18:27 +03:00
David Cernat
d5fca115f7 Fix variable name for ID_SCRIPT_GLOBAL_SHORT in InterpreterContext 2016-10-27 02:17:06 +03:00
David Cernat
c205e793cb Add and implement ID_SCRIPT_MEMBER_SHORT 2016-10-27 00:41:14 +03:00
David Cernat
c91e240664 Simplify the type of map that player objects are stored in 2016-10-26 21:36:58 +03:00
David Cernat
65363b0dd1 Avoid sending packets for 9 more ingame scripts 2016-10-26 21:33:13 +03:00
David Cernat
2032bf9cad Fix typo in debug 2016-10-26 17:22:53 +03:00
David Cernat
a9f6ea4d8d Use the name "guid" for RakNet IDs so as to not confuse with int IDs 2016-10-26 15:55:34 +03:00
David Cernat
6d61c6cf2d Merge pull request #84 from OpenMW/master
Add OpenMW commits from Oct 25
2016-10-26 15:26:42 +03:00
David Cernat
47854d631b Avoid sending packets for 2 more ingame scripts 2016-10-26 15:24:53 +03:00
David Cernat
c99c3b1486 Avoid sending packets for 3 additional spammy ingame scripts 2016-10-26 12:43:26 +03:00
David Cernat
749c6db49e Send WorldPackets with script values from MWScript::InterpreterContext 2016-10-26 12:29:32 +03:00
David Cernat
97468980af Add and implement 3 new WorldPackets for ingame script variable values 2016-10-26 12:25:50 +03:00
Assumeru
25d64989b3 Check if the actor still exists /first/ 2016-10-26 11:04:54 +02:00
David Cernat
e7ebeb8eec Stop sending ID_OBJECT_MOVE and ID_OBJECT_ROTATE from scripts, because it clashes with syncing script variable values across players and makes movements and rotations happen twice 2016-10-26 10:01:55 +03:00
David Cernat
75f6d82f08 Add a way of filtering out ingame scripts for upcoming script packets 2016-10-25 22:44:15 +03:00
Assumeru
a72cd896ca Move actors out of the water if there's room for them. Fixes #1138 2016-10-25 19:26:17 +02:00
David Cernat
aaf4cc0d7e Prevent being in a menu from disabling script execution or actor damage 2016-10-25 17:48:00 +03:00
scrawl
8a8aa664e3 Update AUTHORS.md 2016-10-25 16:44:54 +02:00
scrawl
8485f6aefb Merge pull request #1111 from Assumeru/weakness_resistance
Fix Calm/Frenzy/Demoralize/Rally Creature weakness and resistance
2016-10-25 16:44:12 +02:00
Assumeru
f6ef1ce276 Fix Calm/Frenzy/Demoralize/Rally Creature weakness and resistance 2016-10-25 15:42:37 +02:00
David Cernat
cc40b85034 Don't send packets for floating objects 2016-10-25 16:30:31 +03:00
David Cernat
b1051255e0 Send ID_OBJECT_ROTATE from ingame scripts 2016-10-25 14:42:54 +03:00
David Cernat
385b5f39e3 Add and implement ID_OBJECT_ROTATE 2016-10-25 14:28:39 +03:00
David Cernat
54ed9a7ab4 Implement ID_OBJECT_MOVE and send it from ingame scripts 2016-10-25 14:07:00 +03:00
David Cernat
0fb9b6eefb On second thought, rename ID_OBJECT_MOVE_WORLD into ID_OBJECT_MOVE 2016-10-25 12:53:18 +03:00
David Cernat
947a677801 Replace ID_ACTIVATOR_ACTIVATE with ID_OBJECT_MOVE_WORLD 2016-10-25 12:42:29 +03:00
David Cernat
c25ebc34b3 Shorten WorldPacket IDs by removing WORLD from them 2016-10-25 12:15:27 +03:00
David Cernat
bdb53e1cb4 Implement ID_WORLD_DOOR_ACTIVATE and send it from MWBase::World 2016-10-25 10:40:55 +03:00
David Cernat
7264f13b8e Implement ID_WORLD_OBJECT_SCALE and send it from ingame scripts 2016-10-25 00:52:42 +03:00
David Cernat
52d156e136 Make server able to receive the 5 new WorldPackets 2016-10-25 00:50:32 +03:00
David Cernat
4f0a3e8aa1 Add placeholders for 5 new WorldPackets 2016-10-24 23:44:05 +03:00
David Cernat
ef6f20e3f7 In server console, print number of players remaining when one leaves 2016-10-24 22:47:52 +03:00
David Cernat
24bfe40bf7 Add debug about current server crash 2016-10-24 21:17:53 +03:00
David Cernat
b2688777c1 Create marker once a player has been initialized properly and fix debug 2016-10-24 21:08:47 +03:00
David Cernat
be73265848 Send ID_WORLD_VIDEO_PLAY from ingame scripts 2016-10-24 17:55:10 +03:00
David Cernat
b6111d16cc Add and implement ID_WORLD_VIDEO_PLAY 2016-10-24 17:52:19 +03:00
David Cernat
c54af2b02b Make DedicatedPlayer's setMarkerState method actually enable markers 2016-10-24 16:26:51 +03:00
David Cernat
1e4d625c99 Make player markers show up in exterior cells 2016-10-24 15:29:10 +03:00
David Cernat
04eb051df6 Make markers get removed when their players quit, rename marker methods 2016-10-24 15:10:32 +03:00
David Cernat
aed884949c Send ID_WORLD_OBJECT_LOCK from ingame scripts 2016-10-24 13:22:46 +03:00
David Cernat
3fd93896f2 Add and implement ID_WORLD_OBJECT_LOCK 2016-10-24 13:20:04 +03:00
David Cernat
3a5a5e73a1 Send ID_WORLD_OBJECT_UNLOCK from ingame scripts and regular unlocking 2016-10-24 11:43:27 +03:00
David Cernat
08ea5163c4 Add and implement ID_WORLD_OBJECT_UNLOCK 2016-10-24 11:26:31 +03:00
David Cernat
94c5d6d2f9 Don't use autoEquip on player-controlled NPCs 2016-10-24 11:15:09 +03:00
David Cernat
47ebd24b4a Merge pull request #79 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
#	apps/openmw/mwinput/inputmanagerimp.cpp
2016-10-24 09:18:21 +03:00
David Cernat
a6fa0073a0 Find items by mRefNum.mIndex instead of mRefNum for WorldPackets 2016-10-23 23:13:42 +03:00
David Cernat
6bfaf3be50 Send an ID_WORLD_OBJECT_PLACE whenever ingame scripts place objects 2016-10-23 20:48:24 +03:00
David Cernat
3380c482c0 Fix errors remaining from merge with tes3mp-packetexpansion, part 2 2016-10-23 19:32:39 +03:00
David Cernat
b06a2f3119 Fix part about Breakpad in server's CMakeLists 2016-10-23 19:28:35 +03:00
David Cernat
e7567020bb Fix debug for ID_WORLD_OBJECT_DELETE in client's Networking 2016-10-23 19:10:21 +03:00
David Cernat
d85a1ee1a9 Fix errors remaining from merge with tes3mp-packetexpansion 2016-10-23 18:32:03 +03:00
David Cernat
c639337842 Merge with tes3mp-packetexpansion by fixing conflicts
# Conflicts:
#	apps/openmw-mp/Networking.cpp
#	apps/openmw/mwmp/Networking.cpp
#	components/CMakeLists.txt
#	components/openmw-mp/NetworkMessages.hpp
#	components/openmw-mp/PacketsController.cpp
2016-10-23 17:57:38 +03:00
David Cernat
025a847fd1 Send an ID_WORLD_OBJECT_DELETE whenever ingame scripts delete objects 2016-10-23 17:03:47 +03:00
David Cernat
0a44bea91d Send cell coordinates in tes3mp using mData instead of mCellId.mIndex 2016-10-23 16:55:30 +03:00
David Cernat
cbc132612a Use mRefNum.mIndex instead of just mRefNum and add extra debug 2016-10-23 16:33:53 +03:00
David Cernat
17f66e4e90 Implement ID_WORLD_OBJECT_PLACE 2016-10-23 13:30:32 +03:00
David Cernat
d0027ae3e7 Set correct packetID for ID_WORLD_OBJECT_PLACE 2016-10-23 12:53:49 +03:00
Koncord
a6467c9c47 Add breakpad to server 2016-10-23 17:07:46 +08:00
Koncord
df3886168f Word wrapping in chat 2016-10-23 14:33:43 +08:00
Koncord
77257b0721 Build fix 2016-10-23 14:05:12 +08:00
Koncord
c27351c19e Implement inventory functions
AddItem, RemoveItem, GetItemName, GetItemCount, GetItemHealth, GetInventorySize SendInventory
Example:
```lua
tes3mp.AddItem(pid, "glass dagger", 1, 50)
tes3mp.AddItem(pid, "glass dagger", 1, -1)
tes3mp.SendInventory(pid)
tes3mp.RemoveItem(pid, "glass dagger", 1)
tes3mp.SendInventory(pid)
local invSize = tes3mp.GetInventorySize(pid) - 1
for i = 0, invSize do
    print(("%s %d %d"):format(tes3mp.GetItemName(pid, i), tes3mp.GetItemCount(pid, i), tes3mp.GetItemHealth(pid, i)))
end
```
2016-10-23 02:57:49 +08:00
David Cernat
2b98e349ce Fix include for WorldEvent 2016-10-22 20:15:32 +03:00
David Cernat
6e43baf73e Send Cell instead of CellId because of problems with the latter 2016-10-22 20:09:13 +03:00
David Cernat
103b1e3f72 Send CellId in ID_WORLD_OBJECT_DELETE 2016-10-22 18:44:13 +03:00
David Cernat
2e57e25675 Only delete object from ID_WORLD_OBJECT_DELETE if it actually exists 2016-10-22 18:19:57 +03:00
David Cernat
3c49157ed7 Rename WorldPackets to ID_WORLD_OBJECT_DELETE and ID_WORLD_OBJECT_PLACE 2016-10-22 18:05:32 +03:00
David Cernat
40f1db2d86 Create SearchByRefNumCustomVisitor in CellStore that returns entire Ptr 2016-10-22 17:47:21 +03:00
David Cernat
b3d6dad0c5 Send ID_WORLD_OBJECT_REMOVAL from actiontake.cpp and not worldimp.cpp 2016-10-22 17:10:57 +03:00
David Cernat
cc98a25dcf Add searchByRefNum method to OpenMW's CellStore 2016-10-22 16:47:11 +03:00
David Cernat
92463c4a03 Fix Windows server crash caused by printing event->CellRef()->mRefID 2016-10-22 14:13:16 +03:00
David Cernat
8080cceac6 Add some placeholder code so Stanislav can test it 2016-10-22 12:45:19 +03:00
Stanislav Zhukov
81dfd21d9a Merge pull request #76 from TES3MP/tes3mp-minimap
Show dedicated players on minimap
2016-10-22 17:21:02 +08:00
Koncord
b704519078 Show dedicated players on minimap 2016-10-22 17:06:26 +08:00
David Cernat
565e7e4b9f Create and implement placeholder for ID_WORLD_OBJECT_CREATION 2016-10-21 21:57:05 +03:00
David Cernat
32dc8cf63f Read contents of ID_WORLD_OBJECT_REMOVAL on client 2016-10-21 20:44:15 +03:00
David Cernat
36f218876a Add ProcessPlayerPacket and ProcessWorldPacket to client's Networking 2016-10-21 19:23:56 +03:00
David Cernat
ac666edebd Add a CellRef to WorldEvent 2016-10-20 22:15:47 +03:00
scrawl
efa35e9222 Merge pull request #1110 from MiroslavR/controls-state
Save controls state
2016-10-20 16:51:53 +02:00
MiroslavR
cd9de94c0c Import teleporting and levitation disabled state from vanilla savegames (Fixes #3420) 2016-10-20 14:38:18 +02:00
David Cernat
b2845cd17c Create and start using WorldEvent class 2016-10-20 14:28:19 +03:00
David Cernat
a42d5f2429 Make client send placeholder ID_WORLD_OBJECT_REMOVAL to server 2016-10-20 12:53:48 +03:00
MiroslavR
f3ce0840be Import controls state from vanilla savegames 2016-10-20 02:14:36 +02:00
MiroslavR
301dd77efb Save controls state (Fixes #3598) 2016-10-20 02:12:01 +02:00
scrawl
5580123880 Merge pull request #1109 from MiroslavR/autoequip-weap2
Fix auto-equipping of blunt weapons
2016-10-20 00:39:00 +02:00
MiroslavR
407abc605f Fix auto-equipping of blunt weapons 2016-10-19 22:37:45 +02:00
scrawl
a5ca33ad0b Disable failing OSX build 2016-10-19 21:59:49 +02:00
David Cernat
f218613231 Rename client Networking's GetPacket method into GetPlayerPacket 2016-10-19 22:49:35 +03:00
David Cernat
e27d1857ef Fix formatting in previous changes made by tes3mp to OpenMW's core 2016-10-19 22:06:11 +03:00
scrawl
9c549a85ce Merge pull request #1108 from MiroslavR/autoequip-weap
Auto-equip weapons
2016-10-19 20:45:47 +02:00
David Cernat
d0328f2553 Add placeholder ProcessWorldPacket method to server's Networking 2016-10-19 21:44:17 +03:00
David Cernat
2602c1f71a Add ProcessPlayerPacket method to server's Networking 2016-10-19 21:26:42 +03:00
David Cernat
f0fa5e8771 Add ContainsPacket method to packet controllers 2016-10-19 21:15:59 +03:00
David Cernat
f1ec01cc6b Add WorldPacketController to server's Networking 2016-10-19 20:51:51 +03:00
David Cernat
285f89573d Create placeholders for WorldPacket classes 2016-10-19 20:36:11 +03:00
David Cernat
790d41e278 Move PlayerPackets into their own subfolder 2016-10-19 19:37:10 +03:00
David Cernat
d99463d752 Fix show-stopping mistake in PlayerPacket 2016-10-19 18:56:12 +03:00
David Cernat
bda1f867fd Rename server's GetController() method into GetPlayerController() 2016-10-19 16:54:39 +03:00
David Cernat
d2212ef80b Rename PacketsController into PlayerPacketController 2016-10-19 16:31:07 +03:00
David Cernat
5e0c0dd5f1 Use logger in server's Networking MainLoop 2016-10-19 13:00:33 +03:00
Ryan Tucker
cffd2bdd30 skeleton for full settings list 2016-10-18 21:46:55 -07:00
MiroslavR
76ddd9bebb Add a setting for merchant auto-equipping prevention 2016-10-19 02:22:49 +02:00
scrawl
a7d4928593 Properly handle moved references in respawning code (Fixes #3600) 2016-10-18 23:51:45 +02:00
MiroslavR
1d3008594d Autoequip weapons (Fixes #3562) 2016-10-18 13:57:35 +02:00
rhtucker
b5cd8188f5 fixed nested levels 2016-10-17 13:33:38 -07:00
rhtucker
201a89a698 fixed nested enumerated lists and split numbering 2016-10-17 13:32:34 -07:00
rhtucker
95adab9458 test nested enumerated lists with autonumbers 2016-10-17 13:06:15 -07:00
David Cernat
fcc793a0af Create a new BasePacket that PlayerPacket inherits from 2016-10-17 18:47:16 +03:00
scrawl
77bc807305 Attenuate the light ambient in lighting.glsl (Fixes #3597) 2016-10-17 15:01:10 +02:00
David Cernat
b8f4cb94fb Rename BasePacket into PlayerPacket 2016-10-17 15:54:36 +03:00
scrawl
f0e488e9c5 Merge pull request #1107 from MiroslavR/autoequip
Fix autoEquip to better match vanilla
2016-10-16 19:52:38 +02:00
MiroslavR
14240cf7a2 Fix autoEquip to better match vanilla (Fixes #3590) 2016-10-16 17:27:17 +02:00
Ryan Tucker
147ce4d267 Started settings guide and general edits 2016-10-15 19:03:14 -07:00
scrawl
1d58733880 Merge pull request #1104 from MiroslavR/missing-weather-states
Import base weather states before loading region modifiers
2016-10-15 22:17:20 +02:00
scrawl
460eee9ad1 Merge pull request #1105 from Allofich/warnings
Fix shadowing warnings
2016-10-15 22:17:13 +02:00
Allofich
ccacad51be Fix shadowing warnings 2016-10-16 01:34:54 +09:00
MiroslavR
7b59eda13a Import base weather states before loading region modifiers (Fixes #3594) 2016-10-15 17:34:03 +02:00
scrawl
9e63c3ce63 Merge pull request #1103 from Allofich/warnings
Fix shadowing warnings
2016-10-14 21:18:12 +02:00
scrawl
5ccbabc27d Fix build against bullet with profiler disabled (Fixes #3592) 2016-10-14 21:00:35 +02:00
David Cernat
3136a12051 Resolve conflicts in pull request #75
# Conflicts:
#	CMakeLists.txt
#	apps/openmw/CMakeLists.txt
2016-10-14 18:34:17 +03:00
Allofich
1c54f54ab8 Fix shadowing warnings 2016-10-15 00:12:46 +09:00
scrawl
2ed0277839 Merge pull request #1102 from Allofich/spells
Change several spell effects from instant to non-instant
2016-10-13 21:36:14 +02:00
scrawl
9d2e0124dc Revert "Fix the cell changed flag no longer being reset after the player dies"
This reverts commit d7acec74fd.
2016-10-13 17:44:03 +02:00
Allofich
610f36f47b Set magic effects that don't support variable durations to use duration of 1 2016-10-14 00:13:08 +09:00
Allofich
1c2e04747d Remove stray line 2016-10-13 23:38:21 +09:00
Allofich
675bd09462 Change several instant effects to be non-instant (Fixes #2054) 2016-10-13 23:38:21 +09:00
scrawl
db09858f59 Don't allow the player to activate objects when dead 2016-10-13 14:42:10 +02:00
scrawl
454d1ffaef Make the cell change check during actor update more robust 2016-10-13 14:39:58 +02:00
scrawl
d7acec74fd Fix the cell changed flag no longer being reset after the player dies 2016-10-13 14:38:35 +02:00
scrawl
e7154c3f7c Add the ItemShadow to various other skins 2016-10-13 01:46:57 +02:00
scrawl
612c3e995f Add drop shadow to ItemWidget (Fixes #3545) 2016-10-13 01:42:50 +02:00
scrawl
15046c961b Merge pull request #1101 from MiroslavR/ignored-light-sources-fix
Ignored light sources fix
2016-10-12 01:11:37 +02:00
scrawl
c5eb854157 Merge pull request #1100 from MiroslavR/info-faction-check
Recognize special faction ID "FFFF" during topic info verification
2016-10-12 01:11:24 +02:00
MiroslavR
611d02ad43 Remove unused code 2016-10-11 22:16:17 +02:00
MiroslavR
1906d96064 Non-player actors emitting light from a non-portable light item should be illuminated (Fixes #3588) 2016-10-11 22:15:51 +02:00
MiroslavR
53b006eccb OpenMW-CS: Recognize special faction ID "FFFF" (no faction) during topic info verification (Fixes #3564) 2016-10-11 19:36:44 +02:00
scrawl
3dce155d96 Fix uninitialized variable 2016-10-11 14:50:13 +02:00
scrawl
55566f8ec2 Merge pull request #1099 from MiroslavR/notlocal
Fix the "Not Local" dialog test
2016-10-11 14:21:07 +02:00
MiroslavR
8be8c7ca66 OpenMW-CS: Fix verification of "Not Local" info conditions (Bug #3564) 2016-10-11 02:55:17 +02:00
MiroslavR
14468262a7 Fix "Not Local" dialog test to also test variable value instead of just its existence (Fixes #3577) 2016-10-11 02:53:43 +02:00
scrawl
95a67bf0c2 Disable OSG 3.5.5 thread affinity setting in the scenewidget due to the interference with QT threads
Reference: http://forum.openscenegraph.org/viewtopic.php?t=16158
2016-10-10 18:23:06 +02:00
scrawl
530fb61ad0 Use OpenThreads instead of boost thread
This should allow OpenMW to work better with git versions of openscenegraph. OSG dev version 3.5.5 added the setting of thread affinity for the main thread. The problem is that in the boost/standard threading libraries, the affinity of a thread is inherited by any further threads launched from that thread, leading to these threads always running on the same core as the main thread unless you tell them not to.

With OpenThreads, the default affinity of a thread is none, no matter what parent thread it was launched from.

So, when using custom threading with OSG 3.6+, we have these options:
1. explicitely tell OSG to *not* set the thread affinity
or 2. explicitely set the thread affinity of additional threads created (possible with boost, but not possible with std::thread)
or 3. use OpenThreads
or 4. accept the suboptimal performance of non-OSG threads (in OpenMW's case the sound streaming & video threads) running on the same core as the main thread

This patch opts for 3.)

Reference: http://forum.openscenegraph.org/viewtopic.php?t=16158
2016-10-10 18:23:06 +02:00
scrawl
105fcc5e20 Move the setting of BOOST_COMPONENTS closer to where it's actually used 2016-10-10 18:23:06 +02:00
scrawl
ae2036fa85 Merge pull request #1097 from Allofich/persuasion
Don't let intimidate bring disposition below 0 (Fixes #3584)
2016-10-09 20:20:43 +02:00
Allofich
028db21c8a Don't let disposition at end of dialogue be below 0 (Fixes #3584) 2016-10-10 02:20:24 +09:00
David Cernat
14bac1e533 Make player markers appear on inventory map 2016-10-09 13:41:00 +03:00
David Cernat
07acd7a721 Make player markers work in interiors and make them easier to test 2016-10-09 10:29:30 +03:00
scrawl
1893617ec9 Improvements to ignored light list setting
The pointer to the LightListCallback is now stored in the Animation, which eliminates the need for dynamic_cast. Also, when the object root is recreated, the previously used LightListCallback will be reused, so we no longer need the objectRootReset() notifier.

Finally, there was a bug when saving and reloading the game, the getIgnoredLightSources() were not being set, as the ActorAnimation constructor completes before the NpcAnimation sets the ObjectRoot. This was solved by creating the LightListCallback in advance in the Animation constructor.
2016-10-08 23:59:28 +02:00
MiroslavR
11565b5966 Make actors with non-portable lights in inventory glow (Closes #2042, #3338) 2016-10-08 23:17:12 +02:00
scrawl
5c94e2324f Add missing use plugin macro for static build 2016-10-08 19:20:44 +02:00
scrawl
50bcb65ee0 Move USED_OSG_PLUGINS to the top of the CMakeLists to be used by all platforms 2016-10-08 19:20:24 +02:00
scrawl
b0d4c8740c Merge pull request #1098 from nikolaykasyanov/osx-missing-plugins
[OS X] Add missing plugins to packaging script
2016-10-08 19:11:03 +02:00
Nikolay Kasyanov
4815938de2 [OS X] Add missing plugins to packaging script
Source: https://wiki.openmw.org/index.php?title=Development_Environment_Setup#OSG_plugins
Issue: https://bugs.openmw.org/issues/3585
2016-10-08 17:07:06 +02:00
scrawl
6615330430 Fix use of UnrefQueue in removeObject 2016-10-08 16:41:17 +02:00
scrawl
3019d70986 Use 'default icon' for items with no icon specified 2016-10-08 16:05:20 +02:00
scrawl
48f299532c Merge pull request #1096 from Allofich/magic
Don't let Weakness to Magicka affect paralysis
2016-10-08 14:50:07 +02:00
Allofich
f6f16b68de Don't let Weakness to Magicka affect paralysis 2016-10-08 17:56:12 +09:00
Koncord
bd1b1fca64 Woops 2016-10-08 15:36:25 +08:00
Koncord
50d989d767 Fix server crash if player is not fully connected 2016-10-08 15:30:52 +08:00
Koncord
79532cf797 Detecting reason of death 2016-10-08 15:15:43 +08:00
Koncord
2e81034e53 Started work on the map markers 2016-10-07 13:17:44 +08:00
scrawl
37bfa88b2d Merge pull request #1094 from Allofich/alchemy
Fix reversed use of alembics and retorts
2016-10-06 19:02:24 +02:00
Allofich
498976775a Fix reversed use of alembics and retorts 2016-10-07 01:38:50 +09:00
scrawl
73b6c34a23 Merge pull request #1092 from Allofich/warnings
Fix shadowing warnings
2016-10-06 17:50:26 +02:00
scrawl
0c981b6fe5 Fix typo in script opcode (Fixes #3583) 2016-10-06 17:36:50 +02:00
Allofich
53e94b7c3f Fix shadowing warnings 2016-10-06 23:33:52 +09:00
David Cernat
6eae017561 Merge pull request #74 from OpenMW/master
Add OpenMW commits up to 5 Oct
2016-10-06 06:16:09 +03:00
scrawl
97cd8c21e4 Merge pull request #1091 from Allofich/coverity
Coverity fixes
2016-10-05 18:00:18 +02:00
Allofich
df03b32205 Coverity fixes 2016-10-05 23:32:26 +09:00
scrawl
721062a4bd Merge pull request #1089 from Allofich/bound
Corrections for bound equipment
2016-10-04 18:34:27 +02:00
Allofich
506d0e8e54 Correction to display of 0-weight tooltips 2016-10-04 23:02:45 +09:00
Allofich
160da0b149 Treat 0-weight armor as light armor in some respects 2016-10-04 23:02:25 +09:00
scrawl
17455821f6 Merge pull request #1088 from MiroslavR/movement-loopfallback
Use loop fallback for movement animations
2016-10-03 23:17:12 +02:00
MiroslavR
a05649e1d5 Use loop fallback for movement animations (Fixes #3578) 2016-10-03 22:36:56 +02:00
scrawl
e883528a60 Merge pull request #1087 from sandstranger/gles1_crash_fix
disable using shaders for gles1 and Android
2016-10-03 21:18:19 +02:00
sandstranger
5230bf6528 disable using shaders for gles1 and Android 2016-10-03 20:31:08 +04:00
scrawl
44dffe55ab Merge pull request #1083 from Allofich/onhit
Make AI response to spell hits more like original MW
2016-10-02 14:06:51 +02:00
scrawl
3d76ba5a7c Merge pull request #1086 from Allofich/warnings
Fix shadowing warnings
2016-10-02 14:03:02 +02:00
Allofich
6ec37b5cfb Fix shadowing warnings 2016-10-02 17:48:54 +09:00
Allofich
e78f02aaf2 Consider reflected/absorbed hostile spells as assaults 2016-10-02 16:08:24 +09:00
scrawl
933a601e00 Merge pull request #1085 from MiroslavR/interactive-id
Fix interactive ID validity checks
2016-10-01 21:25:04 +02:00
MiroslavR
210c02d98e Fix interactive ID validity checks in TypesetBookImpl 2016-10-01 21:07:17 +02:00
Allofich
a81a04e6d0 Remove unused line 2016-10-02 01:11:01 +09:00
Allofich
fa17784722 Change breaks to continues 2016-10-02 00:54:01 +09:00
scrawl
140be70a90 Merge pull request #1082 from Gladdy/master
Fix for segmentation fault on entering a cell
2016-10-01 16:42:47 +02:00
scrawl
b170efb9fa Merge pull request #1084 from Allofich/water
Don't let water-only creatures prevent resting
2016-10-01 16:14:19 +02:00
Allofich
a2e174a40f Don't let water-only creatures prevent resting 2016-10-01 22:15:31 +09:00
Allofich
266ec1aadc Make AI response to spell hits more like original MW 2016-10-01 21:38:17 +09:00
Koncord
fa0a55c2a9 Fix use of freed memory 2016-10-01 10:54:42 +08:00
David Cernat
f276edddcc Set version to 0.2.0 2016-09-30 15:26:55 +03:00
Koncord
94d5efdfd3 Call LOG_QUIT after Networking's dtor call 2016-09-30 18:16:09 +08:00
David Cernat
add1a5e5b2 Merge pull request #72 from OpenMW/master
Add OpenMW commits up to 30 Sep
2016-09-30 12:37:29 +03:00
David Cernat
e0361835b0 Allow script-induced setting of equipment 2016-09-30 12:36:20 +03:00
David Cernat
4b96080521 Make GetItemSlot work and add SendEquipment in server item functions 2016-09-30 12:30:05 +03:00
Marc Zinnschlag
e918474a94 Merge remote-tracking branch 'rcutmore/bug-3277' 2016-09-30 09:37:45 +02:00
David Cernat
728a09e423 Reorder functions in LocalPlayer and make their names more consistent 2016-09-30 08:59:58 +03:00
David Cernat
6650b74498 Add handling of skill increases 2016-09-30 07:15:59 +03:00
David Cernat
15a4602482 Add getSkillIncrease, setSkillIncrease functions to OpenMW's NpcStats 2016-09-30 07:15:03 +03:00
David Cernat
f4621d8529 Use setLevelProgress when setting LocalPlayer's skills 2016-09-30 06:27:26 +03:00
David Cernat
8fbc6f31f1 Add setLevelProgress function to OpenMW's NpcStats 2016-09-30 06:26:43 +03:00
David Cernat
977b277cdd Add missing entries for level progress functions 2016-09-30 05:08:11 +03:00
David Cernat
a0e9a672a5 Split updateClassStats in 3 and add handling of level progress 2016-09-30 04:52:21 +03:00
David Cernat
2ab619b0e3 Constantly update skill progress from LocalPlayer 2016-09-30 03:43:49 +03:00
Rob Cutmore
8f47ed17df Show nested tables only when they are editable 2016-09-29 20:42:44 -04:00
Martijn Bakker
45ffdbb284 fixed a segmentation fault when entering a cell which contains someone already attacking you 2016-09-30 00:40:13 +01:00
David Cernat
56a2c70911 Use double instead of int for skill progress functions 2016-09-29 18:13:36 +03:00
David Cernat
ae4950ce49 Add server stat functions for getting and setting skill progress 2016-09-29 17:57:26 +03:00
David Cernat
6ae4cc15e4 Clean up handling of stat packets on client, part 2 2016-09-29 17:48:33 +03:00
David Cernat
25026a9b95 Allow player-controlled NPCs to have attack animations again 2016-09-29 16:57:39 +03:00
David Cernat
5efa5aa912 Fix indentation 2016-09-29 13:17:46 +03:00
David Cernat
afbd3274cc Clean up handling of stat packets on client 2016-09-29 13:10:32 +03:00
David Cernat
bc0aa86bcf Make variable names more consistent and easier to understand 2016-09-29 12:05:44 +03:00
David Cernat
694ce537b6 Allow script-induced dynamic stat changes, part 2 2016-09-29 11:02:57 +03:00
David Cernat
18cd964d21 Allow script-induced dynamic stat changes 2016-09-29 10:19:39 +03:00
David Cernat
ae00f12c87 Merge pull request #68 from OpenMW/master
Use a shader to render the simple water, ensuring that fog is applied…
2016-09-29 03:12:57 +03:00
scrawl
85c7d014d3 Use a shader to render the simple water, ensuring that fog is applied per pixel (Fixes #2716) 2016-09-28 21:10:44 +02:00
David Cernat
cf263714f3 Merge branch 'master' of https://github.com/TES3MP/openmw-tes3mp 2016-09-28 19:42:25 +03:00
David Cernat
7a1531c01b Fix script functions for setting dynamic stats, part 2 2016-09-28 19:41:54 +03:00
David Cernat
91a6da9041 Merge pull request #67 from OpenMW/master
Add OpenMW commits up to 28 Sep
2016-09-28 18:53:54 +03:00
David Cernat
458bdf4dff Fix script functions for setting dynamic stats 2016-09-28 16:40:19 +03:00
scrawl
0cf837aa20 Merge pull request #1081 from psi29a/armhf
make BUILD_OPENCS a dependency for building osgQt
2016-09-28 14:45:29 +02:00
Bret Curtis
55fb33670c Make building osgQt dependant on building openmw-cs 2016-09-28 14:36:51 +02:00
David Cernat
433190d82e Rename OnPlayerUpdateEquiped into OnPlayerChangeEquipment 2016-09-28 15:20:23 +03:00
David Cernat
684caf7791 Merge branch 'master' of https://github.com/TES3MP/openmw-tes3mp 2016-09-28 14:29:37 +03:00
David Cernat
16216b30f7 Fix formatting 2016-09-28 14:27:35 +03:00
Koncord
94f6ab30f2 Fix GetProtocolVersion 2016-09-28 19:20:22 +08:00
David Cernat
b6086ab015 Rename ID_GAME_DYNAMICSTATS_CURRENT into ID_GAME_DYNAMICSTATS 2016-09-28 14:13:24 +03:00
David Cernat
9cbda73586 Remove unused packets IDs 2016-09-28 12:44:39 +03:00
David Cernat
b65deca2ae Remove unused PacketRotation and PacketCreateProjectile 2016-09-28 12:37:08 +03:00
David Cernat
57f07813b0 Rename ID_GAME_UPDATE_POS into ID_GAME_POS 2016-09-28 11:45:14 +03:00
David Cernat
26487598a6 Rename ID_GAME_UPDATE_EQUIPED into ID_GAME_EQUIPMENT 2016-09-28 11:36:29 +03:00
David Cernat
0479eb38cc Update protocol version and make version mismatch error less confusing 2016-09-28 08:26:18 +03:00
David Cernat
9fd5ae981e Add missing backslash 2016-09-28 07:59:53 +03:00
David Cernat
ce4b326b02 Rename ID_GAME_UPDATE_BASESTATS into ID_GAME_DYNAMICSTATS_CURRENT 2016-09-28 07:50:16 +03:00
David Cernat
295f486a97 Using less confusing names for server stat functions, part 2 2016-09-28 02:19:39 +03:00
David Cernat
69030579c1 Using less confusing names for server stat functions 2016-09-27 17:04:04 +03:00
David Cernat
08a5cdc4f3 Make tes3mp config files less confusing 2016-09-27 16:40:12 +03:00
David Cernat
7ae9ea7465 Add server stat functions for getting attribute and skill counts 2016-09-27 15:51:10 +03:00
David Cernat
57703482b2 Fetch attribute and skill counts in server stat functions 2016-09-27 15:01:54 +03:00
David Cernat
4d7130b12f Improve logic for script-induced cell changes 2016-09-27 11:28:44 +03:00
David Cernat
01af4f3bbc Update position before sending cell packet 2016-09-26 17:00:09 +03:00
David Cernat
1ee2458f6e Add packet for player levels, part 2 2016-09-26 13:19:01 +03:00
David Cernat
046a1ea899 Add packet for player levels 2016-09-25 14:28:25 +03:00
Rob Cutmore
b59694c4f0 Set tooltip for read-only nested tables 2016-09-25 06:31:28 -04:00
David Cernat
3e2fec973d Remove leftover variable 2016-09-25 12:53:30 +03:00
David Cernat
7e4543ffcb Merge pull request #64 from OpenMW/master
Add OpenMW commits up to 24 Sep
2016-09-25 11:06:07 +03:00
Marc Zinnschlag
eaeaae3243 Merge remote-tracking branch 'aesylwinn/FixRefIdData' 2016-09-25 09:33:28 +02:00
scrawl
4791fadb9a Merge pull request #1078 from MiroslavR/hidden-items
Do not show uncarriable lights in item views
2016-09-24 23:27:23 +02:00
Aesylwinn
b899d43a33 Allow base plugins to overwrite referencables made in other base plugins. 2016-09-24 16:45:08 -04:00
scrawl
dc07885d25 Merge pull request #1069 from Allofich/combat
Add unarmed attack selection to chooseBestAttack()
2016-09-24 18:38:10 +02:00
MiroslavR
52e00f5fef Do not show uncarriable lights in item views 2016-09-24 18:01:31 +02:00
Rob Cutmore
829345257c Allow disabled nested tables to be scrollable 2016-09-24 10:36:00 -04:00
David Cernat
10d391a1fd Merge pull request #63 from OpenMW/master
Add OpenMW commits up to 23 Sep
2016-09-24 00:53:06 +03:00
scrawl
4b178f6f3d Merge pull request #1074 from Allofich/telekinesis
Implement using telekinesis with touch spells
2016-09-23 16:34:46 +02:00
Allofich
0582f2d918 Adjust touch spell/telekinesis interaction 2016-09-23 21:44:49 +09:00
Allofich
0c603e986d Don't play touch spell explosions on non-activatable statics 2016-09-23 03:25:24 +09:00
Allofich
eecf412b85 Recreate vanilla-like behavior for telekinesis and touch spells 2016-09-23 01:16:03 +09:00
Allofich
04c13ffab3 Add unarmed attack selection to chooseBestAttack() 2016-09-22 00:45:54 +09:00
scrawl
8379291f70 Merge pull request #1072 from Allofich/range
Give "on touch" spells same range as vanilla MW
2016-09-21 17:39:44 +02:00
scrawl
5fa1180435 Merge pull request #1073 from Allofich/area
Don't play area vfx for 0-area touch spells that hit non-actors
2016-09-21 17:39:30 +02:00
Allofich
37cc4e9efe Don't play area vfx for 0-area touch spells that hit non-actors 2016-09-22 00:14:08 +09:00
Allofich
563ae479e8 Give "on touch" spells same range as vanilla MW 2016-09-21 23:34:32 +09:00
Bret Curtis
513f754529 Merge pull request #1071 from mckibbenta/master
Remove psuedonym from AUTHORS.md
2016-09-21 11:56:30 +02:00
David Cernat
f515111845 Merge pull request #62 from OpenMW/master
Add OpenMW commits up to 20 Sep
2016-09-21 06:05:24 +03:00
Alex
d88f4e26ae Remove psuedonym from AUTHORS.md
Removed myself from public relations as podcaster as well. Someone else is doing that now.

I doubt this file is very up-to-date anyway, heh.
2016-09-20 20:21:53 -04:00
scrawl
c6ef26ba4b Merge pull request #1070 from mrcheko/pathfinding
fix using potion as weapon
2016-09-20 22:58:54 +02:00
mrcheko
229cb4b386 remove dynamic_cast to ActionPotion 2016-09-20 23:00:00 +03:00
mrcheko
48765f2ff2 fix using potion as weapon 2016-09-19 23:43:26 +03:00
David Cernat
1534f835a6 Merge pull request #61 from OpenMW/master
Add OpenMW commits up to 19 Sep
2016-09-19 23:38:20 +03:00
scrawl
718178bfe9 Merge pull request #1066 from MiroslavR/setinvisible
Don't use base invisibility magnitude for setting alpha
2016-09-19 15:35:12 +02:00
scrawl
106a99ef8f Merge pull request #1068 from Allofich/intervention
Vfx after Divine/Almsivi intervention should be attached to player
2016-09-19 15:34:31 +02:00
Allofich
7e3cca6d37 Vfx after Divine/Almsivi intervention should be attached to player 2016-09-19 22:20:16 +09:00
scrawl
acd0a5ea01 Merge pull request #1067 from Allofich/intervention
Use correct vfx for teleport spells
2016-09-19 14:29:43 +02:00
Allofich
d1157b3e10 Use correct vfx for teleport spells 2016-09-19 18:12:30 +09:00
David Cernat
9690e007df Don't send unhandled skill and attribute requests to joining players 2016-09-19 11:06:04 +03:00
David Cernat
79c561057c Merge pull request #59 from OpenMW/master
Add OpenMW commits up to 18 Sep
2016-09-19 02:47:09 +03:00
David Cernat
f039256762 Merge pull request #58 from TES3MP/NewAuthProto
Use new authentication protocol
2016-09-19 02:45:34 +03:00
MiroslavR
744667e163 Don't use base invisibility magnitude for setting alpha (Fixes #3555) 2016-09-19 00:05:50 +02:00
scrawl
cd4b182091 Merge pull request #1051 from Allofich/textures
Use spell effect particle textures
2016-09-18 22:37:14 +02:00
Allofich
a8e9f2df67 Cleanup 2016-09-19 05:20:04 +09:00
scrawl
30d5c7488d savegamedialog: don't reset the character selection scrollbar when a character is deleted 2016-09-18 19:26:41 +02:00
Koncord
24617589e4 Fix packet spam 2016-09-18 15:52:26 +08:00
Koncord
96e2d749c7 New auth protocol 2016-09-18 11:55:51 +08:00
Koncord
61c5456373 Log callbacks 2016-09-18 11:55:51 +08:00
Koncord
e661a35ac2 Fix checking strings in SetName & SetBirthsign 2016-09-18 11:55:51 +08:00
Koncord
9bcca6d141 Init PacketLoaded in PacketsController 2016-09-18 11:55:51 +08:00
Koncord
1e48555617 Make sensitivity to protocol version 2016-09-18 11:55:51 +08:00
Koncord
fe10821528 Add loaded/isLoaded to server player 2016-09-18 11:55:51 +08:00
Koncord
fe370fa995 Add PacketLoaded 2016-09-18 11:55:51 +08:00
Koncord
df13e9c37a Fix verbose log level in server 2016-09-18 11:55:51 +08:00
David Cernat
68f974d999 Merge pull request #57 from OpenMW/master
Add OpenMW commits up to 17 Sep
2016-09-17 21:31:51 +03:00
Allofich
be96ff1fd1 Remove redundant parameter 2016-09-18 01:57:47 +09:00
scrawl
8f5347b79b Update comment, osgAnimation::RigGeometry is no longer used 2016-09-17 18:31:39 +02:00
scrawl
767eb1257a Update AUTHORS.md 2016-09-17 18:10:17 +02:00
scrawl
8520b97b37 Merge pull request #1062 from stil-t/master
apps/wizard: (trivial) fix misplaced arguments in installFile for installFiles
2016-09-17 18:09:51 +02:00
scrawl
7bd445fb83 Don't crash if FontManager::getByName returns NULL (Fixes #3552) 2016-09-17 17:21:35 +02:00
David Cernat
cdada00a8a Merge pull request #56 from OpenMW/master
Add OpenMW commits up to 15 Sep
2016-09-15 22:19:02 +03:00
Mikhail Korolev
7e2fe77836 apps/wizard: (trivial) fix misplaced arguments in installFile for installFiles 2016-09-15 19:03:07 +03:00
scrawl
7bbdeb5f85 Merge pull request #1061 from MiroslavR/nameless-actors
Allow activating actors without a name
2016-09-15 17:51:14 +02:00
scrawl
0f71efb919 Merge pull request #1060 from MiroslavR/fix-anim-state-saving
Fix animation state not saving in some cases
2016-09-15 16:49:15 +02:00
MiroslavR
f323f231db Allow activating actors without a name (Fixes #3551) 2016-09-15 16:47:50 +02:00
Allofich
5aad1d81f4 Remove no longer used parameter 2016-09-15 23:41:20 +09:00
MiroslavR
55e670c5fe Fix animation state not saving
References with animation state changed but otherwise identical to their content file counterparts
were previously considered unchanged and thus dropped while saving.
2016-09-15 16:11:54 +02:00
David Cernat
5b6caa7b2c Fix build by adding missing argument to onHit 2016-09-15 09:34:05 +03:00
David Cernat
3b7693c719 Resolve conflicts in pull request #55
# Conflicts:
#	README.md
#	apps/openmw/mwclass/npc.cpp
#	apps/openmw/mwmechanics/combat.cpp
2016-09-15 08:49:57 +03:00
Allofich
322a0ba8bb Initialize speed for magic projectiles 2016-09-14 21:39:44 +02:00
Allofich
7eb62b5d3a Initialize speed for magic projectiles 2016-09-15 01:44:53 +09:00
Allofich
dc8ff5e49b Play all sfx and use particle textures for permanent enchantments 2016-09-15 00:27:08 +09:00
Allofich
527bbd5243 Change size_t to int for consistency 2016-09-15 00:09:40 +09:00
Allofich
01774c656c Fix for blood effect texture overrides 2016-09-14 23:28:57 +09:00
Allofich
a033ba3bd2 Override spell textures by NiTexturingProperty 2016-09-14 23:03:04 +09:00
Bret Curtis
c33d01e5dd Merge pull request #1059 from rhtucker/master
Fixed back quotes and added to mod install guide
2016-09-14 09:26:04 +02:00
Ryan Tucker
4d057febe7 Merge remote-tracking branch 'refs/remotes/OpenMW/master' 2016-09-13 22:16:17 -07:00
Ryan Tucker
04cbf5dd02 Added to mod installation guide 2016-09-13 22:16:01 -07:00
Ryan Tucker
f6b38323a3 Started adding to the detailed mod install guide 2016-09-13 20:17:58 -07:00
Ryan Tucker
b35921dc6c Corrected the back quotes for literals 2016-09-13 19:31:45 -07:00
Bret Curtis
7a389f7ab1 Merge pull request #1057 from rhtucker/master
Began documentation on mod installation
2016-09-13 09:37:49 +02:00
Ryan Tucker
7c5c304ed5 Started working on a style guide for tutorials 2016-09-12 23:23:24 -07:00
scrawl
1362264561 Fix warning 2016-09-13 02:49:19 +02:00
scrawl
65dc12cdd6 Remove unused parameter 2016-09-13 02:48:36 +02:00
scrawl
feaf3652a5 Merge pull request #1055 from mrcheko/pathfinding
prevent running in circles around path points
2016-09-13 02:47:49 +02:00
scrawl
3cd73d0fc3 Merge pull request #1058 from Allofich/onhit
Don't play blood effects for completely resisted hits
2016-09-13 02:47:43 +02:00
scrawl
3b275c9255 Merge pull request #1054 from Allofich/dodge
AI dodging
2016-09-13 02:47:39 +02:00
Allofich
34851349de Pass hitPosition by const reference 2016-09-13 00:59:56 +09:00
Allofich
bce0166931 Don't play blood effects for resisted hits 2016-09-12 22:46:32 +09:00
Allofich
3bbde312b9 Remove unneeded code 2016-09-12 19:54:06 +09:00
Ryan Tucker
06cc4cf359 Initial commit for OpenMW Modding Reference directory and files 2016-09-11 20:37:55 -07:00
Ryan Tucker
7878320f58 Merge remote-tracking branch 'refs/remotes/OpenMW/master' 2016-09-11 13:49:02 -07:00
scrawl
e4782a8dd5 Merge pull request #1056 from emlai/master
Fix typo
2016-09-10 20:42:57 +02:00
emlai
fd2281e825 Fix typo 2016-09-10 21:25:28 +03:00
Allofich
3f6543860a Make creatures use fHandToHandReach 2016-09-11 00:01:20 +09:00
Allofich
c98d4e0473 Allow dodging for bipedal creatures 2016-09-10 23:56:31 +09:00
Allofich
7bc4535c0d Make NPCs dodge according to target's weapon reach 2016-09-10 23:30:46 +09:00
Koncord
0f7670dd07 Add some verbose messages for chat 2016-09-10 13:57:15 +08:00
Koncord
babc3230b7 Add new functions: GetServerVersion & GetProtocolVersion 2016-09-10 13:41:23 +08:00
Koncord
a34d46f57e Add chat messages to log in client
Cleanup redundant code in GUIChat class
2016-09-10 13:40:06 +08:00
mrcheko
72786fef9d prevent running in circles around path points
addresses http://bugs.openmw.org/issues/2229
2016-09-09 23:57:19 +03:00
Allofich
368828b217 Update TODO comments 2016-09-10 01:38:05 +09:00
Allofich
f31342894a Put simpler condition first 2016-09-09 00:03:38 +09:00
Allofich
bca477ca8a Apply particle textures like original engine does 2016-09-08 23:59:23 +09:00
Allofich
85349da26c Add comments 2016-09-08 23:58:00 +09:00
Allofich
502a758eff Use particle texture for "hit" effects 2016-09-08 23:58:00 +09:00
Allofich
fe3a033642 Use particle textures for spell projectiles 2016-09-08 23:56:54 +09:00
scrawl
fa11dad525 Merge pull request #1050 from ace13/win-package-fix
Only try to package the Qt 5 platform DLLs on Qt 5
2016-09-08 12:33:16 +02:00
Alexander "Ace" Olofsson
c01d9e9ec5 Only package the Qt 5 platform DLLs on Qt 5 2016-09-08 02:19:12 +02:00
scrawl
57ca2ab5ba Merge pull request #1049 from Allofich/explosion
Create area effect visual for non-area spells
2016-09-07 23:20:13 +02:00
Allofich
02610828c1 Don't play area vfx for non-area spells on actors. 2016-09-08 02:07:01 +09:00
Allofich
88d992a020 Create area effect visual for non-area spells 2016-09-08 00:05:45 +09:00
Marc Zinnschlag
03a35c38df add missing item when executing the Equip instruction 2016-09-06 16:33:26 +02:00
Marc Zinnschlag
48c257b939 Merge remote-tracking branch 'aesylwinn/ContentNumberFix' 2016-09-06 15:48:05 +02:00
scrawl
05e4542d33 Merge pull request #1048 from mrcheko/pathfinding
Pathfinding unification v2
2016-09-06 13:19:18 +02:00
mrcheko
aa441f2648 AiPackage: fix path recalc on cell change
AiTravel: remove unneeded code
2016-09-06 01:11:10 +03:00
mrcheko
a22fc43947 aiwander: reset path on cell change
remove redundant mIsWanderDestReady var
2016-09-05 15:18:34 +03:00
Marc Zinnschlag
b8fa555260 Merge remote-tracking branch 'aesylwinn/RandomFixes' 2016-09-05 11:10:34 +02:00
scrawl
fbc9b90ebe Cleanup 2016-09-05 00:04:11 +02:00
scrawl
8677a6f803 Merge pull request #1044 from Allofich/magic
Changes to multi-effect spells
2016-09-05 00:03:10 +02:00
Allofich
c617e90755 Fix for loading projectile speed 2016-09-05 05:41:24 +09:00
Allofich
f8270f6bd5 Consolidations and cleanup for multi-effect spells 2016-09-05 05:30:51 +09:00
Allofich
dbd7c038b2 Add loading code for multi-effect projectiles 2016-09-05 03:45:13 +09:00
Allofich
c6cd1f813b Attach projectiles to nodes of multi-effect bolts 2016-09-05 02:59:33 +09:00
Allofich
5a0d3feb98 Use C++ int-to-string conversion 2016-09-05 02:52:44 +09:00
scrawl
346c6528e0 Merge pull request #1047 from Allofich/explosion
Double scaling of spell explosions
2016-09-04 19:31:05 +02:00
Allofich
a36f7babc1 Double scaling of spell explosions 2016-09-05 02:18:57 +09:00
Allofich
60384399ee Fix errors and warnings 2016-09-05 01:39:18 +09:00
Allofich
f49ebee56a Play sounds for multi-effect projectile 2016-09-04 23:57:06 +09:00
Allofich
37f07f7435 Combine into one multi-effect magic projectile 2016-09-04 22:35:29 +09:00
Koncord
e5e9c90441 Travis: disable build server for clang 2016-09-04 19:10:39 +08:00
Koncord
5eaad1b92e again fix headerSize 2016-09-04 18:38:49 +08:00
Stanislav Zhukov
d9452f3798 Add travis badge 2016-09-04 17:59:14 +08:00
Koncord
485a1b1e3b Disable OS X in Travis CI 2016-09-04 17:58:28 +08:00
Koncord
64b5638d40 DIE TABS, DIE!!!!!!!1 2016-09-04 17:39:08 +08:00
Koncord
9abd4e5a16 Fail :D 2016-09-04 17:03:07 +08:00
Koncord
b2f1bb06f2 fix travis 2 2016-09-04 16:51:16 +08:00
Allofich
10842462c7 Send lists of models and sounds to launchMagicBolt 2016-09-04 17:42:27 +09:00
Allofich
96e1726e4d Fix warnings 2016-09-04 17:42:27 +09:00
Allofich
ecec7d8215 Fix spells having explosions for wrong range type 2016-09-04 17:42:27 +09:00
Allofich
c4d77b6a8b Casting animation comes from the first effect 2016-09-04 17:42:27 +09:00
Allofich
3300ef5db7 Don't apply projectile effects multiple times 2016-09-04 17:42:27 +09:00
Allofich
f36e5ef403 Use last effect of spell for hand effect color 2016-09-04 17:42:27 +09:00
Allofich
f6c3a62b3e Use average speed for multiple spell projectiles 2016-09-04 17:42:27 +09:00
Allofich
f1a18027f2 Shoot projectiles of spells with multiple effects 2016-09-04 17:42:27 +09:00
Allofich
446c0a4fa8 Play all of a spell's casting effects 2016-09-04 17:42:27 +09:00
Allofich
b4577fe751 Allow multiple spell hit sounds on single target 2016-09-04 17:42:27 +09:00
Koncord
2567c35434 shut up variadic macros warning in GCC 2016-09-04 16:41:16 +08:00
Koncord
ab6d6d1cc8 Fix log message in Networking::Connect() 2016-09-04 16:18:53 +08:00
Koncord
9a4edff122 Disable unnecessary builds 2016-09-04 16:06:49 +08:00
Koncord
d110834ee7 Fix log message in Networking::Update() 2016-09-04 16:03:07 +08:00
Koncord
31c372a0e7 resolve depends for travis 2016-09-04 15:44:37 +08:00
scrawl
7859e378df Merge pull request #1045 from Allofich/attack
Fix AI melee attack
2016-09-04 00:22:59 +02:00
Aesylwinn
fab7549b42 Fix windows path issue in editor debug run.
- The problem was caused by spaces in the data directory
2016-09-03 17:49:49 -04:00
Aesylwinn
ee432690e6 Make it easier to place objects in the scene editor.
This fix allows objects to be dropped onto the ground, and prevents
objects from being selected through the ground.
2016-09-03 17:37:13 -04:00
Allofich
5c2bc515fe Remove overridden code in aicombat 2016-09-04 02:13:09 +09:00
scrawl
8c0dc5e1cf Merge pull request #1040 from jorgesumle/master
Added link to GPLv3 in README.md
2016-09-03 18:44:12 +02:00
mrcheko
0775ed75ea fix zero div in getXAngleToDir 2016-09-03 17:50:06 +03:00
Allofich
0d63d75bb0 Remove no longer used parameter 2016-09-03 22:40:24 +09:00
Allofich
286e4bb98f Remove attacktype movement 2016-09-03 21:16:59 +09:00
scrawl
bde25c8299 Merge pull request #1043 from ace13/win-ci
Include the OpenAL32.dll file into Windows builds
2016-09-02 11:20:12 +02:00
David Cernat
81999a8179 Remove outdated ID_GAME_UPDATE_SKILLS packet, part 2 2016-09-02 07:58:20 +03:00
Alexander "Ace" Olofsson
123e57a65c Include the OpenAL32.dll file into builds 2016-09-02 06:57:36 +02:00
David Cernat
8abef0bebe Remove outdated ID_GAME_UPDATE_SKILLS packet 2016-09-02 07:36:39 +03:00
David Cernat
e36321f448 Merge branch 'master' of https://github.com/TES3MP/openmw-tes3mp 2016-09-02 06:57:49 +03:00
David Cernat
dafc6c0843 Save and load birthsigns 2016-09-02 06:57:13 +03:00
David Cernat
9764dbb8d2 Merge pull request #52 from OpenMW/master
Add OpenMW commits up to 2 Sep
2016-09-02 06:29:34 +03:00
David Cernat
ff94b5f1ac Fix unsuitable variable name 2016-09-02 06:16:35 +03:00
David Cernat
941d76fce0 Fix setting of default classes and initialize classes safely on server 2016-09-02 04:31:35 +03:00
scrawl
bdf55927e1 Merge pull request #1041 from Allofich/waterwalking
Don't allow casting Water Walking in deep water
2016-09-02 02:57:22 +02:00
David Cernat
970e9aff2f Remove old class methods and don't include class in ID_GAME_BASE_INFO 2016-09-02 03:45:43 +03:00
Koncord
534ef527b9 Fix my stupid epic fail 2016-09-02 07:35:53 +08:00
Allofich
154dcc942c Let NPCs use attack type regardless of movement 2016-09-01 22:43:33 +09:00
Marc Zinnschlag
316cf40f12 Merge remote-tracking branch 'aesylwinn/FixInteriorCellRefTeleportation' 2016-09-01 11:51:34 +02:00
Allofich
b99c2c54d8 Allow Water Walking on non-submerged creatures 2016-09-01 03:53:53 +09:00
Aesylwinn
c0d53a2557 Fix CellRefs being teleported from interior to exterior cells. 2016-08-31 11:02:04 -04:00
Allofich
22b11c5947 Move Water Walking check into checkEffectTarget() 2016-08-31 23:56:31 +09:00
Allofich
f25c65260c Limit sMagicinvalidEffect to self-cast spells 2016-08-31 17:22:45 +09:00
Allofich
6c3cad238b Use castByPlayer bool 2016-08-31 17:18:23 +09:00
David Cernat
e9dce26f38 Resolve conflicts in pull request #50
# Conflicts:
#	CMakeLists.txt
2016-08-31 07:28:32 +03:00
Aesylwinn
b2ddd3c259 Initialize with correct content file number instead of correcting at save stage. 2016-08-30 16:42:38 -04:00
Allofich
a6216d883f Don't allow casting Water Walking in deep water 2016-08-31 04:37:50 +09:00
Bret Curtis
b39516466f lib was unnecessary, deps for travis included openthreads20 which is now built on ppa with osg-3.4 package. translation: fixed on ppa side 2016-08-30 20:09:28 +02:00
Bret Curtis
b67d7ec1e0 apparently the lib needs to go in as well 2016-08-30 19:12:18 +02:00
Bret Curtis
b944c8716e bump OSG to 3.4 2016-08-30 19:00:27 +02:00
Jorge
139cd190d4 Added link to GPLv3 in README.md 2016-08-30 16:52:40 +02:00
Koncord
0ee5202670 Update .travis.yml 2016-08-30 22:04:58 +08:00
David Cernat
263efa9988 Fix formatting, part 2 2016-08-30 12:37:36 +03:00
David Cernat
a20e7890a2 Fix formatting 2016-08-30 10:52:30 +03:00
David Cernat
f562215d9a Merge branch 'master' of https://github.com/TES3MP/openmw-tes3mp 2016-08-30 08:55:13 +03:00
David Cernat
1f8595bf3b Save server information in a folder named data instead of files 2016-08-30 08:54:26 +03:00
Koncord
cf1a0113a1 Time API 2016-08-30 13:24:42 +08:00
David Cernat
5e6a374687 Add comment about MesssageBox to prevent future confusion 2016-08-30 08:13:08 +03:00
David Cernat
857defadbc Revert one unnecessary renaming of MessageBox 2016-08-30 08:05:00 +03:00
David Cernat
32ce7e97a8 Fix build for Windows server 2016-08-30 08:01:34 +03:00
Koncord
1186d09ec0 ScriptFunctions.hpp size reduction 2016-08-30 12:20:39 +08:00
Stanislav Zhukov
056209b26a Update README.md 2016-08-30 11:27:48 +08:00
Koncord
e7deff09d9 Update version 2016-08-30 11:27:03 +08:00
Koncord
11eae277a9 Characters Class API
Added some new functions
2016-08-30 11:18:19 +08:00
Aesylwinn
3ae2fc17c6 Fix some issues with content file numbers in the editor.
1. Change content numbers to be relative to the plugin when saving.
2. Initialize the indices in the MasterData part of a plugin header.
2016-08-29 18:06:56 -04:00
scrawl
b92a4f1a32 Merge pull request #1038 from ace13/win-package-fix
Install Qt5 platform DLLs on Windows
2016-08-29 19:21:15 +02:00
Alexander "Ace" Olofsson
c9d4ff35c4 Install Qt5 platform DLLs on Windows 2016-08-29 18:40:40 +02:00
Koncord
3405e36ce4 Woops part 2 2016-08-29 22:59:04 +08:00
David Cernat
d612cbcc7b Revert "Disable CharGen custom class choice until we can handle custom classes"
This reverts commit e81bf7318c.
2016-08-29 21:04:32 +08:00
Koncord
118ab32c9b Woops 2016-08-29 21:03:04 +08:00
Koncord
a661de2a84 PacketClass 2016-08-29 21:01:23 +08:00
Koncord
2054baf7d3 Simplified PacketsController 2016-08-29 20:28:56 +08:00
scrawl
20da3bc240 Merge pull request #1037 from ace13/appveyor
Visual Studio 2015 support
2016-08-29 12:40:09 +02:00
scrawl
4322e76cb6 Fix shadowing warnings 2016-08-29 12:38:24 +02:00
scrawl
a5da3a269e Fix shadowing warnings 2016-08-29 12:20:00 +02:00
Alexander "Ace" Olofsson
bcaf160eab Add some missing Qt DLLs 2016-08-29 07:07:50 +02:00
Alexander "Ace" Olofsson
c93f7b90c5 Disable the version changing on AppVeyor
Apparently it breaks the build detail links on GitHub, not really
acceptable that.
2016-08-29 00:37:20 +02:00
Alexander "Ace" Olofsson
61d9729767 A final bit of script cleanup and caching 2016-08-29 00:29:30 +02:00
Grim Kriegor
f67bad2260 Update README.md 2016-08-28 22:50:41 +01:00
Alexander "Ace" Olofsson
6abc3c04bd One letter wrong, oops 2016-08-28 23:26:02 +02:00
Alexander "Ace" Olofsson
d781846f53 Fix the /bigobj issue and some script cleanup
Surprisingly specific problem I must say, 32-bit vs2015 unity builds
2016-08-28 23:23:44 +02:00
Alexander "Ace" Olofsson
aa28166f2e And finally fix the build path
Forgot how AppVeyor runs the builds, so fixed it in the wrong place
2016-08-28 21:59:13 +02:00
Alexander "Ace" Olofsson
bc6aa86b8a And escaping the printf input 2016-08-28 21:56:53 +02:00
Alexander "Ace" Olofsson
e47f4a9016 Missing STEP variable 2016-08-28 21:54:41 +02:00
Alexander "Ace" Olofsson
83de1f2de9 And use the correct OpenAL version
Should really have run these on a clean dir locally, but time
constraints...
2016-08-28 21:52:32 +02:00
Alexander "Ace" Olofsson
81a9258de9 Don't reset the APPVEYOR and CI variables 2016-08-28 21:48:00 +02:00
Alexander "Ace" Olofsson
dd5b6a46f5 Visual Studio 2015 support 2016-08-28 21:42:48 +02:00
scrawl
c32f6a46dd Merge pull request #1036 from Allofich/travis-ci_fix
Link Clang paths
2016-08-28 16:02:18 +02:00
Allofich
c89293770f Link Clang paths 2016-08-28 21:25:09 +09:00
Koncord
a03c2f5019 Now server & client sensitive to version 2016-08-27 15:36:22 +08:00
Koncord
8a5e32c631 Show the InputBox only if queue is free 2016-08-27 13:58:06 +08:00
Koncord
4c2415e9db Fix focus for InputDialog
Created a special pipe for future GUI modes.
2016-08-27 13:40:11 +08:00
David Cernat
e81bf7318c Disable CharGen custom class choice until we can handle custom classes 2016-08-27 04:47:35 +03:00
scrawl
92d096f466 Merge pull request #1035 from Allofich/anim
Fix for weapon idles
2016-08-26 23:36:07 +02:00
David Cernat
00e7810428 Add script functions for saving and loading non-custom player classes 2016-08-27 00:14:50 +03:00
Allofich
9e1bfde46f Add comment 2016-08-26 02:42:56 +09:00
Allofich
67bd882bc7 Disable current idle when an action is taken 2016-08-25 23:42:09 +09:00
Allofich
6190ff1f0d Update idle if current idle finishes playing 2016-08-25 21:45:56 +09:00
Allofich
f4cc5d0399 Sometimes play 1st-person weapon idle to Stop key 2016-08-25 21:34:45 +09:00
David Cernat
7bb6020e51 Display message boxes when client is disconnected. 2016-08-25 02:58:03 +03:00
David Cernat
4d2ca20445 Resolve conflicts in pull request #43
# Conflicts:
#	README.md
2016-08-24 22:03:35 +03:00
Koncord
fbfa9bccd0 added master address to client config 2016-08-24 16:21:04 +08:00
Koncord
1b403719f5 Merged branch master into master 2016-08-24 16:15:56 +08:00
Koncord
997c62cc52 Add --connect option to client 2016-08-24 16:15:34 +08:00
Marc Zinnschlag
cc7b1f8543 Merge branch 'openmw-40' 2016-08-24 09:59:50 +02:00
David Cernat
486de67d84 Make handshake log message less confusing 2016-08-24 06:38:38 +03:00
David Cernat
abaa8cac72 Spawn players in Pelagiad on startup 2016-08-24 06:23:32 +03:00
David Cernat
77aff346e9 Fix typo in method name "getGUIConroller", part 2 2016-08-24 05:55:02 +03:00
David Cernat
63eebd3d18 Respawn players in Fort Pelagiad instead of ToddTest for the time being 2016-08-24 05:32:40 +03:00
David Cernat
d830937f4e Fix typo in method name "getGUIConroller" 2016-08-24 04:48:35 +03:00
David Cernat
f93e382b8b Use tes3mp icon for executable, part 2 2016-08-24 04:01:05 +03:00
David Cernat
5385563972 Let players inform others about Lua script-induced cell & pos changes 2016-08-24 02:53:39 +03:00
David Cernat
d24b4d0a2d Disable New, Save and Load buttons in main menu 2016-08-24 00:46:32 +03:00
David Cernat
d31046204f Use tes3mp icon for executable 2016-08-23 23:50:20 +03:00
David Cernat
d6083552f1 Add tes3mp icon 2016-08-23 23:47:05 +03:00
David Cernat
7b187d0295 Fix visual glitch when jumping without adjusting camera afterwards 2016-08-23 22:27:12 +03:00
scrawl
7e167ab7e2 Merge pull request #1034 from Allofich/telekinesis
Correct telekinesis glow length
2016-08-23 20:03:16 +02:00
Allofich
7db31ab58a Correct telekinesis glow length 2016-08-24 01:21:15 +09:00
scrawl
346f5a19a3 Merge pull request #1029 from Allofich/anim
Improvements for playgroup and loopgroup
2016-08-23 14:14:36 +02:00
Allofich
9b0e5d6b59 Loop mid-animation idles when loading a save game 2016-08-23 19:50:56 +09:00
Koncord
fc4d8b82fb Stubs for minimap 2016-08-23 11:11:25 +08:00
David Cernat
7691bcc958 Add server script callbacks for attribute and skill changes 2016-08-23 03:04:22 +03:00
David Cernat
03d6e0cb62 Send attributes and skills to server whenever they change 2016-08-23 02:24:10 +03:00
David Cernat
ce5553cda6 Get hand-to-hand attack victim's stats if there actually is a victim 2016-08-23 01:23:09 +03:00
scrawl
0fd810707e Remove unused stopLooping() 2016-08-22 23:33:26 +02:00
scrawl
b0dc625b18 Run setLoopingEnabled after the anim queue is updated 2016-08-22 23:33:24 +02:00
scrawl
719e884b7c Remove duplicate code 2016-08-22 23:25:00 +02:00
scrawl
0c9882956a Add AnimState::shouldLoop() 2016-08-22 23:25:00 +02:00
scrawl
6450c9be27 Simplify condition 2016-08-22 23:22:58 +02:00
Allofich
bf9dc45b2b Emulate vanilla animation loops more closely 2016-08-23 01:42:36 +09:00
scrawl
c968ebee96 Merge pull request #1033 from Allofich/warnings
Remove unnecessary destructor
2016-08-22 14:44:57 +02:00
Allofich
73463cd12f Remove unnecessary virtual destructor 2016-08-22 21:34:57 +09:00
scrawl
f92560986e Merge pull request #1031 from kpp/fix_uninitiaized_escape_hash_filter
Fix uninitialized escape_hash_filter
2016-08-21 22:56:31 +02:00
scrawl
e6ca339478 Merge pull request #1032 from Allofich/warnings
Add virtual destructors
2016-08-21 22:56:15 +02:00
Allofich
8c5aae0722 Add virtual destructors 2016-08-21 18:31:46 +09:00
mrcheko
612c7f1a2f Revert "Revert "Merge pull request #993 from mrcheko/pathfinding""
This reverts commit 3732979eec.
2016-08-19 22:15:26 +03:00
Roman Proskuryakov
416466e53e Fix uninitialized escape_hash_filter 2016-08-19 21:13:38 +03:00
David Cernat
c4f49e05e3 Remove manual newlines for logger 2016-08-19 07:54:10 +03:00
David Cernat
2ac0c4e689 Rename openmw to tes3mp for Windows too... 2016-08-19 05:36:24 +03:00
Koncord
78210ab8ce rename openmw-mp to tes3mp-server 2016-08-19 09:38:33 +08:00
Koncord
b67789aa6a Rename openmw to tes3mp 2016-08-19 09:38:06 +08:00
Koncord
90215f4e7c Fix log messages for GCC compatibility 2016-08-19 09:37:24 +08:00
Koncord
d3c9864fb0 Fix maximum connections 2016-08-19 08:18:25 +08:00
David Cernat
e1955b440f Fix player initialization on server 2016-08-19 03:11:03 +03:00
scrawl
51aa613848 Merge pull request #1030 from Aesylwinn/CoverityStuff
Fix some issues detected by coverity for the editor.
2016-08-19 01:07:14 +02:00
David Cernat
cba01af683 Log player initialization on server 2016-08-19 01:32:39 +03:00
David Cernat
2337a0becb Add LOG_APPEND method for writing to log without timestamp and level 2016-08-18 23:17:46 +03:00
David Cernat
f4744f8547 Add additional log info 2016-08-18 22:29:54 +03:00
David Cernat
97f944dde7 Use logger for most console messages 2016-08-18 20:20:17 +03:00
Aesylwinn
91fd966146 Fix some issues detected by coverity for the editor. 2016-08-18 12:42:35 -04:00
David Cernat
535731c018 Fix month in logger 2016-08-18 18:38:24 +03:00
Allofich
b332a13b4e Don't restart looped animations on repeated calls 2016-08-18 23:23:38 +09:00
David Cernat
a36c20eaae Reduce server console spam 2016-08-18 16:13:04 +03:00
David Cernat
436548413e Resolve conflicts in pull request #39
# Conflicts:
#	CMakeLists.txt
2016-08-18 15:10:52 +03:00
Marc Zinnschlag
2fef8948f1 Merge remote-tracking branch 'aesylwinn/InstanceRotateAndScale' 2016-08-18 09:13:43 +02:00
David Cernat
a2dbeb6c95 Share skills and attributes correctly upon logging in, and fix grammar 2016-08-18 05:21:25 +03:00
Koncord
dd6ebdeb4f formated C string to C++ 2016-08-18 08:44:47 +08:00
Koncord
35991fcd15 Add logger to client 2016-08-18 07:58:37 +08:00
Koncord
7f8c0ecbbd Logging in file for server 2016-08-18 07:58:09 +08:00
Koncord
1537fdbb76 Add SetLevel function & Verbose log level 2016-08-18 07:57:11 +08:00
Koncord
554810fbeb Removed redundant const in headerSize() 2016-08-18 07:42:08 +08:00
David Cernat
c94f818478 Add script functions for getting attributes and skills by their names 2016-08-18 00:55:35 +03:00
David Cernat
41868cc9cc Add script functions for getting attributes and skills by their IDs 2016-08-18 00:13:45 +03:00
David Cernat
e5cb58e7c4 Add debug info about ID_GAME_BASE_INFO packets 2016-08-17 21:18:04 +03:00
David Cernat
8eda381016 Make formatting consistent, part 2 2016-08-17 18:20:36 +03:00
David Cernat
1363c4c5b6 Make formatting consistent 2016-08-17 18:04:35 +03:00
David Cernat
1bbd7c271f Add fail-safes to DedicatedPlayer cell updating to narrow down problems 2016-08-17 07:27:40 +03:00
David Cernat
e39b66af4f Move logger to components 2016-08-17 06:15:44 +03:00
David Cernat
38c8d2344b Uncomment sending of stats packets to and from new players 2016-08-17 04:52:15 +03:00
David Cernat
aa69c156c7 Fix race-related graphical glitches when players spawn 2016-08-17 01:06:50 +03:00
Koncord
a840d84b39 Merged branch master into master 2016-08-17 05:53:09 +08:00
Koncord
ee8d9895dc Porting Log.cpp to C++98 2016-08-17 05:52:40 +08:00
scrawl
341e3846c0 Use initial particle state to compute the initial bounding box (Fixes #3500) 2016-08-16 23:28:03 +02:00
scrawl
dda5bfbc9f CharacterPreview no longer depends on osgViewer 2016-08-16 22:47:45 +02:00
scrawl
8bfcf259a3 LocalMap no longer depends on osgViewer 2016-08-16 22:37:44 +02:00
scrawl
b2ae45f0eb Remove unneeded setGraphicsContext() calls 2016-08-16 19:33:09 +02:00
scrawl
0209c70583 Improve performance by skipping update if transform is unchanged 2016-08-16 17:50:59 +02:00
scrawl
4751e0e953 Improve performance of animateCollisionShapes by caching the node path 2016-08-16 17:50:59 +02:00
scrawl
8a4722cb84 Revert "animateCollisionShape checks if the shape is really animated"
This reverts commit cbf344663f.

Doesn't work correctly because the Animation delays the assignment of the UpdateCallbacks until the animation starts. The commit broke the animation of in_dagoth_bridge00
2016-08-16 17:50:59 +02:00
scrawl
b26478b860 Merge pull request #1028 from kpp/find_osg_plugins
Find osg_plugins
2016-08-16 17:05:44 +02:00
scrawl
ec14fe4d4c Merge pull request #1026 from kpp/find_sphinx
Fix FindSphinx.cmake
2016-08-16 16:49:43 +02:00
scrawl
46d3845fb3 Merge pull request #1027 from kpp/find_sdl2
Find sdl2
2016-08-16 16:49:23 +02:00
scrawl
3ef9b3f44d Merge pull request #1025 from Allofich/anim
Use loopfallback for idle animation groups
2016-08-16 16:30:55 +02:00
Roman Proskuryakov
0d83121a6f Removes unused FindPkgMacros 2016-08-16 06:06:30 +03:00
Roman Proskuryakov
95dc1258d6 Rewrites find_package for OpenSceneGraph plugins using LibFindMacros and osg_find_library 2016-08-16 06:06:30 +03:00
Roman Proskuryakov
ed2c2170f0 Rewrites FindSDL2 using LibFindMacros 2016-08-15 23:57:39 +03:00
Roman Proskuryakov
3df57b1833 Fixes LibFindMacros for libfind_process 2016-08-15 23:55:53 +03:00
Roman Proskuryakov
9d51e1966f Rename SDL_SDK -> SDL2DIR as it is said in FindSDL2 documentation 2016-08-15 23:55:53 +03:00
Roman Proskuryakov
2311969f05 Reduce the number of copypaste in FindSphinx.cmake 2016-08-15 22:29:07 +03:00
Aesylwinn
7125775648 Change free axis rotation. 2016-08-15 15:07:43 -04:00
scrawl
dae4a8353a Merge pull request #1024 from kpp/kpp_travis_improvements
Improve Travis config
2016-08-15 20:05:33 +02:00
Allofich
c05782581e Account for all instances of play() 2016-08-16 02:52:55 +09:00
David Cernat
3c6710a7b5 Merge pull request #35 from OpenMW/master
Add OpenMW commits from 2nd week of August
2016-08-15 19:21:09 +03:00
David Cernat
fc54f12b31 Merge branch 'OpenMW-master' 2016-08-15 19:16:01 +03:00
Allofich
6163c7bb03 Use loopfallback for idle animation groups 2016-08-16 01:15:26 +09:00
David Cernat
d9cfd5bac2 Resolve conflicts with OpenMW 2016-08-15 19:14:13 +03:00
scrawl
641005b317 Remove Camera's children before removing the Camera
Should work around OSG race condition ( http://forum.openscenegraph.org/viewtopic.php?t=16077 )
2016-08-15 18:12:46 +02:00
Roman Proskuryakov
f4f81a14c9 Use Travis addons.apt.packages to install packages 2016-08-15 18:45:29 +03:00
Koncord
a92ef8b6bd Some fixes 2016-08-15 22:49:34 +08:00
scrawl
a44ba0e461 Merge pull request #966 from kpp/find_mygui
Find mygui
2016-08-15 16:36:48 +02:00
Koncord
e9ee9c8b3b Remove C++11 in Log.h 2016-08-15 21:45:49 +08:00
Koncord
b3320c7bb9 Add forgoten ctime header 2016-08-15 21:35:29 +08:00
Koncord
8d88381dac added prefix LOG_ to loglevel 2016-08-15 21:33:18 +08:00
Roman Proskuryakov
2b860e2600 Reduce the number of if conditions in Travis config 2016-08-15 16:29:01 +03:00
Koncord
170455e08a Fix headers 2016-08-15 21:15:36 +08:00
Roman Proskuryakov
4cffdb67d8 Uses case-sensitive MyGUI_* variables 2016-08-15 15:59:02 +03:00
Roman Proskuryakov
e0e69a8d8a Rewrites FindMyGUI with LibFindMacros 2016-08-15 15:59:02 +03:00
Marc Zinnschlag
a632974998 updated changelog 2016-08-15 11:27:54 +02:00
Koncord
32a2327f59 fix header size 2016-08-15 07:52:54 +08:00
Koncord
c695923825 Added master server stuff 2016-08-15 07:48:55 +08:00
Koncord
02a447c589 Added logger 2016-08-15 07:45:42 +08:00
Aesylwinn
3e4ac0c662 Potential fix for context sensitive select mode issues. 2016-08-14 14:43:29 -04:00
scrawl
71f786ff84 Delete the WorkQueue first
Fixes a potential crash on exit.
2016-08-14 18:10:29 +02:00
scrawl
3732979eec Revert "Merge pull request #993 from mrcheko/pathfinding"
This reverts commit 5190275b37, reversing
changes made to d7845012bf.
2016-08-14 18:04:33 +02:00
scrawl
c3340ec143 Merge pull request #1022 from Allofich/anim
Make loopgroup loop correct number of times
2016-08-14 17:02:38 +02:00
scrawl
1edcea2ff5 Merge pull request #1023 from psi29a/small_fixes
small fixes
2016-08-14 16:49:26 +02:00
scrawl
513e1da8a3 Remove unneeded casts 2016-08-14 16:44:11 +02:00
scrawl
30b549124e Fix use-after-free 2016-08-14 16:42:29 +02:00
scrawl
c65492193c Use osg::clone 2016-08-14 16:41:44 +02:00
scrawl
33d27a2285 Use ref_ptr 2016-08-14 16:41:33 +02:00
scrawl
0fbc0d0da7 Attempt to silence warning 2016-08-14 16:41:17 +02:00
Bret Curtis
0547d4b937 clang says that these must be in the MWWorld namespace 2016-08-14 16:17:09 +02:00
scrawl
0d439750a2 Clang warning fix 2016-08-14 15:20:52 +02:00
scrawl
8c44334409 Merge pull request #1021 from Allofich/weight
Corrections to tooltip displays of zero-weight items
2016-08-14 15:14:58 +02:00
scrawl
2f6075329b Clang warning fixes 2016-08-14 15:10:50 +02:00
scrawl
698575dc1b Merge pull request #1020 from Allofich/sound
Make zero-weight boots play light boot footsteps
2016-08-14 15:08:09 +02:00
Allofich
a381a15b19 Make loopgroup loop correct number of times 2016-08-14 21:57:06 +09:00
Allofich
7bf04b5014 Allow showing value of zero-weight lights 2016-08-14 21:15:22 +09:00
Allofich
502a26a7ff Use getWeightString() to avoid casting to int 2016-08-14 19:38:53 +09:00
Allofich
4f5d676b4e Allow weight tooltips for gold and keys if not 0 2016-08-14 19:32:43 +09:00
Allofich
caf025f93d Don't show 0 weight tooltips except for potions 2016-08-14 19:27:59 +09:00
Allofich
cf7278f8ae Don't show weight tooltip for 0-weight equipment 2016-08-14 18:37:41 +09:00
Allofich
ee2702087c Make zero-weight boots play light boot footsteps 2016-08-14 17:27:47 +09:00
scrawl
f3f02fe154 Merge pull request #1019 from Allofich/bound
Don't allow re-casting of bound equipment spells
2016-08-13 21:02:32 +02:00
Allofich
d617651307 Don't allow re-casting of bound equipment spells 2016-08-14 02:05:23 +09:00
Aesylwinn
101c3cc90d Rotate around center of selection. 2016-08-12 17:12:10 -04:00
Aesylwinn
571969cd65 Scale from center of selection. 2016-08-12 17:11:37 -04:00
scrawl
8a17a23e33 Merge pull request #1018 from MiroslavR/disabled-door-markers
Fix disabled door markers appearing on the map
2016-08-12 14:48:45 +02:00
MiroslavR
ddbfe0c944 Fix disabled door markers appearing on the map (Fixes #3348) 2016-08-12 03:14:36 +02:00
Aesylwinn
388917df89 Base editor rotate/scale commit. 2016-08-10 19:31:34 -04:00
scrawl
3925f1fe81 Merge pull request #1014 from Allofich/sounds
Play locked sounds on locked objects instead of actors
2016-08-10 14:45:59 +02:00
Allofich
cb9bb92b26 Play locked sounds on locked objects instead of actors 2016-08-10 21:31:14 +09:00
Marc Zinnschlag
c9ffd61491 updated credits file 2016-08-10 10:18:00 +02:00
scrawl
6b45a757a9 Merge pull request #1001 from Allofich/traps
Make non-actors play spell cast visuals and sounds
2016-08-09 20:17:31 +02:00
Allofich
83b715734f Move part of addGlow() to addSpellCastGlow() 2016-08-10 02:52:43 +09:00
Allofich
1c76c93ed8 Use raw pointer to node in glowupdater 2016-08-10 01:35:22 +09:00
Allofich
67f31d948e Add removeTexture method 2016-08-10 01:11:14 +09:00
Allofich
4b9aff7a03 Glowupdater fix when using shaders 2016-08-10 00:43:14 +09:00
Allofich
9b2cb2fb8c Cleanups 2016-08-10 00:25:33 +09:00
Allofich
775162ccdf Rewrite spell glow implementation 2016-08-09 22:56:53 +09:00
Allofich
cad41599cf Fix travis build error and warnings 2016-08-09 22:56:53 +09:00
Allofich
1910128e9c Don't remove uniform when spell glow ends 2016-08-09 22:56:53 +09:00
Allofich
35c14bb9bb Minor rewrite, make "open" spells play glow effect 2016-08-09 22:56:53 +09:00
Allofich
e132b52a69 Handle spell glows within updatecallback 2016-08-09 22:56:53 +09:00
Allofich
123c626f2d Add glow when using telekinesis on doors 2016-08-09 22:56:53 +09:00
Allofich
57138b416e Fix spell glows to only run one at a time 2016-08-09 22:56:53 +09:00
Allofich
3841a8fb40 Make non-actors glow when they cast spells 2016-08-09 22:56:53 +09:00
Allofich
dca7b4beb7 Make non-actors also play spell casting sounds 2016-08-09 22:56:53 +09:00
Koncord
2bdacc950b Fix messagebox in connection failed 2016-08-09 18:25:52 +08:00
Koncord
edd214dd00 Removed redundant requestQuit 2016-08-09 18:19:03 +08:00
Aesylwinn
c4b3727d57 Fix pointer being deleted twice. 2016-08-09 10:22:42 +02:00
Marc Zinnschlag
a563a9d336 added missing Q_OBJECT 2016-08-09 10:21:37 +02:00
Marc Zinnschlag
96fd9263bf Merge remote-tracking branch 'aesylwinn/FixNullGlobalVariable' 2016-08-09 10:17:26 +02:00
Aesylwinn
448c9d5a5b Fix globals not being initialized with a valid type. 2016-08-09 00:17:41 -04:00
scrawl
0bbd715f65 Fix the cloned StateSet not being assigned 2016-08-09 01:13:19 +02:00
scrawl
f291aabc4b Fix shader compile error for objects without diffuse map 2016-08-09 01:04:02 +02:00
scrawl
5190275b37 Merge pull request #993 from mrcheko/pathfinding
Pathfinding unification
2016-08-09 00:41:03 +02:00
scrawl
d7845012bf Merge pull request #1012 from Aesylwinn/FixPointerDeletion
Fix pointer being deleted twice.
2016-08-08 23:26:34 +02:00
Aesylwinn
0963adb2f4 Fix pointer being deleted twice. 2016-08-08 14:36:50 -04:00
David Cernat
babba95413 Merge pull request #34 from OpenMW/master
Add OpenMW commits from 1st week of August
2016-08-08 15:53:56 +03:00
scrawl
ea06506319 Update AUTHORS.md 2016-08-07 20:34:23 +02:00
scrawl
46538b9438 Merge pull request #1011 from devnexen/master
Mainly making compilable under OpenBSD.
2016-08-07 20:34:03 +02:00
mrcheko
e2cd87fcc7 fix veritcal aiming 2016-08-07 19:23:08 +03:00
Marc Zinnschlag
aa1ed9b172 Merge remote-tracking branch 'aesylwinn/RenderWater' 2016-08-07 17:03:58 +02:00
scrawl
7b557af885 Merge pull request #1007 from MiroslavR/save-anim-state
Save scripted animation state
2016-08-06 20:39:32 +02:00
David Carlier
83bab29e4b Mainly making compilable under OpenBSD.
Renaming one resource file as the space led to issue for qt/moc.
2016-08-06 19:00:27 +01:00
David Cernat
e35f71ae97 Add logo credit 2016-08-06 04:28:49 +03:00
David Cernat
723a109fcd Move new logo to correct location 2016-08-06 04:20:10 +03:00
David Cernat
b2f59b0ad0 Merge pull request #33 from Texafornian/master
Add finished TES3MP logo
2016-08-06 04:14:31 +03:00
Texafornian
86091d9e80 Merge pull request #1 from Texafornian/Texafornian-logo-upload
Uploaded finished TES3MP logo
2016-08-05 17:17:44 -05:00
Texafornian
ee1b55918b Uploaded finished TES3MP logo 2016-08-05 17:15:14 -05:00
Aesylwinn
16d0580ce8 Fix struct/class mismatch. 2016-08-05 15:39:08 -04:00
Koncord
1022b6b27c Fix a header size 2016-08-06 03:28:01 +08:00
Aesylwinn
1f32f1eef5 Add water texture. 2016-08-05 14:55:40 -04:00
Aesylwinn
9454f4f2e7 Use shared water geometry + state generation,
Fix water position and render bin,
Fix passed cell parameter being ignored
2016-08-05 13:49:44 -04:00
Aesylwinn
5753f52b47 Move water mesh + simple state generation to components library. 2016-08-05 13:25:05 -04:00
Marc Zinnschlag
1d35fc4b21 updated change log 2016-08-05 09:08:53 +02:00
Koncord
114a11ea78 Getting rid of packages spam
I think this is temporary solution. I have an idea how to cache the result of functions and send data after callback.
2016-08-05 14:28:45 +08:00
Koncord
7898b1181d Reduced package size 2016-08-05 14:21:09 +08:00
Koncord
a815d013fe Reducing CPU usage for server 2016-08-05 14:16:02 +08:00
Aesylwinn
3904a24e6c Add missing include. 2016-08-05 00:30:28 -04:00
Aesylwinn
5674e0da24 Render water in editor. 2016-08-04 23:01:43 -04:00
Koncord
e4e17ca4b9 Close #30 2016-08-05 00:31:15 +08:00
Marc Zinnschlag
b8b2f087cd updated changelog 2016-08-04 15:00:07 +02:00
Marc Zinnschlag
60535b77e8 updated credits file 2016-08-04 09:10:54 +02:00
David Cernat
8686b9cc12 Merge pull request #29 from OpenMW/master
Add OpenMW commits from end of July
2016-08-04 00:56:36 +03:00
David Cernat
8dd8e22a0b Replace tabs with spaces in LocalPlayer changes 2016-08-04 00:55:28 +03:00
David Cernat
3362902396 Update position after changing cell (for real) 2016-08-04 00:03:05 +03:00
David Cernat
b0bd10f219 Allow script-based teleportation from interior to exterior cell 0,0 2016-08-03 22:07:49 +03:00
LohikaarmeHAV
19c74a4d6e Part two 2016-08-03 20:39:46 +03:00
LohikaarmeHAV
7309be8592 First part 2016-08-03 20:20:55 +03:00
lohikaarme
e8ef5c233f Miss info 2016-08-03 14:24:21 +03:00
lohikaarme
0592d1cdcf Commnent? 2016-08-03 14:22:25 +03:00
MiroslavR
b65f379b7f Save scripted animation state (Fixes #1931, #2150, #3393) 2016-08-03 03:52:35 +02:00
lohikaarme
48bcde8cc9 ... 2016-08-02 15:41:52 +03:00
LohikaarmeHav
b0cf276cfc hups 2016-08-02 15:27:40 +03:00
LohikaarmeHav
7cd991107c Nah
Preview seem to not like removing mCamPositionSet and I have do other things.
2016-08-02 15:26:12 +03:00
LohikaarmeHav
c6bc30d6a8 Forgot to remove line and add comment. 2016-08-02 14:27:19 +03:00
LohikaarmeHav
2e6f80688c Removed debug 2016-08-02 14:10:08 +03:00
Koncord
b4c7914a25 Added <memory> header for Windows 2016-08-02 19:00:43 +08:00
Koncord
ed3dc8ca7b Reduced server dependings 2016-08-02 18:52:58 +08:00
LohikaarmeHav
c6ec473280 Camera reset now every time cell object->view is pressed. 2016-08-02 13:46:43 +03:00
Koncord
1f0d6eba80 Fix FindRakNet
Added ws2_32 for Windows
Fixed path to headers
2016-08-02 18:41:50 +08:00
Koncord
74c103ddc1 Fixed types in all GetInterface functions
Move lib_t type to Scripts/Types.hpp
2016-08-02 18:10:06 +08:00
Koncord
e513c3676d Added forgotten header to project 2016-08-02 17:53:56 +08:00
Koncord
166bc255a3 Add logo to repo 2016-08-02 17:38:16 +08:00
Koncord
9375b540d6 removed '#undef _SEP_' 2016-08-02 17:35:18 +08:00
Koncord
bdfaea2d46 Implement 'setenv' for windows
Paths converter
Move 'split' from main to Utils
2016-08-02 17:32:10 +08:00
scrawl
3374630e7b Merge pull request #1008 from Internecine/bug3451-invalid-enchantments
Fixes Bug 3451 - Invalid Enchantment IDs
2016-08-02 10:14:59 +02:00
David Cernat
72026955f5 Add missing preprocessor directive for Windows build of server 2016-08-02 07:08:31 +03:00
Internecine
90735d226d Replaced Store::find usage with Store::search to remove exception handlers. 2016-08-02 11:43:41 +12:00
David Cernat
09d564424f Translate Russian code comment into English 2016-08-01 19:26:42 +03:00
Marc Zinnschlag
d170a50e8a increased version number 2016-08-01 11:18:35 +02:00
Marc Zinnschlag
f32d0121fc Merge remote-tracking branch 'aesylwinn/KeyConfigAndShortcuts' 2016-08-01 09:57:11 +02:00
Internecine
14165352f6 Added exception handlers when trying to retreive enchantment and magic effect data. 2016-08-01 13:16:42 +12:00
Internecine
17ede44628 Merge remote-tracking branch 'upstream/master' 2016-08-01 11:25:30 +12:00
Aesylwinn
f73d60cc73 Make scene controls use configurable speed modifier. 2016-07-31 16:28:03 -04:00
Aesylwinn
bf2ab4ed45 Change the way modifiers are handled so they can be shared. 2016-07-31 16:07:17 -04:00
LohikaarmeHav
3030cc2d3a Merge branch 'master' of https://github.com/OpenMW/openmw
* 'master' of https://github.com/OpenMW/openmw:
  make conf.py independant from cmake macros
  we have html output and autodoc functionality
2016-07-31 19:28:54 +03:00
Aesylwinn
faea33b888 Revert "Change scene controls to more closely match blender as requested"
This reverts commit bc7ae70f0b.
2016-07-31 05:54:13 -04:00
Aesylwinn
bc7ae70f0b Change scene controls to more closely match blender as requested
in the forums.
2016-07-30 09:53:45 -04:00
Marc Zinnschlag
2db5cec98b Merge remote-tracking branch 'psi29a/sphinx' 2016-07-30 08:22:27 +02:00
Koncord
31e2ab54d6 Revert "Update position after changing cell"
This reverts commit 5e072b9d3c.
2016-07-30 04:57:43 +08:00
Aesylwinn
1cce085fa2 Remove unused headers. 2016-07-29 16:35:43 -04:00
Koncord
5e072b9d3c Update position after changing cell 2016-07-30 04:12:47 +08:00
Aesylwinn
2f97d6cffb Move tool tip processing to ShortcutManager,
Process cell arrow tooltip,
Fix cell arrows not being added when cell is added
2016-07-29 16:02:46 -04:00
Aesylwinn
d7a83d80a2 Change some key binding defaults. 2016-07-29 15:00:58 -04:00
Aesylwinn
3475b83e90 Clean up modifier/shortcut class and handle focus out event,
Improve shortcut labels,
Adjust menu titles and remove menu navigation (can conflict with
shortcuts)
2016-07-29 15:00:35 -04:00
Koncord
7107136808 New API
SetExterior(pid, x, y)
GetExteriorX(pid)
GetExteriorY(pid)

also "SetCell" will now move to the named external cells (e.g. SetCell(pid, "Balmora"))
2016-07-30 01:33:28 +08:00
Bret Curtis
7f0d5bde2d make conf.py independant from cmake macros
merged openmw-cs in, using per directory statics

add requirements.txt for sphinx docs

it is breath

update gitignore and openmw-cs
2016-07-29 18:14:54 +02:00
Koncord
39dafc5ea7 Merged branch master into master 2016-07-28 20:09:30 +08:00
Koncord
0549a7a01d Fixed type cast 2016-07-28 20:09:12 +08:00
Aesylwinn
96a3c278fd Added shortcuts for loading a cell relative to the camera,
Removed Ctl+V binding for "Verify" because that is associated
with paste.
2016-07-27 21:40:53 -04:00
Aesylwinn
65201badf6 Add custom page for key bindings. 2016-07-27 19:15:24 -04:00
mrcheko
293a0f768c use real distance to target to determinate 'ready to attack' state 2016-07-27 23:43:32 +03:00
LohikaarmeHav
f142f9bf86 wtf 2016-07-27 21:37:52 +03:00
Aesylwinn
b685c0ce6c Add ability to clear shortcut/modifier setting with right click. 2016-07-27 14:07:53 -04:00
Aesylwinn
12db6d2114 Add modifier setting. 2016-07-27 13:53:33 -04:00
Grim Kriegor
90c94efd36 README: Corrected version, added a paragraph. 2016-07-27 15:24:15 +01:00
Marc Zinnschlag
63fd1e8df7 Merge remote-tracking branch 'origin/master' 2016-07-27 15:49:11 +02:00
Koncord
23a37fc7fc Ignore LuaBridge warnings
Remove TINYXML_LIBRARIES
2016-07-27 17:53:26 +08:00
Koncord
d3414148fc Simplify LangLua::Call 2016-07-27 17:51:23 +08:00
Koncord
03c84fd9fe Merged branch master into master 2016-07-27 17:46:00 +08:00
Aesylwinn
b204758be1 More shortcuts. 2016-07-27 01:53:21 -04:00
Aesylwinn
3f7f75cc9d Exclude keys not compatible with qt 4 2016-07-27 00:44:34 -04:00
Aesylwinn
3edc77a32b Remove QShortcut usage,
Add a lot of shortcuts,
Remove debug messages
2016-07-27 00:24:16 -04:00
Koncord
5a6c1750d9 Fixed some build warnings and IsTimerElapsed function 2016-07-27 10:35:27 +08:00
Grim Kriegor
fa30dad01c Primordial TES3MP specific README file 2016-07-27 03:23:51 +01:00
Aesylwinn
08af82e1bd Switched to an interactive method for key input,
Redid text representation for shortcuts
2016-07-26 21:22:31 -04:00
AnyOldName3
a0699ce20d Change some <> characters to double quotes, resolving compilation problems. 2016-07-27 01:19:05 +01:00
AnyOldName3
20f73f4a32 Relocate escape-related code to new files escape.hpp and escape.cpp. 2016-07-27 00:58:31 +01:00
Stanislav Zhukov
075b600b3a Fix for Windows 2016-07-27 06:55:21 +08:00
Aesylwinn
05888e7925 Updated more tool tips to show shortcut configs. 2016-07-25 22:43:37 -04:00
Aesylwinn
8c5fddf150 Fix pathgrid selection mode not being removed from toolbar. 2016-07-25 20:49:28 -04:00
Aesylwinn
051aec2729 Added methods to keep text mentioning shortcuts up to date,
fixed potential issue with widget relationship tracking,
hopefully got rid of signed/unsigned errors (Qt4/5 issue)
2016-07-25 20:49:09 -04:00
Stanislav Zhukov
4316d4d1bf Merge pull request #21 from TES3MP/tes3mp-gui
Tes3mp gui
2016-07-25 16:16:32 -05:00
Aesylwinn
f251c3867d Redesigned shortcut handler to be capable of dealing with child and
parent widgets. This should be the final design change. Also, some
various bug fixes.
2016-07-23 21:23:02 -04:00
Koncord
86dccbed4b Fix CMake 2016-07-24 02:30:07 +08:00
David Cernat
eac1e80911 Merge branch 'master' of https://github.com/TES3MP/openmw-tes3mp 2016-07-23 20:07:08 +03:00
David Cernat
f4342f0bde Stop requiring amx folder for non-Pawn builds. Use correct Windows identifiers for preprocessor directives in server code. 2016-07-23 20:06:14 +03:00
Koncord
1e3eff91ac Merged branch tes3mp-gui into tes3mp-gui 2016-07-23 22:08:01 +08:00
Koncord
9ab77cb123 New API functions: MessageBox, CustomMessageBox, InputDialog
New Callback: OnGUIAction
2016-07-23 22:02:06 +08:00
scrawl
5a9b1b6a01 Merge pull request #1005 from MiroslavR/cellref-fixes
Various reference handling fixes
2016-07-23 15:43:35 +02:00
Stanislav Zhukov
917fa63f5c Fixed security issue 2016-07-23 17:14:54 +08:00
Stanislav Zhukov
fe50394f4d Fix movement desync
I think this should fix all movements desyncs
2016-07-22 23:40:34 +08:00
Aesylwinn
acdb636935 Qt4 protected signal workaround and signed/unsigned mismatch. 2016-07-22 02:41:00 -04:00
Aesylwinn
455d227f3c Changed shortcut design to allow a configurable second output. Also
re-added shift for temporarily changing camera speed.
2016-07-22 01:58:17 -04:00
MiroslavR
4a3529488b Fix possible reference duplication when the refID is modified by a plugin (Bug #3471) 2016-07-22 03:58:23 +02:00
MiroslavR
dafe184220 Fix moved references disappearing when modified by a plugin 2016-07-22 02:12:03 +02:00
MiroslavR
d790747389 Implement deletion of moved references (Bug #3471) 2016-07-22 01:59:02 +02:00
davidcernat
ab309180c2 Add useful debug info for cell changes 2016-07-21 23:07:37 +03:00
AnyOldName3
7243583963 Change a switch to a series of if/else if/.../else, hopefully resolving compilation issues on OSX and Linux. 2016-07-21 01:36:14 +01:00
AnyOldName3
2b829f7f7b Move some stuff to a header, removing the need for a dodgy hack. 2016-07-21 01:07:25 +01:00
AnyOldName3
becc053555 Trick the software into building by using what I assume is a really dirty hack. 2016-07-21 00:16:00 +01:00
AnyOldName3
519fbab864 Remove useless print 2016-07-20 23:18:09 +01:00
AnyOldName3
32f0ded8f6 Fix bug in unescape filter, but still manage not to fix build issue. 2016-07-20 23:15:44 +01:00
Aesylwinn
1b5273f2b7 Finally re-added rendering stats, refactored some functions
to better fit new input structure, removed unneeded shortcut
declarations in headers, and changed the cell marker
interaction to use primary/secondary select instead of
shift + primary/secondary edit.
2016-07-20 15:00:00 -04:00
AnyOldName3
423919abb5 Make it not build again (but theoretically enable the desired functionality). 2016-07-20 15:19:34 +01:00
AnyOldName3
59639e3988 Make it build again (but remove the new functionality). 2016-07-20 15:16:53 +01:00
AnyOldName3
d9d5a6561b Adjust the code so that it should (maybe) work, changing the compilation error to a less straighforward one. 2016-07-20 14:50:34 +01:00
Aesylwinn
faa84e0a35 - Further extended usage of new shortcut class
- Refactored camera classes to take advantage of Qt's reference counting
- Removed some of the old implementation
2016-07-20 08:25:11 -04:00
Aesylwinn
d8fa3fd1de Added orbit "center on selection" shortcut. 2016-07-20 08:25:11 -04:00
Aesylwinn
e8626e588a Changes in shortcut design.
- Handle input in centralized class for potential conflict resolution.
- Remove wrapper class for QShortcut; it should be unnecessary.
- Added customizable shortcut usage to orbit camera mode.
2016-07-20 08:25:11 -04:00
Aesylwinn
3fa4fdb839 Remove use of c++11 feature and add some missing headers. 2016-07-20 08:25:11 -04:00
Aesylwinn
40297701d0 Base key config/shortcut implementation 2016-07-20 08:25:11 -04:00
Stanislav Zhukov
a54e76cfd2 Update TES3MPTeam.md 2016-07-20 15:06:20 +08:00
Stanislav Zhukov
78b1511b5e Update TES3MPTeam.md 2016-07-20 14:46:04 +08:00
Stanislav Zhukov
61623222e1 Update TES3MPTeam.md 2016-07-20 14:44:55 +08:00
AnyOldName3
95d2c7ea5c Attempt to unescape characters when constructing file paths, introducing compilation errors. 2016-07-20 02:48:57 +01:00
davidcernat
3c8543bfaf Make player references cross exterior cells only when called by server
Previously, clientside representations of players were able to move to a new exterior cell once during their movement tick and then again when sending a cell change packet to the server. Besides causing crashes in CellRef because of a messy cell-changing record, this also led to major desyncs.

Clientside representations of players can now only change their cells when a server-sent cell change packet specifically allows it.
2016-07-20 03:26:25 +03:00
David Cernat
360eec30a0 Merge pull request #2 from OpenMW/master
Add recent OpenMW commits by AnyOldName3
2016-07-20 02:58:57 +03:00
Marc Zinnschlag
4ac5174d89 updated credits file 2016-07-19 16:29:26 +02:00
Marc Zinnschlag
c17e1ca24a Merge remote-tracking branch 'anyoldname3/ignore-hash-test' 2016-07-19 16:19:28 +02:00
Stanislav Zhukov
7b4a5fdcc2 Merge pull request #1 from Aesylwinn/MergeTES3MP
Merge tes3 mp
2016-07-19 00:13:52 -05:00
Aesylwinn
3483b54df5 Build fix. 2016-07-18 00:05:27 -04:00
Aesylwinn
b4a000913c Merge remote-tracking branch 'yar/master' into Even
# Conflicts:
#	CMakeLists.txt
#	apps/openmw/mwdialogue/filter.cpp
#	apps/openmw/mwmechanics/character.cpp
#	apps/openmw/mwworld/localscripts.cpp
#	components/CMakeLists.txt
#	components/compiler/exprparser.cpp
#	components/sceneutil/workqueue.cpp
2016-07-17 23:50:52 -04:00
davidcernat
7bf08e5e5a Fix transition between exterior cells for non-local players
Make the local player send a packet whenever moving from one exterior cell to another, don't require objects to have RefNums to be moved correctly between exterior cells, and increase the packet priority for cell changes.
2016-07-17 22:03:20 +03:00
scrawl
9e3ed45320 Merge pull request #1003 from MiroslavR/camera-distance
Fix camera distance not getting reset to max value (Fixes #3473)
2016-07-17 20:24:49 +02:00
MiroslavR
19a8800d4d Fix camera distance not getting reset to max value (Fixes #3473) 2016-07-17 19:52:12 +02:00
Koncord
45fab50bd8 Merged branch master into master 2016-07-17 17:59:57 +08:00
Koncord
6f07d590d4 Fix SetPos and SetAngle functions
Fix types for SetPos and SetAngle
2016-07-17 17:59:46 +08:00
scrawl
2ed813d5f3 Merge pull request #1002 from MiroslavR/nitextureeffect-crash
Fix assertion failure with NiTextureEffect missing source texture
2016-07-16 19:26:09 +02:00
MiroslavR
721fa28c1e Fix assertion failure with NiTextureEffect missing source texture 2016-07-16 18:59:18 +02:00
mrcheko
203804ff15 fix AiPackage repeating 2016-07-16 19:08:49 +03:00
mrcheko
59a1a6d117 checkWayIsClear: remove PATHFIND_CAUTION_DIST check 2016-07-16 19:07:48 +03:00
David Cernat
f6d72ca5c1 Merge pull request #3 from testman42/patch-1
Use English translation for changelog
2016-07-16 15:19:55 +03:00
davidcernat
b7e377c636 Remove _boundingBoxComputed from sceneutil's riggeometry.cpp
Recent versions of OpenSceneGraph have no _boundingBoxComputed, which is why building TES3MP with them causes an error. As expected, recent versions of OpenMW do not use _boundingBoxComputed either.
2016-07-16 15:12:22 +03:00
Stanislav Zhukov
645a21af21 Added new script functions for lua compatibility
GetPosX, GetPosY, GetPosZ
GetAngleX, GetAngleY, GetAngleZ
2016-07-16 16:19:35 +08:00
testman42
0b4a560ae2 Full translation to Engilsh
Makes changelog English-only
2016-07-13 16:02:43 +02:00
Stanislav Zhukov
ce92f30022 Fix maximum incoming connections 2016-07-13 04:24:42 +08:00
Stanislav Zhukov
b09e4a0218 Fix chat 'y'
Now you can close chat only if pressed 'Enter'.
2016-07-13 03:21:30 +08:00
Stanislav Zhukov
131887c981 Delete script.pwn
Not for this repo.
2016-07-13 02:49:14 +08:00
AnyOldName3
f1b5ad5804 Remove unused unsafe function and properly remove inheritance from std::string, providing implementations of missing stream operators preventing boost reading and writing to escape strings. 2016-07-12 17:09:57 +01:00
Koncord
299c4c904e Resurrect function 2016-07-12 23:26:53 +08:00
Koncord
1a32385632 Fix cmake modules 2016-07-12 20:37:39 +08:00
testman42
001b83fdfb Add English translation
To be honest, just copy pasted from this Reddit post: https://www.reddit.com/r/tes3mp/comments/4rvf5c/source_code/d54inw9
2016-07-12 11:29:56 +02:00
Stanislav Zhukov
1d5f0bd38f Merge pull request #2 from GrimKriegor/master
Ported OpenMW's "Don't use unordered_map" commit changes to TES3MP to fix #1
2016-07-12 04:02:52 -05:00
GrimKriegor
ace719507c Ported OpenMW's "Don't use unordered_map" commit to TES3MP to fix Issue #1
https://github.com/TES3MP/TES3MP/issues/1
2016-07-12 01:42:05 +01:00
AnyOldName3
e6f78ae5b7 Switch indentation to spaces to remain consistent with the rest of the project 2016-07-12 01:06:57 +01:00
AnyOldName3
08df463c94 Separate declaration and definition of some static members to hopefully calm Travis down. 2016-07-12 00:37:08 +01:00
AnyOldName3
7475d90693 Fix dodgy include by changing backslashes to forwardslashes 2016-07-12 00:14:19 +01:00
AnyOldName3
5121e77a95 Remove the cause of a warning which upset Travis (but not the thing that made the Travis build fail, as I have no idea why it wouldn't work or how to fix it 2016-07-12 00:00:29 +01:00
mrcheko
b4e94e2aae Merge remote-tracking branch 'upstream/master' into pathfinding
# Conflicts:
#	apps/openmw/mwmechanics/aipackage.cpp
#	apps/openmw/mwmechanics/aipackage.hpp
2016-07-12 00:45:01 +03:00
AnyOldName3
1a0642f1db Make it work by realising that what boost::program_options calls validation is what any sane person would regard as parsing 2016-07-11 22:33:15 +01:00
mrcheko
8d4f0660ce fix hardcoded melee attack ranges 2016-07-12 00:17:43 +03:00
AnyOldName3
195dd27780 Resolve obvious runtime error revealing more subtle one 2016-07-11 22:05:38 +01:00
scrawl
cff37cdd08 Merge pull request #999 from Allofich/aifix
Trim unneeded code
2016-07-11 23:04:26 +02:00
scrawl
33ab9db9f6 Merge pull request #1000 from MiroslavR/particle-range
Fix doubled particle spawn range
2016-07-11 23:03:04 +02:00
MiroslavR
9c6739f1b3 Fix doubled particle spawn range 2016-07-11 22:40:58 +02:00
AnyOldName3
fbe6dc9704 Change compilation error to runtime exception and decide that inheriting from std::string may have been a bad idea in C++ 2016-07-11 21:33:36 +01:00
Allofich
c57d177f1c Trim unneeded code 2016-07-12 04:17:08 +09:00
AnyOldName3
7697406467 Partially fix '2 overloads have similar conversions' compilation error 2016-07-11 14:39:38 +01:00
AnyOldName3
2a9b12bb3f Fix an issue preventing compilation, revealing another that doesn't make much sense. 2016-07-11 14:15:35 +01:00
AnyOldName3
c1ffc9e776 Remove a compilation error and set up framework to remove the others 2016-07-11 01:59:16 +01:00
AnyOldName3
f2456225db Merge branch 'ignore-hash-test' of https://github.com/AnyOldName3/openmw into ignore-hash-test 2016-07-11 01:17:59 +01:00
AnyOldName3
e17e354e84 Make # only start a comment in openmw.cfg if it starts a line and introduct compilation errors 2016-07-11 01:16:32 +01:00
AnyOldName3
7e0962c5ea Make # only start a comment in openmw.cfg if it starts a line and introduct compilation errors 2016-07-11 01:09:34 +01:00
scrawl
432723bfe6 Merge pull request #997 from MiroslavR/inactive-kfctrls
Do not skip inactive keyframe controllers
2016-07-10 20:48:59 +02:00
MiroslavR
2a987b6857 Do not skip inactive keyframe controllers (Bug #1942) 2016-07-10 19:02:28 +02:00
scrawl
2329812988 Merge pull request #995 from Allofich/traps
Trap and lock fixes
2016-07-10 17:19:36 +02:00
scrawl
67d3571fac Fix activation distance in third person mode 2016-07-10 17:10:19 +02:00
scrawl
9375cbea44 Make NIFFilePtr const 2016-07-10 17:10:19 +02:00
mrcheko
05794505c8 travis build fix 2016-07-10 17:25:50 +03:00
Allofich
599e6708ec Allow using keys to open trapped objects of lock level 0 2016-07-10 23:08:11 +09:00
Allofich
cabe038a97 Make lockpick and probe sounds 3d positional 2016-07-10 22:08:42 +09:00
Allofich
249918612d Play trap disarm sound when key used on trapped object 2016-07-10 22:06:35 +09:00
Allofich
d4e656ceaf Play trap activation sound on trapped object, not actor 2016-07-10 21:39:53 +09:00
mrcheko
f57858b750 Merge remote-tracking branch 'upstream/master' into pathfinding
# Conflicts:
#	apps/openmw/mwmechanics/aiactivate.cpp
2016-07-10 14:36:48 +03:00
scrawl
251ba041f3 Merge pull request #994 from MiroslavR/no-scroll-stacking
Don't stack effects for scrolls of the same type
2016-07-10 05:45:42 +02:00
MiroslavR
b0fcad4cb8 Don't stack effects for scrolls of the same type (Fixes #3466) 2016-07-10 03:49:09 +02:00
scrawl
da0e20edcd Merge pull request #991 from MiroslavR/opface
Implement Face instruction (Feature #1424)
2016-07-10 02:10:23 +02:00
MiroslavR
75a66ced20 Fix actors lacking turning animations while in first person mode 2016-07-10 01:48:54 +02:00
mrcheko
d2fe6fe857 Merge remote-tracking branch 'refs/remotes/origin/master' into pathfinding
# Conflicts:
#	apps/openmw/mwmechanics/aiactivate.cpp
#	apps/openmw/mwmechanics/aicombat.cpp
#	apps/openmw/mwmechanics/aicombat.hpp
#	apps/openmw/mwmechanics/aifollow.cpp
#	apps/openmw/mwmechanics/aipackage.cpp
#	apps/openmw/mwmechanics/aipackage.hpp
#	apps/openmw/mwmechanics/aiwander.cpp
#	apps/openmw/mwmechanics/aiwander.hpp
2016-07-09 22:59:54 +03:00
scrawl
c842d4976e Merge pull request #992 from MiroslavR/msgformat
Improve format specifiers for message boxes
2016-07-09 20:00:30 +02:00
MiroslavR
f6f3f71db5 Improve format specifiers for message boxes 2016-07-09 03:18:45 +02:00
MiroslavR
dc0bc5b68c Implement Face instruction (Feature #1424) 2016-07-09 02:16:47 +02:00
scrawl
6f376bd499 Merge pull request #983 from Allofich/telekinesis
Don't allow telekinesis on actors or teleport doors
2016-07-08 23:47:43 +02:00
Allofich
7a0f9a7989 Clean up, remove unnecessary code changes 2016-07-09 02:24:08 +09:00
Allofich
53ceefa46a Allow some telekinesis on teleport doors 2016-07-09 01:08:00 +09:00
Allofich
4e54338ce0 Implement and use getDistanceToFacedObject() 2016-07-08 23:28:49 +09:00
scrawl
8332f26887 Merge pull request #989 from AlexanderKurtz/master
Update gamecontrollerdb.txt from upstream.
2016-07-07 18:37:06 +02:00
scrawl
b0a37553b2 Merge pull request #988 from nikolaykasyanov/osx-cmake-min-version
OS X: specify minimum CMake version & remove redundant argument from CI script
2016-07-07 18:36:54 +02:00
Alexander Kurtz
ff3b7de0e7 Update gamecontrollerdb.txt from upstream. 2016-07-07 18:31:49 +02:00
Koncord
1b259e2d33 Syncing inventory, animations, position, 8 key attributes
Created Package system
2016-07-07 23:50:48 +08:00
scrawl
e362e3e6a5 Fix cppcheck warnings 2016-07-07 23:50:48 +08:00
scrawl
dca0e2f582 Pass a Vec4f by reference 2016-07-07 23:50:48 +08:00
scrawl
4038f49d81 Update AUTHORS.md 2016-07-07 23:50:48 +08:00
Poncho
5b3ac5ff27 Use correct direction multipliers during awareness check 2016-07-07 23:50:48 +08:00
scrawl
215567c9c3 Update ScriptArgs documentation 2016-07-07 23:50:48 +08:00
scrawl
e9b02a13c3 Ignore extra arguments in playSound and playSound3D.
A common mistake in mods is to use playSound with volume/pitch arguments, which only playSoundVP supports. Previously these extra arguments raised a parser error, making the respective mod unusable.
2016-07-07 23:50:48 +08:00
scrawl
f375d07c16 ExprParser: Warn about ignored arguments 2016-07-07 23:50:48 +08:00
scrawl
84a9df9793 Do not discard root node transformations if the root node is named 'bip01' (Bug #3118) 2016-07-07 23:50:48 +08:00
scrawl
0720a19fc0 Add support for placing BodyParts in a cell (Bug #3118) 2016-07-07 23:50:48 +08:00
scrawl
994ad3e004 Reject conditions testing agaist Choice when not currently in a choice (Fixes #3117) 2016-07-07 23:50:48 +08:00
scrawl
cd8c84dc6c Fix typo in SameRace dialogue function (function was inverted, Fixes #3116) 2016-07-07 23:50:48 +08:00
scrawl
5d4063d8c7 LocalScripts: initialize mIter 2016-07-07 23:50:47 +08:00
Koncord
1e29409dd5 Add OpenMW-mp target 2016-07-07 23:50:38 +08:00
Allofich
0e5c3f781f Only allow trap distance check to apply to player 2016-07-07 22:10:38 +09:00
Allofich
7de3afaa7d Cleanups 2016-07-07 21:57:00 +09:00
Allofich
cb621939fd Streamline trap code 2016-07-07 21:56:54 +09:00
Allofich
35a23c3b49 Implement and use new method allowTelekinesis() 2016-07-07 21:54:31 +09:00
Allofich
8014f37879 Avoid duplicate code 2016-07-07 21:54:30 +09:00
Allofich
538209b0a2 Change variable to mRatio and initialize it 2016-07-07 21:54:29 +09:00
Allofich
e25e698978 Fix telekinesis check for activators 2016-07-07 21:54:29 +09:00
Nikolay Kasyanov
bf0ec550da OS X: specify minimum CMake version & remove redundant argument from CI script 2016-07-07 01:09:59 +02:00
scrawl
b94a4c1c77 Merge pull request #986 from MiroslavR/resting-effects
Apply magic effects while waiting/sleeping
2016-07-06 02:38:52 +02:00
MiroslavR
80f2ae0ca7 Apply magic effects while waiting/sleeping 2016-07-06 00:20:23 +02:00
MiroslavR
41484432b4 Player's death now interrupts waiting/sleeping 2016-07-06 00:15:25 +02:00
MiroslavR
d4e29e3e0c Clear projectiles on non-incremental time advances 2016-07-06 00:11:58 +02:00
mrcheko
0793e4a80e refactor pathfinding code in AiWander: use AiPackage::pathTo, reuse AiPackage::ObstacleCheck 2016-07-05 21:38:41 +03:00
Bret Curtis
ac8d347e9e we have html output and autodoc functionality 2016-07-05 12:07:31 +02:00
Allofich
c1236f4113 Simplified code 2016-07-04 20:25:25 +09:00
Allofich
c02695e56d Cleanups and fixes 2016-07-04 16:06:16 +09:00
Allofich
199607423b Use iMaxActivateDist for AI actors that use Activate packages 2016-07-04 16:06:16 +09:00
Allofich
64d298d2b5 Use raycast distance when player activates trapped object 2016-07-04 16:06:15 +09:00
Allofich
64d53a2314 Avoid double raycasts when using getFacedObject 2016-07-04 16:06:04 +09:00
Allofich
574e40db5e Don't allow telekinesis on activators 2016-07-04 01:50:47 +09:00
scrawl
343dccdbcc Merge pull request #980 from scrawl/voice_fix
Voice fix
2016-07-02 21:55:46 +02:00
scrawl
d96e49c04a Do not set change flag when running forEach on an empty cell 2016-07-02 20:44:14 +02:00
scrawl
8f62ea2e80 Fix for "RigGeometry rendering with no skeleton" errors 2016-07-02 20:19:55 +02:00
scrawl
b9b73d7b12 Replace "sys::default" with ESM::CellId::sDefaultWorldspace 2016-07-02 19:48:11 +02:00
scrawl
96757a3b7c Fix non-predefined cells not being saved correctly 2016-07-02 19:43:08 +02:00
scrawl
d5f497c47d Pass the node path instead of the node visitor 2016-07-02 19:27:19 +02:00
scrawl
6fa95e72c5 Pass the traversal number instead of the node visitor 2016-07-02 19:26:11 +02:00
scrawl
08b2d38c54 Merge pull request #985 from MiroslavR/corprus-ui
Show remnant corprus effects in magic window
2016-07-02 14:30:11 +02:00
MiroslavR
c8b61cb234 Cache magic effects in MWMechanics::Spells 2016-07-02 12:50:00 +02:00
MiroslavR
700dde116e Show remnant corprus effects in magic window 2016-07-02 05:17:24 +02:00
scrawl
7ddcf3a28c Merge pull request #984 from MiroslavR/ability-effect-removal
Implement effect removal for abilities (Fixes #3455)
2016-07-02 03:46:31 +02:00
MiroslavR
54f52f7bae Implement effect removal for abilities (Fixes #3455) 2016-07-01 18:50:28 +02:00
scrawl
252b27f0ef Remove getEyePos() 2016-07-01 15:04:59 +02:00
Allofich
b29e9e9c77 Don't allow telekinesis on actors or teleport doors 2016-07-01 02:27:20 +09:00
scrawl
1b3cde9b8d Merge pull request #982 from MiroslavR/fix-invisibility-purge
Fix incorrect purging of constant-effect invisibility
2016-06-29 23:42:38 +02:00
MiroslavR
72d2daae90 Fix InventoryStore::purgeEffect being reverted by the next recalculation of mMagicEffects 2016-06-29 22:54:11 +02:00
scrawl
528de956da Merge pull request #981 from Allofich/magicka
Fix timing of some magicka calculations
2016-06-29 20:42:18 +02:00
Allofich
2290346296 Fix timing of some magicka calculations 2016-06-30 02:59:09 +09:00
Roman Proskuryakov
39963a2c85 Removes PreprocessorUtils.cmake
Replaces get_version_from_n_defines -> libfind_version_n_header
2016-06-28 13:03:16 +03:00
scrawl
5eb6c548d7 Merge pull request #965 from kpp/find_tinyxml
Find tinyxml
2016-06-28 02:51:51 +02:00
scrawl
509e5dfe4d Include cleanup 2016-06-27 22:10:30 +02:00
scrawl
4699a8098b Include fix 2016-06-27 21:51:18 +02:00
scrawl
1739351b7a Remove now unused Sound_Decoder::rewind() 2016-06-27 21:38:04 +02:00
scrawl
dc1b010cf0 Don't analyze the loudness for sounds that don't need it 2016-06-27 21:37:13 +02:00
scrawl
965aaebbdb Analyze the loudness data as the stream is decoded for playback
Instead of getting the loudness data for the whole file in advance, we now get it piece by piece as the sound is streamed.

The benefit is that we need to decode the audio just once instead of twice.

We no longer need to rewind() the stream when the first decoding is done, this should hopefully fix bug #3453 .
2016-06-27 21:32:54 +02:00
scrawl
fc293aa048 Merge pull request #978 from Allofich/fatigue
Fix update of fatigue display
2016-06-27 17:05:05 +02:00
scrawl
5d9f611869 Merge pull request #979 from MiroslavR/master
Show correct class image in level-up dialog
2016-06-27 16:58:50 +02:00
scrawl
10f51a9fa5 Merge pull request #975 from AnyOldName3/master
Improve the MSVC prebuild script to allow compiled binaries to be run directly with no further modification
2016-06-27 16:58:12 +02:00
Allofich
1602eb3de8 Fix so that keepPlayerAlive() will not run twice 2016-06-27 21:43:49 +09:00
Allofich
19a20a6871 Fix update of fatigue display 2016-06-27 21:17:06 +09:00
MiroslavR
7244809c4a Remove redundant part of condition 2016-06-26 15:17:52 +02:00
MiroslavR
b99611a730 Initialize mSpecIncreases in ESM::NpcStats::load 2016-06-26 15:16:32 +02:00
Marc Zinnschlag
594444a85a Merge remote-tracking branch 'aesylwinn/MultipleDeletion' 2016-06-26 08:11:43 +02:00
MiroslavR
0db3af1b89 ESSImporter: load specialization increases 2016-06-26 03:28:13 +02:00
MiroslavR
dfc62c99b4 Show correct class image in level-up dialog (Fixes #3443) 2016-06-26 03:22:58 +02:00
scrawl
d2d201cf6d Merge pull request #976 from Allofich/Magicka
Fix magicka and fatigue calculations from fortifying attributes
2016-06-25 16:12:27 +02:00
Allofich
dc468dd139 Fix magicka and fatigue calculations from fortifying attributes 2016-06-25 19:21:49 +09:00
AnyOldName3
57640b8161 Improve the MSVC prebuild script to allow compiled binaries to be run directly with no further modification 2016-06-24 01:04:16 +01:00
scrawl
4dc032084c Merge pull request #974 from Allofich/Disposition
Update disposition check between persuasion attempts
2016-06-21 18:48:31 +02:00
Allofich
5d3aebd04b Update disposition check between persuasion attempts 2016-06-22 01:47:09 +09:00
scrawl
97de484f81 Merge pull request #972 from terrorfisch/minor-bugfix
Make NPCs use both hands in weaponless combat.
2016-06-20 13:58:50 +02:00
terrorfisch
be25e2ba75 Make NPCs use both hands in weaponless combat. 2016-06-20 10:24:51 +02:00
Allofich
b1be3596dc Cleanup of #include statements 2016-06-18 10:56:28 +09:00
scrawl
17a54b2a97 Merge pull request #968 from Allofich/AIActivate
Use namespace block in aiactivate
2016-06-17 17:41:10 +02:00
Allofich
4a38fb8650 Use namespace block in aiactivate 2016-06-17 20:59:37 +09:00
scrawl
f549b5fb7a Add missing include 2016-06-17 04:34:31 +02:00
scrawl
c18de84798 Fix a crash that could occur when two or more plugins move a deleted ref to another cell (Fixes #3446) 2016-06-17 02:27:49 +02:00
scrawl
bc04989448 Remove unused uniforms 2016-06-17 00:20:53 +02:00
scrawl
3ce63c3f6e Merge pull request #967 from Allofich/AIPackageFixes
AI package cleanups
2016-06-16 20:22:51 +02:00
scrawl
8e23c37668 Flip the parallax offset Y component based on tangent parity (Bug #3440) 2016-06-16 18:07:10 +02:00
scrawl
6f5b68859f Comment out UV test that is not working 2016-06-16 17:33:54 +02:00
scrawl
6a1fd05074 Fix the coordinate frame for eyeDir, minor cleanup (Bug #3440) 2016-06-16 17:32:27 +02:00
scrawl
aa5a643e3b Fix incorrect multiplication order of TBN matrix (Bug #3440) 2016-06-16 17:31:17 +02:00
Allofich
c2b51112f2 AI package cleanups 2016-06-16 17:17:56 +09:00
scrawl
693d3cea4a Float to surface fix 2016-06-15 19:38:04 +02:00
scrawl
b5cb11ff07 Split refreshCurrentAnims into multiple functions 2016-06-15 03:14:44 +02:00
scrawl
824cd3be22 Do not set _boundingBoxComputed which is no longer used 2016-06-14 22:25:25 +02:00
scrawl
372f2e2f18 Merge pull request #962 from Allofich/AIPackageFixes
Duration fixes for Follow and Escort
2016-06-14 20:47:32 +02:00
Allofich
3bebbab78e Duration fixes for Follow and Escort 2016-06-15 02:11:30 +09:00
scrawl
3ec4ee6290 Make a copy of map key to work around it being invalidated (Fixes #3329) 2016-06-13 02:06:44 +02:00
Roman Proskuryakov
28c63aea72 Uses FindTinyXML to find package 2016-06-12 21:40:02 +03:00
Roman Proskuryakov
4d0544e61a Adds FindTinyXML.cmake 2016-06-12 21:05:01 +03:00
Roman Proskuryakov
57b75d2cd1 Teaches LibFindMacros to find version from 'const int NAME = 42;' 2016-06-12 21:05:01 +03:00
scrawl
197e81206a Assume mDeathAnimationFinished is true for older save files 2016-06-12 19:46:00 +02:00
scrawl
63784bfb50 Merge pull request #963 from kpp/find_unshield
Find unshield
2016-06-12 15:17:58 +02:00
Roman Proskuryakov
edb41b5b08 Rewrites FindLIBUNSHIELD using LibFindMacros
Renames LIBUNSHIELD_INCLUDE_DIR -> LIBUNSHIELD_INCLUDE_DIRS, LIBUNSHIELD_LIBRARY -> LIBUNSHIELD_LIBRARIES
2016-06-12 14:44:04 +03:00
scrawl
4acfe1a7e4 Move cleanupSummonedCreature to the mechanics manager (Bug #3439) 2016-06-12 02:43:33 +02:00
scrawl
910ad76e29 Remove spell effects when a summoned creature expires (Bug #3439) 2016-06-12 00:41:13 +02:00
scrawl
b7e45b046d When a summoned creature dies, wait for its death animation to complete before removing it (Bug #3439) 2016-06-12 00:40:55 +02:00
scrawl
a825882c6b Process death events at the end of the death animation (Fixes #1873) 2016-06-12 00:04:50 +02:00
scrawl
37afe966cf Update comment 2016-06-11 21:25:40 +02:00
scrawl
b6230bd31f Reject weather dialogue conditions when in an interior cell (Fixes #3437) 2016-06-11 18:26:20 +02:00
scrawl
844cbc5a14 Add isNullAction() method to fix compiler warning 2016-06-11 18:26:20 +02:00
scrawl
7a30ef5cc1 Do not consider actors following the player as hostiles 2016-06-11 18:26:20 +02:00
scrawl
cb8daaaee1 Do not query the texture's image in osgMyGUI::OSGTexture
Doing so could result in a race condition if the draw thread is about to delete the image (UnRefImageDataAfterApply enabled)
2016-06-11 18:26:20 +02:00
Marc Zinnschlag
148f2c9539 Merge remote-tracking branch 'aesylwinn/QTimerFix' 2016-06-11 11:26:14 +02:00
scrawl
a85932a62b Ignore the collision box offset when launching projectiles (Fixes #3201) 2016-06-10 23:47:01 +02:00
scrawl
c6601ab2ab Do not use the collision box offset for combat hit tests (Fixes #3201) 2016-06-10 23:47:01 +02:00
scrawl
8fcc1911d9 Use fCombatDistance as the creature attack range 2016-06-10 23:47:01 +02:00
Aesylwinn
f6c3b44cfb Fix QTimer not being stopped in right thread 2016-06-10 12:10:14 -04:00
scrawl
07abaf8777 Merge pull request #959 from svaante/master
Slowfall now stops momentum when jumping
2016-06-10 16:19:15 +02:00
Daniel Pettersson
943d9d97dc Slowfall now stops momentum when jumping 2016-06-10 15:22:12 +02:00
scrawl
a00e4de5c3 Fix another bug related to vanity mode toggle 2016-06-10 01:44:32 +02:00
scrawl
c47a679ac9 Fix queueing of vanity mode toggle (Bug #3421) 2016-06-10 01:39:37 +02:00
scrawl
ce91637cf9 Do not use/assign the camera distance in first person mode (Fixes #3421) 2016-06-10 01:05:43 +02:00
scrawl
24f43f6272 Update AUTHORS.md 2016-06-10 00:02:29 +02:00
scrawl
166cced22f Merge pull request #957 from svaante/master
Added 1.5 bonus for ranged weapons when weapons are rated
2016-06-10 00:01:05 +02:00
scrawl
a14f1bc222 Merge pull request #954 from Allofich/AIWanderDuration
Improve duration calculations in Wander AI
2016-06-09 23:46:37 +02:00
Aesylwinn
ae50300053 Add ability to remove multiple rows in subrecords. 2016-06-09 15:42:40 -04:00
Allofich
55ac1fab68 Change Wander duration to run on a counter 2016-06-10 04:36:18 +09:00
Daniel Pettersson
256439f884 Added 1.5 bonus for ranged weapons when weapons are rated 2016-06-09 21:23:36 +02:00
Marc Zinnschlag
3dce406829 Merge remote-tracking branch 'aesylwinn/FixFocus' 2016-06-09 08:57:05 +02:00
scrawl
abcd2219e8 Ignore the calling actor in getEnemiesNearby / getActorsFighting 2016-06-08 22:13:21 +02:00
Aesylwinn
2f39a6e20d Fix camera input not being reset when focus for widget is lost. 2016-06-08 13:25:47 -04:00
Marc Zinnschlag
447ba08be5 Merge remote-tracking branch 'aesylwinn/FixTracking' 2016-06-08 09:23:35 +02:00
scrawl
165f048792 Do not count dead NPCs as observers (Fixes #3434) 2016-06-07 22:01:44 +02:00
Aesylwinn
7657684dad Fix mouse tracking to fix tooltip behavior. Also hide tooltips
when the mouse is moved.
2016-06-07 13:22:39 -04:00
scrawl
12eea9ed69 Remove magic number in getMaxActivationDistance 2016-06-07 15:18:36 +02:00
Marc Zinnschlag
b079db7913 Merge remote-tracking branch 'aesylwinn/EditPathgrid' 2016-06-07 08:35:16 +02:00
scrawl
8fb8c2bae5 Fix "part has no parents" warning message caused by nodes being destroyed in the incorrect order 2016-06-07 02:43:25 +02:00
scrawl
f417d7780a Fix the enemy nearby check (Bug #3423) 2016-06-07 01:55:34 +02:00
scrawl
dfc2f3469a Don't play music if no playlist is set 2016-06-07 01:36:09 +02:00
scrawl
f64bc3c7ef Pass the victim to commitCrime on pickpocket detection (Fixes #3424) 2016-06-06 23:50:22 +02:00
scrawl
a1f323f528 Fix build against OSG 3.5.3 2016-06-06 13:32:27 +02:00
scrawl
9eab3b1728 Fix crash in race dialog when no head or hair are available 2016-06-06 01:04:14 +02:00
scrawl
a45643f150 Merge pull request #949 from Allofich/master
Fix return values for AITravel
2016-06-05 21:16:28 +02:00
Allofich
065d6a391d Don't repeat sequences of only one non-wander AI 2016-06-06 04:12:49 +09:00
scrawl
2ee414abe4 Merge pull request #943 from kpp/find_bullet
Find bullet
2016-06-05 16:02:34 +02:00
scrawl
eb8feb5d93 Merge pull request #953 from bentsherman/master
Move mechanics code from TradeWindow to mwmechanics
2016-06-05 15:01:57 +02:00
Aesylwinn
3409d8a922 Change pathgrid node movement to be visually consistent, some
renaming
2016-06-04 12:38:17 -04:00
Ben Shealy
5085afa3d7 Moved mechanics code from MWGui::TradeWindow to MWMechanics::Trading 2016-06-04 12:28:47 -04:00
scrawl
3645b3357e Fix improper assignement of spawn point in placeAt for non-actors (Bug #3417) 2016-06-02 21:24:19 +02:00
scrawl
ab2089bbf3 Throw an exception if placeAt is passed an invalid direction parameter 2016-06-02 21:19:02 +02:00
scrawl
2ce1da688f ESS-Import: fix handling of first person camera state (Bug #3416) 2016-06-02 16:26:17 +02:00
Roman Proskuryakov
3bcd23022a Rewrites FindBullet using LibFindMacros handling version properly 2016-05-31 07:18:37 +03:00
Roman Proskuryakov
280b20ccb7 Fix libfind_process for quiet packages 2016-05-31 07:18:36 +03:00
scrawl
373f991942 Merge pull request #951 from kpp/fix_env_find_vars
Rename FFMPEG_SDK -> FFMPEG_HOME as it is said in wiki
2016-05-30 16:26:25 +02:00
Roman Proskuryakov
f23b551bfa Rename FFMPEG_SDK -> FFMPEG_HOME as it is said in wiki
Fix #942
2016-05-30 04:26:31 +03:00
scrawl
55accce1ef Merge pull request #950 from kpp/author_humbug_kpp
Authors: merge kpp and humbug
2016-05-30 01:36:14 +02:00
Roman Proskuryakov
4e06c2cc1f Update AUTHORS.md. kpp and humbug is the same person =) 2016-05-30 02:30:01 +03:00
Aesylwinn
83c86cd1be Implement context-select functionality. 2016-05-29 13:26:48 -04:00
Aesylwinn
b83f522ecd Changes to color scheme, slight change to drag indicator,
change tooltip description.
2016-05-29 13:26:29 -04:00
scrawl
03c0b84edd Update AUTHORS.md 2016-05-29 14:59:46 +02:00
scrawl
733a9684ed Merge pull request #947 from Allofich/master
AI package fixes
2016-05-29 14:56:20 +02:00
scrawl
c60688a5e3 Merge pull request #942 from kpp/find_freetype
Find freetype
2016-05-29 14:54:33 +02:00
Allofich
bce66c629a Change editor-placed AI packages to cycle 2016-05-29 17:34:40 +09:00
Roman Proskuryakov
63ca8b73fc fix: use Freetype in FindMYGUI instead of FREETYPE 2016-05-29 03:33:06 +03:00
scrawl
496cb85b01 Do not cancel Ai packages when on loading (Fixes #3409)
This piece of code was an attempt to fix up save games made before commit d3b76b7006 , but ended up introducing a new bug.
2016-05-28 20:27:05 +02:00
Aesylwinn
90620081c7 Fix handling of deleted pathgrids. 2016-05-27 13:15:35 -04:00
Aesylwinn
bded4f86f0 Remove connection number check 2016-05-27 13:13:49 -04:00
scrawl
d487007167 Remove debug code 2016-05-27 17:43:36 +02:00
scrawl
e396e6f2ea Adjust the eye level for line of sight checks (Fixes #3407) 2016-05-27 17:42:17 +02:00
Aesylwinn
ded8862e9d Insert nested rows after selected row, or at start if none selected. 2016-05-26 22:44:02 -04:00
Aesylwinn
d0ef95a1e1 Make adjustments to pathgrid modification code. 2016-05-26 22:13:47 -04:00
Aesylwinn
564d0db68c Move pathgrid abstraction handling to save code. 2016-05-26 22:11:27 -04:00
Aesylwinn
239727531f Revert "Fix data corruption issues."
This reverts commit 6199663bd8.
2016-05-25 22:53:17 -04:00
Aesylwinn
9a567b3712 Revert "Fix editor undo for nested data."
This reverts commit 774e1497b6.
2016-05-25 22:52:41 -04:00
Aesylwinn
ec90da731c Redo slight change to pathgrid editing controls, lost in revert 2016-05-25 22:52:02 -04:00
Aesylwinn
bb81e89c08 Revert "Cleanup and slight change to pathgrid editing controls."
This reverts commit cc4655e9c7.
2016-05-25 22:48:43 -04:00
scrawl
a2153a6213 Remove outdated comment 2016-05-25 21:41:05 +02:00
scrawl
5d4f58c828 Fix being unable to activate objects when scripts are disabled
The if statement was a leftover of the previous activate implementation and is no longer needed.
2016-05-25 21:37:56 +02:00
scrawl
4743030d4b Merge pull request #946 from makson96/patch-1
Include FindPkgMacros to use make_library_set
2016-05-25 17:13:58 +02:00
makson96
56548b384d Include FindPkgMacros to use make_library_set
In CMakList.txt there is make_library_set and macro for it is defined in FindPkgMacros, so FindPkgMacros needs to be imported to avoid Error: Unknown CMake command "make_library_set".
2016-05-25 00:41:36 +02:00
Aesylwinn
cc4655e9c7 Cleanup and slight change to pathgrid editing controls.
Now that there is a drag indicator, it is easy to tell if an
operation is active or not.
2016-05-24 18:19:05 -04:00
Aesylwinn
5eaaed05fc Improve mouse pick culling. 2016-05-24 17:31:00 -04:00
scrawl
3f1df4caa6 Don't auto-equip ammunition (Fixes #3401) 2016-05-24 13:21:43 +02:00
Aesylwinn
18897348d7 Fix weapon values not being properly set in editor. 2016-05-24 01:12:46 -04:00
Aesylwinn
774e1497b6 Fix editor undo for nested data. 2016-05-23 15:51:36 -04:00
Aesylwinn
6199663bd8 Fix data corruption issues.
- Point connection count not being set
- Nested undo not restoring table (for pathgrid scene editing, editor
    nested undo is still broken)
2016-05-21 18:59:43 -04:00
Aesylwinn
799ed300ea Use cell coordinates class, fix undo description. 2016-05-21 14:36:07 -04:00
scrawl
703dba902b Set the shader path in OpenCS 2016-05-20 00:40:59 +02:00
Aesylwinn
b86250036c Add ability to add pathgrids. 2016-05-19 18:33:15 -04:00
scrawl
44dd67ee0f Fix a potential crash for lights without a model that have "off by default" flag set 2016-05-19 22:35:25 +02:00
scrawl
a9561f738a Move RemoveParticlesVisitor to animation.cpp 2016-05-19 22:35:17 +02:00
scrawl
0efbdb25ee Improve const-correctness in Animation 2016-05-19 22:30:14 +02:00
scrawl
3749821809 Choose a random death animation for actors that start the game as dead (Fixes #3397) 2016-05-19 21:40:05 +02:00
Aesylwinn
1781aaaa27 Drag indicator. 2016-05-18 12:17:26 -04:00
Aesylwinn
e8e915bcde Share selection functionality with instance editing mode. 2016-05-18 10:46:25 -04:00
Aesylwinn
ae0d2c3b9c Refactor edit mode. Remove essentially duplicate function. 2016-05-17 21:24:16 -04:00
Aesylwinn
13c2161b27 Fix memory leak, remove empty if statement, change dynamic_cast
to static_cast
2016-05-17 16:14:23 -04:00
Aesylwinn
5a7ebab694 Fix forward declaration. 2016-05-16 23:06:36 -04:00
Aesylwinn
9d02286592 Remove unused forward declaration. 2016-05-16 22:17:03 -04:00
Aesylwinn
a3363bc098 Fix and simplify pathgrid update handling, only recreate geometry
once per frame, and a few naming changes.
2016-05-16 21:06:55 -04:00
Aesylwinn
d2d22e2f23 Clamp node positions in exterior cells. 2016-05-16 19:03:40 -04:00
Aesylwinn
cd3b96b3e8 Change interaction mask back to original and place required masks in
PathgridMode.
2016-05-16 17:59:52 -04:00
Aesylwinn
aea2380c2b Add raytrace to dragCompleted. Implement node drag connection,
node and edge removal, and some fixes.
2016-05-16 17:25:02 -04:00
Aesylwinn
6fbc10dbba Add ability to get cell, pathgrid, and ability to add nodes.
Also missing include.
2016-05-16 17:20:07 -04:00
Aesylwinn
9f7c8d559c Add focus requirement for context menu. 2016-05-16 17:16:15 -04:00
Aesylwinn
f0bbe2c633 Add context menu for pathgrid editor. 2016-05-16 17:06:40 -04:00
Aesylwinn
8b6cb73369 Add ability to invert selection. 2016-05-16 17:03:00 -04:00
Aesylwinn
55656d68ef Cleanup, put duplicated code in function 2016-05-16 17:00:58 -04:00
Aesylwinn
da6a742beb Add control description to tooltip. 2016-05-16 16:50:02 -04:00
scrawl
b0180cb6b4 Fix current region check (Bug #3391) 2016-05-16 02:05:02 +02:00
scrawl
04b537bf5f Minor cleanup 2016-05-15 16:38:04 +02:00
scrawl
85b0c4393b Remove obsolete code 2016-05-15 16:37:22 +02:00
scrawl
6e0c3b2413 Revert commit 16ac6e7aac (Fixes #3394) 2016-05-15 16:28:04 +02:00
scrawl
62018e802b Minor fix to particle system AutoPlay flag handling
The previous commit broke some magic effects (e.g. shield). The controller's emit start/stop times should control the emitter, while the absence of the ParticleSystem's autoplay flag should freeze the whole particle system if no valid controller source gets assigned. This revised version works for both the Shield effect and the "dagoth ur death sparkles" effect.
2016-05-14 22:55:14 +02:00
scrawl
7202072196 Freeze particle systems on construction if the AutoPlay flag is missing 2016-05-14 22:38:49 +02:00
scrawl
0c08f705c5 Make the ParticleSystemController freeze the particle system instead of the emitter (Bug #3390) 2016-05-14 22:36:53 +02:00
scrawl
e30bb31a79 Handle the particle node's AutoPlay flag (Bug #3390) 2016-05-14 22:35:34 +02:00
scrawl
3b31e8f66e Do not set AiPackageDone flag for non-Aipackages (Fixes #3392) 2016-05-14 19:19:37 +02:00
Aesylwinn
f8b43b2a64 Rename cryptic variables. 2016-05-13 12:55:35 -04:00
Aesylwinn
32ba5bf8b8 Initial pathgrid editting, support for selection and movement. 2016-05-12 19:35:49 -04:00
Aesylwinn
9645d0cc8a Pass more mouse pick information in scene view editor. 2016-05-12 18:21:43 -04:00
Roman Proskuryakov
bd804d30a4 Rewrites FindFreetype using LibFindMacros 2016-05-11 08:47:03 +03:00
scrawl
fcbcc004a3 Don't use unordered_map 2016-05-11 02:35:17 +02:00
scrawl
78bac93021 Merge pull request #940 from kpp/find_ffmpeg
Find ffmpeg
2016-05-10 17:41:30 +02:00
scrawl
59cfcb38e2 Scale the sunlight specular color by weather's GlareView value (Fixes #3375) 2016-05-10 17:39:57 +02:00
scrawl
17a0353a85 Fix forward declaration mismatch 2016-05-10 17:36:25 +02:00
Roman Proskuryakov
4821abc8af Fixes MSVC CI for FFmpeg 2016-05-10 12:44:10 +03:00
Roman Proskuryakov
da59ef0f67 Rewrites FindFFmpeg using LibFindMacros handling components properly 2016-05-10 12:43:54 +03:00
Roman Proskuryakov
81dd164006 Adds CMake module LibFindMacros to reduce pain in find modules 2016-05-09 23:35:33 +03:00
Roman Proskuryakov
16fbce91c2 Implements macro get_version_from_n_defines inside PreprocessorUtils 2016-05-09 23:35:33 +03:00
Roman Proskuryakov
a6b67154bb Use builtin compiler version in CMake scripts 2016-05-09 23:35:33 +03:00
Marc Zinnschlag
64fdc5a21a Merge remote-tracking branch 'rcutmore/bug-3331' 2016-05-09 09:18:48 +02:00
scrawl
3584e59402 Fix incorrect parameter to changeCell (Fixes #3388) 2016-05-08 18:59:41 +02:00
scrawl
a7e6219091 Merge pull request #939 from kpp/rewrite_esm_name_t
Rewrite ESM::NAME_T
2016-05-08 13:15:05 +02:00
Rob Cutmore
547d783eac Editor: Remove overridden configureCreateCommand
StartScriptCreator was incorrectly overriding configureCreateCommand.
This caused issues trying to edit an uneditable column while adding a
new record.
2016-05-08 06:09:40 -04:00
Rob Cutmore
e6863c8f79 Editor: Undo editable column check in record add 2016-05-08 06:05:52 -04:00
Marc Zinnschlag
b4e341e1e2 Merge remote-tracking branch 'aesylwinn/RenderPathgrid' 2016-05-08 10:15:12 +02:00
scrawl
65024ee7f2 Merge pull request #938 from kpp/valgrind_check
Valgrind checks
2016-05-08 00:52:39 +02:00
Roman Proskuryakov
5ae1864062 Add unit tests for ESM::FIXED_STRING 2016-05-07 23:27:33 +03:00
Roman Proskuryakov
d5dfa89060 Rewrite NAME_T into FIXED_STRING. 2016-05-07 23:27:33 +03:00
Roman Proskuryakov
d7046878a8 Fix uninitialized values in MWMechanics::AiCombat 2016-05-07 20:41:47 +03:00
Roman Proskuryakov
1e7d573f24 Fix uninitialized values in ESMWriter::save 2016-05-07 20:40:21 +03:00
Rob Cutmore
307f04f827 Editor: Fix issue adding start script (Bug #3331)
Updated to verify column is editable when adding a new record.
2016-05-06 08:04:15 -04:00
scrawl
964ea78367 Update AUTHORS.md 2016-05-04 15:57:34 +02:00
scrawl
9c364325aa Merge pull request #935 from dragonee/master
Changed AiSequence::stack to push_back lower priority packages instea…
2016-05-04 15:56:38 +02:00
Michał Moroz
40cc6a4164 Changed AiSequence::stack to push_back lower priority packages instead of push_front (Bug #3384) 2016-05-04 13:55:36 +02:00
Aesylwinn
14ae232938 Remove now unnecessary factory class.
It was originally used for storing normals, but that functionality
was removed.
2016-05-03 16:13:23 -04:00
Aesylwinn
1f902ff069 Remove code duplication. 2016-05-03 16:13:11 -04:00
Aesylwinn
b11f5b2717 Make edges differently colored. 2016-05-03 15:06:28 -04:00
Rob Cutmore
5009aaaf0d Update AUTHORS 2016-05-03 07:28:10 -04:00
Rob Cutmore
b129ff9672 Editor: Add PathgridCreator to find duplicate IDs 2016-05-03 07:24:33 -04:00
Rob Cutmore
c9ada852aa Undo including pathgrids in ID check 2016-05-03 06:19:47 -04:00
Aesylwinn
642b1d0273 Add mask. 2016-05-03 03:29:39 -04:00
Aesylwinn
0eb863d8fc Change color to blue to match the pathgrid visibility selector in the
editor and slightly increase the scaling.
2016-05-03 03:29:34 -04:00
Aesylwinn
7f0cc6e583 Add a color gradiant to pathgrid nodes to make them less of an eyesore. 2016-05-03 03:29:30 -04:00
Aesylwinn
3d26ff08c4 Get rid of lighting. 2016-05-03 03:29:07 -04:00
Aesylwinn
8d95b63180 Add pathgrid rendering to opencs 2016-05-02 22:10:43 -04:00
Aesylwinn
5cac882123 Replace game version of pathgrid rendering with component. 2016-05-02 22:10:17 -04:00
Aesylwinn
d141672b53 Pathgrid geometry creator 2016-05-02 22:09:48 -04:00
Aesylwinn
7fbcc47b15 Add pathgrid modified signals. 2016-05-02 22:08:49 -04:00
Aesylwinn
933504dbd0 Revert "Pathgrid rendering v2"
This reverts commit 4dee9604bb.
2016-05-02 15:37:08 -04:00
Rob Cutmore
5580f803fd Editor: Prevent duplicate pathgrids (Bug #3342) 2016-05-02 07:28:32 -04:00
Aesylwinn
4dee9604bb Pathgrid rendering v2 2016-05-02 06:29:56 -04:00
scrawl
2ca7415708 Handle DialInfo::mFactionLess (Bug #3380) 2016-05-01 00:10:50 +02:00
scrawl
93b2f09224 Workaround for some AI functions being incorrectly handled as AI packages (Bug #3378) 2016-04-29 18:07:35 +02:00
scrawl
9959b2553d Merge pull request #932 from alexanderkjall/master
Added all generated artifacts from the build process to the .gitignor…
2016-04-26 20:32:18 +02:00
Alexander Kjäll
c7cc170cbf
Added all generated artifacts from the build process to the .gitignore file 2016-04-26 19:40:16 +02:00
Marc Zinnschlag
10ac432a8c updated credits file 2016-04-26 15:43:07 +02:00
Marc Zinnschlag
57101c1b19 added namespace and include to previous commit 2016-04-26 15:42:11 +02:00
Alexander Kjäll
32123aec2b
made logarithm function for calculating column widths in the output be more generic 2016-04-25 20:04:48 +02:00
scrawl
5edfe8c41c Reduce the wander fast forward overcrowding offset (Fixes #3370) 2016-04-23 22:47:42 +02:00
Marc Zinnschlag
091e1bf25d improved scene element visibility buttons 2016-04-23 13:54:19 +02:00
Sergey "Shnatsel" Davidoff
5c8756cb2c Add composite icon for exterior cell controls in scene view, along with source SVG and a bash script that I used to assemble all possible status combinations 2016-04-21 17:25:53 +03:00
Sergey "Shnatsel" Davidoff
c2c81c6b1a Reversed the location of original state and current state in scene view icon. This way it's much more obvious, assuming the icon stays on the left of the actual landscape view. See https://forum.openmw.org/viewtopic.php?p=38971#p38971 for more info 2016-04-21 15:18:30 +03:00
scrawl
5f34fb0c41 Remove call to MYGUI_DBG_BREAK which was removed in mygui-git 2016-04-20 11:37:48 +02:00
Marc Zinnschlag
f0778e22dd Merge remote-tracking branch 'origin/master' 2016-04-18 09:42:18 +02:00
Marc Zinnschlag
9d906a99a8 Merge remote-tracking branch 'rcutmore/bug-3286' 2016-04-18 09:40:13 +02:00
scrawl
c64b8ab297 Merge pull request #928 from Salgat/bug-1320
AiWander - Creatures in cells without pathgrids do not wander (Bug #1320)
2016-04-17 18:10:47 +02:00
Austin Salgat
be16857f96 Fix wrong height being used for water detection 2016-04-17 10:46:09 -05:00
scrawl
f3e9fd49f3 Don't add the autodetected mw path in global config file
The wizard takes care of detecting the MW installation path already. By having this path permanently in the global cfg-file, there exists no way to *not* use an autodetected installation, which is a problem.
2016-04-17 17:17:07 +02:00
Rob Cutmore
e6ab3a4ba9 Remove unused CSVWorld::ScriptEdit::setMonoFont 2016-04-17 06:57:02 -04:00
Rob Cutmore
30493545f1 Update script editor tab width on font change 2016-04-17 06:54:31 -04:00
Marc Zinnschlag
1c89737e09 Merge branch 'openmw-39' 2016-04-17 10:33:34 +02:00
Austin Salgat
e9157e9200 Fix idle animation and Fix water creature manual wandering 2016-04-16 20:38:58 -05:00
Rob Cutmore
25d9b77d10 Add setting for script editor tab width 2016-04-16 20:43:10 -04:00
Austin Salgat
3dec10c686 Update variable to prevent underflowing
While not an issue presently, the variable may be used in the future in a way that could create issues if it underflows.
2016-04-16 17:51:13 -05:00
Austin Salgat
84179c262f Update manual wandering to prevent actor from leaving/entering water
Water creatures will stay in the water, while land creatures will stay on land when wandering.
2016-04-16 16:39:13 -05:00
Austin Salgat
fc03216d48 Refactor to reuse existing obstacle detection 2016-04-16 12:14:00 -05:00
Austin Salgat
34726c24d9 Fix mDistance being reset prematurely
This was causing wandering without pathgrids to become disabled for most wandering units. Additionally, wandering now behaves the same for both NPCs and creatures.
2016-04-15 21:56:41 -05:00
scrawl
d784a77f4c Set the default player cell in the StateManager (Fixes #3269) 2016-04-15 00:49:36 +02:00
Austin Salgat
92b352989a Add logic for NPC wandering without pathgrids 2016-04-13 20:48:08 -05:00
Austin Salgat
c02881a4f8 Fix creatures not wandering 2016-04-12 21:16:55 -05:00
scrawl
8cf91e32fa ESSImport: Correctly handle item stacks (XIDX tag). (Fixes #3340) 2016-04-12 21:39:05 +02:00
scrawl
ba3f4f122a Account for the stack count in HasSoulGem (Bug #3340) 2016-04-12 21:39:05 +02:00
scrawl
4854d6b093 Set the TalkedToPc flag for voiced dialogue (Fixes #3346) 2016-04-12 21:39:05 +02:00
scrawl
2b521b8436 Update AUTHORS.md 2016-04-12 00:56:41 +02:00
scrawl
d15901b454 Merge pull request #927 from Salgat/bug-2981
When waiting, NPCs can go where they wouldn't go normally (Bug #2981)
2016-04-12 00:55:20 +02:00
Austin Salgat
38f5a225ea Refactor PathFinder functions to be useable by AiWander
This avoids having to duplicate the distanceSquared and getClosestPoint functions.
2016-04-10 20:44:08 -05:00
Austin Salgat
96231e17f0 Fix wandering NPCs going off pathgrid
If multiple pathgrids exist in the same cell, sometimes an NPC would port to a different pathgrid that was nearby. This is an issue since it allowed them to do things like travel through walls to inaccessible areas. Now they will only wander along the closest connected pathgrid.
2016-04-10 20:21:18 -05:00
scrawl
85130772cd Update AUTHORS.md 2016-04-10 00:06:02 +02:00
scrawl
b2dc18e1aa Merge pull request #926 from bentsherman/master
Allow +/- buttons in trade window to decrease offer to 0
2016-04-10 00:05:29 +02:00
Ben Shealy
8703609649 Allow +/- buttons in trade window to decrease offer to 0 2016-04-09 17:49:21 -04:00
Marc Zinnschlag
a5bc561c7d Merge remote-tracking branch 'origin/master' 2016-04-08 09:35:39 +02:00
Rob Cutmore
a3903d374f Update script editor tab width (Bug #3286) 2016-04-07 07:47:47 -04:00
scrawl
ba9058e19f Merge pull request #923 from psi29a/spelling
fix a few spelling issues
2016-04-07 13:07:20 +02:00
Bret Curtis
2c90b0b78d fix a few spelling mistakes 2016-04-07 11:55:49 +02:00
Aesylwinn
7d89c82f08 Revert "Fix indentation."
This reverts commit 9a495042cc.
2016-04-06 10:23:12 -04:00
Aesylwinn
8c35836883 Fix misnamed identifier. 2016-04-06 03:12:10 -04:00
Aesylwinn
85005626b1 Replace usage of deprecated function. 2016-04-06 03:11:51 -04:00
Aesylwinn
94d4fb0686 Add check for region weather chances to verifier. 2016-04-06 03:11:28 -04:00
Aesylwinn
9a495042cc Fix indentation. 2016-04-06 02:39:33 -04:00
Aesylwinn
5e38fcac36 Add ability to edit region weather probabilities. 2016-04-06 02:18:19 -04:00
mrcheko
b304e98568 implement ActionWeapon::getCombatRange (move logic from AiCombat) 2016-01-15 21:49:27 +03:00
Koncord
4be6b362c5 Add OpenMW-mp target 2016-01-04 20:15:55 +08:00
mrcheko
bcb1f4ed05 refactor AiCombat: remove all pathfinding code, adopt new version of
AiPackage::pathTo;
fix couple of warnings;
2016-01-03 15:33:52 +03:00
mrcheko
b960b0af93 rewrite pathTo for clearer logic; reapply Scrawl's aifollow threshold 2016-01-01 16:41:45 +03:00
mrcheko
d7d5cc6689 Merge remote-tracking branch 'upstream/master' into pathfinding
Conflicts:
	apps/openmw/mwmechanics/aicombat.cpp
	apps/openmw/mwmechanics/aifollow.cpp
	apps/openmw/mwmechanics/aipackage.cpp
	apps/openmw/mwmechanics/aipackage.hpp
	apps/openmw/mwmechanics/aiwander.cpp
	apps/openmw/mwmechanics/pathfinding.hpp

Ogre::Vector3->osg::Vec3f; REACTION_INTERVAL->AI_REACTION_TIME; MakeOgreVec3->MakeOsgVec3
2015-12-29 19:15:40 +03:00
mrcheko
c773ed9f9a move checkWayIsClear to pathfinding; move shortcut logic to separate func (AiPackage::shortcutPath); rework AiPackage::pathTo 2015-07-04 18:00:16 +03:00
Internecine
7964d269ec Merge branch 'master' of https://github.com/OpenMW/openmw 2014-12-28 22:42:55 +13:00
2006 changed files with 120347 additions and 20055 deletions

16
.editorconfig Normal file
View file

@ -0,0 +1,16 @@
root = true
[*.cpp]
indent_style = space
indent_size = 4
insert_final_newline = true
[*.hpp]
indent_style = space
indent_size = 4
insert_final_newline = true
[*.glsl]
indent_style = space
indent_size = 4
insert_final_newline = false

36
.gitignore vendored
View file

@ -8,9 +8,12 @@ makefile
build*
prebuilt
##windows build process
/deps
/MSVC*
## doxygen
Doxygen
!docs/cs-manual/Makefile
## ides/editors
*~
@ -22,6 +25,10 @@ Doxygen
.project
.settings
.directory
.idea
cmake-build-*
files/windows/*.aps
cmake-build-*
## qt-creator
CMakeLists.txt.user*
@ -34,15 +41,36 @@ resources
## binaries
/esmtool
/mwiniimport
/omwlauncher
/openmw
/opencs
/niftest
/bsatool
/openmw-cs
/openmw-essimporter
/openmw-iniimporter
/openmw-launcher
/openmw-wizard
## generated objects
apps/openmw/config.hpp
apps/launcher/ui_contentselector.h
apps/launcher/ui_settingspage.h
apps/opencs/ui_contentselector.h
apps/opencs/ui_filedialog.h
apps/wizard/qrc_wizard.cxx
apps/wizard/ui_componentselectionpage.h
apps/wizard/ui_conclusionpage.h
apps/wizard/ui_existinginstallationpage.h
apps/wizard/ui_importpage.h
apps/wizard/ui_installationpage.h
apps/wizard/ui_installationtargetpage.h
apps/wizard/ui_intropage.h
apps/wizard/ui_languageselectionpage.h
apps/wizard/ui_methodselectionpage.h
components/ui_contentselector.h
docs/mainpage.hpp
docs/Doxyfile
docs/DoxyfilePages
moc_*.cxx
*.cxx_parameters
*qrc_launcher.cxx
@ -54,3 +82,5 @@ moc_*.cxx
*ui_playpage.h
*.[ao]
*.so
openmw.appdata.xml
venv/

69
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,69 @@
stages:
- build
Debian:
tags:
- docker
- linux
image: gcc
cache:
key: apt-cache
paths:
- apt-cache/
before_script:
- export APT_CACHE_DIR=`pwd`/apt-cache && mkdir -pv $APT_CACHE_DIR
- apt-get update -yq
- apt-get -o dir::cache::archives="$APT_CACHE_DIR" install -y cmake libboost-filesystem-dev libboost-program-options-dev libboost-system-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev libsdl2-dev libqt4-dev libopenal-dev libopenscenegraph-3.4-dev libunshield-dev libtinyxml-dev
# - apt-get install -y libmygui-dev libbullet-dev # to be updated to latest below because stretch is too old
- curl http://ftp.us.debian.org/debian/pool/main/b/bullet/libbullet-dev_2.87+dfsg-2_amd64.deb -o libbullet-dev_2.87+dfsg-2_amd64.deb
- curl http://ftp.us.debian.org/debian/pool/main/b/bullet/libbullet2.87_2.87+dfsg-2_amd64.deb -o libbullet2.87_2.87+dfsg-2_amd64.deb
- curl http://ftp.us.debian.org/debian/pool/main/m/mygui/libmygui.openglplatform0debian1v5_3.2.2+dfsg-1_amd64.deb -o libmygui.openglplatform0debian1v5_3.2.2+dfsg-1_amd64.deb
- curl http://ftp.us.debian.org/debian/pool/main/m/mygui/libmyguiengine3debian1v5_3.2.2+dfsg-1_amd64.deb -o libmyguiengine3debian1v5_3.2.2+dfsg-1_amd64.deb
- curl http://ftp.us.debian.org/debian/pool/main/m/mygui/libmygui-dev_3.2.2+dfsg-1_amd64.deb -o libmygui-dev_3.2.2+dfsg-1_amd64.deb
- dpkg --ignore-depends=libmygui.ogreplatform0debian1v5 -i *.deb
stage: build
script:
- cores_to_use=$((`nproc`-2)); if (( $cores_to_use < 1 )); then cores_to_use=1; fi
- mkdir build; cd build; cmake -DCMAKE_BUILD_TYPE=MinSizeRel ../
- make -j$cores_to_use
- DESTDIR=artifacts make install
artifacts:
paths:
- build/artifacts/
MacOS:
tags:
- macos
- xcode
except:
- branches # because our CI VMs are not public, MRs can't use them and timeout
stage: build
allow_failure: true
script:
- rm -fr build/* # remove anything in the build directory
- CI/before_install.osx.sh
- CI/before_script.osx.sh
- cd build; make -j2 package
artifacts:
paths:
- build/OpenMW-*.dmg
Windows:
tags:
- win10
- msvc2017
except:
- branches # because our CI VMs are not public, MRs can't use them and timeout
stage: build
allow_failure: true
script:
# - env # turn on for debugging
- sh %CI_PROJECT_DIR%/CI/before_script.msvc.sh -c Release -p x64 -v 2017 -V
- SET msBuildLocation="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe"
- call %msBuildLocation% MSVC2017_64\OpenMW.sln /t:Build /p:Configuration=Release /m:%NUMBER_OF_PROCESSORS%
- 7z a OpenMW_MSVC2017_64_%CI_BUILD_REF_NAME%_%CI_BUILD_ID%.zip %CI_PROJECT_DIR%\MSVC2017_64\Release\
cache:
paths:
- deps
artifacts:
paths:
- "*.zip"

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "extern/breakpad"]
path = extern/breakpad
url = https://chromium.googlesource.com/breakpad/breakpad

View file

@ -1,59 +1,92 @@
os:
- linux
- osx
osx_image: xcode7.2
# - osx
osx_image: xcode9.4
language: cpp
sudo: required
dist: trusty
dist: xenial
branches:
only:
- master
- coverity_scan
- /openmw-.*$/
- /^[0-9]+\.[0-9]+\.[0-9]+.*$/
env:
global:
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
# via the "travis encrypt" command using the project repo's public key
- secure: "jybGzAdUbqt9vWR/GEnRd96BgAi/7Zd1+2HK68j/i/8+/1YH2XxLOy4Jv/DUBhBlJIkxs/Xv8dRcUlFOclZDHX1d/9Qnsqd3oUVkD7k1y7cTOWy9TBQaE/v/kZo3LpzA3xPwwthrb0BvqIbOfIELi5fS5s8ba85WFRg3AX70wWE="
- secure: 1QK0yVyoOB+gf2I7XzvhXu9w/5lq4stBXIwJbVCTjz4Q4XVHCosURaW1MAgKzMrPnbFEwjyn5uQ8BwsvvfkuN1AZD0YXITgc7gyI+J1wQ/p/ljxRxglakU6WEgsTs2J5z9UmGac4YTXg+quK7YP3rv+zuGim2I2rhzImejyzp0Ym3kRCnNcy+SGBsiRaevRJMe00Ch8zGAbEhduQGeSoS6W0rcu02DNlQKiq5NktWsXR+TWWWVfIeIlQR/lbPsCd0pdxMaMv2QCY0rVbwrYxWJwr/Qe45dAdWp+8/C3PbXpeMSGxlLa33nJNX4Lf/djxbjm8KWk6edaXPajrjR/0iwcpwq0jg2Jt6XfEdnJt35F1gpXlc04sxStjG45uloOKCFYT0wdhIO1Lq+hDP54wypQl+JInd5qC001O7pwhVxO36EgKWqo8HD+BqGDBwsNj2engy9Qcp3wO6G0rLBPB3CrZsk9wrHVv5cSiQSLMhId3Xviu3ZI2qEDA+kgTvxrKrsnMj4bILVCyG5Ka2Mj22wIDW9e8oIab9oTdujax3DTN1GkD6QuOAGzwDsNwGASsgfoeZ+FUhgM75RlBWGMilgkmnF7EJ0oAXLEpjtABnEr2d4qHv+y08kOuTDBLB9ExzCIj024dYYYNLZrqPKx0ncHuCMG2QNj2aJAJEZtj1rQ=
addons:
apt:
sources:
- sourceline: 'ppa:openmw/openmw'
- sourceline: 'ppa:rakhimov/boost'
- ubuntu-toolchain-r-test
packages: [
# Dev
cmake, clang-6.0, libunshield-dev, libtinyxml-dev,
g++-8,
# Tests
libgtest-dev, google-mock,
# Boost
libboost-filesystem1.61-dev, libboost-program-options1.61-dev, libboost-system1.61-dev,
# FFmpeg
libavcodec-dev, libavformat-dev, libavutil-dev, libswscale-dev,
# Audio & Video
libsdl2-dev, qtbase5-dev, libopenal-dev,
# The other ones from OpenMW ppa
libbullet-dev, libswresample-dev, libopenscenegraph-3.4-dev, libmygui-dev,
# tes3mp stuff
libboost1.61-dev, libqt5opengl5-dev, libluajit-5.1-dev
]
coverity_scan:
project:
name: "OpenMW/openmw"
name: "TES3MP/openmw-tes3mp"
description: "<Your project description here>"
notification_email: scrawl@baseoftrash.de
build_command_prepend: "cmake . -DBUILD_UNITTESTS=FALSE"
build_command: "make -j2"
notification_email: koncord@tes3mp.com
build_command_prepend: "cmake . -DBUILD_UNITTESTS=FALSE -DBUILD_OPENCS=FALSE -DBUILD_BSATOOL=FALSE -DBUILD_ESMTOOL=FALSE -DBUILD_MWINIIMPORTER=FALSE -DBUILD_LAUNCHER=FALSE"
build_command: "make -j3"
branch_pattern: coverity_scan
matrix:
include:
- os: linux
env:
ANALYZE="scan-build-3.6 --use-cc clang-3.6 --use-c++ clang++-3.6 "
- ANALYZE="scan-build-6.0 --use-cc clang-6.0 --use-c++ clang++-6.0 "
- MATRIX_CC="CC=clang-6.0 && CXX=clang++-6.0"
compiler: clang
- os: linux
env:
- MATRIX_CC="CC=gcc-8 && CXX=g++-8"
- os: linux
env:
- MATRIX_CC="CC=clang-6.0 && CXX=clang++-6.0"
allow_failures:
- env: ANALYZE="scan-build-3.6 --use-cc clang-3.6 --use-c++ clang++-3.6 "
- env:
- MATRIX_CC="CC=clang-6.0 && CXX=clang++-6.0"
- env:
- ANALYZE="scan-build-6.0 --use-cc clang-6.0 --use-c++ clang++-6.0 "
- MATRIX_CC="CC=clang-6.0 && CXX=clang++-6.0"
before_install:
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then ./CI/before_install.linux.sh; fi
- if [ "${TRAVIS_OS_NAME}" = "osx" ]; then ./CI/before_install.osx.sh; fi
before_script:
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then ./CI/before_script.linux.sh; fi
- if [ "${TRAVIS_OS_NAME}" = "osx" ]; then ./CI/before_script.osx.sh; fi
- ./CI/before_install.${TRAVIS_OS_NAME}.sh
before_script: ./CI/before_script.${TRAVIS_OS_NAME}.sh
script:
- cd ./build
- if [ "$COVERITY_SCAN_BRANCH" != 1 ]; then ${ANALYZE}make -j3; fi
- if [ "$COVERITY_SCAN_BRANCH" != 1 ] && [ "${TRAVIS_OS_NAME}" = "osx" ]; then make package; fi
- if [ "$COVERITY_SCAN_BRANCH" != 1 ] && [ "${TRAVIS_OS_NAME}" = "linux" ]; then ./openmw_test_suite; fi
- if [ "$COVERITY_SCAN_BRANCH" != 1 ] && [ "${TRAVIS_OS_NAME}" = "linux" ]; then cd .. && ./CI/check_tabs.sh; fi
notifications:
recipients:
- corrmage+travis-ci@gmail.com
email:
on_success: change
on_failure: always
irc:
channels:
- "chat.freenode.net#openmw"
on_success: change
on_failure: always
use_notice: true
#notifications:
# email:
# recipients:
# - corrmage+travis-ci@gmail.com
# on_success: change
# on_failure: always
# irc:
# channels:
# - "chat.freenode.net#openmw"
# on_success: change
# on_failure: always
# use_notice: true

View file

@ -15,23 +15,39 @@ Programmers
Adam Hogan (aurix)
Aesylwinn
aegis
AHSauge
Aleksandar Jovanov
Alex Haddad (rainChu)
Alex McKibben (WeirdSexy)
Alex McKibben
alexanderkjall
Alexander Nadeau (wareya)
Alexander Olofsson (Ace)
Alex S (docwest)
Allofich
Andrei Kortunov (akortunov)
AnyOldName3
Aussiemon
Austin Salgat (Salgat)
Artem Kotsynyak (greye)
artemutin
Arthur Moore (EmperorArthur)
Assumeru
athile
Ben Shealy (bentsherman)
Bret Curtis (psi29a)
Britt Mathis (galdor557)
Capostrophic
cc9cii
Cédric Mocquillon
Chris Boyce (slothlife)
Chris Robinson (KittyCat)
Cory F. Cohen (cfcohen)
Cris Mihalache (Mirceam)
crussell187
DanielVukelich
darkf
David Cernat (davidcernat)
devnexen
Dieho
Dmitry Shkurskiy (endorph)
Douglas Diniz (Dgdiniz)
@ -41,18 +57,23 @@ Programmers
Edmondo Tommasina (edmondo)
Eduard Cot (trombonecot)
Eli2
elsid
Emanuel Guével (potatoesmaster)
eroen
escondida
Evgeniy Mineev (sandstranger)
Federico Guerra (FedeWar)
Fil Krynicki (filkry)
Finbar Crago(finbar-crago)
Florian Weber (Florianjw)
Gašper Sedej
gugus/gus
Hallfaer Tuilinn
Haoda Wang (h313)
hristoast
Internecine
Jacob Essex (Yacoby)
Jannik Heller (scrawl)
Jake Westrip (16bitint)
Jason Hooks (jhooks)
jeaye
Jeffrey Haines (Jyby)
@ -63,13 +84,20 @@ Programmers
John Blomberg (fstp)
Jordan Ayers
Jordan Milne
Jules Blok (Armada651)
julianko
Julien Voisin (jvoisin/ap0)
Karl-Felix Glatzer (k1ll)
Kevin Poitra (PuppyKevin)
Koncord
Kurnevsky Evgeny (kurnevsky)
Lars Söderberg (Lazaroth)
lazydev
Leon Krieg (lkrieg)
Leon Saunders (emoose)
Łukasz Gołębiewski (lukago)
logzero
lohikaarme
Lukasz Gromanowski (lgro)
Manuel Edelmann (vorenon)
Marc Bouvier (CramitDeFrog)
@ -77,6 +105,7 @@ Programmers
Mark Siewert (mark76)
Marco Melletti (mellotanica)
Marco Schulze
Martin Otto (MAtahualpa)
Mateusz Kołaczek (PL_kolek)
Mateusz Malisz (malice)
megaton
@ -84,40 +113,59 @@ Programmers
Michael Mc Donnell
Michael Papageorgiou (werdanith)
Michał Bień (Glorf)
Michał Moroz (dragonee)
Miloslav Číž (drummyfish)
Miroslav Puda (pakanek)
MiroslavR
Mitchell Schwitzer (schwitzerm)
naclander
Narmo
Nathan Jeffords (blunted2night)
NeveHanter
Nialsy
Nikolay Kasyanov (corristo)
nobrakal
Nolan Poe (nopoe)
Oleg Chkan (mrcheko)
Paul Cercueil (pcercuei)
Paul McElroy (Greendogo)
Pi03k
Pieter van der Kloet (pvdk)
pkubik
PlutonicOverkill
Radu-Marius Popovici (rpopovici)
rcutmore
Rafael Moura (dhustkoder)
rdimesio
rexelion
riothamus
Rob Cutmore (rcutmore)
Robert MacGregor (Ragora)
Rohit Nirmal
Roman Melnik (Kromgart)
Roman Proskuryakov (humbug)
Roman Proskuryakov (kpp)
Roman Siromakha (elsid)
Sandy Carter (bwrsandman)
Scott Howard
scrawl
Sebastian Wick (swick)
Sergey Shambir
ShadowRadiance
Siimacore
sir_herrbatka
smbas
spycrab
Stefan Galowicz (bogglez)
Stanislav Bobrov (Jiub)
stil-t
svaante
Sylvain Thesnieres (Garvek)
t6
terrorfisch
thegriglat
Thomas Luppi (Digmaster)
tri4ng1e
unelsson
Will Herrmann (Thunderforge)
Tom Mason (wheybags)
Torben Leif Carrington (TorbenC)
viadanna
@ -125,19 +173,22 @@ Programmers
vocollapse
zelurker
Manual
------
Documentation
-------------
Bodillium
Cramal
Adam Bowen (adamnbowen)
Alejandro Sanchez (HiPhish)
Bodillium
Bret Curtis (psi29a)
Cramal
Ryan Tucker (Ravenwing)
sir_herrbatka
Packagers
---------
Alexander Olofsson (Ace) - Windows
Bret Curtis (psi29a) - Ubuntu Linux
Bret Curtis (psi29a) - Debian and Ubuntu Linux
Edmondo Tommasina (edmondo) - Gentoo Linux
Julian Ospald (hasufell) - Gentoo Linux
Karl-Felix Glatzer (k1ll) - Linux Binaries
@ -148,16 +199,16 @@ Packagers
Public Relations and Translations
---------------------------------
Alex McKibben (WeirdSexy) - Podcaster
Artem Kotsynyak (greye) - Russian News Writer
Dawid Lakomy (Vedyimyn) - Polish News Writer
Jim Clauwaert (Zedd) - Public Outreach
Julien Voisin (jvoisin/ap0) - French News Writer
Tom Koenderink (Okulo) - English News Writer
Lukasz Gromanowski (lgro) - English News Writer
Martin Otto (Atahualpa) - Podcaster, Public Outreach, German Translator
Mickey Lyle (raevol) - Release Manager
Pithorn - Chinese News Writer
sir_herrbatka - Polish News Writer
Dawid Lakomy (Vedyimyn) - Polish News Writer
Tom Koenderink (Okulo) - English News Writer
Website
-------
@ -184,7 +235,7 @@ Artwork
Necrod - OpenMW Logo
Mickey Lyle (raevol) - Wordpress Theme
Tom Koenderink (Okulo), SirHerrbatka, crysthala, Shnatsel - OpenMW Editor Icons
Tom Koenderink (Okulo), SirHerrbatka, crysthala, Shnatsel, Lamoot - OpenMW Editor Icons
Inactive Contributors
---------------------
@ -208,7 +259,6 @@ Inactive Contributors
Nekochan
pchan3
penguinroad
psi29a
sergoz
spyboot
Star-Demon

View file

@ -1,3 +1,571 @@
0.45.0
------
Bug #1990: Sunrise/sunset not set correct
Bug #2131: Lustidrike's spell misses the player every time
Bug #2222: Fatigue's effect on selling price is backwards
Bug #2326: After a bound item expires the last equipped item of that type is not automatically re-equipped
Bug #2455: Creatures attacks degrade armor
Bug #2562: Forcing AI to activate a teleport door sometimes causes a crash
Bug #2626: Resurrecting the player does not resume the game
Bug #2772: Non-existing class or faction freezes the game
Bug #2835: Player able to slowly move when overencumbered
Bug #2852: No murder bounty when a player follower commits murder
Bug #2862: [macOS] Can't quit launcher using Command-Q or OpenMW->Quit
Bug #2872: Tab completion in console doesn't work with explicit reference
Bug #2971: Compiler did not reject lines with naked expressions beginning with x.y
Bug #3249: Fixed revert function not updating views properly
Bug #3374: Touch spells not hitting kwama foragers
Bug #3486: [Mod] NPC Commands does not work
Bug #3591: Angled hit distance too low
Bug #3629: DB assassin attack never triggers creature spawning
Bug #3876: Landscape texture painting is misaligned
Bug #3897: Have Goodbye give all choices the effects of Goodbye
Bug #3911: [macOS] Typing in the "Content List name" dialog box produces double characters
Bug #3950: FLATTEN_STATIC_TRANSFORMS optimization breaks animated collision shapes
Bug #3993: Terrain texture blending map is not upscaled
Bug #3997: Almalexia doesn't pace
Bug #4036: Weird behaviour of AI packages if package target has non-unique ID
Bug #4047: OpenMW not reporting its version number in MacOS; OpenMW-CS not doing it fully
Bug #4110: Fixed undo / redo menu text losing the assigned shortcuts
Bug #4125: OpenMW logo cropped on bugtracker
Bug #4215: OpenMW shows book text after last EOL tag
Bug #4221: Characters get stuck in V-shaped terrain
Bug #4230: AiTravel package issues break some Tribunal quests
Bug #4251: Stationary NPCs do not return to their position after combat
Bug #4274: Pre-0.43 death animations are not forward-compatible with 0.43+
Bug #4286: Scripted animations can be interrupted
Bug #4291: Non-persistent actors that started the game as dead do not play death animations
Bug #4293: Faction members are not aware of faction ownerships in barter
Bug #4307: World cleanup should remove dead bodies only if death animation is finished
Bug #4311: OpenMW does not handle RootCollisionNode correctly
Bug #4327: Missing animations during spell/weapon stance switching
Bug #4358: Running animation is interrupted when magic mode is toggled
Bug #4368: Settings window ok button doesn't have key focus by default
Bug #4378: On-self absorb spells restore stats
Bug #4393: NPCs walk back to where they were after using ResetActors
Bug #4416: Handle exception if we try to play non-music file
Bug #4419: MRK NiStringExtraData is handled incorrectly
Bug #4426: RotateWorld behavior is incorrect
Bug #4429: [Windows] Error on build INSTALL.vcxproj project (debug) with cmake 3.7.2
Bug #4431: "Lock 0" console command is a no-op
Bug #4432: Guards behaviour is incorrect if they do not have AI packages
Bug #4433: Guard behaviour is incorrect with Alarm = 0
Bug #4451: Script fails to compile when using "Begin, [ScriptName]" syntax
Bug #4452: Default terrain texture bleeds through texture transitions
Bug #4453: Quick keys behaviour is invalid for equipment
Bug #4454: AI opens doors too slow
Bug #4457: Item without CanCarry flag prevents shield autoequipping in dark areas
Bug #4458: AiWander console command handles idle chances incorrectly
Bug #4459: NotCell dialogue condition doesn't support partial matches
Bug #4460: Script function "Equip" doesn't bypass beast restrictions
Bug #4461: "Open" spell from non-player caster isn't a crime
Bug #4464: OpenMW keeps AiState cached storages even after we cancel AI packages
Bug #4469: Abot Silt Striders Model turn 90 degrees on horizontal
Bug #4474: No fallback when getVampireHead fails
Bug #4475: Scripted animations should not cause movement
Bug #4479: "Game" category on Advanced page is getting too long
Bug #4480: Segfault in QuickKeysMenu when item no longer in inventory
Bug #4489: Goodbye doesn't block dialogue hyperlinks
Bug #4490: PositionCell on player gives "Error: tried to add local script twice"
Bug #4494: Training cap based off Base Skill instead of Modified Skill
Bug #4495: Crossbow animations blending is buggy
Bug #4496: SpellTurnLeft and SpellTurnRight animation groups are unused
Bug #4497: File names starting with x or X are not classified as animation
Bug #4503: Cast and ExplodeSpell commands increase alteration skill
Bug #4510: Division by zero in MWMechanics::CreatureStats::setAttribute
Bug #4519: Knockdown does not discard movement in the 1st-person mode
Bug #4539: Paper Doll is affected by GUI scaling
Bug #4545: Creatures flee from werewolves
Bug #4551: Replace 0 sound range with default range separately
Bug #4553: Forcegreeting on non-actor opens a dialogue window which cannot be closed
Bug #4557: Topics with reserved names are handled differently from vanilla
Bug #4558: Mesh optimizer: check for reserved node name is case-sensitive
Bug #4563: Fast travel price logic checks destination cell instead of service actor cell
Bug #4565: Underwater view distance should be limited
Bug #4573: Player uses headtracking in the 1st-person mode
Bug #4574: Player turning animations are twitchy
Bug #4575: Weird result of attack animation blending with movement animations
Bug #4576: Reset of idle animations when attack can not be started
Feature #2606: Editor: Implemented (optional) case sensitive global search
Feature #3083: Play animation when NPC is casting spell via script
Feature #3103: Provide option for disposition to get increased by successful trade
Feature #3276: Editor: Search - Show number of (remaining) search results and indicate a search without any results
Feature #3641: Editor: Limit FPS in 3d preview window
Feature #3703: Ranged sneak attack criticals
Feature #4012: Editor: Write a log file if OpenCS crashes
Feature #4222: 360° screenshots
Feature #4256: Implement ToggleBorders (TB) console command
Feature #4324: Add CFBundleIdentifier in Info.plist to allow for macOS function key shortcuts
Feature #4345: Add equivalents for the command line commands to Launcher
Feature #4404: Editor: All EnumDelegate fields should have their items sorted alphabetically
Feature #4444: Per-group KF-animation files support
Feature #4466: Editor: Add option to ignore "Base" records when running verifier
Feature #4488: Make water shader rougher during rain
Feature #4509: Show count of enchanted items in stack in the spells list
Feature #4512: Editor: Use markers for lights and creatures levelled lists
Feature #4548: Weapon priority: use the actual chance to hit the target instead of weapon skill
Feature #4549: Weapon priority: use the actual damage in weapon rating calculations
Feature #4550: Weapon priority: make ranged weapon bonus more sensible
Task #2490: Don't open command prompt window on Release-mode builds automatically
Task #4545: Enable is_pod string test
0.44.0
------
Bug #1428: Daedra summoning scripts aren't executed when the item is taken through the inventory
Bug #1987: Some glyphs are not supported
Bug #2254: Magic related visual effects are not rendered when loading a saved game
Bug #2485: Journal alphabetical index doesn't match "Morrowind content language" setting
Bug #2703: OnPCHitMe is not handled correctly
Bug #2829: Incorrect order for content list consisting of a game file and an esp without dependencies
Bug #2841: "Total eclipse" happens if weather settings are not defined.
Bug #2897: Editor: Rename "Original creature" field
Bug #3278: Editor: Unchecking "Auto Calc" flag changes certain values
Bug #3343: Editor: ID sorting is case-sensitive in certain tables
Bug #3557: Resource priority confusion when using the local data path as installation root
Bug #3587: Pathgrid and Flying Creatures wrong behaviour abotWhereAreAllBirdsGoing
Bug #3603: SetPos should not skip weather transitions
Bug #3618: Myar Aranath total conversion can't be started due to capital-case extension of the master file
Bug #3638: Fast forwarding can move NPC inside objects
Bug #3664: Combat music does not start in dialogue
Bug #3696: Newlines are accompanied by empty rectangle glyph in dialogs
Bug #3708: Controllers broken on macOS
Bug #3726: Items with suppressed activation can be picked up via the inventory menu
Bug #3783: [Mod] Abot's Silt Striders 1.16 - silt strider "falls" to ground and glides on floor during travel
Bug #3863: Can be forced to not resist arrest if you cast Calm Humanoid on aggroed death warrant guards
Bug #3884: Incorrect enemy behavior when exhausted
Bug #3926: Installation Wizard places Morrowind.esm after Tribunal/Bloodmoon if it has a later file creation date
Bug #4061: Scripts error on special token included in name
Bug #4111: Crash when mouse over soulgem with a now-missing soul
Bug #4122: Swim animation should not be interrupted during underwater attack
Bug #4134: Battle music behaves different than vanilla
Bug #4135: Reflecting an absorb spell different from vanilla
Bug #4136: Enchanted weapons without "ignore normal weapons" flag don't bypass creature "ignore normal weapons" effect
Bug #4143: Antialiasing produces graphical artifacts when used with shader lighting
Bug #4159: NPCs' base skeleton files should not be optimized
Bug #4177: Jumping/landing animation interference/flickering
Bug #4179: NPCs do not face target
Bug #4180: Weapon switch sound playing even though no weapon is switched
Bug #4184: Guards can initiate dialogue even though you are far above them
Bug #4190: Enchanted clothes changes visibility with Chameleon on equip/unequip
Bug #4191: "screenshot saved" message also appears in the screenshot image
Bug #4192: Archers in OpenMW have shorter attack range than archers in Morrowind
Bug #4210: Some dialogue topics are not highlighted on first encounter
Bug #4211: FPS drops after minimizing the game during rainy weather
Bug #4216: Thrown weapon projectile doesn't rotate
Bug #4223: Displayed spell casting chance must be 0 if player doesn't have enough magicka to cast it
Bug #4225: Double "Activate" key presses with Mouse and Gamepad.
Bug #4226: The current player's class should be default value in the class select menu
Bug #4229: Tribunal/Bloodmoon summoned creatures fight other summons
Bug #4233: W and A keys override S and D Keys
Bug #4235: Wireframe mode affects local map
Bug #4239: Quick load from container screen causes crash
Bug #4242: Crime greetings display in Journal
Bug #4245: Merchant NPCs sell ingredients growing on potted plants they own
Bug #4246: Take armor condition into account when calcuting armor rating
Bug #4250: Jumping is not as fluid as it was pre-0.43.0
Bug #4252: "Error in frame: FFmpeg exception: Failed to allocate input stream" message spam if OpenMW encounter non-music file in the Music folder
Bug #4261: Magic effects from eaten ingredients always have 1 sec duration
Bug #4263: Arrow position is incorrect in 3rd person view during attack for beast races
Bug #4264: Player in god mode can be affected by some negative spell effects
Bug #4269: Crash when hovering the faction section and the 'sAnd' GMST is missing (as in MW 1.0)
Bug #4272: Root note transformations are discarded again
Bug #4279: Sometimes cells are not marked as explored on the map
Bug #4298: Problem with MessageBox and chargen menu interaction order
Bug #4301: Optimizer breaks LOD nodes
Bug #4308: PlaceAtMe doesn't inherit scale of calling object
Bug #4309: Only harmful effects with resistance effect set are resistable
Bug #4313: Non-humanoid creatures are capable of opening doors
Bug #4314: Rainy weather slows down the game when changing from indoors/outdoors
Bug #4319: Collisions for certain meshes are incorrectly ignored
Bug #4320: Using mouse 1 to move forward causes selection dialogues to jump selections forward.
Bug #4322: NPC disposition: negative faction reaction modifier doesn't take PC rank into account
Bug #4328: Ownership by dead actors is not cleared from picked items
Bug #4334: Torch and shield usage inconsistent with original game
Bug #4336: Wizard: Incorrect Morrowind assets path autodetection
Bug #4343: Error message for coc and starting cell shouldn't imply that it only works for interior cells
Bug #4346: Count formatting does not work well with very high numbers
Bug #4351: Using AddSoulgem fills all soul gems of the specified type
Bug #4391: No visual indication is provided when an unavailable spell fails to be chosen via a quick key
Bug #4392: Inventory filter breaks after loading a game
Bug #4405: No default terrain in empty cells when distant terrain is enabled
Bug #4410: [Mod] Arktwend: OpenMW does not use default marker definitions
Bug #4412: openmw-iniimporter ignores data paths from config
Bug #4413: Moving with 0 strength uses all of your fatigue
Bug #4420: Camera flickering when I open up and close menus while sneaking
Bug #4424: [macOS] Cursor is either empty or garbage when compiled against macOS 10.13 SDK
Bug #4435: Item health is considered a signed integer
Bug #4441: Adding items to currently disabled weapon-wielding creatures crashes the game
Feature #1786: Round up encumbrance value in the encumbrance bar
Feature #2694: Editor: rename "model" column to make its purpose clear
Feature #3870: Editor: Terrain Texture Brush Button
Feature #3872: Editor: Edit functions in terrain texture editing mode
Feature #4054: Launcher: Create menu for settings.cfg options
Feature #4064: Option for fast travel services to charge for the first companion
Feature #4142: Implement fWereWolfHealth GMST
Feature #4174: Multiple quicksaves
Feature #4407: Support NiLookAtController
Feature #4423: Rebalance soul gem values
Task #4015: Use AppVeyor build artifact features to make continuous builds available
Editor: New (and more complete) icon set
0.43.0
------
Bug #815: Different settings cause inconsistent underwater visibility
Bug #1452: autosave is not executed when waiting
Bug #1555: Closing containers with spacebar doesn't work after touching an item
Bug #1692: Can't close container when item is "held"
Bug #2405: Maximum distance for guards attacking hostile creatures is incorrect
Bug #2445: Spellcasting can be interrupted
Bug #2489: Keeping map open not persisted between saves
Bug #2594: 1st person view uses wrong body texture with Better bodies
Bug #2628: enablestatreviewmenu command doen't read race, class and sign values from current game
Bug #2639: Attacking flag isn't reset upon reloading
Bug #2698: Snow and rain VFX move with the player
Bug #2704: Some creature swim animations not being used
Bug #2789: Potential risk of misunderstanding using the colored "owned" crosshair feature
Bug #3045: Settings containing '#' cannot be loaded
Bug #3097: Drop() doesn't work when an item is held (with the mouse)
Bug #3110: GetDetected doesn't work without a reference
Bug #3126: Framerate nosedives when adjusting dialogue window size
Bug #3243: Ampersand in configuration files isn't escaped automatically
Bug #3365: Wrong water reflection along banks
Bug #3441: Golden saint always dispelling soul trap / spell priority issue
Bug #3528: Disposing of corpses breaks quests
Bug #3531: No FPS limit when playing bink videos even though "framerate limit" is set in settings.cfg
Bug #3647: Multi-effect spells play audio louder than in Vanilla
Bug #3656: NPCs forget where their place in the world is
Bug #3665: Music transitions are too abrupt
Bug #3679: Spell cast effect should disappear after using rest command
Bug #3684: Merchants do not restock empty soul gems if they acquire filled ones.
Bug #3694: Wrong magicka bonus applied on character creation
Bug #3706: Guards don't try to arrest the player if attacked
Bug #3709: Editor: Camera is not positioned correctly on mode switches related to orbital mode
Bug #3720: Death counter not cleaned of non-existing IDs when loading a game
Bug #3744: "Greater/lesser or equal" operators are not parsed when their signs are swapped
Bug #3749: Yagrum Bagarn moves to different position on encountering
Bug #3766: DisableLevitation does not remove visuals of preexisting effect
Bug #3787: Script commands in result box for voiced dialogue are ignored
Bug #3793: OpenMW tries to animate animated references even when they are disabled
Bug #3794: Default sound buffer size is too small for mods
Bug #3796: Mod 'Undress for me' doesn't work: NPCs re-equip everything
Bug #3798: tgm command behaviour differs from vanilla
Bug #3804: [Mod] Animated Morrowind: some animations do not loop correctly
Bug #3805: Slight enchant miscalculation
Bug #3826: Rendering problems with an image in a letter
Bug #3833: [Mod] Windows Glow: windows textures are much darker than in original game
Bug #3835: Bodyparts with multiple NiTriShapes are not handled correctly
Bug #3839: InventoryStore::purgeEffect() removes only first effect with argument ID
Bug #3843: Wrong jumping fatigue loss calculations
Bug #3850: Boethiah's voice is distorted underwater
Bug #3851: NPCs and player say things while underwater
Bug #3864: Crash when exiting to Khartag point from Ilunibi
Bug #3878: Swapping soul gems while enchanting allows constant effect enchantments using any soul gem
Bug #3879: Dialogue option: Go to jail, persists beyond quickload
Bug #3891: Journal displays empty entries
Bug #3892: Empty space before dialogue entry display
Bug #3898: (mod) PositionCell in dialogue results closes dialogue window
Bug #3906: "Could not find Data Files location" dialog can appear multiple times
Bug #3908: [Wizard] User gets stuck if they cancel out of installing from a CD
Bug #3909: Morrowind Content Language dropdown is the only element on the right half of the Settings window
Bug #3910: Launcher window can be resized so that it cuts off the scroll
Bug #3915: NC text key on nifs doesn't work
Bug #3919: Closing inventory while cursor hovers over spell (or other magic menu item) produces left click sound
Bug #3922: Combat AI should avoid enemy hits when casts Self-ranged spells
Bug #3934: [macOS] Copy/Paste from system clipboard uses Control key instead of Command key
Bug #3935: Incorrect attack strength for AI actors
Bug #3937: Combat AI: enchanted weapons have too high rating
Bug #3942: UI sounds are distorted underwater
Bug #3943: CPU/GPU usage should stop when the game is minimised
Bug #3944: Attempting to sell stolen items back to their owner does not remove them from your inventory
Bug #3955: Player's avatar rendering issues
Bug #3956: EditEffectDialog: Cancel button does not update a Range button and an Area slider properly
Bug #3957: Weird bodypart rendering if a node has reserved name
Bug #3960: Clothes with high cost (> 32768) are not handled properly
Bug #3963: When on edge of being burdened the condition doesn't lower as you run.
Bug #3971: Editor: Incorrect colour field in cell table
Bug #3974: Journal page turning doesn't produce sounds
Bug #3978: Instant opening and closing happens when using a Controller with Menus/Containers
Bug #3981: Lagging when spells are cast, especially noticeable on new landmasses such as Tamriel Rebuilt
Bug #3982: Down sounds instead of Up ones are played when trading
Bug #3987: NPCs attack after some taunting with no "Goodbye"
Bug #3991: Journal can still be opened at main menu
Bug #3995: Dispel cancels every temporary magic effect
Bug #4002: Build broken on OpenBSD with clang
Bug #4003: Reduce Render Area of Inventory Doll to Fit Within Border
Bug #4004: Manis Virmaulese attacks without saying anything
Bug #4010: AiWander: "return to the spawn position" feature does not work properly
Bug #4016: Closing menus with spacebar will still send certain assigned actions through afterwards
Bug #4017: GetPCRunning and GetPCSneaking should check that the PC is actually moving
Bug #4024: Poor music track distribution
Bug #4025: Custom spell with copy-pasted name always sorts to top of spell list
Bug #4027: Editor: OpenMW-CS misreports its own name as "OpenCS", under Mac OS
Bug #4033: Archers don't attack if the arrows have run out and there is no other weapon
Bug #4037: Editor: New greetings do not work in-game.
Bug #4049: Reloading a saved game while falling prevents damage
Bug #4056: Draw animation should not be played when player equips a new weapon
Bug #4074: Editor: Merging of LAND/LTEX records
Bug #4076: Disposition bar is not updated when "goodbye" selected in dialogue
Bug #4079: Alchemy skill increases do not take effect until next batch
Bug #4093: GetResistFire, getResistFrost and getResistShock doesn't work as in vanilla
Bug #4094: Level-up messages for levels past 20 are hardcoded not to be used
Bug #4095: Error in framelistener when take all items from a dead corpse
Bug #4096: Messagebox with the "%0.f" format should use 0 digit precision
Bug #4104: Cycling through weapons does not skip broken ones
Bug #4105: birthsign generation menu does not show full details
Bug #4107: Editor: Left pane in Preferences window is too narrow
Bug #4112: Inventory sort order is inconsistent
Bug #4113: 'Resolution not supported in fullscreen' message is inconvenient
Bug #4131: Pickpocketing behaviour is different from vanilla
Bug #4155: NPCs don't equip a second ring in some cases
Bug #4156: Snow doesn't create water ripples
Bug #4165: NPCs autoequip new clothing with the same price
Feature #452: Rain-induced water ripples
Feature #824: Fading for doors and teleport commands
Feature #933: Editor: LTEX record table
Feature #936: Editor: LAND record table
Feature #1374: AI: Resurface to breathe
Feature #2320: ess-Importer: convert projectiles
Feature #2509: Editor: highlighting occurrences of a word in a script
Feature #2748: Editor: Should use one resource manager per document
Feature #2834: Have openMW's UI remember what menu items were 'pinned' across boots.
Feature #2923: Option to show the damage of the arrows through tooltip.
Feature #3099: Disabling inventory while dragging an item forces you to drop it
Feature #3274: Editor: Script Editor - Shortcuts and context menu options for commenting code out and uncommenting code respectively
Feature #3275: Editor: User Settings- Add an option to reset settings to their default status (per category / all)
Feature #3400: Add keyboard shortcuts for menus
Feature #3492: Show success rate while enchanting
Feature #3530: Editor: Reload data files
Feature #3682: Editor: Default key binding reset
Feature #3921: Combat AI: aggro priorities
Feature #3941: Allow starting at an unnamed exterior cell with --start
Feature #3952: Add Visual Studio 2017 support
Feature #3953: Combat AI: use "WhenUsed" enchantments
Feature #4082: Leave the stack of ingredients or potions grabbed after using an ingredient/potion
Task #2258: Windows installer: launch OpenMW tickbox
Task #4152: The Windows CI script is moving files around that CMake should be dealing with
0.42.0
------
Bug #1956: Duplicate objects after loading the game, when a mod was edited
Bug #2100: Falling leaves in Vurt's Leafy West Gash II not rendered correctly
Bug #2116: Cant fit through some doorways pressed against staircases
Bug #2289: Some modal dialogs are not centered on the screen when the window resizes
Bug #2409: Softlock when pressing weapon/magic switch keys during chargen, afterwards switches weapons even though a text field is selected
Bug #2483: Previous/Next Weapon hotkeys triggered while typing the name of game save
Bug #2629: centeroncell, coc causes death / fall damage time to time when teleporting from high
Bug #2645: Cycling weapons is possible while console/pause menu is open
Bug #2678: Combat with water creatures do not end upon exiting water
Bug #2759: Light Problems in Therana's Chamber in Tel Branora
Bug #2771: unhandled sdl event of type 0x302
Bug #2777: (constant/on cast) disintegrate armor/weapon on self is seemingly not working
Bug #2838: Editor: '.' in a record name should be allowed
Bug #2909: NPCs appear floating when standing on a slope
Bug #3093: Controller movement cannot be used while mouse is moving
Bug #3134: Crash possible when using console with open container
Bug #3254: AI enemies hit between them.
Bug #3344: Editor: Verification results sorting by Type is not alphabetical.
Bug #3345: Editor: Cloned and added pathgrids are lost after reopen of saved omwgame file
Bug #3355: [MGSO] Physics maxing out in south cornerclub Balmora
Bug #3484: Editor: camera position is not set when changing cell via drag&drop
Bug #3508: Slowfall kills Jump momentum
Bug #3580: Crash: Error ElementBufferObject::remove BufferData<0> out of range
Bug #3581: NPCs wander too much
Bug #3601: Menu Titles not centered vertically
Bug #3607: [Mac OS] Beginning of NPC speech cut off (same issue as closed bug #3453)
Bug #3613: Can not map "next weapon" or "next spell" to controller
Bug #3617: Enchanted arrows don't explode when hitting the ground
Bug #3645: Unable to use steps in Vivec, Palace of Vivec
Bug #3650: Tamriel Rebuilt 16.09.1 Hist Cuirass GND nif is rendered inside a Pink Box
Bug #3652: Item icon shadows get stuck in the alchemy GUI
Bug #3653: Incorrect swish sounds
Bug #3666: NPC collision should not be disabled until death animation has finished
Bug #3669: Editor: Text field was missing from book object editing dialogue
Bug #3670: Unhandled SDL event of type 0x304
Bug #3671: Incorrect local variable value after picking up bittercup
Bug #3686: Travelling followers doesn't increase travel fee
Bug #3689: Problematic greetings from Antares Big Mod that override the appropriate ones.
Bug #3690: Certain summoned creatures do not engage in combat with underwater creatures
Bug #3691: Enemies do not initiate combat with player followers on sight
Bug #3695: [Regression] Dispel does not always dispel spell effects in 0.41
Bug #3699: Crash on MWWorld::ProjectileManager::moveMagicBolts
Bug #3700: Climbing on rocks and mountains
Bug #3704: Creatures don't auto-equip their shields on creation
Bug #3705: AI combat engagement logic differs from vanilla
Bug #3707: Animation playing does some very odd things if pc comes in contact with the animated mesh
Bug #3712: [Mod] Freeze upon entering Adanumuran with mod Adanumuran Reclaimed
Bug #3713: [Regression] Cancelling dialogue or using travel with creatures throws a (possibly game-breaking) exception
Bug #3719: Dropped identification papers can't be picked up again
Bug #3722: Command spell doesn't bring enemies out of combat
Bug #3727: Using "Activate" mid-script-execution invalidates interpreter context
Bug #3746: Editor: Book records show attribute IDs instead of skill IDs for teached skills entry.
Bug #3755: Followers stop following after loading from savegame
Bug #3772: ModStat lowers attribute to 100 if it was greater
Bug #3781: Guns in Clean Hunter Rifles mod use crossbow sounds
Bug #3797: NPC and creature names don't show up in combat when RMB windows are displayed
Bug #3800: Wrong tooltip maximum width
Bug #3801: Drowning widget is bugged
Bug #3802: BarterOffer shouldn't limit pcMercantile
Bug #3813: Some fatal error
Bug #3816: Expression parser thinks the -> token is unexpected when a given explicit refID clashes with a journal ID
Bug #3822: Custom added creatures are not animated
Feature #451: Water sounds
Feature #2691: Light particles sometimes not shown in inventory character preview
Feature #3523: Light source on magic projectiles
Feature #3644: Nif NiSphericalCollider Unknown Record Type
Feature #3675: ess-Importer: convert mark location
Feature #3693: ess-Importer: convert last known exterior cell
Feature #3748: Editor: Replace "Scroll" check box in Book records with "Book Type" combo box.
Feature #3751: Editor: Replace "Xyz Blood" check boxes in NPC and Creature records with "Blood Type" combo box
Feature #3752: Editor: Replace emitter check boxes in Light records with "Emitter Type" combo box
Feature #3756: Editor: Replace "Female" check box in NPC records with "Gender" combo box
Feature #3757: Editor: Replace "Female" check box in BodyPart records with "Gender" combo box
Task #3092: const version of ContainerStoreIterator
Task #3795: /deps folder not in .gitignore
0.41.0
------
Bug #1138: Casting water walking doesn't move the player out of the water
Bug #1931: Rocks from blocked passage in Bamz-Amschend, Radacs Forge can reset and cant be removed again.
Bug #2048: Almvisi and Divine Intervention display wrong spell effect
Bug #2054: Show effect-indicator for "instant effect" spells and potions
Bug #2150: Clockwork City door animation problem
Bug #2288: Playback of weapon idle animation not correct
Bug #2410: Stat-review window doesn't display starting spells, powers, or abilities
Bug #2493: Repairing occasionally very slow
Bug #2716: [OSG] Water surface is too transparent from some angles
Bug #2859: [MAC OS X] Cannot exit fullscreen once enabled
Bug #3091: Editor: will not save addon if global variable value type is null
Bug #3277: Editor: Non-functional nested tables in subviews need to be hidden instead of being disabled
Bug #3348: Disabled map markers show on minimap
Bug #3350: Extending selection to instances with same object results in duplicates.
Bug #3353: [Mod] Romance version 3.7 script failed
Bug #3376: [Mod] Vampire Embrace script fails to execute
Bug #3385: Banners don't animate in stormy weather as they do in the original game
Bug #3393: Akulakhan re-enabled after main quest
Bug #3427: Editor: OpenMW-CS instances won´t get deleted
Bug #3451: Feril Salmyn corpse isn't where it is supposed to be
Bug #3497: Zero-weight armor is displayed as "heavy" in inventory tooltip
Bug #3499: Idle animations don't always loop
Bug #3500: Spark showers at Sotha Sil do not appear until you look at the ceiling
Bug #3515: Editor: Moved objects in interior cells are teleported to exterior cells.
Bug #3520: Editor: OpenMW-CS cannot find project file when launching the game
Bug #3521: Armed NPCs don't use correct melee attacks
Bug #3535: Changing cell immediately after dying causes character to freeze.
Bug #3542: Unable to rest if unalerted slaughterfish are in the cell with you
Bug #3549: Blood effects occur even when a hit is resisted
Bug #3551: NPC Todwendy in german version can't interact
Bug #3552: Opening the journal when fonts are missing results in a crash
Bug #3555: SetInvisible command should not apply graphic effect
Bug #3561: Editor: changes from omwaddon are not loaded in [New Addon] mode
Bug #3562: Non-hostile NPCs can be disarmed by stealing their weapons via sneaking
Bug #3564: Editor: openmw-cs verification results
Bug #3568: Items that should be invisible are shown in the inventory
Bug #3574: Alchemy: Alembics and retorts are used in reverse
Bug #3575: Diaglog choices don't work in mw 0.40
Bug #3576: Minor differences in AI reaction to hostile spell effects
Bug #3577: not local nolore dialog test
Bug #3578: Animation Replacer hangs after one cicle/step
Bug #3579: Bound Armor skillups and sounds
Bug #3583: Targetted GetCurrentAiPackage returns 0
Bug #3584: Persuasion bug
Bug #3590: Vendor, Ilen Faveran, auto equips items from stock
Bug #3594: Weather doesn't seem to update correctly in Mournhold
Bug #3598: Saving doesn't save status of objects
Bug #3600: Screen goes black when trying to travel to Sadrith Mora
Bug #3608: Water ripples aren't created when walking on water
Bug #3626: Argonian NPCs swim like khajiits
Bug #3627: Cannot delete "Blessed touch" spell from spellbook
Bug #3634: An enchanted throwing weapon consumes charges from the stack in your inventory. (0.40.0)
Bug #3635: Levelled items in merchants are "re-rolled" (not bug 2952, see inside)
Feature #1118: AI combat: flee
Feature #1596: Editor: Render water
Feature #2042: Adding a non-portable Light to the inventory should cause the player to glow
Feature #3166: Editor: Instance editing mode - rotate sub mode
Feature #3167: Editor: Instance editing mode - scale sub mode
Feature #3420: ess-Importer: player control flags
Feature #3489: You shouldn't be be able to re-cast a bound equipment spell
Feature #3496: Zero-weight boots should play light boot footsteps
Feature #3516: Water Walking should give a "can't cast" message and fail when you are too deep
Feature #3519: Play audio and visual effects for all effects in a spell
Feature #3527: Double spell explosion scaling
Feature #3534: Play particle textures for spell effects
Feature #3539: Make NPCs use opponent's weapon range to decide whether to dodge
Feature #3540: Allow dodging for creatures with "biped" flag
Feature #3545: Drop shadow for items in menu
Feature #3558: Implement same spell range for "on touch" spells as original engine
Feature #3560: Allow using telekinesis with touch spells on objects
Task #3585: Some objects added by Morrowind Rebirth do not display properly their texture
0.40.0
------
Bug #1320: AiWander - Creatures in cells without pathgrids do not wander
Bug #1873: Death events are triggered at the beginning of the death animation
Bug #1996: Resting interrupts magic effects
Bug #2399: Vampires can rest in broad daylight and survive the experience
Bug #2604: Incorrect magicka recalculation
Bug #2721: Telekinesis extends interaction range where it shouldn't
Bug #2981: When waiting, NPCs can go where they wouldn't go normally.
Bug #3045: Esp files containing the letter '#' in the file name cannot be loaded on startup
Bug #3071: Slowfall does not stop momentum when jumping
Bug #3085: Plugins can not replace parent cell references with a cell reference of different type
Bug #3145: Bug with AI Cliff Racer. He will not attack you, unless you put in front of him.
Bug #3149: Editor: Weather tables were missing from regions
Bug #3201: Netch shoots over your head
Bug #3269: If you deselect a mod and try to load a save made inside a cell added by it, you end bellow the terrain in the grid 0/0
Bug #3286: Editor: Script editor tab width
Bug #3329: Teleportation spells cause crash to desktop after build update from 0.37 to 0.38.0
Bug #3331: Editor: Start Scripts table: Adding a script doesn't refresh the list of Start Scripts and allows to add a single script multiple times
Bug #3332: Editor: Scene view: Tool tips only occur when holding the left mouse button
Bug #3340: ESS-Importer does not separate item stacks
Bug #3342: Editor: Creation of pathgrids did not check if the pathgrid already existed
Bug #3346: "Talked to PC" is always 0 for "Hello" dialogue
Bug #3349: AITravel doesn't repeat
Bug #3370: NPCs wandering to invalid locations after training
Bug #3378: "StopCombat" command does not function in vanilla quest
Bug #3384: Battle at Nchurdamz - Larienna Macrina does not stop combat after killing Hrelvesuu
Bug #3388: Monster Respawn tied to Quicksave
Bug #3390: Strange visual effect in Dagoth Ur's chamber
Bug #3391: Inappropriate Blight weather behavior at end of main quest
Bug #3394: Replaced dialogue inherits some of its old data
Bug #3397: Actors that start the game dead always have the same death pose
Bug #3401: Sirollus Saccus sells not glass arrows
Bug #3402: Editor: Weapon data not being properly set
Bug #3405: Mulvisic Othril will not use her chitin throwing stars
Bug #3407: Tanisie Verethi will immediately detect the player
Bug #3408: Improper behavior of ashmire particles
Bug #3412: Ai Wander start time resets when saving/loading the game
Bug #3416: 1st person and 3rd person camera isn't converted from .ess correctly
Bug #3421: Idling long enough while paralyzed sometimes causes character to get stuck
Bug #3423: Sleep interruption inside dungeons too agressive
Bug #3424: Pickpocketing sometimes won't work
Bug #3432: AiFollow / AiEscort durations handled incorrectly
Bug #3434: Dead NPC's and Creatures still contribute to sneak skill increases
Bug #3437: Weather-conditioned dialogue should not play in interiors
Bug #3439: Effects cast by summon stick around after their death
Bug #3440: Parallax maps looks weird
Bug #3443: Class graphic for custom class should be Acrobat
Bug #3446: OpenMW segfaults when using Atrayonis's "Anthology Solstheim: Tomb of the Snow Prince" mod
Bug #3448: After dispelled, invisibility icon is still displayed
Bug #3453: First couple of seconds of NPC speech is muted
Bug #3455: Portable house mods lock player and npc movement up exiting house.
Bug #3456: Equipping an item will undo dispel of constant effect invisibility
Bug #3458: Constant effect restore health doesn't work during Wait
Bug #3466: It is possible to stack multiple scroll effects of the same type
Bug #3471: When two mods delete the same references, many references are not disabled by the engine.
Bug #3473: 3rd person camera can be glitched
Feature #1424: NPC "Face" function
Feature #2974: Editor: Multiple Deletion of Subrecords
Feature #3044: Editor: Render path grid v2
Feature #3362: Editor: Configurable key bindings
Feature #3375: Make sun / moon reflections weather dependent
Feature #3386: Editor: Edit pathgrid
0.39.0
------

View file

@ -1,21 +1,22 @@
#!/bin/sh
echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-
if [ "${ANALYZE}" ]; then
echo "yes" | sudo add-apt-repository "deb http://llvm.org/apt/`lsb_release -sc`/ llvm-toolchain-`lsb_release -sc`-3.6 main"
wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -
# Set up compilers
if [ ! -z "${MATRIX_CC}" ]; then
eval "${MATRIX_CC}"
fi
echo "yes" | sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu `lsb_release -sc` main universe restricted multiverse"
echo "yes" | sudo apt-add-repository ppa:openmw/openmw
sudo apt-get update -qq
sudo apt-get install -qq libgtest-dev google-mock
sudo apt-get install -qq libboost-filesystem-dev libboost-program-options-dev libboost-system-dev libboost-thread-dev
sudo apt-get install -qq libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev
sudo apt-get install -qq libbullet-dev libopenscenegraph-dev libmygui-dev libsdl2-dev libunshield-dev libtinyxml-dev libopenal-dev libqt4-dev
if [ "${ANALYZE}" ]; then sudo apt-get install -qq clang-3.6; fi
# build libgtest & libgtest_main
sudo mkdir /usr/src/gtest/build
cd /usr/src/gtest/build
sudo cmake .. -DBUILD_SHARED_LIBS=1
sudo make -j4
sudo ln -s /usr/src/gtest/build/libgtest.so /usr/lib/libgtest.so
sudo ln -s /usr/src/gtest/build/libgtest_main.so /usr/lib/libgtest_main.so
cd ~/
git clone https://github.com/TES3MP/CrabNet
cd CrabNet
cmake . -DCRABNET_ENABLE_DLL=OFF -DCRABNET_ENABLE_SAMPLES=OFF -DCMAKE_BUILD_TYPE=Release
make -j3

View file

@ -1,10 +1,10 @@
#!/bin/sh
brew update
brew rm cmake || true
brew rm pkgconfig || true
brew rm qt5 || true
brew install cmake pkgconfig qt5
curl http://downloads.openmw.org/osx/dependencies/openmw-deps-263d4a8.zip -o ~/openmw-deps.zip
unzip ~/openmw-deps.zip -d /private/tmp/openmw-deps > /dev/null
brew outdated cmake || brew upgrade cmake
brew outdated pkgconfig || brew upgrade pkgconfig
brew install qt
curl -fSL -R -J https://downloads.openmw.org/osx/dependencies/openmw-deps-100d2e0.zip -o ~/openmw-deps.zip
unzip -o ~/openmw-deps.zip -d /private/tmp/openmw-deps > /dev/null

View file

@ -3,6 +3,37 @@
free -m
mkdir build
cd build
export CODE_COVERAGE=1
if [ "${CC}" = "clang" ]; then export CODE_COVERAGE=0; fi
${ANALYZE}cmake .. -DBUILD_WITH_CODE_COVERAGE=${CODE_COVERAGE} -DBUILD_UNITTESTS=1 -DCMAKE_INSTALL_PREFIX=/usr -DBINDIR=/usr/games -DCMAKE_BUILD_TYPE="None" -DUSE_SYSTEM_TINYXML=TRUE
# Set up compilers
if [ ! -z "${MATRIX_CC}" ]; then
eval "${MATRIX_CC}"
fi
export RAKNET_ROOT=~/CrabNet
export CODE_COVERAGE=0
if [ ! -z "${ANALYZE}" ]; then
CODE_COVERAGE=1
fi
${ANALYZE}cmake .. \
-DDESIRED_QT_VERSION=5 \
-DBUILD_OPENMW_MP=ON \
-DBUILD_BROWSER=ON \
-DBUILD_MASTER=ON \
-DBUILD_WITH_CODE_COVERAGE=${CODE_COVERAGE} \
-DBUILD_BSATOOL=OFF \
-DBUILD_ESMTOOL=OFF \
-DBUILD_ESSIMPORTER=OFF \
-DBUILD_LAUNCHER=OFF \
-DBUILD_MWINIIMPORTER=OFF \
-DBUILD_MYGUI_PLUGIN=OFF \
-DBUILD_OPENCS=OFF \
-DBUILD_WIZARD=OFF \
-DBUILD_UNITTESTS=1 \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBINDIR=/usr/games \
-DCMAKE_BUILD_TYPE="None" \
-DUSE_SYSTEM_TINYXML=TRUE \
-DRakNet_LIBRARY_RELEASE=~/CrabNet/lib/libRakNetLibStatic.a \
-DRakNet_LIBRARY_DEBUG=~/CrabNet/lib/libRakNetLibStatic.a

562
CI/before_script.msvc.sh Executable file → Normal file
View file

@ -1,4 +1,38 @@
#!/bin/bash
# set -x # turn-on for debugging
MISSINGTOOLS=0
command -v 7z >/dev/null 2>&1 || { echo "Error: 7z (7zip) is not on the path."; MISSINGTOOLS=1; }
command -v cmake >/dev/null 2>&1 || { echo "Error: cmake (CMake) is not on the path."; MISSINGTOOLS=1; }
if [ $MISSINGTOOLS -ne 0 ]; then
exit 1
fi
WORKINGDIR="$(pwd)"
case "$WORKINGDIR" in
*[[:space:]]*)
echo "Error: Working directory contains spaces."
exit 1
;;
esac
set -euo pipefail
APPVEYOR=${APPVEYOR:-}
CI=${CI:-}
STEP=${STEP:-}
VERBOSE=""
STRIP=""
SKIP_DOWNLOAD=""
SKIP_EXTRACT=""
KEEP=""
UNITY_BUILD=""
VS_VERSION=""
PLATFORM=""
CONFIGURATION=""
while [ $# -gt 0 ]; do
ARGSTR=$1
@ -16,10 +50,6 @@ while [ $# -gt 0 ]; do
V )
VERBOSE=true ;;
v )
VS_VERSION=$1
shift ;;
d )
SKIP_DOWNLOAD=true ;;
@ -32,6 +62,10 @@ while [ $# -gt 0 ]; do
u )
UNITY_BUILD=true ;;
v )
VS_VERSION=$1
shift ;;
p )
PLATFORM=$1
shift ;;
@ -43,7 +77,6 @@ while [ $# -gt 0 ]; do
h )
cat <<EOF
Usage: $0 [-cdehkpuvV]
Options:
-c <Release/Debug>
Set the configuration, can also be set with environment variable CONFIGURATION.
@ -59,7 +92,7 @@ Options:
Set the build platform, can also be set with environment variable PLATFORM.
-u
Configure for unity builds.
-v <2013/2015>
-v <2013/2015/2017>
Choose the Visual Studio version to use.
-V
Run verbosely
@ -78,9 +111,6 @@ done
if [ -z $VERBOSE ]; then
STRIP="> /dev/null 2>&1"
fi
if [ -z $VS_VERSION ]; then
VS_VERSION="2013"
fi
if [ -z $APPVEYOR ]; then
echo "Running prebuild outside of Appveyor."
@ -90,9 +120,7 @@ if [ -z $APPVEYOR ]; then
else
echo "Running prebuild in Appveyor."
cd $APPVEYOR_BUILD_FOLDER
VERSION="$(cat README.md | grep Version: | awk '{ print $3; }')-$(git rev-parse --short HEAD)"
appveyor UpdateBuild -Version "$VERSION" > /dev/null &
cd "$APPVEYOR_BUILD_FOLDER"
fi
run_cmd() {
@ -105,7 +133,7 @@ run_cmd() {
if [ $RET -ne 0 ]; then
if [ -z $APPVEYOR ]; then
echo "Command $CMD failed, output can be found in `real_pwd`/output.log"
echo "Command $CMD failed, output can be found in $(real_pwd)/output.log"
else
echo
echo "Command $CMD failed;"
@ -184,44 +212,69 @@ add_osg_dlls() {
OSG_PLUGINS="$OSG_PLUGINS $@"
}
QT_PLATFORMS=""
add_qt_platform_dlls() {
QT_PLATFORMS="$QT_PLATFORMS $@"
}
if [ -z $PLATFORM ]; then
PLATFORM=`uname -m`
PLATFORM="$(uname -m)"
fi
if [ -z $CONFIGURATION ]; then
CONFIGURATION="Debug"
fi
if [ -z $VS_VERSION ]; then
VS_VERSION="2013"
fi
case $VS_VERSION in
14|2015 )
GENERATOR="Visual Studio 14 2015"
XP_TOOLSET="v140_xp"
15|15.0|2017 )
GENERATOR="Visual Studio 15 2017"
TOOLSET="vc141"
MSVC_REAL_VER="15"
MSVC_VER="14.1"
MSVC_YEAR="2015"
MSVC_DISPLAY_YEAR="2017"
;;
# 12|2013|
* )
14|14.0|2015 )
GENERATOR="Visual Studio 14 2015"
TOOLSET="vc140"
MSVC_REAL_VER="14"
MSVC_VER="14.0"
MSVC_YEAR="2015"
MSVC_DISPLAY_YEAR="2015"
;;
12|12.0|2013 )
GENERATOR="Visual Studio 12 2013"
XP_TOOLSET="v120_xp"
TOOLSET="vc120"
MSVC_REAL_VER="12"
MSVC_VER="12.0"
MSVC_YEAR="2013"
MSVC_DISPLAY_YEAR="2013"
;;
esac
case $PLATFORM in
x64|x86_64|x86-64|win64|Win64 )
ARCHNAME=x86-64
ARCHSUFFIX=64
BITS=64
ARCHNAME="x86-64"
ARCHSUFFIX="64"
BITS="64"
BASE_OPTS="-G\"$GENERATOR Win64\""
add_cmake_opts "-G\"$GENERATOR Win64\""
;;
x32|x86|i686|i386|win32|Win32 )
ARCHNAME=x86
ARCHSUFFIX=86
BITS=32
ARCHNAME="x86"
ARCHSUFFIX="86"
BITS="32"
BASE_OPTS="-G\"$GENERATOR\" -T$XP_TOOLSET"
add_cmake_opts "-G\"$GENERATOR\"" -T$XP_TOOLSET
BASE_OPTS="-G\"$GENERATOR\""
add_cmake_opts "-G\"$GENERATOR\""
;;
* )
@ -230,35 +283,38 @@ case $PLATFORM in
;;
esac
if ! [ -z $UNITY_BUILD ]; then
add_cmake_opts "-DOPENMW_UNITY_BUILD=True"
fi
case $CONFIGURATION in
debug|Debug|DEBUG )
CONFIGURATION=Debug
BUILD_CONFIG=Debug
;;
release|Release|RELEASE )
CONFIGURATION=Release
BUILD_CONFIG=Release
;;
relwithdebinfo|RelWithDebInfo|RELWITHDEBINFO )
CONFIGURATION=RelWithDebInfo
CONFIGURATION=Release
BUILD_CONFIG=RelWithDebInfo
;;
esac
if ! [ -z $UNITY_BUILD ]; then
add_cmake_opts "-DOPENMW_UNITY_BUILD=True"
fi
echo
echo "=========================="
echo "Starting prebuild on win$BITS"
echo "=========================="
echo "==================================="
echo "Starting prebuild on MSVC${MSVC_DISPLAY_YEAR} WIN${BITS}"
echo "==================================="
echo
# cd OpenMW/AppVeyor-test
mkdir -p deps
cd deps
DEPS="`pwd`"
DEPS="$(pwd)"
if [ -z $SKIP_DOWNLOAD ]; then
echo "Downloading dependency packages."
@ -266,176 +322,186 @@ if [ -z $SKIP_DOWNLOAD ]; then
# Boost
if [ -z $APPVEYOR ]; then
download "Boost 1.58.0" \
http://sourceforge.net/projects/boost/files/boost-binaries/1.58.0/boost_1_58_0-msvc-12.0-$BITS.exe \
boost-1.58.0-win$BITS.exe
download "Boost 1.67.0" \
"https://sourceforge.net/projects/boost/files/boost-binaries/1.67.0/boost_1_67_0-msvc-${MSVC_VER}-${BITS}.exe" \
"boost-1.67.0-msvc${MSVC_YEAR}-win${BITS}.exe"
fi
# Bullet
download "Bullet 2.83.5" \
http://www.lysator.liu.se/~ace/OpenMW/deps/Bullet-2.83.5-win$BITS.7z \
Bullet-2.83.5-win$BITS.7z
download "Bullet 2.86" \
"https://www.lysator.liu.se/~ace/OpenMW/deps/Bullet-2.86-msvc${MSVC_YEAR}-win${BITS}.7z" \
"Bullet-2.86-msvc${MSVC_YEAR}-win${BITS}.7z"
# FFmpeg
download "FFmpeg 2.5.2" \
http://ffmpeg.zeranoe.com/builds/win$BITS/shared/ffmpeg-2.5.2-win$BITS-shared.7z \
ffmpeg$BITS-2.5.2.7z \
http://ffmpeg.zeranoe.com/builds/win$BITS/dev/ffmpeg-2.5.2-win$BITS-dev.7z \
ffmpeg$BITS-2.5.2-dev.7z
download "FFmpeg 3.2.4" \
"https://ffmpeg.zeranoe.com/builds/win${BITS}/shared/ffmpeg-3.2.4-win${BITS}-shared.zip" \
"ffmpeg-3.2.4-win${BITS}.zip" \
"https://ffmpeg.zeranoe.com/builds/win${BITS}/dev/ffmpeg-3.2.4-win${BITS}-dev.zip" \
"ffmpeg-3.2.4-dev-win${BITS}.zip"
# MyGUI
download "MyGUI 3.2.2" \
http://www.lysator.liu.se/~ace/OpenMW/deps/MyGUI-3.2.2-win$BITS.7z \
MyGUI-3.2.2-win$BITS.7z
"https://www.lysator.liu.se/~ace/OpenMW/deps/MyGUI-3.2.2-msvc${MSVC_YEAR}-win${BITS}.7z" \
"MyGUI-3.2.2-msvc${MSVC_YEAR}-win${BITS}.7z"
# OpenAL
download "OpenAL-Soft 1.16.0" \
http://kcat.strangesoft.net/openal-binaries/openal-soft-1.16.0-bin.zip \
OpenAL-Soft-1.16.0.zip
download "OpenAL-Soft 1.17.2" \
"http://kcat.strangesoft.net/openal-binaries/openal-soft-1.17.2-bin.zip" \
"OpenAL-Soft-1.17.2.zip"
# OSG
download "OpenSceneGraph 3.3.8" \
http://www.lysator.liu.se/~ace/OpenMW/deps/OSG-3.3.8-win$BITS.7z \
OSG-3.3.8-win$BITS.7z
download "OpenSceneGraph 3.4.1-scrawl" \
"https://www.lysator.liu.se/~ace/OpenMW/deps/OSG-3.4.1-scrawl-msvc${MSVC_YEAR}-win${BITS}.7z" \
"OSG-3.4.1-scrawl-msvc${MSVC_YEAR}-win${BITS}.7z"
# Qt
if [ -z $APPVEYOR ]; then
download "Qt 4.8.6" \
http://sourceforge.net/projects/qt64ng/files/qt/$ARCHNAME/4.8.6/msvc2013/qt-4.8.6-x$ARCHSUFFIX-msvc2013.7z \
qt$BITS-4.8.6.7z
if [ $BITS == "64" ]; then
QT_SUFFIX="_64"
else
QT_SUFFIX=""
fi
download "Qt 5.7.0" \
"https://download.qt.io/archive/qt/5.7/5.7.0/qt-opensource-windows-x86-msvc${MSVC_YEAR}${QT_SUFFIX}-5.7.0.exe" \
"qt-5.7.0-msvc${MSVC_YEAR}-win${BITS}.exe" \
"https://www.lysator.liu.se/~ace/OpenMW/deps/qt-5-install.qs" \
"qt-5-install.qs"
fi
# SDL2
download "SDL 2.0.3" \
https://www.libsdl.org/release/SDL2-devel-2.0.3-VC.zip \
SDL2-2.0.3.zip
download "SDL 2.0.7" \
"https://www.libsdl.org/release/SDL2-devel-2.0.7-VC.zip" \
"SDL2-2.0.7.zip"
fi
cd .. #/..
# Set up dependencies
BUILD_DIR="MSVC${MSVC_DISPLAY_YEAR}_${BITS}"
if [ -z $KEEP ]; then
echo
printf "Preparing build directory... "
echo "(Re)Creating build directory."
rm -rf Build_$BITS
mkdir -p Build_$BITS/deps
echo Done.
rm -rf "$BUILD_DIR"
fi
mkdir -p Build_$BITS/deps
cd Build_$BITS/deps
DEPS_INSTALL=`pwd`
mkdir -p "${BUILD_DIR}/deps"
cd "${BUILD_DIR}/deps"
DEPS_INSTALL="$(pwd)"
cd $DEPS
echo
echo "Extracting dependencies..."
echo "Extracting dependencies, this might take a while..."
echo "---------------------------------------------------"
echo
# Boost
printf "Boost 1.58.0... "
if [ -z $APPVEYOR ]; then
printf "Boost 1.67.0... "
else
if [ $MSVC_VER -eq 12.0 ]; then
printf "Boost 1.58.0 AppVeyor... "
else
printf "Boost 1.67.0 AppVeyor... "
fi
fi
{
if [ -z $APPVEYOR ]; then
cd $DEPS_INSTALL
BOOST_SDK="`real_pwd`/Boost"
BOOST_SDK="$(real_pwd)/Boost"
if [ -d Boost ] && grep "BOOST_VERSION 105800" Boost/boost/version.hpp > /dev/null; then
# Boost's installer is still based on ms-dos API that doesn't support larger than 260 char path names
# We work around this by installing to root of the current working drive and then move it to our deps
# get the current working drive's root, we'll install to that temporarily
CWD_DRIVE_ROOT="$(powershell -command '(get-location).Drive.Root')Boost_temp"
CWD_DRIVE_ROOT_BASH=$(echo "$CWD_DRIVE_ROOT" | sed "s,\\\\,/,g" | sed "s,\(.\):,/\\1,")
if [ -d CWD_DRIVE_ROOT_BASH ]; then
printf "Cannot continue, ${CWD_DRIVE_ROOT_BASH} aka ${CWD_DRIVE_ROOT} already exists. Please remove before re-running. ";
exit 1;
fi
if [ -d ${BOOST_SDK} ] && grep "BOOST_VERSION 106700" Boost/boost/version.hpp > /dev/null; then
printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then
rm -rf Boost
$DEPS/boost-1.58.0-win$BITS.exe //dir="$(echo $BOOST_SDK | sed s,/,\\\\,g)" //verysilent
CI_EXTRA_INNO_OPTIONS=""
[ -n "$CI" ] && CI_EXTRA_INNO_OPTIONS="//SUPPRESSMSGBOXES //LOG='boost_install.log'"
"${DEPS}/boost-1.67.0-msvc${MSVC_YEAR}-win${BITS}.exe" //DIR="${CWD_DRIVE_ROOT}" //VERYSILENT //NORESTART ${CI_EXTRA_INNO_OPTIONS}
mv "${CWD_DRIVE_ROOT_BASH}" "${BOOST_SDK}"
fi
add_cmake_opts -DBOOST_ROOT="$BOOST_SDK" \
-DBOOST_LIBRARYDIR="$BOOST_SDK/lib$BITS-msvc-12.0"
-DBOOST_LIBRARYDIR="${BOOST_SDK}/lib${BITS}-msvc-${MSVC_VER}"
add_cmake_opts -DBoost_COMPILER="-${TOOLSET}"
echo Done.
else
# Appveyor unstable has all the boost we need already
BOOST_SDK="c:/Libraries/boost"
add_cmake_opts -DBOOST_ROOT="$BOOST_SDK" \
-DBOOST_LIBRARYDIR="$BOOST_SDK/lib$BITS-msvc-12.0"
if [ $MSVC_REAL_VER -eq 12 ]; then
BOOST_SDK="c:/Libraries/boost_1_58_0"
else
BOOST_SDK="c:/Libraries/boost_1_67_0"
fi
if [ $MSVC_REAL_VER -eq 15 ]; then
LIB_SUFFIX="1"
else
LIB_SUFFIX="0"
fi
echo AppVeyor.
add_cmake_opts -DBOOST_ROOT="$BOOST_SDK" \
-DBOOST_LIBRARYDIR="${BOOST_SDK}/lib${BITS}-msvc-${MSVC_VER}.${LIB_SUFFIX}"
add_cmake_opts -DBoost_COMPILER="-${TOOLSET}"
echo Done.
fi
}
cd $DEPS
echo
# Bullet
printf "Bullet 2.83.5... "
printf "Bullet 2.86... "
{
cd $DEPS_INSTALL
if [ -d Bullet ]; then
printf "Exists. (No version checking) "
printf -- "Exists. (No version checking) "
elif [ -z $SKIP_EXTRACT ]; then
rm -rf Bullet
eval 7z x -y $DEPS/Bullet-2.83.5-win$BITS.7z $STRIP
mv Bullet-2.83.5-win$BITS Bullet
eval 7z x -y "${DEPS}/Bullet-2.86-msvc${MSVC_YEAR}-win${BITS}.7z" $STRIP
mv "Bullet-2.86-msvc${MSVC_YEAR}-win${BITS}" Bullet
fi
BULLET_SDK="`real_pwd`/Bullet"
add_cmake_opts -DBULLET_INCLUDE_DIR="$BULLET_SDK/include/bullet" \
-DBULLET_COLLISION_LIBRARY="$BULLET_SDK/lib/BulletCollision.lib" \
-DBULLET_COLLISION_LIBRARY_DEBUG="$BULLET_SDK/lib/BulletCollision_Debug.lib" \
-DBULLET_MATH_LIBRARY="$BULLET_SDK/lib/LinearMath.lib" \
-DBULLET_MATH_LIBRARY_DEBUG="$BULLET_SDK/lib/LinearMath_Debug.lib"
export BULLET_ROOT="$(real_pwd)/Bullet"
echo Done.
}
cd $DEPS
echo
# FFmpeg
printf "FFmpeg 2.5.2... "
printf "FFmpeg 3.2.4... "
{
cd $DEPS_INSTALL
if [ -d FFmpeg ] && grep "FFmpeg version: 2.5.2" FFmpeg/README.txt > /dev/null; then
if [ -d FFmpeg ] && grep "FFmpeg version: 3.2.4" FFmpeg/README.txt > /dev/null; then
printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then
rm -rf FFmpeg
eval 7z x -y $DEPS/ffmpeg$BITS-2.5.2.7z $STRIP
eval 7z x -y $DEPS/ffmpeg$BITS-2.5.2-dev.7z $STRIP
mv ffmpeg-2.5.2-win$BITS-shared FFmpeg
cp -r ffmpeg-2.5.2-win$BITS-dev/* FFmpeg/
rm -rf ffmpeg-2.5.2-win$BITS-dev
eval 7z x -y "${DEPS}/ffmpeg-3.2.4-win${BITS}.zip" $STRIP
eval 7z x -y "${DEPS}/ffmpeg-3.2.4-dev-win${BITS}.zip" $STRIP
mv "ffmpeg-3.2.4-win${BITS}-shared" FFmpeg
cp -r "ffmpeg-3.2.4-win${BITS}-dev/"* FFmpeg/
rm -rf "ffmpeg-3.2.4-win${BITS}-dev"
fi
FFMPEG_SDK="`real_pwd`/FFmpeg"
add_cmake_opts -DAVCODEC_INCLUDE_DIRS="$FFMPEG_SDK/include" \
-DAVCODEC_LIBRARIES="$FFMPEG_SDK/lib/avcodec.lib" \
-DAVDEVICE_INCLUDE_DIRS="$FFMPEG_SDK/include" \
-DAVDEVICE_LIBRARIES="$FFMPEG_SDK/lib/avdevice.lib" \
-DAVFORMAT_INCLUDE_DIRS="$FFMPEG_SDK/include" \
-DAVFORMAT_LIBRARIES="$FFMPEG_SDK/lib/avformat.lib" \
-DAVUTIL_INCLUDE_DIRS="$FFMPEG_SDK/include" \
-DAVUTIL_LIBRARIES="$FFMPEG_SDK/lib/avutil.lib" \
-DPOSTPROC_INCLUDE_DIRS="$FFMPEG_SDK/include" \
-DPOSTPROC_LIBRARIES="$FFMPEG_SDK/lib/postproc.lib" \
-DSWRESAMPLE_INCLUDE_DIRS="$FFMPEG_SDK/include" \
-DSWRESAMPLE_LIBRARIES="$FFMPEG_SDK/lib/swresample.lib" \
-DSWSCALE_INCLUDE_DIRS="$FFMPEG_SDK/include" \
-DSWSCALE_LIBRARIES="$FFMPEG_SDK/lib/swscale.lib"
add_runtime_dlls `pwd`/FFmpeg/bin/{avcodec-56,avformat-56,avutil-54,swresample-1,swscale-3}.dll
export FFMPEG_HOME="$(real_pwd)/FFmpeg"
add_runtime_dlls "$(pwd)/FFmpeg/bin/"{avcodec-57,avformat-57,avutil-55,swresample-2,swscale-4}.dll
if [ $BITS -eq 32 ]; then
add_cmake_opts "-DCMAKE_EXE_LINKER_FLAGS=\"/machine:X86 /safeseh:no\""
fi
echo Done.
}
cd $DEPS
echo
# MyGUI
printf "MyGUI 3.2.2... "
{
cd $DEPS_INSTALL
if [ -d MyGUI ] && \
grep "MYGUI_VERSION_MAJOR 3" MyGUI/include/MYGUI/MyGUI_Prerequest.h > /dev/null && \
grep "MYGUI_VERSION_MINOR 2" MyGUI/include/MYGUI/MyGUI_Prerequest.h > /dev/null && \
@ -444,170 +510,151 @@ printf "MyGUI 3.2.2... "
printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then
rm -rf MyGUI
eval 7z x -y $DEPS/MyGUI-3.2.2-win$BITS.7z $STRIP
mv MyGUI-3.2.2-win$BITS MyGUI
eval 7z x -y "${DEPS}/MyGUI-3.2.2-msvc${MSVC_YEAR}-win${BITS}.7z" $STRIP
mv "MyGUI-3.2.2-msvc${MSVC_YEAR}-win${BITS}" MyGUI
fi
MYGUI_SDK="`real_pwd`/MyGUI"
add_cmake_opts -DMYGUISDK="$MYGUI_SDK" \
-DMYGUI_INCLUDE_DIRS="$MYGUI_SDK/include/MYGUI" \
-DMYGUI_PREQUEST_FILE="$MYGUI_SDK/include/MYGUI/MyGUI_Prerequest.h"
export MYGUI_HOME="$(real_pwd)/MyGUI"
if [ $CONFIGURATION == "Debug" ]; then
SUFFIX="_d"
else
SUFFIX=""
fi
add_runtime_dlls `pwd`/MyGUI/bin/$CONFIGURATION/MyGUIEngine$SUFFIX.dll
add_runtime_dlls "$(pwd)/MyGUI/bin/${CONFIGURATION}/MyGUIEngine${SUFFIX}.dll"
echo Done.
}
cd $DEPS
echo
# OpenAL
printf "OpenAL-Soft 1.16.0... "
printf "OpenAL-Soft 1.17.2... "
{
if [ -d openal-soft-1.16.0-bin ]; then
if [ -d openal-soft-1.17.2-bin ]; then
printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then
rm -rf openal-soft-1.16.0-bin
eval 7z x -y OpenAL-Soft-1.16.0.zip $STRIP
rm -rf openal-soft-1.17.2-bin
eval 7z x -y OpenAL-Soft-1.17.2.zip $STRIP
fi
OPENAL_SDK="`real_pwd`/openal-soft-1.16.0-bin"
add_cmake_opts -DOPENAL_INCLUDE_DIR="$OPENAL_SDK/include/AL" \
-DOPENAL_LIBRARY="$OPENAL_SDK/libs/Win$BITS/OpenAL32.lib"
OPENAL_SDK="$(real_pwd)/openal-soft-1.17.2-bin"
add_cmake_opts -DOPENAL_INCLUDE_DIR="${OPENAL_SDK}/include/AL" \
-DOPENAL_LIBRARY="${OPENAL_SDK}/libs/Win${BITS}/OpenAL32.lib"
add_runtime_dlls "$(pwd)/openal-soft-1.17.2-bin/bin/WIN${BITS}/soft_oal.dll:OpenAL32.dll"
echo Done.
}
cd $DEPS
echo
# OSG
printf "OSG 3.3.8... "
printf "OSG 3.4.1-scrawl... "
{
cd $DEPS_INSTALL
if [ -d OSG ] && \
grep "OPENSCENEGRAPH_MAJOR_VERSION 3" OSG/include/osg/Version > /dev/null && \
grep "OPENSCENEGRAPH_MINOR_VERSION 3" OSG/include/osg/Version > /dev/null && \
grep "OPENSCENEGRAPH_PATCH_VERSION 8" OSG/include/osg/Version > /dev/null
grep "OPENSCENEGRAPH_MINOR_VERSION 4" OSG/include/osg/Version > /dev/null && \
grep "OPENSCENEGRAPH_PATCH_VERSION 1" OSG/include/osg/Version > /dev/null
then
printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then
rm -rf OSG
eval 7z x -y $DEPS/OSG-3.3.8-win$BITS.7z $STRIP
mv OSG-3.3.8-win$BITS OSG
eval 7z x -y "${DEPS}/OSG-3.4.1-scrawl-msvc${MSVC_YEAR}-win${BITS}.7z" $STRIP
mv "OSG-3.4.1-scrawl-msvc${MSVC_YEAR}-win${BITS}" OSG
fi
OSG_SDK="`real_pwd`/OSG"
OSG_SDK="$(real_pwd)/OSG"
add_cmake_opts -DOSG_DIR="$OSG_SDK"
if [ $CONFIGURATION == "Debug" ]; then
SUFFIX="d"
else
SUFFIX=""
fi
add_runtime_dlls `pwd`/OSG/bin/{OpenThreads,zlib}$SUFFIX.dll \
`pwd`/OSG/bin/osg{,Animation,DB,FX,GA,Particle,Qt,Text,Util,Viewer}$SUFFIX.dll
add_osg_dlls `pwd`/OSG/bin/osgPlugins-3.3.8/osgdb_{bmp,dds,gif,jpeg,png,tga}$SUFFIX.dll
add_runtime_dlls "$(pwd)/OSG/bin/"{OpenThreads,zlib,libpng*}${SUFFIX}.dll \
"$(pwd)/OSG/bin/osg"{,Animation,DB,FX,GA,Particle,Text,Util,Viewer}${SUFFIX}.dll
add_osg_dlls "$(pwd)/OSG/bin/osgPlugins-3.4.1/osgdb_"{bmp,dds,jpeg,osg,png,tga}${SUFFIX}.dll
add_osg_dlls "$(pwd)/OSG/bin/osgPlugins-3.4.1/osgdb_serializers_osg"{,animation,fx,ga,particle,text,util,viewer}${SUFFIX}.dll
echo Done.
}
cd $DEPS
echo
# Qt
if [ -z $APPVEYOR ]; then
printf "Qt 4.8.6... "
printf "Qt 5.7.0... "
else
printf "Qt 5.4... "
printf "Qt 5.10 AppVeyor... "
fi
{
if [ $BITS -eq 64 ]; then
SUFFIX="_64"
else
SUFFIX=""
fi
if [ -z $APPVEYOR ]; then
cd $DEPS_INSTALL
QT_SDK="`real_pwd`/Qt"
if [ -d Qt ] && head -n2 Qt/BUILDINFO.txt | grep "4.8.6" > /dev/null; then
QT_SDK="$(real_pwd)/Qt/5.7/msvc${MSVC_YEAR}${SUFFIX}"
if [ -d Qt ] && head -n2 Qt/InstallationLog.txt | grep "5.7.0" > /dev/null; then
printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then
rm -rf Qt
eval 7z x -y $DEPS/qt$BITS-4.8.6.7z $STRIP
mv qt-4.8.6-* Qt
cd Qt
eval ./qtbinpatcher.exe $STRIP
cp "${DEPS}/qt-5-install.qs" qt-install.qs
sed -i "s|INSTALL_DIR|$(real_pwd)/Qt|" qt-install.qs
sed -i "s/qt.VERSION.winBITS_msvcYEAR/qt.57.win${BITS}_msvc${MSVC_YEAR}${SUFFIX}/" qt-install.qs
printf -- "(Installation might take a while) "
"${DEPS}/qt-5.7.0-msvc${MSVC_YEAR}-win${BITS}.exe" --script qt-install.qs --silent
mv qt-install.qs Qt/
echo Done.
printf " Cleaning up extraneous data... "
rm -r "$(real_pwd)/Qt/"{dist,Docs,Examples,Tools,vcredist,components.xml,MaintenanceTool.dat,MaintenanceTool.exe,MaintenanceTool.ini,network.xml,qt-install.qs}
fi
cd $QT_SDK
add_cmake_opts -DDESIRED_QT_VERSION=4 \
-DQT_QMAKE_EXECUTABLE="$QT_SDK/bin/qmake.exe"
add_cmake_opts -DDESIRED_QT_VERSION=5 \
-DQT_QMAKE_EXECUTABLE="${QT_SDK}/bin/qmake.exe" \
-DCMAKE_PREFIX_PATH="$QT_SDK"
if [ $CONFIGURATION == "Debug" ]; then
SUFFIX="d4"
SUFFIX="d"
else
SUFFIX="4"
SUFFIX=""
fi
add_runtime_dlls `pwd`/bin/Qt{Core,Gui,Network,OpenGL}$SUFFIX.dll
add_runtime_dlls "$(pwd)/bin/Qt5"{Core,Gui,Network,OpenGL,Widgets}${SUFFIX}.dll
add_qt_platform_dlls "$(pwd)/plugins/platforms/qwindows${SUFFIX}.dll"
echo Done.
else
if [ $BITS -eq 32 ]; then
QT_SDK="C:/Qt/5.4/msvc2013_opengl"
else
QT_SDK="C:/Qt/5.4/msvc2013_64_opengl"
fi
QT_SDK="C:/Qt/5.10/msvc${MSVC_DISPLAY_YEAR}${SUFFIX}"
add_cmake_opts -DDESIRED_QT_VERSION=5 \
-DQT_QMAKE_EXECUTABLE="$QT_SDK/bin/qmake.exe" \
-DQT_QMAKE_EXECUTABLE="${QT_SDK}/bin/qmake.exe" \
-DCMAKE_PREFIX_PATH="$QT_SDK"
echo AppVeyor.
if [ $CONFIGURATION == "Debug" ]; then
SUFFIX="d"
else
SUFFIX=""
fi
DIR=$(echo "${QT_SDK}" | sed "s,\\\\,/,g" | sed "s,\(.\):,/\\1,")
add_runtime_dlls "${DIR}/bin/Qt5"{Core,Gui,Network,OpenGL,Widgets}${SUFFIX}.dll
add_qt_platform_dlls "${DIR}/plugins/platforms/qwindows${SUFFIX}.dll"
echo Done.
fi
}
cd $DEPS
echo
# SDL2
printf "SDL 2.0.3... "
printf "SDL 2.0.7... "
{
if [ -d SDL2-2.0.3 ]; then
if [ -d SDL2-2.0.7 ]; then
printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then
rm -rf SDL2-2.0.3
eval 7z x -y SDL2-2.0.3.zip $STRIP
rm -rf SDL2-2.0.7
eval 7z x -y SDL2-2.0.7.zip $STRIP
fi
SDL_SDK="`real_pwd`/SDL2-2.0.3"
add_cmake_opts -DSDL2_INCLUDE_DIR="$SDL_SDK/include" \
-DSDL2MAIN_LIBRARY="$SDL_SDK/lib/x$ARCHSUFFIX/SDL2main.lib" \
-DSDL2_LIBRARY_PATH="$SDL_SDK/lib/x$ARCHSUFFIX/SDL2.lib"
add_runtime_dlls `pwd`/SDL2-2.0.3/lib/x$ARCHSUFFIX/SDL2.dll
export SDL2DIR="$(real_pwd)/SDL2-2.0.7"
add_runtime_dlls "$(pwd)/SDL2-2.0.7/lib/x${ARCHSUFFIX}/SDL2.dll"
echo Done.
}
echo
cd $DEPS_INSTALL/..
echo
echo "Setting up OpenMW build..."
add_cmake_opts -DBUILD_BSATOOL=no \
-DBUILD_ESMTOOL=no \
-DBUILD_MYGUI_PLUGIN=no \
-DOPENMW_MP_BUILD=on
if [ -z $CI ]; then
echo " (Outside of CI, doing full build.)"
else
if [ ! -z $CI ]; then
case $STEP in
components )
echo " Subproject: Components."
echo " Building subproject: Components."
add_cmake_opts -DBUILD_ESSIMPORTER=no \
-DBUILD_LAUNCHER=no \
-DBUILD_MWINIIMPORTER=no \
@ -616,7 +663,7 @@ else
-DBUILD_WIZARD=no
;;
openmw )
echo " Subproject: OpenMW."
echo " Building subproject: OpenMW."
add_cmake_opts -DBUILD_ESSIMPORTER=no \
-DBUILD_LAUNCHER=no \
-DBUILD_MWINIIMPORTER=no \
@ -624,7 +671,7 @@ else
-DBUILD_WIZARD=no
;;
opencs )
echo " Subproject: OpenCS."
echo " Building subproject: OpenCS."
add_cmake_opts -DBUILD_ESSIMPORTER=no \
-DBUILD_LAUNCHER=no \
-DBUILD_MWINIIMPORTER=no \
@ -632,47 +679,54 @@ else
-DBUILD_WIZARD=no
;;
misc )
echo " Subproject: Misc."
echo " Building subprojects: Misc."
add_cmake_opts -DBUILD_OPENCS=no \
-DBUILD_OPENMW=no
;;
* )
echo " Building everything."
;;
esac
fi
if [ -z $VERBOSE ]; then
printf " Configuring... "
else
echo " cmake .. $CMAKE_OPTS"
fi
run_cmd cmake .. $CMAKE_OPTS
RET=$?
if [ -z $VERBOSE ]; then
if [ $RET -eq 0 ]; then echo Done.
else echo Failed.; fi
fi
echo
# NOTE: Disable this when/if we want to run test cases
if [ -z $CI ]; then
echo "Copying Runtime DLLs..."
mkdir -p $CONFIGURATION
#if [ -z $CI ]; then
echo "- Copying Runtime DLLs..."
mkdir -p $BUILD_CONFIG
for DLL in $RUNTIME_DLLS; do
echo " `basename $DLL`."
cp "$DLL" $CONFIGURATION/
done
echo "OSG Plugin DLLs..."
mkdir -p $CONFIGURATION/osgPlugins-3.3.8
for DLL in $OSG_PLUGINS; do
echo " `basename $DLL`."
cp "$DLL" $CONFIGURATION/osgPlugins-3.3.8
TARGET="$(basename "$DLL")"
if [[ "$DLL" == *":"* ]]; then
IFS=':'; SPLIT=( ${DLL} ); unset IFS
DLL=${SPLIT[0]}
TARGET=${SPLIT[1]}
fi
echo " ${TARGET}."
cp "$DLL" "$BUILD_CONFIG/$TARGET"
done
echo
echo "- OSG Plugin DLLs..."
mkdir -p $BUILD_CONFIG/osgPlugins-3.4.1
for DLL in $OSG_PLUGINS; do
echo " $(basename $DLL)."
cp "$DLL" $BUILD_CONFIG/osgPlugins-3.4.1
done
echo
echo "- Qt Platform DLLs..."
mkdir -p ${BUILD_CONFIG}/platforms
for DLL in $QT_PLATFORMS; do
echo " $(basename $DLL)"
cp "$DLL" "${BUILD_CONFIG}/platforms"
done
echo
#fi
if [ -z $VERBOSE ]; then
printf -- "- Configuring... "
else
echo "- cmake .. $CMAKE_OPTS"
fi
run_cmd cmake .. $CMAKE_OPTS
RET=$?
if [ -z $VERBOSE ]; then
if [ $RET -eq 0 ]; then
echo Done.
else
echo Failed.
fi
fi
exit $RET

View file

@ -4,21 +4,17 @@ export CXX=clang++
export CC=clang
DEPENDENCIES_ROOT="/private/tmp/openmw-deps/openmw-deps"
QT_PATH="/usr/local/opt/qt5"
QT_PATH=`brew --prefix qt`
mkdir build
cd build
cmake \
-D PKG_CONFIG_USE_CMAKE_PREFIX_PATH=ON \
-D CMAKE_EXE_LINKER_FLAGS="-lz" \
-D CMAKE_PREFIX_PATH="$DEPENDENCIES_ROOT;$QT_PATH" \
-D CMAKE_OSX_DEPLOYMENT_TARGET="10.8" \
-D CMAKE_OSX_SYSROOT="macosx10.11" \
-D CMAKE_BUILD_TYPE=Debug \
-D CMAKE_OSX_DEPLOYMENT_TARGET="10.9" \
-D CMAKE_OSX_SYSROOT="macosx10.13" \
-D CMAKE_BUILD_TYPE=Release \
-D OPENMW_OSX_DEPLOYMENT=TRUE \
-D DESIRED_QT_VERSION=5 \
-D OSG_PLUGIN_LIB_SEARCH_PATH="$DEPENDENCIES_ROOT/lib/osgPlugins-3.4.0" \
-D BUILD_ESMTOOL=FALSE \
-D BUILD_MYGUI_PLUGIN=FALSE \
-G"Unix Makefiles" \

View file

@ -1,5 +1,13 @@
#!/bin/bash
APPVEYOR=""
CI=""
PACKAGE=""
PLATFORM=""
CONFIGURATION=""
VS_VERSION=""
if [ -z $PLATFORM ]; then
PLATFORM=`uname -m`
fi
@ -8,46 +16,70 @@ if [ -z $CONFIGURATION ]; then
CONFIGURATION="Debug"
fi
case $PLATFORM in
x32|x86|i686|i386|win32|Win32 )
BITS=32
PLATFORM=Win32
case $VS_VERSION in
14|14.0|2015 )
GENERATOR="Visual Studio 14 2015"
MSVC_YEAR="2015"
MSVC_VER="14.0"
;;
# 12|2013|
* )
GENERATOR="Visual Studio 12 2013"
MSVC_YEAR="2013"
MVSC_VER="12.0"
;;
esac
case $PLATFORM in
x64|x86_64|x86-64|win64|Win64 )
BITS=64
PLATFORM=x64
;;
* )
echo "Unknown platform $PLATFORM."
exit 1 ;;
x32|x86|i686|i386|win32|Win32 )
BITS=32
;;
esac
case $CONFIGURATION in
debug|Debug|DEBUG )
CONFIGURATION=Debug
;;
release|Release|RELEASE )
CONFIGURATION=Release
;;
relwithdebinfo|RelWithDebInfo|RELWITHDEBINFO )
CONFIGURATION=RelWithDebInfo
;;
esac
if [ -z $APPVEYOR ]; then
echo "Running $BITS-bit $CONFIGURATION build outside of Appveyor."
echo "Running ${BITS}-bit MSVC${MSVC_YEAR} ${CONFIGURATION} build outside of Appveyor."
DIR=$(echo "$0" | sed "s,\\\\,/,g" | sed "s,\(.\):,/\\1,")
cd $(dirname "$DIR")/..
else
echo "Running $BITS-bit $CONFIGURATION build in Appveyor."
echo "Running ${BITS}-bit MSVC${MSVC_YEAR} ${CONFIGURATION} build in Appveyor."
cd $APPVEYOR_BUILD_FOLDER
fi
cd build_$BITS
BUILD_DIR="MSVC${MSVC_YEAR}_${BITS}"
cd ${BUILD_DIR}
which msbuild > /dev/null
if [ $? -ne 0 ]; then
msbuild() {
/c/Program\ Files\ \(x86\)/MSBuild/12.0/Bin/MSBuild.exe "$@"
/c/Program\ Files\ \(x86\)/MSBuild/${MSVC_VER}/Bin/MSBuild.exe "$@"
}
fi
if [ -z $APPVEYOR ]; then
msbuild OpenMW.sln //t:Build //m:8
msbuild OpenMW.sln //t:Build //p:Configuration=${CONFIGURATION} //m:8
else
msbuild OpenMW.sln //t:Build //m:8 //logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
msbuild OpenMW.sln //t:Build //p:Configuration=${CONFIGURATION} //m:8 //logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
fi
RET=$?

11
CI/deploy.osx.sh Executable file
View file

@ -0,0 +1,11 @@
#!/bin/sh
cd build
DATE=`date +'%d%m%Y'`
SHORT_COMMIT=`git rev-parse --short ${TRAVIS_COMMIT}`
TARGET_FILENAME="OpenMW-${DATE}-${SHORT_COMMIT}.dmg"
if ! curl --ssl -u $OSX_FTP_USER:$OSX_FTP_PASSWORD "${OSX_FTP_URL}" --silent | grep $SHORT_COMMIT > /dev/null; then
curl --ssl --ftp-create-dirs -T *.dmg -u $OSX_FTP_USER:$OSX_FTP_PASSWORD "${OSX_FTP_URL}${TARGET_FILENAME}"
fi

View file

@ -1,3 +1,35 @@
# Apps and tools
option(BUILD_OPENMW "build OpenMW" ON)
option(BUILD_OPENMW_MP "build OpenMW-MP" ON)
option(BUILD_MASTER "build tes3mp master server" OFF)
option(BUILD_BSATOOL "build BSA extractor" ON)
option(BUILD_ESMTOOL "build ESM inspector" ON)
option(BUILD_LAUNCHER "build Launcher" ON)
option(BUILD_BROWSER "build tes3mp Server Browser" ON)
option(BUILD_MWINIIMPORTER "build MWiniImporter" ON)
option(BUILD_ESSIMPORTER "build ESS (Morrowind save game) importer" ON)
option(BUILD_OPENCS "build OpenMW Construction Set" ON)
option(BUILD_WIZARD "build Installation Wizard" ON)
option(BUILD_WITH_CODE_COVERAGE "Enable code coverage with gconv" OFF)
option(BUILD_UNITTESTS "Enable Unittests with Google C++ Unittest" OFF)
option(BUILD_NIFTEST "build nif file tester" OFF)
option(BUILD_MYGUI_PLUGIN "build MyGUI plugin for OpenMW resources, to use with MyGUI tools" ON)
option(BUILD_DOCS "build documentation." OFF )
if (NOT BUILD_LAUNCHER AND NOT BUILD_BROWSER AND NOT BUILD_OPENCS AND NOT BUILD_WIZARD)
set(USE_QT FALSE)
else()
set(USE_QT TRUE)
endif()
if (USE_QT)
set(DESIRED_QT_VERSION 4 CACHE STRING "The QT version OpenMW should use (4 or 5)")
set_property(CACHE DESIRED_QT_VERSION PROPERTY STRINGS 4 5)
endif()
# set the minimum required version across the board
cmake_minimum_required(VERSION 3.1.0)
project(OpenMW)
# If the user doesn't supply a CMAKE_BUILD_TYPE via command line, choose one for them.
@ -25,7 +57,7 @@ endif()
message(STATUS "Configuring OpenMW...")
set(OPENMW_VERSION_MAJOR 0)
set(OPENMW_VERSION_MINOR 39)
set(OPENMW_VERSION_MINOR 44)
set(OPENMW_VERSION_RELEASE 0)
set(OPENMW_VERSION_COMMITHASH "")
@ -35,17 +67,13 @@ set(OPENMW_VERSION "${OPENMW_VERSION_MAJOR}.${OPENMW_VERSION_MINOR}.${OPENMW_VER
set(GIT_CHECKOUT FALSE)
if(EXISTS ${PROJECT_SOURCE_DIR}/.git)
if(NOT EXISTS ${PROJECT_SOURCE_DIR}/.git/shallow)
find_package(Git)
find_package(Git)
if(GIT_FOUND)
set(GIT_CHECKOUT TRUE)
else(GIT_FOUND)
message(WARNING "Git executable not found")
endif(GIT_FOUND)
else(NOT EXISTS ${PROJECT_SOURCE_DIR}/.git/shallow)
message(STATUS "Shallow Git clone detected, not attempting to retrieve version info")
endif(NOT EXISTS ${PROJECT_SOURCE_DIR}/.git/shallow)
if(GIT_FOUND)
set(GIT_CHECKOUT TRUE)
else(GIT_FOUND)
message(WARNING "Git executable not found")
endif(GIT_FOUND)
endif(EXISTS ${PROJECT_SOURCE_DIR}/.git)
# Macros
@ -63,19 +91,12 @@ option(QT_STATIC "Link static build of QT into the binaries" FALSE)
option(OPENMW_UNITY_BUILD "Use fewer compilation units to speed up compile time" FALSE)
# Apps and tools
option(BUILD_OPENMW "build OpenMW" ON)
option(BUILD_BSATOOL "build BSA extractor" ON)
option(BUILD_ESMTOOL "build ESM inspector" ON)
option(BUILD_LAUNCHER "build Launcher" ON)
option(BUILD_MWINIIMPORTER "build MWiniImporter" ON)
option(BUILD_ESSIMPORTER "build ESS (Morrowind save game) importer" ON)
option(BUILD_OPENCS "build OpenMW Construction Set" ON)
option(BUILD_WIZARD "build Installation Wizard" ON)
option(BUILD_WITH_CODE_COVERAGE "Enable code coverage with gconv" OFF)
option(BUILD_UNITTESTS "Enable Unittests with Google C++ Unittest" OFF)
option(BUILD_NIFTEST "build nif file tester" OFF)
option(BUILD_MYGUI_PLUGIN "build MyGUI plugin for OpenMW resources, to use with MyGUI tools" ON)
# what is necessary to build documentation
IF( BUILD_DOCS )
# Builds the documentation.
FIND_PACKAGE( Sphinx REQUIRED )
FIND_PACKAGE( Doxygen REQUIRED )
ENDIF()
# OS X deployment
option(OPENMW_OSX_DEPLOYMENT OFF)
@ -88,7 +109,7 @@ endif()
# Set up common paths
if (APPLE)
set(MORROWIND_DATA_FILES "./data" CACHE PATH "location of Morrowind data files")
set(OPENMW_RESOURCE_FILES "./resources" CACHE PATH "location of OpenMW resources files")
set(OPENMW_RESOURCE_FILES "../Resources/resources" CACHE PATH "location of OpenMW resources files")
elseif(UNIX)
# Paths
SET(BINDIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Where to install binaries")
@ -116,16 +137,13 @@ if (WIN32)
option(USE_DEBUG_CONSOLE "whether a debug console should be enabled for debug builds, if false debug output is redirected to Visual Studio output" ON)
endif()
if (NOT BUILD_LAUNCHER AND NOT BUILD_OPENCS AND NOT BUILD_WIZARD)
set(USE_QT FALSE)
else()
set(USE_QT TRUE)
endif()
find_package(RakNet REQUIRED)
include_directories(${RakNet_INCLUDES})
# Dependencies
find_package(OpenGL REQUIRED)
if (USE_QT)
set(DESIRED_QT_VERSION 4 CACHE STRING "The QT version OpenMW should use (4 or 5)")
set_property(CACHE DESIRED_QT_VERSION PROPERTY STRINGS 4 5)
message(STATUS "Using Qt${DESIRED_QT_VERSION}")
if (DESIRED_QT_VERSION MATCHES 4)
@ -140,41 +158,20 @@ if (USE_QT)
endif()
endif()
if (USE_QT AND DESIRED_QT_VERSION MATCHES 5)
# 2.8.11+ is required to make Qt5 happy and allow linking QtMain on Windows.
cmake_minimum_required(VERSION 2.8.11)
else()
# We probably support older versions than this.
cmake_minimum_required(VERSION 2.6)
endif()
# Sound setup
unset(FFMPEG_LIBRARIES CACHE)
find_package(FFmpeg REQUIRED)
set (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} ${SWSCALE_LIBRARY} ${SWRESAMPLE_LIBRARIES})
if ( NOT AVCODEC_FOUND OR NOT AVFORMAT_FOUND OR NOT AVUTIL_FOUND OR NOT SWSCALE_FOUND OR NOT SWRESAMPLE_FOUND)
message(FATAL_ERROR "FFmpeg component required, but not found!")
endif()
# Required for building the FFmpeg headers
add_definitions(-D__STDC_CONSTANT_MACROS)
IF(BUILD_OPENMW OR BUILD_OPENCS)
# Sound setup
find_package(FFmpeg REQUIRED COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE SWRESAMPLE)
# Required for building the FFmpeg headers
add_definitions(-D__STDC_CONSTANT_MACROS)
# TinyXML
option(USE_SYSTEM_TINYXML "Use system TinyXML library instead of internal." OFF)
if(USE_SYSTEM_TINYXML)
find_library(TINYXML_LIBRARIES tinyxml)
find_path(TINYXML_INCLUDE_DIR tinyxml.h)
message(STATUS "Found TinyXML: ${TINYXML_LIBRARIES} ${TINYXML_INCLUDE_DIR}")
if (USE_SYSTEM_TINYXML)
find_package(TinyXML REQUIRED)
add_definitions (-DTIXML_USE_STL)
if(TINYXML_LIBRARIES AND TINYXML_INCLUDE_DIR)
include_directories(${TINYXML_INCLUDE_DIR})
message(STATUS "Using system TinyXML library.")
else()
message(FATAL_ERROR "Detection of system TinyXML incomplete.")
endif()
include_directories(SYSTEM ${TinyXML_INCLUDE_DIRS})
endif()
ENDIF(BUILD_OPENMW OR BUILD_OPENCS)
# Platform specific
if (WIN32)
@ -190,11 +187,10 @@ if (WIN32)
add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN)
endif()
option(OPENGL_ES "enable opengl es support" FALSE )
if (OPENGL_ES)
add_definitions(-DOPENGL_ES)
endif(OPENGL_ES)
if (NOT WIN32 AND BUILD_WIZARD) # windows users can just run the morrowind installer
find_package(LIBUNSHIELD REQUIRED) # required only for non win32 when building openmw-wizard
set(OPENMW_USE_UNSHIELD TRUE)
endif()
# Fix for not visible pthreads functions for linker with glibc 2.15
if (UNIX AND NOT APPLE)
@ -209,14 +205,57 @@ if(NOT HAVE_STDINT_H)
message(FATAL_ERROR "stdint.h was not found" )
endif()
include (CheckIncludeFileCXX)
check_include_file_cxx(unordered_map HAVE_UNORDERED_MAP)
if (HAVE_UNORDERED_MAP)
add_definitions(-DHAVE_UNORDERED_MAP)
endif ()
IF(BUILD_OPENMW OR BUILD_OPENCS)
find_package(OpenSceneGraph 3.3.4 REQUIRED osgDB osgViewer osgText osgGA osgParticle osgUtil osgFX)
include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS})
set(USED_OSG_PLUGINS
osgdb_bmp
osgdb_dds
osgdb_jpeg
osgdb_osg
osgdb_png
osgdb_serializers_osg
osgdb_tga
)
get_filename_component(OSG_LIB_DIR ${OSGDB_LIBRARY} DIRECTORY)
set(OSGPlugins_LIB_DIR "${OSG_LIB_DIR}/osgPlugins-${OPENSCENEGRAPH_VERSION}")
if(OSG_STATIC)
add_definitions(-DOSG_LIBRARY_STATIC)
find_package(OSGPlugins REQUIRED COMPONENTS ${USED_OSG_PLUGINS})
list(APPEND OPENSCENEGRAPH_LIBRARIES ${OSGPlugins_LIBRARIES})
endif()
if(QT_STATIC)
if(WIN32)
if(DESIRED_QT_VERSION MATCHES 4)
# QtCore needs WSAAsyncSelect from Ws2_32.lib
set(QT_QTCORE_LIBRARY ${QT_QTCORE_LIBRARY} Ws2_32.lib)
message("QT_QTCORE_LIBRARY: ${QT_QTCORE_LIBRARY}")
endif()
endif()
endif()
set(REQUIRED_BULLET_VERSION 286) # Bullet 286 required due to runtime bugfixes for btCapsuleShape
if (DEFINED ENV{TRAVIS_BRANCH} OR DEFINED ENV{APPVEYOR})
set(REQUIRED_BULLET_VERSION 283) # but for build testing, 283 is fine
endif()
find_package(MyGUI 3.2.1 REQUIRED)
find_package(SDL2 REQUIRED)
find_package(OpenAL REQUIRED)
find_package(Bullet ${REQUIRED_BULLET_VERSION} REQUIRED COMPONENTS BulletCollision LinearMath)
ELSE()
include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS}) # HACK: DO NOT MOVE THIS. Used for server only build, kept here to avoid merge conflicts above.
ENDIF(BUILD_OPENMW OR BUILD_OPENCS)
set(BOOST_COMPONENTS system filesystem program_options thread)
set(BOOST_COMPONENTS system filesystem program_options)
if(WIN32)
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} locale)
endif(WIN32)
@ -225,91 +264,18 @@ IF(BOOST_STATIC)
set(Boost_USE_STATIC_LIBS ON)
endif()
find_package(OpenSceneGraph 3.3.4 REQUIRED osgDB osgViewer osgText osgGA osgAnimation osgParticle osgUtil osgFX)
include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS})
if(OSG_STATIC)
macro(use_static_osg_plugin_library PLUGIN_NAME)
set(PLUGIN_NAME_DBG ${PLUGIN_NAME}d ${PLUGIN_NAME}D ${PLUGIN_NAME}_d ${PLUGIN_NAME}_D ${PLUGIN_NAME}_debug ${PLUGIN_NAME})
# For now, users wishing to do a static build will need to pass the path to where the plugins reside
# More clever logic would need to deduce the path, probably installed under <OpenSceneGraph>/lib/osgPlugins-<X.X.X>
find_library(${PLUGIN_NAME}_LIBRARY_REL NAMES ${PLUGIN_NAME} HINTS ${OSG_PLUGIN_LIB_SEARCH_PATH})
find_library(${PLUGIN_NAME}_LIBRARY_DBG NAMES ${PLUGIN_NAME_DBG} HINTS ${OSG_PLUGIN_LIB_SEARCH_PATH})
make_library_set(${PLUGIN_NAME}_LIBRARY)
if("${${PLUGIN_NAME}_LIBRARY}" STREQUAL "")
message(FATAL_ERROR "Unable to find static OpenSceneGraph plugin: ${PLUGIN_NAME}")
endif()
set(OPENSCENEGRAPH_LIBRARIES ${OPENSCENEGRAPH_LIBRARIES} ${${PLUGIN_NAME}_LIBRARY})
endmacro()
macro(use_static_osg_plugin_dep DEPENDENCY)
find_package(${DEPENDENCY} REQUIRED)
set(OPENSCENEGRAPH_LIBRARIES ${OPENSCENEGRAPH_LIBRARIES} ${${DEPENDENCY}_LIBRARIES})
endmacro()
add_definitions(-DOSG_LIBRARY_STATIC)
set(PLUGIN_LIST
osgdb_png # depends on libpng, zlib
osgdb_tga
osgdb_dds
osgdb_jpeg # depends on libjpeg
)
foreach(PLUGIN ${PLUGIN_LIST})
use_static_osg_plugin_library(${PLUGIN})
endforeach()
# OSG static plugins need to linked against their respective dependencies
set(PLUGIN_DEPS_LIST
PNG # needed by osgdb_png
ZLIB # needed by osgdb_png
JPEG # needed by osgdb_jpeg
)
foreach(DEPENDENCY ${PLUGIN_DEPS_LIST})
use_static_osg_plugin_dep(${DEPENDENCY})
endforeach()
endif()
if(QT_STATIC)
if(WIN32)
if(DESIRED_QT_VERSION MATCHES 4)
# QtCore needs WSAAsyncSelect from Ws2_32.lib
set(QT_QTCORE_LIBRARY ${QT_QTCORE_LIBRARY} Ws2_32.lib)
message("QT_QTCORE_LIBRARY: ${QT_QTCORE_LIBRARY}")
endif()
endif()
endif()
find_package(MyGUI REQUIRED)
if (${MYGUI_VERSION} VERSION_LESS "3.2.1")
message(FATAL_ERROR "OpenMW requires MyGUI 3.2.1 or later, please install the latest version from http://mygui.info")
endif()
find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS})
find_package(SDL2 REQUIRED)
find_package(OpenAL REQUIRED)
find_package(Bullet REQUIRED)
if (NOT BULLET_FOUND OR BULLET_VERSION VERSION_LESS 283)
message(FATAL_ERROR "OpenMW requires Bullet version 2.83 or later")
endif()
include_directories("."
SYSTEM
${SDL2_INCLUDE_DIR}
${Boost_INCLUDE_DIR}
${MYGUI_INCLUDE_DIRS}
${MyGUI_INCLUDE_DIRS}
${OPENAL_INCLUDE_DIR}
${BULLET_INCLUDE_DIRS}
${Bullet_INCLUDE_DIRS}
)
link_directories(${SDL2_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS} ${MYGUI_LIB_DIR})
link_directories(${SDL2_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS})
if(MYGUI_STATIC)
add_definitions(-DMYGUI_STATIC)
@ -326,6 +292,11 @@ endif (APPLE)
# Set up DEBUG define
set_directory_properties(PROPERTIES COMPILE_DEFINITIONS_DEBUG DEBUG=1)
if (NOT APPLE)
set(OPENMW_MYGUI_FILES_ROOT ${OpenMW_BINARY_DIR})
set(OPENMW_SHADERS_ROOT ${OpenMW_BINARY_DIR})
endif ()
add_subdirectory(files/)
# Specify build paths
@ -344,50 +315,72 @@ endif (APPLE)
# Other files
configure_file(${OpenMW_SOURCE_DIR}/files/settings-default.cfg
"${OpenMW_BINARY_DIR}/settings-default.cfg")
configure_resource_file(${OpenMW_SOURCE_DIR}/files/tes3mp/tes3mp-client-default.cfg
"${OpenMW_BINARY_DIR}" "tes3mp-client-default.cfg")
configure_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg.local
"${OpenMW_BINARY_DIR}/openmw.cfg")
configure_resource_file(${OpenMW_SOURCE_DIR}/files/tes3mp/tes3mp-server-default.cfg
"${OpenMW_BINARY_DIR}" "tes3mp-server-default.cfg")
configure_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg
"${OpenMW_BINARY_DIR}/openmw.cfg.install")
configure_resource_file(${OpenMW_SOURCE_DIR}/files/settings-default.cfg
"${OpenMW_BINARY_DIR}" "settings-default.cfg")
configure_file(${OpenMW_SOURCE_DIR}/files/openmw-cs.cfg
"${OpenMW_BINARY_DIR}/openmw-cs.cfg")
if (NOT APPLE)
configure_resource_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg.local
"${OpenMW_BINARY_DIR}" "openmw.cfg")
configure_resource_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg
"${OpenMW_BINARY_DIR}" "openmw.cfg.install")
else ()
configure_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg
"${OpenMW_BINARY_DIR}/openmw.cfg")
endif ()
configure_file(${OpenMW_SOURCE_DIR}/files/opencs/defaultfilters
"${OpenMW_BINARY_DIR}/resources/defaultfilters" COPYONLY)
configure_resource_file(${OpenMW_SOURCE_DIR}/files/openmw-cs.cfg
"${OpenMW_BINARY_DIR}" "openmw-cs.cfg")
configure_file(${OpenMW_SOURCE_DIR}/files/gamecontrollerdb.txt
"${OpenMW_BINARY_DIR}/gamecontrollerdb.txt")
# Needs the copy version because the configure version assumes the end of the file has been reached when a null character is reached and there are no CMake expressions to evaluate.
copy_resource_file(${OpenMW_SOURCE_DIR}/files/opencs/defaultfilters
"${OpenMW_BINARY_DIR}" "resources/defaultfilters")
configure_resource_file(${OpenMW_SOURCE_DIR}/files/gamecontrollerdb.txt
"${OpenMW_BINARY_DIR}" "gamecontrollerdb.txt")
configure_resource_file(${OpenMW_SOURCE_DIR}/files/gamecontrollerdb_204.txt
"${OpenMW_BINARY_DIR}" "gamecontrollerdb_204.txt")
configure_resource_file(${OpenMW_SOURCE_DIR}/files/gamecontrollerdb_205.txt
"${OpenMW_BINARY_DIR}" "gamecontrollerdb_205.txt")
if (NOT WIN32 AND NOT APPLE)
configure_file(${OpenMW_SOURCE_DIR}/files/openmw.desktop
"${OpenMW_BINARY_DIR}/openmw.desktop")
configure_file(${OpenMW_SOURCE_DIR}/files/openmw.appdata.xml
"${OpenMW_BINARY_DIR}/openmw.appdata.xml")
configure_file(${OpenMW_SOURCE_DIR}/files/tes3mp-browser.desktop
"${OpenMW_BINARY_DIR}/tes3mp-browser.desktop")
configure_file(${OpenMW_SOURCE_DIR}/files/openmw-cs.desktop
"${OpenMW_BINARY_DIR}/openmw-cs.desktop")
endif()
# CXX Compiler settings
set(CMAKE_CXX_STANDARD 14)
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wundef -Wno-unused-parameter -std=c++98 -pedantic -Wno-long-long")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wundef -Wno-unused-parameter -pedantic -Wno-long-long")
add_definitions( -DBOOST_NO_CXX11_SCOPED_ENUMS=ON )
if (APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++")
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL Clang AND NOT APPLE)
execute_process(COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE CLANG_VERSION)
string(REGEX REPLACE ".*version ([0-9\\.]*).*" "\\1" CLANG_VERSION ${CLANG_VERSION})
if ("${CLANG_VERSION}" VERSION_GREATER 3.6 OR "${CLANG_VERSION}" VERSION_EQUAL 3.6)
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 3.6 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 3.6)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-potentially-evaluated-expression")
endif ("${CLANG_VERSION}" VERSION_GREATER 3.6 OR "${CLANG_VERSION}" VERSION_EQUAL 3.6)
endif(CMAKE_CXX_COMPILER_ID STREQUAL Clang AND NOT APPLE)
endif ()
endif()
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION)
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU AND "${GCC_VERSION}" VERSION_GREATER 4.6 OR "${GCC_VERSION}" VERSION_EQUAL 4.6)
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.6 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.6)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-but-set-parameter")
endif(CMAKE_CXX_COMPILER_ID STREQUAL GNU AND "${GCC_VERSION}" VERSION_GREATER 4.6 OR "${GCC_VERSION}" VERSION_EQUAL 4.6)
endif()
elseif (MSVC)
# Enable link-time code generation globally for all linking
if (OPENMW_LTO_BUILD)
@ -405,11 +398,17 @@ IF(NOT WIN32 AND NOT APPLE)
# Install binaries
IF(BUILD_OPENMW)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw" DESTINATION "${BINDIR}" )
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/tes3mp" DESTINATION "${BINDIR}" )
ENDIF(BUILD_OPENMW)
IF(BUILD_OPENMW_MP)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/tes3mp-server" DESTINATION "${BINDIR}")
ENDIF(BUILD_OPENMW_MP)
IF(BUILD_LAUNCHER)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw-launcher" DESTINATION "${BINDIR}" )
ENDIF(BUILD_LAUNCHER)
IF(BUILD_BROWSER)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/tes3mp-browser" DESTINATION "${BINDIR}" )
ENDIF(BUILD_BROWSER)
IF(BUILD_BSATOOL)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/bsatool" DESTINATION "${BINDIR}" )
ENDIF(BUILD_BSATOOL)
@ -436,12 +435,15 @@ IF(NOT WIN32 AND NOT APPLE)
#ENDIF(BUILD_MYGUI_PLUGIN)
# Install licenses
INSTALL(FILES "docs/license/DejaVu Font License.txt" DESTINATION "${LICDIR}" )
INSTALL(FILES "files/mygui/DejaVu Font License.txt" DESTINATION "${LICDIR}" )
# Install icon and desktop file
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.desktop" DESTINATION "${DATAROOTDIR}/applications" COMPONENT "openmw")
INSTALL(FILES "${OpenMW_SOURCE_DIR}/files/launcher/images/openmw.png" DESTINATION "${ICONDIR}" COMPONENT "openmw")
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.appdata.xml" DESTINATION "${DATAROOTDIR}/appdata" COMPONENT "openmw")
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.appdata.xml" DESTINATION "${DATAROOTDIR}/metainfo" COMPONENT "openmw")
IF(BUILD_BROWSER)
INSTALL(FILES "${OpenMW_BINARY_DIR}/tes3mp-browser.desktop" DESTINATION "${DATAROOTDIR}/applications" COMPONENT "browser")
ENDIF(BUILD_BROWSER)
IF(BUILD_OPENCS)
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw-cs.desktop" DESTINATION "${DATAROOTDIR}/applications" COMPONENT "opencs")
INSTALL(FILES "${OpenMW_SOURCE_DIR}/files/opencs/openmw-cs.png" DESTINATION "${ICONDIR}" COMPONENT "opencs")
@ -452,6 +454,14 @@ IF(NOT WIN32 AND NOT APPLE)
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" DESTINATION "${SYSCONFDIR}" RENAME "openmw.cfg" COMPONENT "openmw")
INSTALL(FILES "${OpenMW_BINARY_DIR}/resources/version" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw")
INSTALL(FILES "${OpenMW_BINARY_DIR}/gamecontrollerdb.txt" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw")
INSTALL(FILES "${OpenMW_BINARY_DIR}/gamecontrollerdb_204.txt" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw")
INSTALL(FILES "${OpenMW_BINARY_DIR}/gamecontrollerdb_205.txt" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw")
INSTALL(FILES "${OpenMW_BINARY_DIR}/tes3mp-client-default.cfg" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw")
#INSTALL(FILES "${OpenMW_BINARY_DIR}/tes3mp-client.install" DESTINATION "${SYSCONFDIR}" RENAME "tes3mp-client.cfg" COMPONENT "openmw")
INSTALL(FILES "${OpenMW_BINARY_DIR}/tes3mp-server-default.cfg" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw-mp")
#INSTALL(FILES "${OpenMW_BINARY_DIR}/tes3mp-server.install" DESTINATION "${SYSCONFDIR}" RENAME "tes3mp-server.cfg" COMPONENT "openmw-mp")
#They both do not exist
IF(BUILD_OPENCS)
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw-cs.cfg" DESTINATION "${SYSCONFDIR}" COMPONENT "opencs")
@ -463,42 +473,46 @@ IF(NOT WIN32 AND NOT APPLE)
ENDIF(NOT WIN32 AND NOT APPLE)
if(WIN32)
FILE(GLOB dll_files "${OpenMW_BINARY_DIR}/Release/*.dll")
INSTALL(FILES ${dll_files} DESTINATION ".")
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" DESTINATION "." RENAME "openmw.cfg")
FILE(GLOB dll_files_debug "${OpenMW_BINARY_DIR}/Debug/*.dll")
FILE(GLOB dll_files_release "${OpenMW_BINARY_DIR}/Release/*.dll")
INSTALL(FILES ${dll_files_debug} DESTINATION "." CONFIGURATIONS Debug)
INSTALL(FILES ${dll_files_release} DESTINATION "." CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Debug/openmw.cfg.install" DESTINATION "." RENAME "openmw.cfg" CONFIGURATIONS Debug)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Release/openmw.cfg.install" DESTINATION "." RENAME "openmw.cfg" CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
INSTALL(FILES "${OpenMW_SOURCE_DIR}/CHANGELOG.md" DESTINATION "." RENAME "CHANGELOG.txt")
INSTALL(FILES "${OpenMW_SOURCE_DIR}/README.md" DESTINATION "." RENAME "README.txt")
INSTALL(FILES "${OpenMW_SOURCE_DIR}/LICENSE" DESTINATION "." RENAME "LICENSE.txt")
INSTALL(FILES
"${OpenMW_SOURCE_DIR}/Docs/license/GPL3.txt"
"${OpenMW_SOURCE_DIR}/Docs/license/DejaVu Font License.txt"
"${OpenMW_BINARY_DIR}/settings-default.cfg"
"${OpenMW_BINARY_DIR}/gamecontrollerdb.txt"
"${OpenMW_BINARY_DIR}/Release/openmw.exe"
"${OpenMW_SOURCE_DIR}/files/mygui/DejaVu Font License.txt"
DESTINATION ".")
INSTALL(FILES "${OpenMW_BINARY_DIR}/Debug/settings-default.cfg" DESTINATION "." CONFIGURATIONS Debug)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Release/settings-default.cfg" DESTINATION "." CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Debug/tes3mp-client-default.cfg" DESTINATION "." CONFIGURATIONS Debug)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Release/tes3mp-client-default.cfg" DESTINATION "." CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Debug/gamecontrollerdb.txt" DESTINATION "." CONFIGURATIONS Debug)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Release/gamecontrollerdb.txt" DESTINATION "." CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Debug/gamecontrollerdb_204.txt" DESTINATION "." CONFIGURATIONS Debug)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Release/gamecontrollerdb_204.txt" DESTINATION "." CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Debug/gamecontrollerdb_205.txt" DESTINATION "." CONFIGURATIONS Debug)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Release/gamecontrollerdb_205.txt" DESTINATION "." CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
IF(BUILD_LAUNCHER)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/openmw-launcher.exe" DESTINATION ".")
ENDIF(BUILD_LAUNCHER)
IF(BUILD_MWINIIMPORTER)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/openmw-iniimporter.exe" DESTINATION ".")
ENDIF(BUILD_MWINIIMPORTER)
IF(BUILD_ESSIMPORTER)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/openmw-essimporter.exe" DESTINATION ".")
ENDIF(BUILD_ESSIMPORTER)
IF(BUILD_OPENCS)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/openmw-cs.exe" DESTINATION ".")
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw-cs.cfg" DESTINATION ".")
ENDIF(BUILD_OPENCS)
IF(BUILD_WIZARD)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/openmw-wizard.exe" DESTINATION ".")
ENDIF(BUILD_WIZARD)
if(BUILD_MYGUI_PLUGIN)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/Plugin_MyGUI_OpenMW_Resources.dll" DESTINATION ".")
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Debug/Plugin_MyGUI_OpenMW_Resources.dll" DESTINATION "." CONFIGURATIONS Debug)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/Plugin_MyGUI_OpenMW_Resources.dll" DESTINATION "." CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
ENDIF(BUILD_MYGUI_PLUGIN)
INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/resources" DESTINATION ".")
FILE(GLOB plugin_dir "${OpenMW_BINARY_DIR}/Release/osgPlugins-*")
INSTALL(DIRECTORY ${plugin_dir} DESTINATION ".")
IF(DESIRED_QT_VERSION MATCHES 5)
INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/Debug/platforms" DESTINATION "." CONFIGURATIONS Debug)
INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/Release/platforms" DESTINATION "." CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
ENDIF()
INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/Debug/resources" DESTINATION "." CONFIGURATIONS Debug)
INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/Release/resources" DESTINATION "." CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
FILE(GLOB plugin_dir_debug "${OpenMW_BINARY_DIR}/Debug/osgPlugins-*")
FILE(GLOB plugin_dir_release "${OpenMW_BINARY_DIR}/Release/osgPlugins-*")
INSTALL(DIRECTORY ${plugin_dir_debug} DESTINATION "." CONFIGURATIONS Debug)
INSTALL(DIRECTORY ${plugin_dir_release} DESTINATION "." CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
SET(CPACK_GENERATOR "NSIS")
SET(CPACK_PACKAGE_NAME "OpenMW")
@ -511,6 +525,9 @@ if(WIN32)
IF(BUILD_LAUNCHER)
SET(CPACK_PACKAGE_EXECUTABLES "${CPACK_PACKAGE_EXECUTABLES};openmw-launcher;OpenMW Launcher")
ENDIF(BUILD_LAUNCHER)
IF(BUILD_BROWSER)
SET(CPACK_PACKAGE_EXECUTABLES "${CPACK_PACKAGE_EXECUTABLES};tes3mp-browser;tes3mp Launcher")
ENDIF(BUILD_BROWSER)
IF(BUILD_OPENCS)
SET(CPACK_PACKAGE_EXECUTABLES "${CPACK_PACKAGE_EXECUTABLES};openmw-cs;OpenMW Construction Set")
ENDIF(BUILD_OPENCS)
@ -526,11 +543,12 @@ if(WIN32)
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${OpenMW_SOURCE_DIR}/README.md")
SET(CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
SET(CPACK_NSIS_DISPLAY_NAME "OpenMW ${OPENMW_VERSION}")
SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.openmw.org")
SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.openmw.org")
SET(CPACK_NSIS_HELP_LINK "https:\\\\\\\\www.openmw.org")
SET(CPACK_NSIS_URL_INFO_ABOUT "https:\\\\\\\\www.openmw.org")
SET(CPACK_NSIS_INSTALLED_ICON_NAME "openmw-launcher.exe")
SET(CPACK_NSIS_MUI_ICON "${OpenMW_SOURCE_DIR}/files/windows/openmw.ico")
SET(CPACK_NSIS_MUI_UNIICON "${OpenMW_SOURCE_DIR}/files/windows/openmw.ico")
SET(CPACK_NSIS_MUI_FINISHPAGE_RUN "openmw-launcher.exe")
SET(CPACK_NSIS_MUI_ICON "${OpenMW_SOURCE_DIR}/files/tes3mp/tes3mp.ico")
SET(CPACK_NSIS_MUI_UNIICON "${OpenMW_SOURCE_DIR}/files/tes3mp/tes3mp.ico")
SET(CPACK_PACKAGE_ICON "${OpenMW_SOURCE_DIR}\\\\files\\\\openmw.bmp")
SET(VCREDIST32 "${OpenMW_BINARY_DIR}/vcredist_x86.exe")
@ -560,21 +578,26 @@ if(WIN32)
endif(WIN32)
# Extern
IF(BUILD_OPENMW OR BUILD_OPENCS)
add_subdirectory (extern/osg-ffmpeg-videoplayer)
add_subdirectory (extern/oics)
if (USE_QT)
if (BUILD_OPENCS)
add_subdirectory (extern/osgQt)
endif()
ENDIF(BUILD_OPENMW OR BUILD_OPENCS)
# Components
add_subdirectory (components)
# Plugins
#if (BUILD_MYGUI_PLUGIN)
# add_subdirectory(plugins/mygui_resource_plugin)
#endif()
# Apps and tools
if (BUILD_OPENMW_MP)
add_subdirectory( apps/openmw-mp )
endif()
if (BUILD_MASTER)
add_subdirectory( apps/master )
endif()
if (BUILD_OPENMW)
add_subdirectory( apps/openmw )
endif()
@ -591,6 +614,10 @@ if (BUILD_LAUNCHER)
add_subdirectory( apps/launcher )
endif()
if (BUILD_BROWSER)
add_subdirectory( apps/browser )
endif()
if (BUILD_MWINIIMPORTER)
add_subdirectory( apps/mwiniimporter )
endif()
@ -629,20 +656,20 @@ if (WIN32)
endforeach( OUTPUTCONFIG )
if (USE_DEBUG_CONSOLE AND BUILD_OPENMW)
set_target_properties(openmw PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE")
set_target_properties(openmw PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE")
set_target_properties(openmw PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE")
set_target_properties(tes3mp PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE")
set_target_properties(tes3mp PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE")
set_target_properties(tes3mp PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE")
elseif (BUILD_OPENMW)
# Turn off debug console, debug output will be written to visual studio output instead
set_target_properties(openmw PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:WINDOWS")
set_target_properties(openmw PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:WINDOWS")
set_target_properties(tes3mp PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:WINDOWS")
set_target_properties(tes3mp PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:WINDOWS")
endif()
if (BUILD_OPENMW)
# Release builds use the debug console
set_target_properties(openmw PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:CONSOLE")
set_target_properties(openmw PROPERTIES COMPILE_DEFINITIONS_RELEASE "_CONSOLE")
set_target_properties(openmw PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:CONSOLE")
# Release builds don't use the debug console
set_target_properties(tes3mp PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
set_target_properties(tes3mp PROPERTIES COMPILE_DEFINITIONS_RELEASE "_WINDOWS")
set_target_properties(tes3mp PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS")
endif()
# Play a bit with the warning levels
@ -653,7 +680,8 @@ if (WIN32)
# Warnings that aren't enabled normally and don't need to be enabled
# They're unneeded and sometimes completely retarded warnings that /Wall enables
# Not going to bother commenting them as they tend to warn on every standard library file
4061 4263 4264 4266 4350 4371 4435 4514 4548 4571 4610 4619 4623 4625 4626 4628 4640 4668 4710 4711 4820 4826 4917 4946
4061 4263 4264 4266 4350 4371 4435 4514 4548 4571 4610 4619 4623 4625
4626 4628 4640 4668 4710 4711 4768 4820 4826 4917 4946 5032 5039 5045
# Warnings that are thrown on standard libraries and not OpenMW
4347 # Non-template function with same name and parameter count as template function
@ -661,13 +689,21 @@ if (WIN32)
4510 4512 # Unable to generate copy constructor/assignment operator as it's not public in the base
4706 # Assignment in conditional expression
4738 # Storing 32-bit float result in memory, possible loss of performance
4774 # Format string expected in argument is not a string literal
4986 # Undocumented warning that occurs in the crtdbg.h file
4987 # nonstandard extension used (triggered by setjmp.h)
4996 # Function was declared deprecated
# caused by OSG
4589 # Constructor of abstract class 'osg::Operation' ignores initializer for virtual base class 'osg::Referenced' (False warning)
# caused by boost
4191 # 'type cast' : unsafe conversion (1.56, thread_primitives.hpp, normally off)
# caused by MyGUI
4275 # non dll-interface class 'std::exception' used as base for dll-interface class 'MyGUI::Exception'
4297 # function assumed not to throw an exception but does
# OpenMW specific warnings
4099 # Type mismatch, declared class or struct is defined with other type
4100 # Unreferenced formal parameter (-Wunused-parameter)
@ -681,20 +717,29 @@ if (WIN32)
4309 # Variable overflow, trying to store 128 in a signed char for example
4351 # New behavior: elements of array 'array' will be default initialized (desired behavior)
4355 # Using 'this' in member initialization list
4464 # relative include path contains '..'
4505 # Unreferenced local function has been removed
4701 # Potentially uninitialized local variable used
4702 # Unreachable code
4714 # function 'QString QString::trimmed(void) &&' marked as __forceinline not inlined
4800 # Boolean optimization warning, e.g. myBool = (myInt != 0) instead of myBool = myInt
)
if (MSVC_VERSION GREATER 1800)
set(WARNINGS_DISABLE ${WARNINGS_DISABLE} 5026 5027
5031 # #pragma warning(pop): likely mismatch, popping warning state pushed in different file (config_begin.hpp, config_end.hpp)
)
endif()
foreach(d ${WARNINGS_DISABLE})
set(WARNINGS "${WARNINGS} /wd${d}")
endforeach(d)
set_target_properties(components PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
# oics uses tinyxml, which has an initialized but unused variable
set_target_properties(oics PROPERTIES COMPILE_FLAGS "${WARNINGS} /wd4189 ${MT_BUILD}")
set_target_properties(osg-ffmpeg-videoplayer PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
if (BUILD_OPENMW)
set_target_properties(osg-ffmpeg-videoplayer PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
if (BUILD_BSATOOL)
set_target_properties(bsatool PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
@ -712,6 +757,10 @@ if (WIN32)
set_target_properties(openmw-launcher PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
if (BUILD_BROWSER)
set_target_properties(tes3mp-browser PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
if (BUILD_MWINIIMPORTER)
set_target_properties(openmw-iniimporter PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
@ -721,7 +770,11 @@ if (WIN32)
endif()
if (BUILD_OPENMW)
set_target_properties(openmw PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
if (OPENMW_UNITY_BUILD)
set_target_properties(tes3mp PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD} /bigobj")
else()
set_target_properties(tes3mp PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
endif()
if (BUILD_WIZARD)
@ -730,32 +783,27 @@ if (WIN32)
endif(MSVC)
# TODO: At some point release builds should not use the console but rather write to a log file
#set_target_properties(openmw PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
#set_target_properties(openmw PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS")
#set_target_properties(tes3mp PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
#set_target_properties(tes3mp PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS")
endif()
# Apple bundling
if (APPLE)
if (OPENMW_OSX_DEPLOYMENT AND APPLE AND DESIRED_QT_VERSION MATCHES 5)
get_property(QT_COCOA_PLUGIN_PATH TARGET Qt5::QCocoaIntegrationPlugin PROPERTY LOCATION_RELEASE)
get_filename_component(QT_COCOA_PLUGIN_DIR "${QT_COCOA_PLUGIN_PATH}" DIRECTORY)
get_filename_component(QT_COCOA_PLUGIN_GROUP "${QT_COCOA_PLUGIN_DIR}" NAME)
get_filename_component(QT_COCOA_PLUGIN_NAME "${QT_COCOA_PLUGIN_PATH}" NAME)
configure_file("${QT_COCOA_PLUGIN_PATH}" "${APP_BUNDLE_DIR}/Contents/MacOS/${QT_COCOA_PLUGIN_GROUP}/${QT_COCOA_PLUGIN_NAME}" COPYONLY)
configure_file("${QT_COCOA_PLUGIN_PATH}" "${APP_BUNDLE_DIR}/Contents/PlugIns/${QT_COCOA_PLUGIN_GROUP}/${QT_COCOA_PLUGIN_NAME}" COPYONLY)
configure_file("${OpenMW_SOURCE_DIR}/files/mac/qt.conf" "${APP_BUNDLE_DIR}/Contents/Resources/qt.conf" COPYONLY)
if (BUILD_OPENCS)
get_property(OPENCS_BUNDLE_NAME_TMP TARGET openmw-cs PROPERTY OUTPUT_NAME)
set(OPENCS_BUNDLE_NAME "${OPENCS_BUNDLE_NAME_TMP}.app")
configure_file("${QT_COCOA_PLUGIN_PATH}" "${OPENCS_BUNDLE_NAME}/Contents/MacOS/${QT_COCOA_PLUGIN_GROUP}/${QT_COCOA_PLUGIN_NAME}" COPYONLY)
configure_file("${QT_COCOA_PLUGIN_PATH}" "${OPENCS_BUNDLE_NAME}/Contents/PlugIns/${QT_COCOA_PLUGIN_GROUP}/${QT_COCOA_PLUGIN_NAME}" COPYONLY)
configure_file("${OpenMW_SOURCE_DIR}/files/mac/qt.conf" "${OPENCS_BUNDLE_NAME}/Contents/Resources/qt.conf" COPYONLY)
endif ()
set(INSTALL_SUBDIR OpenMW)
install(DIRECTORY "${APP_BUNDLE_DIR}" USE_SOURCE_PERMISSIONS DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
install(DIRECTORY "${OpenMW_BINARY_DIR}/resources" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
install(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" RENAME "openmw.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
install(FILES "${OpenMW_BINARY_DIR}/settings-default.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
install(FILES "${OpenMW_BINARY_DIR}/gamecontrollerdb.txt" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
install(FILES "${OpenMW_BINARY_DIR}/openmw-cs.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
install(DIRECTORY "${APP_BUNDLE_DIR}" USE_SOURCE_PERMISSIONS DESTINATION "." COMPONENT Runtime)
set(CPACK_GENERATOR "DragNDrop")
set(CPACK_PACKAGE_VERSION ${OPENMW_VERSION})
@ -763,8 +811,8 @@ if (APPLE)
set(CPACK_PACKAGE_VERSION_MINOR ${OPENMW_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${OPENMW_VERSION_RELEASE})
set(INSTALLED_OPENMW_APP "\${CMAKE_INSTALL_PREFIX}/${INSTALL_SUBDIR}/${APP_BUNDLE_NAME}")
set(INSTALLED_OPENCS_APP "\${CMAKE_INSTALL_PREFIX}/${INSTALL_SUBDIR}/${OPENCS_BUNDLE_NAME}")
set(INSTALLED_OPENMW_APP "\${CMAKE_INSTALL_PREFIX}/${APP_BUNDLE_NAME}")
set(INSTALLED_OPENCS_APP "\${CMAKE_INSTALL_PREFIX}/${OPENCS_BUNDLE_NAME}")
install(CODE "
set(BU_CHMOD_BUNDLE_ITEMS ON)
@ -774,19 +822,16 @@ if (APPLE)
" COMPONENT Runtime)
set(ABSOLUTE_PLUGINS "")
set(USED_OSG_PLUGINS
osgdb_dds
osgdb_jpeg
osgdb_png
osgdb_tga
)
foreach (PLUGIN_NAME ${USED_OSG_PLUGINS})
set(PLUGIN_ABS "${OSG_PLUGIN_LIB_SEARCH_PATH}/${PLUGIN_NAME}.so")
set(PLUGIN_ABS "${OSGPlugins_LIB_DIR}/${PLUGIN_NAME}.so")
set(ABSOLUTE_PLUGINS ${PLUGIN_ABS} ${ABSOLUTE_PLUGINS})
endforeach ()
get_filename_component(OSG_PLUGIN_PREFIX_DIR "${OSG_PLUGIN_LIB_SEARCH_PATH}" NAME)
get_filename_component(OSG_PLUGIN_PREFIX_DIR "${OSGPlugins_LIB_DIR}" NAME)
if (NOT OSG_PLUGIN_PREFIX_DIR)
message(FATAL_ERROR "Can't get directory name for OSG plugins from '${OSGPlugins_LIB_DIR}'")
endif()
# installs used plugins in bundle at given path (bundle_path must be relative to ${CMAKE_INSTALL_PREFIX})
# and returns list of install paths for all installed plugins
@ -811,11 +856,11 @@ if (APPLE)
set(${plugins_var} ${PLUGINS} PARENT_SCOPE)
endfunction (install_plugins_for_bundle)
install_plugins_for_bundle("${INSTALL_SUBDIR}/${APP_BUNDLE_NAME}" PLUGINS)
install_plugins_for_bundle("${INSTALL_SUBDIR}/${OPENCS_BUNDLE_NAME}" OPENCS_PLUGINS)
install_plugins_for_bundle("${APP_BUNDLE_NAME}" PLUGINS)
install_plugins_for_bundle("${OPENCS_BUNDLE_NAME}" OPENCS_PLUGINS)
set(PLUGINS ${PLUGINS} "${INSTALLED_OPENMW_APP}/Contents/MacOS/${QT_COCOA_PLUGIN_GROUP}/${QT_COCOA_PLUGIN_NAME}")
set(OPENCS_PLUGINS ${OPENCS_PLUGINS} "${INSTALLED_OPENCS_APP}/Contents/MacOS/${QT_COCOA_PLUGIN_GROUP}/${QT_COCOA_PLUGIN_NAME}")
set(PLUGINS ${PLUGINS} "${INSTALLED_OPENMW_APP}/Contents/PlugIns/${QT_COCOA_PLUGIN_GROUP}/${QT_COCOA_PLUGIN_NAME}")
set(OPENCS_PLUGINS ${OPENCS_PLUGINS} "${INSTALLED_OPENCS_APP}/Contents/PlugIns/${QT_COCOA_PLUGIN_GROUP}/${QT_COCOA_PLUGIN_NAME}")
install(CODE "
function(gp_item_default_embedded_path_override item default_embedded_path_var)
@ -825,12 +870,11 @@ if (APPLE)
endif()
endfunction()
cmake_policy(SET CMP0009 OLD)
fixup_bundle(\"${INSTALLED_OPENMW_APP}\" \"${PLUGINS}\" \"\")
fixup_bundle(\"${INSTALLED_OPENCS_APP}\" \"${OPENCS_PLUGINS}\" \"\")
" COMPONENT Runtime)
include(CPack)
endif (APPLE)
endif ()
# Doxygen Target -- simply run 'make doc' or 'make doc_pages'
# output directory for 'make doc' is "${OpenMW_BINARY_DIR}/docs/Doxygen"

View file

@ -1,16 +1,115 @@
Description
===========
How to contribute to OpenMW
=======================
Your pull request description should include (if applicable):
Not sure what to do with all your free time? Pick out a task from here:
* A link back to the bug report or forum discussion that prompted the change
https://gitlab.com/OpenMW/openmw/issues
Currently, we are focused on completing the MW game experience and general polishing. Features out of this scope may be approved in some cases, but you should probably start a discussion first.
Note:
* Tasks set to 'openmw-future' are usually out of the current scope of the project and can't be started yet.
* Bugs that are not 'Confirmed' should be confirmed first.
* Often, it's best to start a discussion about possible solutions before you jump into coding, especially for larger features.
Aside from coding, you can also help by triaging the issues list. Check for bugs that are 'Unconfirmed' and try to confirm them on your end, working out any details that may be necessary. Check for bugs that do not conform to [Bug reporting guidelines](https://wiki.openmw.org/index.php?title=Bug_Reporting_Guidelines) and improve them to do so!
There are various [Tools](https://wiki.openmw.org/index.php?title=Tools) to facilitate testing/development.
Pull Request Guidelines
=======================
To facilitate the review process, your pull request description should include the following, if applicable:
* A link back to the bug report or forum discussion that prompted the change. Note: when linking bugs, use the syntax ```[Bug #xyz](https://bugs.openmw.org/issues/#xyz)``` to create a clickable link. Writing only 'Bug #xyz' will unfortunately create a link to the Github pull request with that number instead.
* Summary of the changes made
* Reasoning / motivation behind the change
* What testing you have carried out to verify the change
Other notes
===========
Furthermore, we advise to:
* Separate your work into multiple pull requests whenever possible. As a rule of thumb, each feature and each bugfix should go into a separate PR, unless they are closely related or dependent upon each other. Small pull requests are easier to review, and are less likely to require further changes before we can merge them. A "mega" pull request with lots of unrelated commits in it is likely to get held up in review for a long time.
* Avoid stuffing unrelated commits into one pull request. As a rule of thumb, each feature and each bugfix should go into a separate PR, unless they are closely related or dependent upon each other. Small pull requests are easier to review, and are less likely to require further changes before we can merge them. A "mega" pull request with lots of unrelated commits in it is likely to get held up in review for a long time.
* Feel free to submit incomplete pull requests. Even if the work can not be merged yet, pull requests are a great place to collect early feedback. Just make sure to mark it as *[Incomplete]* or *[Do not merge yet]* in the title.
* If you plan on contributing often, please read the [Developer Reference](https://wiki.openmw.org/index.php?title=Developer_Reference) on our wiki, especially the [Policies and Standards](https://wiki.openmw.org/index.php?title=Policies_and_Standards).
* Make sure each of your changes has a clear objective. Unnecessary changes may lead to merge conflicts, clutter the commit history and slow down review. Code formatting 'fixes' should be avoided, unless you were already changing that particular line anyway.
* Reference the bug / feature ticket(s) in your commit message (e.g. 'Bug #123') to make it easier to keep track of what we changed for what reason. Our bugtracker will show those commits next to the ticket. If your commit message includes 'Fixes #123', that bug/feature will automatically be set to 'Closed' when your commit is merged.
* When pulling changes from master, prefer rebase over merge. Consider using a merge if there are conflicts or for long-running PRs.
Guidelines for original engine "fixes"
=================================
From time to time you may be tempted to "fix" what you think was a "bug" in the original game engine.
Unfortunately, the definition of what is a "bug" is not so clear. Consider that your "bug" is actually a feature unless proven otherwise:
* We have no way of knowing what the original developers really intended (short of asking them, good luck with that).
* What may seem like an illogical mechanic can actually be part of an attempt to balance the game.
* Many people will actually <i>like</i> these "bugs" because that is what they remember the game for.
* Exploits may be part of the fun of an open-world game - they reward knowledge with power. There are too many of them to plug them all, anyway.
OpenMW, in its default configuration, is meant to be a faithful reimplementation of Morrowind, minus things like crash bugs, stability issues and severe design errors. However, we try to avoid touching anything that affects the core gameplay, the balancing of the game or introduces incompatibilities with existing mod content.
That said, we may sometimes evaluate such issues on an individual basis. Common exceptions to the above would be:
* Issues so glaring that they would severely limit the capabilities of the engine in the future (for example, the scripting engine not being allowed to access objects in remote cells)
* Bugs where the intent is very obvious, and that have little to no balancing impact (e.g. the bug were being tired made it easier to repair items, instead of harder)
* Bugs that were fixed in an official patch for Morrowind
Feature additions policy
=====================
We get it, you have waited so long for feature XYZ to be available in Morrowind and now that OpenMW is here you can not wait to implement your ingenious idea and share it with the world.
Unfortunately, since maintaining features comes at a cost and our resources are limited, we have to be a little selective in what features we allow into the main repository. Generally:
* Features should be as generic and non-redundant as possible.
* Any feature that is also possible with modding should be done as a mod instead.
* In the future, OpenMW plans to expand the scope of what is possible with modding, e.g. by moving certain game logic into editable scripts.
* Currently, modders can edit OpenMW's GUI skins and layout XML files, although there are still a few missing hooks (e.g. scripting support) in order to make this into a powerful way of modding.
* If a feature introduces new game UI strings, that reduces its chance of being accepted because we do not currently have any way of localizing these to the user's Morrowind installation language.
If you are in doubt of your feature being within our scope, it is probably best to start a forum discussion first. See the [settings documentation](https://openmw.readthedocs.io/en/stable/reference/modding/settings/index.html) and [Features list](https://wiki.openmw.org/index.php?title=Features) for some examples of features that were deemed acceptable.
Reviewing pull requests
=======================
We welcome any help in reviewing open PRs. You don't need to be a developer to comment on new features. We also encourage ["junior" developers to review senior's work](https://pagefault.blog/2018/04/08/why-junior-devs-should-review-seniors-commits/).
This review process is divided into two sections because complaining about code or style issues hardly makes sense until the functionality of the PR is deemed OK. Anyone can help with the Functionality Review while most parts of the Code Review require you to have programming experience.
In addition to the checklist below, make sure to check that the Pull Request Guidelines (first half of this document) were followed.
First review
============
1. Ask for missing information or clarifications. Compare against the project's design goals and roadmap.
2. Check if the automated tests are passing. If they are not, make the PR author aware of the issue and potentially link to the error line on Travis CI or Appveyor. If the error appears unrelated to the PR and/or the master branch is failing with the same error, our CI has broken and needs to be fixed independently of any open PRs. Raise this issue on the forums, bug tracker or with the relevant maintainer. The PR can be merged in this case as long as you've built it yourself to make sure it does build.
3. Make sure that the new code has been tested thoroughly, either by asking the author or, preferably, testing yourself. In a complex project like OpenMW, it is easy to make mistakes, typos, etc. Therefore, prefer testing all code changes, no matter how trivial they look. When you have tested a PR that no one has tested so far, post a comment letting us know.
4. On long running PRs, request the author to update its description with the current state or a checklist of things left to do.
Code Review
===========
1. Carefully review each line for issues the author may not have thought of, paying special attention to 'special' cases. Often, people build their code with a particular mindset and forget about other configurations or unexpected interactions.
2. If any changes are workarounds for an issue in an upstream library, make sure the issue was reported upstream so we can eventually drop the workaround when the issue is fixed and the new version of that library is a build dependency.
3. Make sure PRs do not turn into arguments about hardly related issues. If the PR author disagrees with an established part of the project (e.g. supported build environments), they should open a forum discussion or bug report and in the meantime adjust the PR to adhere to the established way, rather than leaving the PR hanging on a dispute.
4. Check if the code matches our style guidelines.
5. Check to make sure the commit history is clean. Squashing should be considered if the review process has made the commit history particularly long. Commits that don't build should be avoided because they are a nuisance for ```git bisect```.
Merging
=======
To be able to merge PRs, commit priviledges are required. If you do not have the priviledges, just ping someone that does have them with a short comment like "Looks good to me @user".
The person to merge the PR may either use github's Merge button or if using the command line, use the ```--no-ff``` flag (so a merge commit is created, just like with Github's merge button) and include the pull request number in the commit description.
Dealing with regressions
========================
The master branch should always be in a working state that is not worse than the previous release in any way. If a regression is found, the first and foremost priority should be to get the regression fixed quickly, either by reverting the change that caused it or finding a better solution. Please avoid leaving the project in the 'broken' state for an extensive period of time while proper solutions are found. If the solution takes more than a day or so then it is usually better to revert the offending change first and reapply it later when fixed.
Other resources
===============
[GitHub blog - how to write the perfect pull request](https://blog.github.com/2015-01-21-how-to-write-the-perfect-pull-request/)

View file

@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -645,14 +645,14 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
{project} Copyright (C) {year} {fullname}
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
<https://www.gnu.org/philosophy/why-not-lgpl.html>.

116
README.md
View file

@ -1,107 +1,49 @@
OpenMW
TES3MP
======
[![Build Status](https://api.travis-ci.org/OpenMW/openmw.svg)](https://travis-ci.org/OpenMW/openmw) [![Build status](https://ci.appveyor.com/api/projects/status/e6bqw8oouy8ufd46?svg=true)](https://ci.appveyor.com/project/scrawl/openmw) [![Coverity Scan Build Status](https://scan.coverity.com/projects/3740/badge.svg)](https://scan.coverity.com/projects/3740)
Copyright (c) 2008-2015, OpenMW Team
Copyright (c) 2016-2019, Stanislav Zhukov & David Cernat
OpenMW is a recreation of the engine for the popular role-playing game Morrowind by Bethesda Softworks. You need to own and install the original game for OpenMW to work.
[![Build Status](https://travis-ci.org/TES3MP/openmw-tes3mp.svg?branch=0.7.0)](https://travis-ci.org/TES3MP/openmw-tes3mp)
OpenMW also comes with OpenMW-CS, a replacement for Morrowind's TES Construction Set.
TES3MP is a project adding multiplayer functionality to [OpenMW](https://github.com/OpenMW/openmw), an open-source game engine that supports playing "The Elder Scrolls III: Morrowind" by Bethesda Softworks.
* Version: 0.39.0
* License: GPL (see docs/license/GPL3.txt for more information)
* Website: http://www.openmw.org
* IRC: #openmw on irc.freenode.net
* TES3MP version: 0.7.0-alpha
* OpenMW version: 0.44.0
* License: GPLv3 (see [LICENSE](https://github.com/TES3MP/openmw-tes3mp/blob/master/LICENSE) for more information)
Font Licenses:
* DejaVuLGCSansMono.ttf: custom (see docs/license/DejaVu Font License.txt for more information)
* DejaVuLGCSansMono.ttf: custom (see [files/mygui/DejaVu Font License.txt](https://github.com/TES3MP/openmw-tes3mp/blob/master/files/mygui/DejaVu%20Font%20License.txt) for more information)
Current Status
Project status
--------------
The main quests in Morrowind, Tribunal and Bloodmoon are all completable. Some issues with side quests are to be expected (but rare). Check the [bug tracker](https://bugs.openmw.org/versions/21) for a list of issues we need to resolve before the "1.0" release. Even before the "1.0" release however, OpenMW boasts some new [features](https://wiki.openmw.org/index.php?title=Features), such as improved graphics and user interfaces.
[Version changelog](https://github.com/TES3MP/openmw-tes3mp/blob/master/tes3mp-changelog.md)
Pre-existing modifications created for the original Morrowind engine can be hit-and-miss. The OpenMW script compiler performs more thorough error-checking than Morrowind does, meaning that a mod created for Morrowind may not necessarily run in OpenMW. Some mods also rely on quirky behaviour or engine bugs in order to work. We are considering such compatibility issues on a case-by-case basis - in some cases adding a workaround to OpenMW may be feasible, in other cases fixing the mod will be the only option. If you know of any mods that work or don't work, feel free to add them to the [Mod status](https://wiki.openmw.org/index.php?title=Mod_status) wiki page.
As of version 0.7.0, TES3MP is fully playable, providing very extensive player, NPC, world and quest synchronization, as well as state saving and loading, all of which are highly customizable via [serverside Lua scripts](https://github.com/TES3MP/CoreScripts).
Getting Started
Remaining gameplay problems mostly relate to AI and the synchronization of clientside script variables.
Donations
---------------
* [Official forums](https://forum.openmw.org/)
* [Installation instructions](https://wiki.openmw.org/index.php?title=Installation_Instructions)
* [Build from source](https://wiki.openmw.org/index.php?title=Development_Environment_Setup)
* [Testing the game](https://wiki.openmw.org/index.php?title=Testing)
* [How to contribute](https://wiki.openmw.org/index.php?title=Contribution_Wanted)
* [Report a bug](http://bugs.openmw.org/projects/openmw) - read the [guidelines](https://wiki.openmw.org/index.php?title=Bug_Reporting_Guidelines) before submitting your first bug!
* [Known issues](http://bugs.openmw.org/projects/openmw/issues?utf8=%E2%9C%93&set_filter=1&f%5B%5D=status_id&op%5Bstatus_id%5D=%3D&v%5Bstatus_id%5D%5B%5D=7&f%5B%5D=tracker_id&op%5Btracker_id%5D=%3D&v%5Btracker_id%5D%5B%5D=1&f%5B%5D=&c%5B%5D=project&c%5B%5D=tracker&c%5B%5D=status&c%5B%5D=priority&c%5B%5D=subject&c%5B%5D=assigned_to&c%5B%5D=updated_on&group_by=tracker)
You can benefit the project by donating on Patreon to our two developers, [David Cernat](https://www.patreon.com/davidcernat) and [Koncord](https://www.patreon.com/Koncord), as well as by supporting [OpenMW](https://openmw.org).
The data path
-------------
Contributing
---------------
The data path tells OpenMW where to find your Morrowind files. If you run the launcher, OpenMW should be able to pick up the location of these files on its own, if both Morrowind and OpenMW are installed properly (installing Morrowind under WINE is considered a proper install).
Helping us with documentation, bug hunting and video showcases is always greatly appreciated.
Command line options
--------------------
For code contributions, it's best to start out with modestly sized fixes and features and work your way up. There are so many different possible implementations of more major features many of which would cause undesirable code or vision conflicts with OpenMW that those should be talked over in advance with the existing developers before effort is spent on them.
Syntax: openmw <options>
Allowed options:
--help print help message
--version print version information and quit
--data arg (=data) set data directories (later directories
have higher priority)
--data-local arg set local data directory (highest
priority)
--fallback-archive arg (=fallback-archive)
set fallback BSA archives (later
archives have higher priority)
--resources arg (=resources) set resources directory
--start arg set initial cell
--content arg content file(s): esm/esp, or
omwgame/omwaddon
--no-sound [=arg(=1)] (=0) disable all sounds
--script-verbose [=arg(=1)] (=0) verbose script output
--script-all [=arg(=1)] (=0) compile all scripts (excluding dialogue
scripts) at startup
--script-all-dialogue [=arg(=1)] (=0) compile all dialogue scripts at startup
--script-console [=arg(=1)] (=0) enable console-only script
functionality
--script-run arg select a file containing a list of
console commands that is executed on
startup
--script-warn [=arg(=1)] (=1) handling of warnings when compiling
scripts
0 - ignore warning
1 - show warning but consider script as
correctly compiled anyway
2 - treat warnings as errors
--script-blacklist arg ignore the specified script (if the use
of the blacklist is enabled)
--script-blacklist-use [=arg(=1)] (=1)
enable script blacklisting
--load-savegame arg load a save game file on game startup
(specify an absolute filename or a
filename relative to the current
working directory)
--skip-menu [=arg(=1)] (=0) skip main menu on game startup
--new-game [=arg(=1)] (=0) run new game sequence (ignored if
skip-menu=0)
--fs-strict [=arg(=1)] (=0) strict file system handling (no case
folding)
--encoding arg (=win1252) Character encoding used in OpenMW game
messages:
Feel free to contact the [team members](https://github.com/TES3MP/openmw-tes3mp/blob/master/tes3mp-credits.md) for any questions you might have.
win1250 - Central and Eastern European
such as Polish, Czech, Slovak,
Hungarian, Slovene, Bosnian, Croatian,
Serbian (Latin script), Romanian and
Albanian languages
Getting started
---------------
win1251 - Cyrillic alphabet such as
Russian, Bulgarian, Serbian Cyrillic
and other languages
win1252 - Western European (Latin)
alphabet, used by default
--fallback arg fallback values
--no-grab Don't grab mouse cursor
--export-fonts [=arg(=1)] (=0) Export Morrowind .fnt fonts to PNG
image and XML file in current directory
--activate-dist arg (=-1) activation distance override
* [Quickstart guide](https://github.com/TES3MP/openmw-tes3mp/wiki/Quickstart-guide)
* [Steam group](https://steamcommunity.com/groups/mwmulti) and its [detailed FAQ](https://steamcommunity.com/groups/mwmulti/discussions/1/353916184342480541/)
* [TES3MP section on OpenMW forums](https://forum.openmw.org/viewforum.php?f=45)
* [Discord server](https://discord.gg/ECJk293)
* [Subreddit](https://www.reddit.com/r/tes3mp)
* [Known issues and bug reports](https://github.com/TES3MP/openmw-tes3mp/issues)

100
apps/browser/CMakeLists.txt Normal file
View file

@ -0,0 +1,100 @@
set (CMAKE_CXX_STANDARD 14)
set(BROWSER_UI
${CMAKE_SOURCE_DIR}/files/tes3mp/ui/Main.ui
${CMAKE_SOURCE_DIR}/files/tes3mp/ui/ServerInfo.ui
)
set(BROWSER
main.cpp
MainWindow.cpp
ServerModel.cpp
ServerInfoDialog.cpp
MySortFilterProxyModel.cpp
netutils/HTTPNetwork.cpp
netutils/Utils.cpp
netutils/QueryClient.cpp
PingUpdater.cpp
PingHelper.cpp
QueryHelper.cpp
${CMAKE_SOURCE_DIR}/files/tes3mp/browser.rc
)
set(BROWSER_HEADER_MOC
MainWindow.hpp
ServerModel.hpp
ServerInfoDialog.hpp
MySortFilterProxyModel.hpp
PingUpdater.hpp
PingHelper.hpp
QueryHelper.hpp
)
set(BROWSER_HEADER
${BROWSER_HEADER_MOC}
netutils/HTTPNetwork.hpp
netutils/Utils.hpp
netutils/QueryClient.hpp
Types.hpp
)
source_group(browser FILES ${BROWSER} ${BROWSER_HEADER})
set(QT_USE_QTGUI 1)
# Set some platform specific settings
if(WIN32)
set(GUI_TYPE WIN32)
set(QT_USE_QTMAIN TRUE)
endif(WIN32)
if (DESIRED_QT_VERSION MATCHES 4)
message(SEND_ERROR "QT4 is not supported.")
#include(${QT_USE_FILE})
#QT4_ADD_RESOURCES(RCC_SRCS ${CMAKE_SOURCE_DIR}/files/launcher/launcher.qrc)
#QT4_WRAP_CPP(MOC_SRCS ${BROWSER_HEADER_MOC})
#QT4_WRAP_UI(UI_HDRS ${BROWSER_UI})
else()
QT5_ADD_RESOURCES(RCC_SRCS ${CMAKE_SOURCE_DIR}/files/launcher/launcher.qrc)
QT5_WRAP_CPP(MOC_SRCS ${BROWSER_HEADER_MOC})
QT5_WRAP_UI(UI_HDRS ${BROWSER_UI})
endif()
include_directories(${CMAKE_CURRENT_BINARY_DIR})
if(NOT WIN32)
include_directories(${LIBUNSHIELD_INCLUDE_DIR})
endif(NOT WIN32)
# Main executable
add_executable(tes3mp-browser
${GUI_TYPE}
${BROWSER}
${BROWSER_HEADER}
${RCC_SRCS}
${MOC_SRCS}
${UI_HDRS}
)
if (WIN32)
INSTALL(TARGETS tes3mp-browser RUNTIME DESTINATION ".")
endif (WIN32)
target_link_libraries(tes3mp-browser
${SDL2_LIBRARY_ONLY}
${RakNet_LIBRARY}
components
)
if (DESIRED_QT_VERSION MATCHES 4)
# target_link_libraries(tes3mp-browser ${QT_QTGUI_LIBRARY} ${QT_QTCORE_LIBRARY})
# if(WIN32)
# target_link_libraries(tes3mp-browser ${QT_QTMAIN_LIBRARY})
# endif(WIN32)
else()
qt5_use_modules(tes3mp-browser Widgets Core)
endif()
if (BUILD_WITH_CODE_COVERAGE)
add_definitions (--coverage)
target_link_libraries(tes3mp-browser gcov)
endif()

246
apps/browser/MainWindow.cpp Normal file
View file

@ -0,0 +1,246 @@
//
// Created by koncord on 06.01.17.
//
#include "MainWindow.hpp"
#include "QueryHelper.hpp"
#include "PingHelper.hpp"
#include "ServerInfoDialog.hpp"
#include "components/files/configurationmanager.hpp"
#include <qdebug.h>
#include <QInputDialog>
#include <QJsonObject>
#include <QJsonArray>
#include <QFile>
#include <QJsonDocument>
using namespace Process;
using namespace std;
MainWindow::MainWindow(QWidget *parent)
{
setupUi(this);
mGameInvoker = new ProcessInvoker();
browser = new ServerModel;
favorites = new ServerModel;
proxyModel = new MySortFilterProxyModel(this);
proxyModel->setSourceModel(browser);
tblServerBrowser->setModel(proxyModel);
tblFavorites->setModel(proxyModel);
// Remove Favorites tab while it remains broken
tabWidget->removeTab(1);
tblServerBrowser->hideColumn(ServerData::ADDR);
tblFavorites->hideColumn(ServerData::ADDR);
PingHelper::Get().SetModel((ServerModel*)proxyModel->sourceModel());
queryHelper = new QueryHelper(proxyModel->sourceModel());
connect(queryHelper, &QueryHelper::started, [this](){actionRefresh->setEnabled(false);});
connect(queryHelper, &QueryHelper::finished, [this](){actionRefresh->setEnabled(true);});
connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(tabSwitched(int)));
connect(actionAdd, SIGNAL(triggered(bool)), this, SLOT(addServer()));
connect(actionAdd_by_IP, SIGNAL(triggered(bool)), this, SLOT(addServerByIP()));
connect(actionDelete, SIGNAL(triggered(bool)), this, SLOT(deleteServer()));
connect(actionRefresh, SIGNAL(triggered(bool)), queryHelper, SLOT(refresh()));
connect(actionPlay, SIGNAL(triggered(bool)), this, SLOT(play()));
connect(tblServerBrowser, SIGNAL(clicked(QModelIndex)), this, SLOT(serverSelected()));
connect(tblFavorites, SIGNAL(clicked(QModelIndex)), this, SLOT(serverSelected()));
connect(tblFavorites, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(play()));
connect(tblServerBrowser, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(play()));
connect(cBoxNotFull, SIGNAL(toggled(bool)), this, SLOT(notFullSwitch(bool)));
connect(cBoxWithPlayers, SIGNAL(toggled(bool)), this, SLOT(havePlayersSwitch(bool)));
connect(cBBoxWOPass, SIGNAL(toggled(bool)), this, SLOT(noPasswordSwitch(bool)));
connect(comboLatency, SIGNAL(currentIndexChanged(int)), this, SLOT(maxLatencyChanged(int)));
connect(leGamemode, SIGNAL(textChanged(const QString &)), this, SLOT(gamemodeChanged(const QString &)));
loadFavorites();
queryHelper->refresh();
}
MainWindow::~MainWindow()
{
delete mGameInvoker;
}
void MainWindow::addServerAndUpdate(const QString &addr)
{
favorites->insertRow(0);
QModelIndex mi = favorites->index(0, ServerData::ADDR);
favorites->setData(mi, addr, Qt::EditRole);
//NetController::get()->updateInfo(favorites, mi);
//QueryClient::Update(RakNet::SystemAddress())
/*auto data = QueryClient::Get().Query();
if (data.empty())
return;
transform(data.begin(), data.end(), back_inserter());*/
}
void MainWindow::addServer()
{
int id = tblServerBrowser->selectionModel()->currentIndex().row();
if (id >= 0)
{
int sourceId = proxyModel->mapToSource(proxyModel->index(id, ServerData::ADDR)).row();
favorites->myData.push_back(browser->myData[sourceId]);
}
}
void MainWindow::addServerByIP()
{
bool ok;
QString text = QInputDialog::getText(this, tr("Add Server by address"), tr("Address:"), QLineEdit::Normal, "", &ok);
if (ok && !text.isEmpty())
addServerAndUpdate(text);
}
void MainWindow::deleteServer()
{
if (tabWidget->currentIndex() != 1)
return;
int id = tblFavorites->selectionModel()->currentIndex().row();
if (id >= 0)
{
int sourceId = proxyModel->mapToSource(proxyModel->index(id, ServerData::ADDR)).row();
favorites->removeRow(sourceId);
if (favorites->myData.isEmpty())
{
actionPlay->setEnabled(false);
actionDelete->setEnabled(false);
}
}
}
void MainWindow::play()
{
QTableView *curTable = tabWidget->currentIndex() ? tblFavorites : tblServerBrowser;
int id = curTable->selectionModel()->currentIndex().row();
if (id < 0)
return;
ServerModel *sm = ((ServerModel*)proxyModel->sourceModel());
int sourceId = proxyModel->mapToSource(proxyModel->index(id, ServerData::ADDR)).row();
ServerInfoDialog infoDialog(sm->myData[sourceId].addr, this);
if (!infoDialog.exec())
return;
if (!infoDialog.isUpdated())
return;
QStringList arguments;
arguments.append(QLatin1String("--connect=") + sm->myData[sourceId].addr.toLatin1());
if (sm->myData[sourceId].GetPassword() == 1)
{
bool ok;
QString passw = QInputDialog::getText(this, tr("Connecting to: ") + sm->myData[sourceId].addr, tr("Password: "),
QLineEdit::Password, "", &ok);
if (!ok)
return;
arguments.append(QLatin1String("--password=") + passw.toLatin1());
}
if (mGameInvoker->startProcess(QLatin1String("tes3mp"), arguments, true))
return qApp->quit();
}
void MainWindow::tabSwitched(int index)
{
if (index == 0)
{
proxyModel->setSourceModel(browser);
actionDelete->setEnabled(false);
}
else
{
proxyModel->setSourceModel(favorites);
}
actionPlay->setEnabled(false);
actionAdd->setEnabled(false);
}
void MainWindow::serverSelected()
{
actionPlay->setEnabled(true);
if (tabWidget->currentIndex() == 0)
actionAdd->setEnabled(true);
if (tabWidget->currentIndex() == 1)
actionDelete->setEnabled(true);
}
void MainWindow::closeEvent(QCloseEvent *event)
{
Files::ConfigurationManager cfgMgr;
QString cfgPath = QString::fromStdString((cfgMgr.getUserConfigPath() / "favorites.dat").string());
QJsonArray saveData;
for (auto server : favorites->myData)
saveData.push_back(server.addr);
QFile file(cfgPath);
if (!file.open(QIODevice::WriteOnly))
{
qDebug() << "Cannot save " << cfgPath;
return;
}
file.write(QJsonDocument(saveData).toJson());
file.close();
}
void MainWindow::loadFavorites()
{
Files::ConfigurationManager cfgMgr;
QString cfgPath = QString::fromStdString((cfgMgr.getUserConfigPath() / "favorites.dat").string());
QFile file(cfgPath);
if (!file.open(QIODevice::ReadOnly))
{
qDebug() << "Cannot open " << cfgPath;
return;
}
QJsonDocument jsonDoc(QJsonDocument::fromJson(file.readAll()));
for (auto server : jsonDoc.array())
addServerAndUpdate(server.toString());
file.close();
}
void MainWindow::notFullSwitch(bool state)
{
proxyModel->filterFullServer(state);
}
void MainWindow::havePlayersSwitch(bool state)
{
proxyModel->filterEmptyServers(state);
}
void MainWindow::noPasswordSwitch(bool state)
{
proxyModel->filterPassworded(state);
}
void MainWindow::maxLatencyChanged(int index)
{
int maxLatency = index * 50;
proxyModel->pingLessThan(maxLatency);
}
void MainWindow::gamemodeChanged(const QString &text)
{
proxyModel->setFilterFixedString(text);
proxyModel->setFilterKeyColumn(ServerData::MODNAME);
}

View file

@ -0,0 +1,46 @@
//
// Created by koncord on 06.01.17.
//
#ifndef NEWLAUNCHER_MAIN_HPP
#define NEWLAUNCHER_MAIN_HPP
#include "ui_Main.h"
#include "ServerModel.hpp"
#include "MySortFilterProxyModel.hpp"
#include <components/process/processinvoker.hpp>
class QueryHelper;
class MainWindow : public QMainWindow, private Ui::MainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow() override;
protected:
void closeEvent(QCloseEvent * event) Q_DECL_OVERRIDE;
void addServerAndUpdate(const QString &addr);
protected slots:
void tabSwitched(int index);
void addServer();
void addServerByIP();
void deleteServer();
void play();
void serverSelected();
void notFullSwitch(bool state);
void havePlayersSwitch(bool state);
void noPasswordSwitch(bool state);
void maxLatencyChanged(int index);
void gamemodeChanged(const QString &text);
private:
QueryHelper *queryHelper;
Process::ProcessInvoker *mGameInvoker;
ServerModel *browser, *favorites;
MySortFilterProxyModel *proxyModel;
void loadFavorites();
};
#endif //NEWLAUNCHER_MAIN_HPP

View file

@ -0,0 +1,84 @@
//
// Created by koncord on 30.01.17.
//
#include "MySortFilterProxyModel.hpp"
#include "ServerModel.hpp"
#include <qdebug.h>
#include <apps/browser/netutils/Utils.hpp>
bool MySortFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
{
QModelIndex pingIndex = sourceModel()->index(sourceRow, ServerData::PING, sourceParent);
QModelIndex plIndex = sourceModel()->index(sourceRow, ServerData::PLAYERS, sourceParent);
QModelIndex maxPlIndex = sourceModel()->index(sourceRow, ServerData::MAX_PLAYERS, sourceParent);
QModelIndex passwordIndex = sourceModel()->index(sourceRow, ServerData::PASSW, sourceParent);
bool pingOk;
int ping = sourceModel()->data(pingIndex).toInt(&pingOk);
int players = sourceModel()->data(plIndex).toInt();
int maxPlayers = sourceModel()->data(maxPlIndex).toInt();
if (maxPing > 0 && (ping == -1 || ping > maxPing || !pingOk))
return false;
if (filterEmpty && players == 0)
return false;
if (filterFull && players >= maxPlayers)
return false;
if(filterPasswEnabled && sourceModel()->data(passwordIndex).toString() == "Yes")
return false;
return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
}
bool MySortFilterProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const
{
if(sortColumn() == ServerData::PING)
{
bool valid;
int pingright = sourceModel()->data(source_right).toInt(&valid);
pingright = valid ? pingright : PING_UNREACHABLE;
int pingleft = sourceModel()->data(source_left).toInt(&valid);
pingleft = valid ? pingleft : PING_UNREACHABLE;
return pingleft < pingright;
}
else
return QSortFilterProxyModel::lessThan(source_left, source_right);
}
MySortFilterProxyModel::MySortFilterProxyModel(QObject *parent) : QSortFilterProxyModel(parent)
{
filterEmpty = false;
filterFull = false;
filterPasswEnabled = false;
maxPing = 0;
setSortCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive);
}
void MySortFilterProxyModel::filterEmptyServers(bool state)
{
filterEmpty = state;
invalidateFilter();
}
void MySortFilterProxyModel::filterFullServer(bool state)
{
filterFull = state;
invalidateFilter();
}
void MySortFilterProxyModel::pingLessThan(int maxPing)
{
this->maxPing = maxPing;
invalidateFilter();
}
void MySortFilterProxyModel::filterPassworded(bool state)
{
filterPasswEnabled = state;
invalidateFilter();
}

View file

@ -0,0 +1,29 @@
//
// Created by koncord on 30.01.17.
//
#ifndef OPENMW_MYSORTFILTERPROXYMODEL_HPP
#define OPENMW_MYSORTFILTERPROXYMODEL_HPP
#include <QSortFilterProxyModel>
class MySortFilterProxyModel : public QSortFilterProxyModel
{
Q_OBJECT
protected:
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const Q_DECL_FINAL;
bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const Q_DECL_FINAL;
public:
explicit MySortFilterProxyModel(QObject *parent);
void filterFullServer(bool state);
void filterEmptyServers(bool state);
void filterPassworded(bool state);
void pingLessThan(int maxPing);
private:
bool filterEmpty, filterFull, filterPasswEnabled;
int maxPing;
};
#endif //OPENMW_MYSORTFILTERPROXYMODEL_HPP

View file

@ -0,0 +1,56 @@
//
// Created by koncord on 03.05.17.
//
#include "PingHelper.hpp"
#include "ServerModel.hpp"
#include <QDebug>
#include "PingUpdater.hpp"
void PingHelper::Add(int row, const AddrPair &addrPair)
{
pingUpdater->addServer(row, addrPair);
if (!pingThread->isRunning())
pingThread->start();
}
void PingHelper::Reset()
{
//if (pingThread->isRunning())
Stop();
}
void PingHelper::Stop()
{
emit pingUpdater->stop();
}
void PingHelper::SetModel(QAbstractTableModel *model)
{
this->model = model;
}
void PingHelper::update(int row, unsigned ping)
{
model->setData(model->index(row, ServerData::PING), ping);
}
PingHelper &PingHelper::Get()
{
static PingHelper helper;
return helper;
}
PingHelper::PingHelper() : QObject()
{
pingThread = new QThread;
pingUpdater = new PingUpdater;
pingUpdater->moveToThread(pingThread);
connect(pingThread, SIGNAL(started()), pingUpdater, SLOT(process()));
connect(pingUpdater, SIGNAL(start()), pingThread, SLOT(start()));
connect(pingUpdater, SIGNAL(finished()), pingThread, SLOT(quit()));
connect(this, SIGNAL(stop()), pingUpdater, SLOT(stop()));
//connect(pingUpdater, SIGNAL(finished()), pingUpdater, SLOT(deleteLater()));
connect(pingUpdater, SIGNAL(updateModel(int, unsigned)), this, SLOT(update(int, unsigned)));
}

View file

@ -0,0 +1,42 @@
//
// Created by koncord on 03.05.17.
//
#ifndef OPENMW_PINGHELPER_HPP
#define OPENMW_PINGHELPER_HPP
#include <QObject>
#include <QAbstractTableModel>
#include <QThread>
#include "Types.hpp"
class PingUpdater;
class PingHelper : public QObject
{
Q_OBJECT
public:
void Reset();
void Add(int row, const AddrPair &addrPair);
void Stop();
void SetModel(QAbstractTableModel *model);
//void UpdateImmedialy(PingUpdater::AddrPair addrPair);
static PingHelper &Get();
PingHelper(const PingHelper&) = delete;
PingHelper& operator=(const PingHelper&) = delete;
private:
PingHelper();
signals:
void stop();
public slots:
void update(int row, unsigned ping);
private:
QThread *pingThread;
PingUpdater *pingUpdater;
QAbstractTableModel *model;
};
#endif //OPENMW_PINGHELPER_HPP

View file

@ -0,0 +1,50 @@
//
// Created by koncord on 02.05.17.
//
#include "PingUpdater.hpp"
#include "netutils/Utils.hpp"
#include <QDebug>
#include <QModelIndex>
#include <QThread>
void PingUpdater::stop()
{
servers.clear();
run = false;
}
void PingUpdater::addServer(int row, const AddrPair &addr)
{
servers.push_back({row, addr});
run = true;
emit start();
}
void PingUpdater::process()
{
while (run)
{
if (servers.count() == 0)
{
QThread::msleep(1000);
if (servers.count() == 0)
{
qDebug() << "PingUpdater stopped due to inactivity";
run = false;
continue;
}
}
ServerRow server = servers.back();
servers.pop_back();
unsigned ping = PingRakNetServer(server.second.first.toLatin1(), server.second.second);
qDebug() << "Pong from" << server.second.first + "|" + QString::number(server.second.second)
<< ":" << ping << "ms" << "Sizeof servers: " << servers.size();
emit updateModel(server.first, ping);
}
emit finished();
}

View file

@ -0,0 +1,31 @@
//
// Created by koncord on 02.05.17.
//
#ifndef OPENMW_PINGUPDATER_HPP
#define OPENMW_PINGUPDATER_HPP
#include <QObject>
#include <QVector>
#include "Types.hpp"
class PingUpdater : public QObject
{
Q_OBJECT
public:
void addServer(int row, const AddrPair &addrPair);
public slots:
void stop();
void process();
signals:
void start();
void updateModel(int row, unsigned ping);
void finished();
private:
QVector<ServerRow> servers;
bool run;
};
#endif //OPENMW_PINGUPDATER_HPP

View file

@ -0,0 +1,87 @@
//
// Created by koncord on 27.05.17.
//
#include "netutils/QueryClient.hpp"
#include "netutils/Utils.hpp"
#include "QueryHelper.hpp"
#include "PingHelper.hpp"
QueryUpdate *queryUpdate;
QueryHelper::QueryHelper(QAbstractItemModel *model)
{
qRegisterMetaType<QueryData>("QueryData");
queryThread = new QThread;
queryUpdate = new QueryUpdate;
_model = model;
connect(queryThread, SIGNAL(started()), queryUpdate, SLOT(process()));
connect(queryUpdate, SIGNAL(finished()), queryThread, SLOT(quit()));
connect(queryUpdate, &QueryUpdate::finished, [this](){emit finished();});
connect(queryUpdate, SIGNAL(updateModel(const QString&, unsigned short, const QueryData&)),
this, SLOT(update(const QString&, unsigned short, const QueryData&)));
queryUpdate->moveToThread(queryThread);
}
void QueryHelper::refresh()
{
if (!queryThread->isRunning())
{
_model->removeRows(0, _model->rowCount());
PingHelper::Get().Stop();
queryThread->start();
emit started();
}
}
void QueryHelper::terminate()
{
queryThread->terminate();
}
void QueryHelper::update(const QString &addr, unsigned short port, const QueryData& data)
{
ServerModel *model = ((ServerModel*)_model);
model->insertRow(model->rowCount());
int row = model->rowCount() - 1;
QModelIndex mi = model->index(row, ServerData::ADDR);
model->setData(mi, addr + ":" + QString::number(port));
mi = model->index(row, ServerData::PLAYERS);
model->setData(mi, (int)data.players.size());
mi = model->index(row, ServerData::MAX_PLAYERS);
model->setData(mi, data.GetMaxPlayers());
mi = model->index(row, ServerData::HOSTNAME);
model->setData(mi, data.GetName());
mi = model->index(row, ServerData::MODNAME);
model->setData(mi, data.GetGameMode());
mi = model->index(row, ServerData::VERSION);
model->setData(mi, data.GetVersion());
mi = model->index(row, ServerData::PASSW);
model->setData(mi, data.GetPassword() == 1);
mi = model->index(row, ServerData::PING);
model->setData(mi, PING_UNREACHABLE);
PingHelper::Get().Add(row, {addr, port});
}
void QueryUpdate::process()
{
auto data = QueryClient::Get().Query();
if (QueryClient::Get().Status() != ID_MASTER_QUERY)
{
emit finished();
return;
}
for (const auto &server : data)
emit updateModel(server.first.ToString(false), server.first.GetPort(), server.second);
emit finished();
}

View file

@ -0,0 +1,46 @@
//
// Created by koncord on 27.05.17.
//
#ifndef OPENMW_QUERYHELPER_HPP
#define OPENMW_QUERYHELPER_HPP
#include <QObject>
#include <vector>
#include <QAbstractItemModel>
#include <components/openmw-mp/Master/MasterData.hpp>
Q_DECLARE_METATYPE(QueryData)
class QueryHelper : public QObject
{
Q_OBJECT
public:
explicit QueryHelper(QAbstractItemModel *model);
public slots:
void refresh();
void terminate();
private slots:
void update(const QString &addr, unsigned short port, const QueryData& data);
signals:
void finished();
void started();
private:
QThread *queryThread;
QAbstractItemModel *_model;
};
class QueryUpdate : public QObject
{
friend class QueryHelper;
Q_OBJECT
signals:
void finished();
void updateModel(const QString &addr, unsigned short port, const QueryData& data);
public slots:
void process();
};
#endif //OPENMW_QUERYHELPER_HPP

View file

@ -0,0 +1,107 @@
//
// Created by koncord on 07.01.17.
//
#include <apps/browser/netutils/QueryClient.hpp>
#include "qdebug.h"
#include "ServerInfoDialog.hpp"
#include <algorithm>
#include <utility>
#include <QThread>
using namespace std;
using namespace RakNet;
ThrWorker::ThrWorker(ServerInfoDialog *dialog, QString addr, unsigned short port): addr(std::move(addr)), port(port), stopped(false)
{
this->dialog = dialog;
}
void ThrWorker::process()
{
stopped = false;
auto newSD = QueryClient::Get().Update(SystemAddress(addr.toUtf8(), port));
if (dialog != nullptr)
dialog->setData(newSD);
stopped = true;
emit finished();
}
ServerInfoDialog::ServerInfoDialog(const QString &addr, QWidget *parent): QDialog(parent)
{
setupUi(this);
refreshThread = new QThread;
QStringList list = addr.split(':');
worker = new ThrWorker(this, list[0].toLatin1(), list[1].toUShort());
worker->moveToThread(refreshThread);
connect(refreshThread, SIGNAL(started()), worker, SLOT(process()));
connect(worker, SIGNAL(finished()), refreshThread, SLOT(quit()));
connect(refreshThread, SIGNAL(finished()), this, SLOT(refresh()));
connect(btnRefresh, &QPushButton::clicked, [this]{
if (!refreshThread->isRunning())
refreshThread->start();
});
}
ServerInfoDialog::~ServerInfoDialog()
{
worker->dialog = nullptr;
if (!refreshThread->isRunning())
refreshThread->terminate();
}
bool ServerInfoDialog::isUpdated()
{
return sd.first != UNASSIGNED_SYSTEM_ADDRESS;
}
void ServerInfoDialog::setData(std::pair<RakNet::SystemAddress, QueryData> &newSD)
{
sd = newSD;
}
void ServerInfoDialog::refresh()
{
if (sd.first != UNASSIGNED_SYSTEM_ADDRESS)
{
leAddr->setText(sd.first.ToString(true, ':'));
lblName->setText(sd.second.GetName());
int ping = PingRakNetServer(sd.first.ToString(false), sd.first.GetPort());
lblPing->setNum(ping);
btnConnect->setDisabled(ping == PING_UNREACHABLE);
listPlayers->clear();
for (const auto &player : sd.second.players)
listPlayers->addItem(QString::fromStdString(player));
listPlugins->clear();
for (const auto &plugin : sd.second.plugins)
listPlugins->addItem(QString::fromStdString(plugin.name));
listRules->clear();
const static vector<std::string> defaultRules {"gamemode", "maxPlayers", "name", "passw", "players", "version"};
for (auto &rule : sd.second.rules)
{
if (::find(defaultRules.begin(), defaultRules.end(), rule.first) != defaultRules.end())
continue;
QString ruleStr = QString::fromStdString(rule.first) + " : ";
if (rule.second.type == 's')
ruleStr += QString::fromStdString(rule.second.str);
else
ruleStr += QString::number(rule.second.val);
listRules->addItem(ruleStr);
}
lblPlayers->setText(QString::number(sd.second.players.size()) + " / " + QString::number(sd.second.GetMaxPlayers()));
}
}
int ServerInfoDialog::exec()
{
if (!refreshThread->isRunning())
refreshThread->start();
return QDialog::exec();
}

View file

@ -0,0 +1,51 @@
//
// Created by koncord on 07.01.17.
//
#ifndef NEWLAUNCHER_SERVERINFODIALOG_HPP
#define NEWLAUNCHER_SERVERINFODIALOG_HPP
#include "ui_ServerInfo.h"
#include <apps/browser/netutils/Utils.hpp>
#include <RakNetTypes.h>
#include <components/openmw-mp/Master/MasterData.hpp>
class ThrWorker;
class ServerInfoDialog : public QDialog, public Ui::Dialog
{
Q_OBJECT
public:
explicit ServerInfoDialog(const QString &addr, QWidget *parent = nullptr);
~ServerInfoDialog() override;
bool isUpdated();
void setData(std::pair<RakNet::SystemAddress, QueryData> &newSD);
public slots:
void refresh();
int exec() Q_DECL_OVERRIDE;
private:
QThread *refreshThread;
ThrWorker* worker;
std::pair<RakNet::SystemAddress, QueryData> sd;
};
class ThrWorker: public QObject
{
friend class ServerInfoDialog;
Q_OBJECT
public:
ThrWorker(ServerInfoDialog *dialog, QString addr, unsigned short port);
public slots:
void process();
signals:
void finished();
private:
QString addr;
unsigned short port;
bool stopped;
ServerInfoDialog *dialog;
};
#endif //NEWLAUNCHER_SERVERINFODIALOG_HPP

View file

@ -0,0 +1,191 @@
#include <qmessagebox.h>
#include "ServerModel.hpp"
#include <qdebug.h>
#include <apps/browser/netutils/Utils.hpp>
ServerModel::ServerModel(QObject *parent) : QAbstractTableModel(parent)
{
}
/*QHash<int, QByteArray> ServerModel::roleNames() const
{
return roles;
}*/
QVariant ServerModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (index.row() < 0 || index.row() > myData.size())
return QVariant();
const ServerData &sd = myData.at(index.row());
if (role == Qt::DisplayRole)
{
QVariant var;
switch (index.column())
{
case ServerData::ADDR:
var = sd.addr;
break;
case ServerData::PASSW:
var = (int)(sd.rules.at("passw").val) == 1 ? "Yes" : "No";
break;
case ServerData::VERSION:
var = QString(sd.rules.at("version").str.c_str());
break;
case ServerData::PLAYERS:
var = (int) sd.rules.at("players").val;
break;
case ServerData::MAX_PLAYERS:
var = (int) sd.rules.at("maxPlayers").val;
break;
case ServerData::HOSTNAME:
var = QString(sd.rules.at("name").str.c_str());
break;
case ServerData::PING:
var = sd.ping == PING_UNREACHABLE ? QVariant("Unreachable") : sd.ping;
break;
case ServerData::MODNAME:
if (sd.rules.at("gamemode").str == "")
var = "default";
else
var = QString(sd.rules.at("gamemode").str.c_str());
break;
}
return var;
}
return QVariant();
}
QVariant ServerModel::headerData(int section, Qt::Orientation orientation, int role) const
{
QVariant var;
if (orientation == Qt::Horizontal)
{
if (role == Qt::SizeHintRole)
{
/*if (section == ServerData::HOSTNAME)
var = QSize(200, 25);*/
}
else if (role == Qt::DisplayRole)
{
switch (section)
{
case ServerData::ADDR:
var = "Address";
break;
case ServerData::PASSW:
var = "Password";
break;
case ServerData::VERSION:
var = "Version";
break;
case ServerData::HOSTNAME:
var = "Host name";
break;
case ServerData::PLAYERS:
var = "Players";
break;
case ServerData::MAX_PLAYERS:
var = "Max players";
break;
case ServerData::PING:
var = "Ping";
break;
case ServerData::MODNAME:
var = "Game mode";
}
}
}
return var;
}
int ServerModel::rowCount(const QModelIndex &parent) const
{
return myData.size();
}
int ServerModel::columnCount(const QModelIndex &parent) const
{
return ServerData::LAST;
}
bool ServerModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (index.isValid() && role == Qt::EditRole)
{
int row = index.row();
int col = index.column();
ServerData &sd = myData[row];
bool ok = true;
switch(col)
{
case ServerData::ADDR:
sd.addr = value.toString();
ok = !sd.addr.isEmpty();
break;
case ServerData::PASSW:
sd.SetPassword(value.toBool());
break;
case ServerData::VERSION:
sd.SetVersion(value.toString().toUtf8());
ok = !sd.addr.isEmpty();
break;
case ServerData::PLAYERS:
sd.SetPlayers(value.toInt(&ok));
break;
case ServerData::MAX_PLAYERS:
sd.SetMaxPlayers(value.toInt(&ok));
break;
case ServerData::HOSTNAME:
sd.SetName(value.toString().toUtf8());
ok = !sd.addr.isEmpty();
break;
case ServerData::PING:
sd.ping = value.toInt(&ok);
break;
case ServerData::MODNAME:
sd.SetGameMode(value.toString().toUtf8());
break;
default:
return false;
}
if (ok)
emit(dataChanged(index, index));
return true;
}
return false;
}
bool ServerModel::insertRows(int position, int count, const QModelIndex &index)
{
Q_UNUSED(index);
beginInsertRows(QModelIndex(), position, position + count - 1);
myData.insert(position, count, {});
endInsertRows();
return true;
}
bool ServerModel::removeRows(int position, int count, const QModelIndex &parent)
{
if (count == 0)
return false;
beginRemoveRows(parent, position, position + count - 1);
myData.erase(myData.begin()+position, myData.begin() + position + count);
endRemoveRows();
return true;
}
QModelIndex ServerModel::index(int row, int column, const QModelIndex &parent) const
{
QModelIndex index = QAbstractTableModel::index(row, column, parent);
return index;
}

View file

@ -0,0 +1,51 @@
#ifndef SERVERMODEL_FONTMODEL_HPP
#define SERVERMODEL_FONTMODEL_HPP
#include <QObject>
#include <vector>
#include <QString>
#include <QAbstractTableModel>
#include <components/openmw-mp/Master/MasterData.hpp>
struct ServerData : public QueryData
{
QString addr;
int ping;
enum IDS
{
ADDR,
HOSTNAME,
PLAYERS,
MAX_PLAYERS,
PASSW,
MODNAME,
PING,
VERSION,
LAST
};
};
class ServerModel: public QAbstractTableModel
{
Q_OBJECT
public:
explicit ServerModel(QObject *parent = nullptr);
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_FINAL;
int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_FINAL;
int columnCount(const QModelIndex &parent) const Q_DECL_FINAL;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) Q_DECL_FINAL;
bool insertRows(int row, int count, const QModelIndex &index = QModelIndex()) Q_DECL_FINAL;
bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_FINAL;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_FINAL;
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_FINAL;
public:
//QHash<int, QByteArray> roles;
QVector<ServerData> myData;
};
#endif //SERVERMODEL_FONTMODEL_HPP

15
apps/browser/Types.hpp Normal file
View file

@ -0,0 +1,15 @@
//
// Created by koncord on 07.05.17.
//
#ifndef OPENMW_TYPES_HPP
#define OPENMW_TYPES_HPP
#include <QPair>
#include <QString>
typedef QPair <QString, unsigned short> AddrPair;
typedef QPair <int, AddrPair> ServerRow;
#endif //OPENMW_TYPES_HPP

53
apps/browser/main.cpp Normal file
View file

@ -0,0 +1,53 @@
#include <QApplication>
#include <components/settings/settings.hpp>
#include <components/files/configurationmanager.hpp>
#include <apps/browser/netutils/QueryClient.hpp>
#include "MainWindow.hpp"
std::string loadSettings (Settings::Manager & settings)
{
Files::ConfigurationManager mCfgMgr;
// Create the settings manager and load default settings file
const std::string localdefault = (mCfgMgr.getLocalPath() / "tes3mp-client-default.cfg").string();
const std::string globaldefault = (mCfgMgr.getGlobalPath() / "tes3mp-client-default.cfg").string();
// prefer local
if (boost::filesystem::exists(localdefault))
settings.loadDefault(localdefault);
else if (boost::filesystem::exists(globaldefault))
settings.loadDefault(globaldefault);
else
throw std::runtime_error ("No default settings file found! Make sure the file \"tes3mp-client-default.cfg\" was properly installed.");
// load user settings if they exist
const std::string settingspath = (mCfgMgr.getUserConfigPath() / "tes3mp-client.cfg").string();
if (boost::filesystem::exists(settingspath))
settings.loadUser(settingspath);
return settingspath;
}
int main(int argc, char *argv[])
{
Settings::Manager mgr;
loadSettings(mgr);
std::string addr = mgr.getString("address", "Master");
int port = mgr.getInt("port", "Master");
// Is this an attempt to connect to the official master server at the old port? If so,
// redirect it to the correct port for the currently used fork of RakNet
if (Misc::StringUtils::ciEqual(addr, "master.tes3mp.com") && port == 25560)
port = 25561;
// initialize resources, if needed
// Q_INIT_RESOURCE(resfile);
QueryClient::Get().SetServer(addr, port);
QApplication app(argc, argv);
MainWindow d;
d.show();
return app.exec();
}

View file

@ -0,0 +1,99 @@
//
// Created by koncord on 07.01.17.
//
#include <RakPeer.h>
#include <HTTPConnection2.h>
#include <TCPInterface.h>
#include <RakSleep.h>
#include <sstream>
#include "HTTPNetwork.hpp"
using namespace RakNet;
HTTPNetwork::HTTPNetwork(std::string addr, unsigned short port) : address(addr), port(port)
{
httpConnection = HTTPConnection2::GetInstance();
tcpInterface = new TCPInterface;
tcpInterface->Start(0, 64);
tcpInterface->AttachPlugin(httpConnection);
}
HTTPNetwork::~HTTPNetwork()
{
delete tcpInterface;
}
std::string HTTPNetwork::answer()
{
RakNet::SystemAddress sa;
RakNet::Packet *packet;
RakNet::SystemAddress hostReceived;
RakNet::RakString response;
RakNet::RakString transmitted, hostTransmitted;
int contentOffset = 0;
while (true)
{
// This is kind of crappy, but for TCP plugins, always do HasCompletedConnectionAttempt,
// then Receive(), then HasFailedConnectionAttempt(),HasLostConnection()
sa = tcpInterface->HasCompletedConnectionAttempt();
if (sa != RakNet::UNASSIGNED_SYSTEM_ADDRESS)
printf("Connected to master server: %s\n", sa.ToString());
sa = tcpInterface->HasFailedConnectionAttempt();
if (sa != RakNet::UNASSIGNED_SYSTEM_ADDRESS)
{
printf("Failed to connect to master server: %s\n", sa.ToString());
return "FAIL_CONNECT";
}
sa = tcpInterface->HasLostConnection();
if (sa != RakNet::UNASSIGNED_SYSTEM_ADDRESS)
{
printf("Lost connection to master server: %s\n", sa.ToString());
return "LOST_CONNECTION";
}
for (packet = tcpInterface->Receive(); packet; tcpInterface->DeallocatePacket(
packet), packet = tcpInterface->Receive());
if (httpConnection->GetResponse(transmitted, hostTransmitted, response, hostReceived, contentOffset))
{
if (contentOffset < 0)
return "NO_CONTENT"; // no content
tcpInterface->CloseConnection(sa);
return (response.C_String() + contentOffset);
}
RakSleep(30);
}
}
std::string HTTPNetwork::getData(const char *uri)
{
RakNet::RakString createRequest = RakNet::RakString::FormatForGET(uri);
if (!httpConnection->TransmitRequest(createRequest, address.c_str(), port))
return "UNKNOWN_ADDRESS";
return answer();
}
std::string HTTPNetwork::getDataPOST(const char *uri, const char* body, const char* contentType)
{
RakNet::RakString createRequest = RakNet::RakString::FormatForPOST(uri, contentType, body);
if (!httpConnection->TransmitRequest(createRequest, address.c_str(), port))
return "UNKNOWN_ADDRESS";
return answer();
}
std::string HTTPNetwork::getDataPUT(const char *uri, const char* body, const char* contentType)
{
RakNet::RakString createRequest = RakNet::RakString::FormatForPUT(uri, contentType, body);
if (!httpConnection->TransmitRequest(createRequest, address.c_str(), port))
return "UNKNOWN_ADDRESS";
return answer();
}

View file

@ -0,0 +1,35 @@
//
// Created by koncord on 07.01.17.
//
#ifndef NEWLAUNCHER_HTTPNETWORK_HPP
#define NEWLAUNCHER_HTTPNETWORK_HPP
#include <string>
namespace RakNet
{
class TCPInterface;
class HTTPConnection2;
}
class HTTPNetwork
{
public:
HTTPNetwork(std::string addr, unsigned short port);
~HTTPNetwork();
std::string getData(const char *uri);
std::string getDataPOST(const char *uri, const char* body, const char* contentType = "application/json");
std::string getDataPUT(const char *uri, const char* body, const char* contentType = "application/json");
protected:
RakNet::TCPInterface *tcpInterface;
RakNet::HTTPConnection2 *httpConnection;
std::string address;
unsigned short port;
std::string answer();
};
#endif //NEWLAUNCHER_HTTPNETWORK_HPP

View file

@ -0,0 +1,212 @@
//
// Created by koncord on 24.04.17.
//
#include "QueryClient.hpp"
#include <RakSleep.h>
#include <components/openmw-mp/NetworkMessages.hpp>
#include <iostream>
#include <components/openmw-mp/Version.hpp>
#include <qdebug.h>
using namespace RakNet;
using namespace std;
using namespace mwmp;
QueryClient::QueryClient()
{
peer = RakPeerInterface::GetInstance();
pmq = new PacketMasterQuery(peer);
pmu = new PacketMasterUpdate(peer);
RakNet::SocketDescriptor sd;
peer->Startup(8, &sd, 1);
status = -1;
}
QueryClient::~QueryClient()
{
delete pmq;
delete pmu;
RakPeerInterface::DestroyInstance(peer);
}
void QueryClient::SetServer(const string &addr, unsigned short port)
{
masterAddr = SystemAddress(addr.c_str(), port);
}
QueryClient &QueryClient::Get()
{
static QueryClient myInstance;
return myInstance;
}
map<SystemAddress, QueryData> QueryClient::Query()
{
map<SystemAddress, QueryData> query;
BitStream bs;
bs.Write((unsigned char) (ID_MASTER_QUERY));
qDebug() << "Locking mutex in QueryClient::Query()";
mxServers.lock();
status = -1;
int attempts = 3;
do
{
if (Connect() == IS_NOT_CONNECTED)
{
qDebug() << "Unlocking mutex in QueryClient::Query()";
mxServers.unlock();
return query;
}
int code = peer->Send(&bs, HIGH_PRIORITY, RELIABLE_ORDERED, CHANNEL_MASTER, masterAddr, false);
if (code == 0)
{
qDebug() << "Unlocking mutex in QueryClient::Query()";
mxServers.unlock();
return query;
}
pmq->SetServers(&query);
status = GetAnswer(ID_MASTER_QUERY);
RakSleep(100);
}
while(status != ID_MASTER_QUERY && attempts-- > 0);
if(status != ID_MASTER_QUERY)
qDebug() << "Getting query was failed";
qDebug() << "Unlocking mutex in QueryClient::Query()";
peer->CloseConnection(masterAddr, true);
mxServers.unlock();
qDebug() <<"Answer" << (status == ID_MASTER_QUERY ? "ok." : "wrong.");
return query;
}
pair<SystemAddress, QueryData> QueryClient::Update(const RakNet::SystemAddress &addr)
{
qDebug() << "Locking mutex in QueryClient::Update(RakNet::SystemAddress addr)";
pair<SystemAddress, QueryData> server;
BitStream bs;
bs.Write((unsigned char) (ID_MASTER_UPDATE));
bs.Write(addr);
mxServers.lock();
status = -1;
int attempts = 3;
pmu->SetServer(&server);
do
{
if (Connect() == IS_NOT_CONNECTED)
{
qDebug() << IS_NOT_CONNECTED;
qDebug() << "Unlocking mutex in QueryClient::Update(RakNet::SystemAddress addr)";
mxServers.unlock();
return server;
}
peer->Send(&bs, HIGH_PRIORITY, RELIABLE_ORDERED, CHANNEL_MASTER, masterAddr, false);
status = GetAnswer(ID_MASTER_UPDATE);
RakSleep(100);
}
while(status != ID_MASTER_UPDATE && attempts-- > 0);
if(status != ID_MASTER_UPDATE)
qDebug() << "Getting update was failed";
peer->CloseConnection(masterAddr, true);
qDebug() << "Unlocking mutex in QueryClient::Update(RakNet::SystemAddress addr)";
mxServers.unlock();
return server;
}
MASTER_PACKETS QueryClient::GetAnswer(MASTER_PACKETS waitingPacket)
{
RakNet::Packet *packet;
bool update = true;
unsigned char pid = 0;
int id = -1;
while (update)
{
for (packet = peer->Receive(); packet; peer->DeallocatePacket(packet), packet = peer->Receive())
{
BitStream data(packet->data, packet->length, false);
pmq->SetReadStream(&data);
pmu->SetReadStream(&data);
data.Read(pid);
switch(pid)
{
case ID_CONNECTION_LOST:
qDebug() << "ID_CONNECTION_LOST";
case ID_DISCONNECTION_NOTIFICATION:
qDebug() << "Disconnected";
update = false;
break;
case ID_MASTER_QUERY:
qDebug() << "ID_MASTER_QUERY";
if (waitingPacket == ID_MASTER_QUERY)
pmq->Read();
else
qDebug() << "Got wrong packet";
update = false;
id = pid;
break;
case ID_MASTER_UPDATE:
qDebug() << "ID_MASTER_UPDATE";
if (waitingPacket == ID_MASTER_UPDATE)
pmu->Read();
else
qDebug() << "Got wrong packet";
update = false;
id = pid;
break;
case ID_MASTER_ANNOUNCE:
qDebug() << "ID_MASTER_ANNOUNCE";
update = false;
id = pid;
break;
case ID_CONNECTION_REQUEST_ACCEPTED:
qDebug() << "ID_CONNECTION_REQUEST_ACCEPTED";
break;
default:
break;
}
}
RakSleep(500);
}
return (MASTER_PACKETS)(id);
}
ConnectionState QueryClient::Connect()
{
ConnectionAttemptResult car = peer->Connect(masterAddr.ToString(false), masterAddr.GetPort(), TES3MP_MASTERSERVER_PASSW,
strlen(TES3MP_MASTERSERVER_PASSW), nullptr, 0, 5, 500);
while (true)
{
ConnectionState state = peer->GetConnectionState(masterAddr);
switch (state)
{
case IS_CONNECTED:
qDebug() << "Connected";
return IS_CONNECTED;
case IS_NOT_CONNECTED:
case IS_DISCONNECTED:
case IS_SILENTLY_DISCONNECTING:
case IS_DISCONNECTING:
{
qDebug() << "Cannot connect to the master server. Code:"<< state;
return IS_NOT_CONNECTED;
}
case IS_PENDING:
case IS_CONNECTING:
qDebug() << "Pending";
break;
}
RakSleep(500);
}
}
int QueryClient::Status()
{
return status;
}

View file

@ -0,0 +1,46 @@
//
// Created by koncord on 24.04.17.
//
#ifndef OPENMW_QUERYCLIENT_HPP
#define OPENMW_QUERYCLIENT_HPP
#include <string>
#include <RakPeerInterface.h>
#include <components/openmw-mp/Master/PacketMasterQuery.hpp>
#include <components/openmw-mp/Master/PacketMasterUpdate.hpp>
#include <apps/browser/ServerModel.hpp>
#include <mutex>
class QueryClient
{
public:
QueryClient(QueryClient const &) = delete;
QueryClient(QueryClient &&) = delete;
QueryClient &operator=(QueryClient const &) = delete;
QueryClient &operator=(QueryClient &&) = delete;
static QueryClient &Get();
void SetServer(const std::string &addr, unsigned short port);
std::map<RakNet::SystemAddress, QueryData> Query();
std::pair<RakNet::SystemAddress, QueryData> Update(const RakNet::SystemAddress &addr);
int Status();
private:
RakNet::ConnectionState Connect();
MASTER_PACKETS GetAnswer(MASTER_PACKETS packet);
protected:
QueryClient();
~QueryClient();
private:
int status;
RakNet::RakPeerInterface *peer;
RakNet::SystemAddress masterAddr;
mwmp::PacketMasterQuery *pmq;
mwmp::PacketMasterUpdate *pmu;
std::pair<RakNet::SystemAddress, ServerData> server;
std::mutex mxServers;
};
#endif //OPENMW_QUERYCLIENT_HPP

View file

@ -0,0 +1,167 @@
//
// Created by koncord on 07.01.17.
//
#include <RakPeer.h>
#include <MessageIdentifiers.h>
#include <RakSleep.h>
#include <GetTime.h>
#include <sstream>
#include <components/openmw-mp/Version.hpp>
#include "Utils.hpp"
using namespace std;
unsigned int PingRakNetServer(const char *addr, unsigned short port)
{
RakNet::Packet *packet;
bool done = false;
RakNet::TimeMS time = PING_UNREACHABLE;
RakNet::SocketDescriptor socketDescriptor{0, ""};
RakNet::RakPeerInterface *peer = RakNet::RakPeerInterface::GetInstance();
peer->Startup(1, &socketDescriptor, 1);
if (!peer->Ping(addr, port, false))
return time;
RakNet::TimeMS start = RakNet::GetTimeMS();
while (!done)
{
RakNet::TimeMS now = RakNet::GetTimeMS();
if (now - start >= PING_UNREACHABLE)
break;
packet = peer->Receive();
if (!packet)
continue;
switch (packet->data[0])
{
case ID_DISCONNECTION_NOTIFICATION:
case ID_CONNECTION_LOST:
done = true;
break;
case ID_CONNECTED_PING:
case ID_UNCONNECTED_PONG:
{
RakNet::BitStream bsIn(&packet->data[1], packet->length, false);
bsIn.Read(time);
time = now - time;
done = true;
break;
}
default:
break;
}
peer->DeallocatePacket(packet);
}
peer->Shutdown(0);
RakNet::RakPeerInterface::DestroyInstance(peer);
return time > PING_UNREACHABLE ? PING_UNREACHABLE : time;
}
ServerExtendedData getExtendedData(const char *addr, unsigned short port)
{
ServerExtendedData data;
RakNet::SocketDescriptor socketDescriptor = {0, ""};
RakNet::RakPeerInterface *peer = RakNet::RakPeerInterface::GetInstance();
peer->Startup(1, &socketDescriptor, 1);
stringstream sstr;
sstr << TES3MP_VERSION;
sstr << TES3MP_PROTO_VERSION;
std::string msg;
if (peer->Connect(addr, port, sstr.str().c_str(), (int)(sstr.str().size()), nullptr, 0, 3, 500, 0) != RakNet::CONNECTION_ATTEMPT_STARTED)
msg = "Connection attempt failed.\n";
int queue = 0;
while (queue == 0)
{
for (RakNet::Packet *packet = peer->Receive(); packet; peer->DeallocatePacket(
packet), packet = peer->Receive())
{
switch (packet->data[0])
{
case ID_CONNECTION_ATTEMPT_FAILED:
{
msg = "Connection failed.\n"
"Either the IP address is wrong or a firewall on either system is blocking\n"
"UDP packets on the port you have chosen.";
queue = -1;
break;
}
case ID_INVALID_PASSWORD:
{
msg = "Connection failed.\n"
"The client or server is outdated.\n";
queue = -1;
break;
}
case ID_CONNECTION_REQUEST_ACCEPTED:
{
msg = "Connection accepted.\n";
queue = 1;
break;
}
case ID_DISCONNECTION_NOTIFICATION:
throw runtime_error("ID_DISCONNECTION_NOTIFICATION.\n");
case ID_CONNECTION_BANNED:
throw runtime_error("ID_CONNECTION_BANNED.\n");
case ID_CONNECTION_LOST:
throw runtime_error("ID_CONNECTION_LOST.\n");
default:
printf("Connection message with identifier %i has arrived in initialization.\n", packet->data[0]);
}
}
}
puts(msg.c_str());
if (queue == -1) // connection is failed
return data;
{
RakNet::BitStream bs;
bs.Write((unsigned char) (ID_USER_PACKET_ENUM + 1));
peer->Send(&bs, HIGH_PRIORITY, RELIABLE_ORDERED, 0, RakNet::UNASSIGNED_SYSTEM_ADDRESS, true);
}
RakNet::Packet *packet;
bool done = false;
while (!done)
{
for (packet = peer->Receive(); packet; peer->DeallocatePacket(packet), packet = peer->Receive())
{
if (packet->data[0] == (ID_USER_PACKET_ENUM + 1))
{
RakNet::BitStream bs(packet->data, packet->length, false);
bs.IgnoreBytes(1);
size_t length = 0;
bs.Read(length);
for (size_t i = 0; i < length; i++)
{
RakNet::RakString str;
bs.Read(str);
data.players.emplace_back(str.C_String());
}
bs.Read(length);
for (size_t i = 0; i < length; i++)
{
RakNet::RakString str;
bs.Read(str);
data.plugins.emplace_back(str.C_String());
}
done = true;
}
}
}
peer->Shutdown(0);
RakSleep(10);
RakNet::RakPeerInterface::DestroyInstance(peer);
return data;
}

View file

@ -0,0 +1,24 @@
//
// Created by koncord on 07.01.17.
//
#ifndef NEWLAUNCHER_PING_HPP
#define NEWLAUNCHER_PING_HPP
#include <vector>
#include <string>
#define PING_UNREACHABLE 999
unsigned int PingRakNetServer(const char *addr, unsigned short port);
struct ServerExtendedData
{
std::vector<std::string> players;
std::vector<std::string> plugins;
};
ServerExtendedData getExtendedData(const char *addr, unsigned short port);
#endif //NEWLAUNCHER_PING_HPP

View file

@ -4,7 +4,7 @@ set(BSATOOL
source_group(apps\\bsatool FILES ${BSATOOL})
# Main executable
add_executable(bsatool
openmw_add_executable(bsatool
${BSATOOL}
)

View file

@ -1,7 +1,6 @@
#include <iostream>
#include <iomanip>
#include <vector>
#include <exception>
#include <boost/program_options.hpp>
#include <boost/filesystem.hpp>

View file

@ -8,7 +8,7 @@ set(ESMTOOL
source_group(apps\\esmtool FILES ${ESMTOOL})
# Main executable
add_executable(esmtool
openmw_add_executable(esmtool
${ESMTOOL}
)

View file

@ -5,6 +5,7 @@
#include <map>
#include <set>
#include <fstream>
#include <cmath>
#include <boost/program_options.hpp>
@ -356,10 +357,10 @@ int load(Arguments& info)
EsmTool::RecordBase *record = EsmTool::RecordBase::create(n);
if (record == 0)
{
if (std::find(skipped.begin(), skipped.end(), n.val) == skipped.end())
if (std::find(skipped.begin(), skipped.end(), n.intval) == skipped.end())
{
std::cout << "Skipping " << n.toString() << " records." << std::endl;
skipped.push_back(n.val);
skipped.push_back(n.intval);
}
esm.skipRecord();
@ -391,7 +392,7 @@ int load(Arguments& info)
record->print();
}
if (record->getType().val == ESM::REC_CELL && loadCells && interested)
if (record->getType().intval == ESM::REC_CELL && loadCells && interested)
{
loadCell(record->cast<ESM::Cell>()->get(), esm, info);
}
@ -404,7 +405,7 @@ int load(Arguments& info)
{
delete record;
}
++info.data.mRecordStats[n.val];
++info.data.mRecordStats[n.intval];
}
} catch(std::exception &e) {
@ -442,23 +443,18 @@ int clone(Arguments& info)
size_t recordCount = info.data.mRecords.size();
int digitCount = 1; // For a nicer output
if (recordCount > 9) ++digitCount;
if (recordCount > 99) ++digitCount;
if (recordCount > 999) ++digitCount;
if (recordCount > 9999) ++digitCount;
if (recordCount > 99999) ++digitCount;
if (recordCount > 999999) ++digitCount;
if (recordCount > 0)
digitCount = (int)std::log10(recordCount) + 1;
std::cout << "Loaded " << recordCount << " records:" << std::endl << std::endl;
ESM::NAME name;
int i = 0;
typedef std::map<int, int> Stats;
Stats &stats = info.data.mRecordStats;
for (Stats::iterator it = stats.begin(); it != stats.end(); ++it)
{
name.val = it->first;
ESM::NAME name;
name.intval = it->first;
int amount = it->second;
std::cout << std::setw(digitCount) << amount << " " << name.toString() << " ";
@ -491,12 +487,12 @@ int clone(Arguments& info)
for (Records::iterator it = records.begin(); it != records.end() && i > 0; ++it)
{
EsmTool::RecordBase *record = *it;
name.val = record->getType().val;
const ESM::NAME& typeName = record->getType();
esm.startRecord(name.toString(), record->getFlags());
esm.startRecord(typeName.toString(), record->getFlags());
record->save(esm);
if (name.val == ESM::REC_CELL) {
if (typeName.intval == ESM::REC_CELL) {
ESM::Cell *ptr = &record->cast<ESM::Cell>()->get();
if (!info.data.mCellRefs[ptr].empty()) {
typedef std::deque<std::pair<ESM::CellRef, bool> > RefList;
@ -508,7 +504,7 @@ int clone(Arguments& info)
}
}
esm.endRecord(name.toString());
esm.endRecord(typeName.toString());
saved++;
int perc = (int)((saved / (float)recordCount)*100);

View file

@ -11,7 +11,6 @@
#include <components/esm/loadrace.hpp>
#include <components/esm/loadspel.hpp>
#include <components/esm/loadweap.hpp>
#include <components/esm/aipackage.hpp>
#include <boost/format.hpp>

View file

@ -179,7 +179,7 @@ RecordBase::create(ESM::NAME type)
{
RecordBase *record = 0;
switch (type.val) {
switch (type.intval) {
case ESM::REC_ACTI:
{
record = new EsmTool::Record<ESM::Activator>;
@ -494,7 +494,7 @@ void Record<ESM::Book>::print()
std::cout << " Weight: " << mData.mData.mWeight << std::endl;
std::cout << " Value: " << mData.mData.mValue << std::endl;
std::cout << " IsScroll: " << mData.mData.mIsScroll << std::endl;
std::cout << " SkillID: " << mData.mData.mSkillID << std::endl;
std::cout << " SkillId: " << mData.mData.mSkillId << std::endl;
std::cout << " Enchantment Points: " << mData.mData.mEnchant << std::endl;
if (mPrintPlain)
{
@ -694,7 +694,7 @@ void Record<ESM::Dialogue>::print()
// loads, rather than loading and then dumping. :-( Anyone mind if
// I change this?
ESM::Dialogue::InfoContainer::iterator iit;
for (iit = mData.mInfo.begin(); iit != mData.mInfo.end(); iit++)
for (iit = mData.mInfo.begin(); iit != mData.mInfo.end(); ++iit)
std::cout << "INFO!" << iit->mId << std::endl;
}
@ -1040,45 +1040,47 @@ void Record<ESM::NPC>::print()
if (mData.mNpdtType == ESM::NPC::NPC_WITH_AUTOCALCULATED_STATS)
{
std::cout << " Level: " << mData.mNpdt12.mLevel << std::endl;
std::cout << " Reputation: " << (int)mData.mNpdt12.mReputation << std::endl;
std::cout << " Disposition: " << (int)mData.mNpdt12.mDisposition << std::endl;
std::cout << " Rank: " << (int)mData.mNpdt12.mRank << std::endl;
std::cout << " Unknown1: "
<< (unsigned int)((unsigned char)mData.mNpdt12.mUnknown1) << std::endl;
std::cout << " Unknown2: "
<< (unsigned int)((unsigned char)mData.mNpdt12.mUnknown2) << std::endl;
std::cout << " Unknown3: "
<< (unsigned int)((unsigned char)mData.mNpdt12.mUnknown3) << std::endl;
std::cout << " Gold: " << mData.mNpdt12.mGold << std::endl;
std::cout << " Level: " << mData.mNpdt.mLevel << std::endl;
std::cout << " Reputation: " << (int)mData.mNpdt.mReputation << std::endl;
std::cout << " Disposition: " << (int)mData.mNpdt.mDisposition << std::endl;
std::cout << " Rank: " << (int)mData.mNpdt.mRank << std::endl;
//Why do we want to print these fields? They are padding in the struct and contain
// nothing of real value. Now we don't deal with NPDTstruct12 in runtime either...
//std::cout << " Unknown1: "
// << (unsigned int)((unsigned char)mData.mNpdt12.mUnknown1) << std::endl;
//std::cout << " Unknown2: "
// << (unsigned int)((unsigned char)mData.mNpdt12.mUnknown2) << std::endl;
//std::cout << " Unknown3: "
// << (unsigned int)((unsigned char)mData.mNpdt12.mUnknown3) << std::endl;
std::cout << " Gold: " << mData.mNpdt.mGold << std::endl;
}
else {
std::cout << " Level: " << mData.mNpdt52.mLevel << std::endl;
std::cout << " Reputation: " << (int)mData.mNpdt52.mReputation << std::endl;
std::cout << " Disposition: " << (int)mData.mNpdt52.mDisposition << std::endl;
std::cout << " Rank: " << (int)mData.mNpdt52.mRank << std::endl;
std::cout << " FactionID: " << (int)mData.mNpdt52.mFactionID << std::endl;
std::cout << " Level: " << mData.mNpdt.mLevel << std::endl;
std::cout << " Reputation: " << (int)mData.mNpdt.mReputation << std::endl;
std::cout << " Disposition: " << (int)mData.mNpdt.mDisposition << std::endl;
std::cout << " Rank: " << (int)mData.mNpdt.mRank << std::endl;
std::cout << " FactionID: " << (int)mData.mNpdt.mFactionID << std::endl;
std::cout << " Attributes:" << std::endl;
std::cout << " Strength: " << (int)mData.mNpdt52.mStrength << std::endl;
std::cout << " Intelligence: " << (int)mData.mNpdt52.mIntelligence << std::endl;
std::cout << " Willpower: " << (int)mData.mNpdt52.mWillpower << std::endl;
std::cout << " Agility: " << (int)mData.mNpdt52.mAgility << std::endl;
std::cout << " Speed: " << (int)mData.mNpdt52.mSpeed << std::endl;
std::cout << " Endurance: " << (int)mData.mNpdt52.mEndurance << std::endl;
std::cout << " Personality: " << (int)mData.mNpdt52.mPersonality << std::endl;
std::cout << " Luck: " << (int)mData.mNpdt52.mLuck << std::endl;
std::cout << " Strength: " << (int)mData.mNpdt.mStrength << std::endl;
std::cout << " Intelligence: " << (int)mData.mNpdt.mIntelligence << std::endl;
std::cout << " Willpower: " << (int)mData.mNpdt.mWillpower << std::endl;
std::cout << " Agility: " << (int)mData.mNpdt.mAgility << std::endl;
std::cout << " Speed: " << (int)mData.mNpdt.mSpeed << std::endl;
std::cout << " Endurance: " << (int)mData.mNpdt.mEndurance << std::endl;
std::cout << " Personality: " << (int)mData.mNpdt.mPersonality << std::endl;
std::cout << " Luck: " << (int)mData.mNpdt.mLuck << std::endl;
std::cout << " Skills:" << std::endl;
for (int i = 0; i != ESM::Skill::Length; i++)
std::cout << " " << skillLabel(i) << ": "
<< (int)(mData.mNpdt52.mSkills[i]) << std::endl;
<< (int)(mData.mNpdt.mSkills[i]) << std::endl;
std::cout << " Health: " << mData.mNpdt52.mHealth << std::endl;
std::cout << " Magicka: " << mData.mNpdt52.mMana << std::endl;
std::cout << " Fatigue: " << mData.mNpdt52.mFatigue << std::endl;
std::cout << " Unknown: " << (int)mData.mNpdt52.mUnknown << std::endl;
std::cout << " Gold: " << mData.mNpdt52.mGold << std::endl;
std::cout << " Health: " << mData.mNpdt.mHealth << std::endl;
std::cout << " Magicka: " << mData.mNpdt.mMana << std::endl;
std::cout << " Fatigue: " << mData.mNpdt.mFatigue << std::endl;
std::cout << " Unknown: " << (int)mData.mNpdt.mUnknown << std::endl;
std::cout << " Gold: " << mData.mNpdt.mGold << std::endl;
}
std::vector<ESM::ContItem>::iterator cit;
@ -1123,7 +1125,7 @@ void Record<ESM::Pathgrid>::print()
int i = 0;
ESM::Pathgrid::PointList::iterator pit;
for (pit = mData.mPoints.begin(); pit != mData.mPoints.end(); pit++)
for (pit = mData.mPoints.begin(); pit != mData.mPoints.end(); ++pit)
{
std::cout << " Point[" << i << "]:" << std::endl;
std::cout << " Coordinates: (" << pit->mX << ","
@ -1135,7 +1137,7 @@ void Record<ESM::Pathgrid>::print()
}
i = 0;
ESM::Pathgrid::EdgeList::iterator eit;
for (eit = mData.mEdges.begin(); eit != mData.mEdges.end(); eit++)
for (eit = mData.mEdges.begin(); eit != mData.mEdges.end(); ++eit)
{
std::cout << " Edge[" << i << "]: " << eit->mV0 << " -> " << eit->mV1 << std::endl;
if (eit->mV0 >= mData.mData.mS2 || eit->mV1 >= mData.mData.mS2)

View file

@ -16,6 +16,8 @@ set(ESSIMPORTER_FILES
importjour.cpp
importscri.cpp
importscpt.cpp
importproj.cpp
importsplm.cpp
importercontext.cpp
converter.cpp
convertacdt.cpp
@ -28,7 +30,7 @@ set(ESSIMPORTER_FILES
convertplayer.cpp
)
add_executable(openmw-essimporter
openmw_add_executable(openmw-essimporter
${ESSIMPORTER_FILES}
)
@ -42,3 +44,7 @@ if (BUILD_WITH_CODE_COVERAGE)
add_definitions (--coverage)
target_link_libraries(openmw-essimporter gcov)
endif()
if (WIN32)
INSTALL(TARGETS openmw-essimporter RUNTIME DESTINATION ".")
endif(WIN32)

View file

@ -1,3 +1,9 @@
#include <string>
#include <iostream>
#include <limits>
#include <components/misc/stringops.hpp>
#include "convertacdt.hpp"
namespace ESSImport
@ -49,4 +55,49 @@ namespace ESSImport
npcStats.mTimeToStartDrowning = actorData.mACDT.mBreathMeter;
}
void convertANIS (const ANIS& anis, ESM::AnimationState& state)
{
static const char* animGroups[] =
{
"Idle", "Idle2", "Idle3", "Idle4", "Idle5", "Idle6", "Idle7", "Idle8", "Idle9", "Idlehh", "Idle1h", "Idle2c",
"Idle2w", "IdleSwim", "IdleSpell", "IdleCrossbow", "IdleSneak", "IdleStorm", "Torch", "Hit1", "Hit2", "Hit3",
"Hit4", "Hit5", "SwimHit1", "SwimHit2", "SwimHit3", "Death1", "Death2", "Death3", "Death4", "Death5",
"DeathKnockDown", "DeathKnockOut", "KnockDown", "KnockOut", "SwimDeath", "SwimDeath2", "SwimDeath3",
"SwimDeathKnockDown", "SwimDeathKnockOut", "SwimKnockOut", "SwimKnockDown", "SwimWalkForward",
"SwimWalkBack", "SwimWalkLeft", "SwimWalkRight", "SwimRunForward", "SwimRunBack", "SwimRunLeft",
"SwimRunRight", "SwimTurnLeft", "SwimTurnRight", "WalkForward", "WalkBack", "WalkLeft", "WalkRight",
"TurnLeft", "TurnRight", "RunForward", "RunBack", "RunLeft", "RunRight", "SneakForward", "SneakBack",
"SneakLeft", "SneakRight", "Jump", "WalkForwardhh", "WalkBackhh", "WalkLefthh", "WalkRighthh",
"TurnLefthh", "TurnRighthh", "RunForwardhh", "RunBackhh", "RunLefthh", "RunRighthh", "SneakForwardhh",
"SneakBackhh", "SneakLefthh", "SneakRighthh", "Jumphh", "WalkForward1h", "WalkBack1h", "WalkLeft1h",
"WalkRight1h", "TurnLeft1h", "TurnRight1h", "RunForward1h", "RunBack1h", "RunLeft1h", "RunRight1h",
"SneakForward1h", "SneakBack1h", "SneakLeft1h", "SneakRight1h", "Jump1h", "WalkForward2c", "WalkBack2c",
"WalkLeft2c", "WalkRight2c", "TurnLeft2c", "TurnRight2c", "RunForward2c", "RunBack2c", "RunLeft2c",
"RunRight2c", "SneakForward2c", "SneakBack2c", "SneakLeft2c", "SneakRight2c", "Jump2c", "WalkForward2w",
"WalkBack2w", "WalkLeft2w", "WalkRight2w", "TurnLeft2w", "TurnRight2w", "RunForward2w", "RunBack2w",
"RunLeft2w", "RunRight2w", "SneakForward2w", "SneakBack2w", "SneakLeft2w", "SneakRight2w", "Jump2w",
"SpellCast", "SpellTurnLeft", "SpellTurnRight", "Attack1", "Attack2", "Attack3", "SwimAttack1",
"SwimAttack2", "SwimAttack3", "HandToHand", "Crossbow", "BowAndArrow", "ThrowWeapon", "WeaponOneHand",
"WeaponTwoHand", "WeaponTwoWide", "Shield", "PickProbe", "InventoryHandToHand", "InventoryWeaponOneHand",
"InventoryWeaponTwoHand", "InventoryWeaponTwoWide"
};
if (anis.mGroupIndex < (sizeof(animGroups) / sizeof(*animGroups)))
{
std::string group(animGroups[anis.mGroupIndex]);
Misc::StringUtils::lowerCaseInPlace(group);
ESM::AnimationState::ScriptedAnimation scriptedAnim;
scriptedAnim.mGroup = group;
scriptedAnim.mTime = anis.mTime;
scriptedAnim.mAbsolute = true;
// Neither loop count nor queueing seems to be supported by the ess format.
scriptedAnim.mLoopCount = std::numeric_limits<size_t>::max();
state.mScriptedAnims.push_back(scriptedAnim);
}
else
// TODO: Handle 0xFF index, which seems to be used for finished animations.
std::cerr << "unknown animation group index: " << static_cast<unsigned int>(anis.mGroupIndex) << std::endl;
}
}

View file

@ -4,6 +4,7 @@
#include <components/esm/creaturestats.hpp>
#include <components/esm/npcstats.hpp>
#include <components/esm/loadskil.hpp>
#include <components/esm/animationstate.hpp>
#include "importacdt.hpp"
@ -18,6 +19,8 @@ namespace ESSImport
void convertACSC (const ACSC& acsc, ESM::CreatureStats& cStats);
void convertNpcData (const ActorData& actorData, ESM::NpcStats& npcStats);
void convertANIS (const ANIS& anis, ESM::AnimationState& state);
}
#endif

View file

@ -1,6 +1,7 @@
#include "converter.hpp"
#include <stdexcept>
#include <algorithm>
#include <osgDB/WriteFile>
@ -34,6 +35,9 @@ namespace
objstate.mCount = 0;
convertSCRI(cellref.mSCRI, objstate.mLocals);
objstate.mHasLocals = !objstate.mLocals.mVariables.empty();
if (cellref.mHasANIS)
convertANIS(cellref.mANIS, objstate.mAnimationState);
}
bool isIndexedRefId(const std::string& indexedRefId)
@ -50,6 +54,36 @@ namespace
return true;
return false;
}
void splitIndexedRefId(const std::string& indexedRefId, int& refIndex, std::string& refId)
{
std::stringstream stream;
stream << std::hex << indexedRefId.substr(indexedRefId.size()-8,8);
stream >> refIndex;
refId = indexedRefId.substr(0,indexedRefId.size()-8);
}
int convertActorId(const std::string& indexedRefId, ESSImport::Context& context)
{
if (isIndexedRefId(indexedRefId))
{
int refIndex;
std::string refId;
splitIndexedRefId(indexedRefId, refIndex, refId);
auto it = context.mActorIdMap.find(std::make_pair(refIndex, refId));
if (it == context.mActorIdMap.end())
return -1;
return it->second;
}
else if (indexedRefId == "PlayerSaveGame")
{
return context.mPlayer.mObject.mCreatureStats.mActorId;
}
return -1;
}
}
namespace ESSImport
@ -134,7 +168,7 @@ namespace ESSImport
osgDB::ReaderWriter* readerwriter = osgDB::Registry::instance()->getReaderWriterForExtension("png");
if (!readerwriter)
{
std::cerr << "can't write global map image, no png readerwriter found" << std::endl;
std::cerr << "Error: can't write global map image, no png readerwriter found" << std::endl;
return;
}
@ -143,7 +177,7 @@ namespace ESSImport
osgDB::ReaderWriter::WriteResult result = readerwriter->writeImage(*image2, ostream);
if (!result.success())
{
std::cerr << "can't write global map image: " << result.message() << " code " << result.status() << std::endl;
std::cerr << "Error: can't write global map image: " << result.message() << " code " << result.status() << std::endl;
return;
}
@ -319,12 +353,9 @@ namespace ESSImport
}
else
{
std::stringstream stream;
stream << std::hex << cellref.mIndexedRefId.substr(cellref.mIndexedRefId.size()-8,8);
int refIndex;
stream >> refIndex;
splitIndexedRefId(cellref.mIndexedRefId, refIndex, out.mRefID);
out.mRefID = cellref.mIndexedRefId.substr(0,cellref.mIndexedRefId.size()-8);
std::string idLower = Misc::StringUtils::lowerCase(out.mRefID);
std::map<std::pair<int, std::string>, NPCC>::const_iterator npccIt = mContext->mNpcChanges.find(
@ -344,6 +375,10 @@ namespace ESSImport
convertNpcData(cellref, objstate.mNpcStats);
convertNPCC(npccIt->second, objstate);
convertCellRef(cellref, objstate);
objstate.mCreatureStats.mActorId = mContext->generateActorId();
mContext->mActorIdMap.insert(std::make_pair(std::make_pair(refIndex, out.mRefID), objstate.mCreatureStats.mActorId));
esm.writeHNT ("OBJE", ESM::REC_NPC_);
objstate.save(esm);
continue;
@ -380,6 +415,10 @@ namespace ESSImport
convertACSC(cellref.mACSC, objstate.mCreatureStats);
convertCREC(crecIt->second, objstate);
convertCellRef(cellref, objstate);
objstate.mCreatureStats.mActorId = mContext->generateActorId();
mContext->mActorIdMap.insert(std::make_pair(std::make_pair(refIndex, out.mRefID), objstate.mCreatureStats.mActorId));
esm.writeHNT ("OBJE", ESM::REC_CREA);
objstate.save(esm);
continue;
@ -410,4 +449,73 @@ namespace ESSImport
}
}
void ConvertPROJ::read(ESM::ESMReader& esm)
{
mProj.load(esm);
}
void ConvertPROJ::write(ESM::ESMWriter& esm)
{
for (const PROJ::PNAM& pnam : mProj.mProjectiles)
{
if (!pnam.isMagic())
{
ESM::ProjectileState out;
convertBaseState(out, pnam);
out.mBowId = pnam.mBowId.toString();
out.mVelocity = pnam.mVelocity;
out.mAttackStrength = pnam.mAttackStrength;
esm.startRecord(ESM::REC_PROJ);
out.save(esm);
esm.endRecord(ESM::REC_PROJ);
}
else
{
ESM::MagicBoltState out;
convertBaseState(out, pnam);
auto it = std::find_if(mContext->mActiveSpells.begin(), mContext->mActiveSpells.end(),
[&pnam](const SPLM::ActiveSpell& spell) -> bool { return spell.mIndex == pnam.mSplmIndex; });
if (it == mContext->mActiveSpells.end())
{
std::cerr << "Warning: Skipped conversion for magic projectile \"" << pnam.mArrowId.toString() << "\" (invalid spell link)" << std::endl;
continue;
}
out.mSpellId = it->mSPDT.mId.toString();
out.mSpeed = pnam.mSpeed * 0.001f; // not sure where this factor comes from
esm.startRecord(ESM::REC_MPRJ);
out.save(esm);
esm.endRecord(ESM::REC_MPRJ);
}
}
}
void ConvertPROJ::convertBaseState(ESM::BaseProjectileState& base, const PROJ::PNAM& pnam)
{
base.mId = pnam.mArrowId.toString();
base.mPosition = pnam.mPosition;
osg::Quat orient;
orient.makeRotate(osg::Vec3f(0,1,0), pnam.mVelocity);
base.mOrientation = orient;
base.mActorId = convertActorId(pnam.mActorId.toString(), *mContext);
}
void ConvertSPLM::read(ESM::ESMReader& esm)
{
mSPLM.load(esm);
mContext->mActiveSpells = mSPLM.mActiveSpells;
}
void ConvertSPLM::write(ESM::ESMWriter& esm)
{
std::cerr << "Warning: Skipped active spell conversion (not implemented)" << std::endl;
}
}

View file

@ -22,6 +22,7 @@
#include <components/esm/globalscript.hpp>
#include <components/esm/queststate.hpp>
#include <components/esm/stolenitems.hpp>
#include <components/esm/projectilestate.hpp>
#include "importcrec.hpp"
#include "importcntc.hpp"
@ -35,6 +36,8 @@
#include "importques.hpp"
#include "importjour.hpp"
#include "importscpt.hpp"
#include "importproj.h"
#include "importsplm.h"
#include "convertacdt.hpp"
#include "convertnpcc.hpp"
@ -119,9 +122,9 @@ public:
}
else
{
mContext->mPlayer.mObject.mCreatureStats.mLevel = npc.mNpdt52.mLevel;
mContext->mPlayer.mObject.mCreatureStats.mLevel = npc.mNpdt.mLevel;
mContext->mPlayerBase = npc;
std::map<int, float> empty;
ESM::SpellState::SpellParams empty;
// FIXME: player start spells and birthsign spells aren't listed here,
// need to fix openmw to account for this
for (std::vector<std::string>::const_iterator it = npc.mSpells.mList.begin(); it != npc.mSpells.mList.end(); ++it)
@ -202,7 +205,7 @@ public:
bool isDeleted = false;
book.load(esm, isDeleted);
if (book.mData.mSkillID == -1)
if (book.mData.mSkillId == -1)
mContext->mPlayer.mObject.mNpcStats.mUsedIds.push_back(Misc::StringUtils::lowerCase(book.mId));
mRecords[book.mId] = book;
@ -271,23 +274,34 @@ private:
class ConvertPCDT : public Converter
{
public:
ConvertPCDT() : mFirstPersonCam(true) {}
ConvertPCDT()
: mFirstPersonCam(true),
mTeleportingEnabled(true),
mLevitationEnabled(true)
{}
virtual void read(ESM::ESMReader &esm)
{
PCDT pcdt;
pcdt.load(esm);
convertPCDT(pcdt, mContext->mPlayer, mContext->mDialogueState.mKnownTopics, mFirstPersonCam);
convertPCDT(pcdt, mContext->mPlayer, mContext->mDialogueState.mKnownTopics, mFirstPersonCam, mTeleportingEnabled, mLevitationEnabled, mContext->mControlsState);
}
virtual void write(ESM::ESMWriter &esm)
{
esm.startRecord(ESM::REC_ENAB);
esm.writeHNT("TELE", mTeleportingEnabled);
esm.writeHNT("LEVT", mLevitationEnabled);
esm.endRecord(ESM::REC_ENAB);
esm.startRecord(ESM::REC_CAM_);
esm.writeHNT("FIRS", mFirstPersonCam);
esm.endRecord(ESM::REC_CAM_);
}
private:
bool mFirstPersonCam;
bool mTeleportingEnabled;
bool mLevitationEnabled;
};
class ConvertCNTC : public Converter
@ -582,6 +596,27 @@ private:
std::vector<ESM::GlobalScript> mScripts;
};
/// Projectile converter
class ConvertPROJ : public Converter
{
public:
virtual int getStage() override { return 2; }
virtual void read(ESM::ESMReader& esm) override;
virtual void write(ESM::ESMWriter& esm) override;
private:
void convertBaseState(ESM::BaseProjectileState& base, const PROJ::PNAM& pnam);
PROJ mProj;
};
class ConvertSPLM : public Converter
{
public:
virtual void read(ESM::ESMReader& esm) override;
virtual void write(ESM::ESMWriter& esm) override;
private:
SPLM mSPLM;
};
}
#endif

View file

@ -5,7 +5,7 @@
namespace ESSImport
{
void convertPCDT(const PCDT& pcdt, ESM::Player& out, std::vector<std::string>& outDialogueTopics, bool& firstPersonCam)
void convertPCDT(const PCDT& pcdt, ESM::Player& out, std::vector<std::string>& outDialogueTopics, bool& firstPersonCam, bool& teleportingEnabled, bool& levitationEnabled, ESM::ControlsState& controls)
{
out.mBirthsign = pcdt.mBirthsign;
out.mObject.mNpcStats.mBounty = pcdt.mBounty;
@ -17,24 +17,72 @@ namespace ESSImport
faction.mReputation = it->mReputation;
out.mObject.mNpcStats.mFactions[Misc::StringUtils::lowerCase(it->mFactionName.toString())] = faction;
}
for (int i=0; i<3; ++i)
out.mObject.mNpcStats.mSpecIncreases[i] = pcdt.mPNAM.mSpecIncreases[i];
for (int i=0; i<8; ++i)
out.mObject.mNpcStats.mSkillIncrease[i] = pcdt.mPNAM.mSkillIncreases[i];
for (int i=0; i<27; ++i)
out.mObject.mNpcStats.mSkills[i].mProgress = pcdt.mPNAM.mSkillProgress[i];
out.mObject.mNpcStats.mLevelProgress = pcdt.mPNAM.mLevelProgress;
if (pcdt.mPNAM.mDrawState & PCDT::DrawState_Weapon)
if (pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_WeaponDrawn)
out.mObject.mCreatureStats.mDrawState = 1;
if (pcdt.mPNAM.mDrawState & PCDT::DrawState_Spell)
if (pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_SpellDrawn)
out.mObject.mCreatureStats.mDrawState = 2;
firstPersonCam = (pcdt.mPNAM.mCameraState == PCDT::CameraState_FirstPerson);
firstPersonCam = !(pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_ThirdPerson);
teleportingEnabled = !(pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_TeleportingDisabled);
levitationEnabled = !(pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_LevitationDisabled);
for (std::vector<std::string>::const_iterator it = pcdt.mKnownDialogueTopics.begin();
it != pcdt.mKnownDialogueTopics.end(); ++it)
{
outDialogueTopics.push_back(Misc::StringUtils::lowerCase(*it));
}
controls.mViewSwitchDisabled = pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_ViewSwitchDisabled;
controls.mControlsDisabled = pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_ControlsDisabled;
controls.mJumpingDisabled = pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_JumpingDisabled;
controls.mLookingDisabled = pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_LookingDisabled;
controls.mVanityModeDisabled = pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_VanityModeDisabled;
controls.mWeaponDrawingDisabled = pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_WeaponDrawingDisabled;
controls.mSpellDrawingDisabled = pcdt.mPNAM.mPlayerFlags & PCDT::PlayerFlags_SpellDrawingDisabled;
if (pcdt.mHasMark)
{
out.mHasMark = 1;
const PCDT::PNAM::MarkLocation& mark = pcdt.mPNAM.mMarkLocation;
ESM::CellId cell;
cell.mWorldspace = ESM::CellId::sDefaultWorldspace;
cell.mPaged = true;
cell.mIndex.mX = mark.mCellX;
cell.mIndex.mY = mark.mCellY;
// TODO: Figure out a better way to detect interiors. (0, 0) is a valid exterior cell.
if (mark.mCellX == 0 && mark.mCellY == 0)
{
cell.mWorldspace = pcdt.mMNAM;
cell.mPaged = false;
}
out.mMarkedCell = cell;
out.mMarkedPosition.pos[0] = mark.mX;
out.mMarkedPosition.pos[1] = mark.mY;
out.mMarkedPosition.pos[2] = mark.mZ;
out.mMarkedPosition.rot[0] = out.mMarkedPosition.rot[1] = 0.0f;
out.mMarkedPosition.rot[2] = mark.mRotZ;
}
if (pcdt.mHasENAM)
{
const int cellSize = 8192;
out.mLastKnownExteriorPosition[0] = (pcdt.mENAM.mCellX + 0.5f) * cellSize;
out.mLastKnownExteriorPosition[1] = (pcdt.mENAM.mCellY + 0.5f) * cellSize;
out.mLastKnownExteriorPosition[2] = 0.0f;
}
}
}

View file

@ -4,11 +4,12 @@
#include "importplayer.hpp"
#include <components/esm/player.hpp>
#include <components/esm/controlsstate.hpp>
namespace ESSImport
{
void convertPCDT(const PCDT& pcdt, ESM::Player& out, std::vector<std::string>& outDialogueTopics, bool& firstPersonCam);
void convertPCDT(const PCDT& pcdt, ESM::Player& out, std::vector<std::string>& outDialogueTopics, bool& firstPersonCam, bool& teleportingEnabled, bool& levitationEnabled, ESM::ControlsState& controls);
}

View file

@ -75,7 +75,7 @@ namespace ESSImport
// unsure at which point between TGTN and CRED
if (esm.isNextSub("AADT"))
{
// occured when a creature was in the middle of its attack, 44 bytes
// occurred when a creature was in the middle of its attack, 44 bytes
esm.skipHSub();
}
@ -123,8 +123,13 @@ namespace ESSImport
if (esm.isNextSub("ND3D"))
esm.skipHSub();
mHasANIS = false;
if (esm.isNextSub("ANIS"))
esm.skipHSub();
{
mHasANIS = true;
esm.getHT(mANIS);
}
}
}

View file

@ -55,6 +55,12 @@ namespace ESSImport
unsigned char mCorpseClearCountdown; // hours?
unsigned char mUnknown3[71];
};
struct ANIS
{
unsigned char mGroupIndex;
unsigned char mUnknown[3];
float mTime;
};
#pragma pack(pop)
struct ActorData : public ESM::CellRef
@ -77,6 +83,9 @@ namespace ESSImport
SCRI mSCRI;
bool mHasANIS;
ANIS mANIS; // scripted animation state
void load(ESM::ESMReader& esm);
};

View file

@ -2,7 +2,7 @@
#include <iomanip>
#include <boost/shared_ptr.hpp>
#include <boost/filesystem/fstream.hpp>
#include <osgDB/ReadFile>
#include <osg/ImageUtils>
@ -38,7 +38,7 @@ namespace
{
if (fileHeader.mSCRS.size() != 128*128*4)
{
std::cerr << "unexpected screenshot size " << std::endl;
std::cerr << "Error: unexpected screenshot size " << std::endl;
return;
}
@ -51,6 +51,7 @@ namespace
{
for (int x=0; x<128; ++x)
{
assert(image->data(x,y));
*(image->data(x,y)+2) = *it++;
*(image->data(x,y)+1) = *it++;
*image->data(x,y) = *it++;
@ -65,14 +66,14 @@ namespace
osgDB::ReaderWriter* readerwriter = osgDB::Registry::instance()->getReaderWriterForExtension("jpg");
if (!readerwriter)
{
std::cerr << "can't write screenshot: no jpg readerwriter found" << std::endl;
std::cerr << "Error: can't write screenshot: no jpg readerwriter found" << std::endl;
return;
}
osgDB::ReaderWriter::WriteResult result = readerwriter->writeImage(*image, ostream);
if (!result.success())
{
std::cerr << "can't write screenshot: " << result.message() << " code " << result.status() << std::endl;
std::cerr << "Error: can't write screenshot: " << result.message() << " code " << result.status() << std::endl;
return;
}
@ -270,48 +271,50 @@ namespace ESSImport
const unsigned int recSTLN = ESM::FourCC<'S','T','L','N'>::value;
const unsigned int recGAME = ESM::FourCC<'G','A','M','E'>::value;
const unsigned int recJOUR = ESM::FourCC<'J','O','U','R'>::value;
const unsigned int recSPLM = ESM::FourCC<'S','P','L','M'>::value;
std::map<unsigned int, boost::shared_ptr<Converter> > converters;
converters[ESM::REC_GLOB] = boost::shared_ptr<Converter>(new ConvertGlobal());
converters[ESM::REC_BOOK] = boost::shared_ptr<Converter>(new ConvertBook());
converters[ESM::REC_NPC_] = boost::shared_ptr<Converter>(new ConvertNPC());
converters[ESM::REC_CREA] = boost::shared_ptr<Converter>(new ConvertCREA());
converters[ESM::REC_NPCC] = boost::shared_ptr<Converter>(new ConvertNPCC());
converters[ESM::REC_CREC] = boost::shared_ptr<Converter>(new ConvertCREC());
converters[recREFR ] = boost::shared_ptr<Converter>(new ConvertREFR());
converters[recPCDT ] = boost::shared_ptr<Converter>(new ConvertPCDT());
converters[recFMAP ] = boost::shared_ptr<Converter>(new ConvertFMAP());
converters[recKLST ] = boost::shared_ptr<Converter>(new ConvertKLST());
converters[recSTLN ] = boost::shared_ptr<Converter>(new ConvertSTLN());
converters[recGAME ] = boost::shared_ptr<Converter>(new ConvertGAME());
converters[ESM::REC_CELL] = boost::shared_ptr<Converter>(new ConvertCell());
converters[ESM::REC_ALCH] = boost::shared_ptr<Converter>(new DefaultConverter<ESM::Potion>());
converters[ESM::REC_CLAS] = boost::shared_ptr<Converter>(new ConvertClass());
converters[ESM::REC_SPEL] = boost::shared_ptr<Converter>(new DefaultConverter<ESM::Spell>());
converters[ESM::REC_ARMO] = boost::shared_ptr<Converter>(new DefaultConverter<ESM::Armor>());
converters[ESM::REC_WEAP] = boost::shared_ptr<Converter>(new DefaultConverter<ESM::Weapon>());
converters[ESM::REC_CLOT] = boost::shared_ptr<Converter>(new DefaultConverter<ESM::Clothing>());
converters[ESM::REC_ENCH] = boost::shared_ptr<Converter>(new DefaultConverter<ESM::Enchantment>());
converters[ESM::REC_WEAP] = boost::shared_ptr<Converter>(new DefaultConverter<ESM::Weapon>());
converters[ESM::REC_LEVC] = boost::shared_ptr<Converter>(new DefaultConverter<ESM::CreatureLevList>());
converters[ESM::REC_LEVI] = boost::shared_ptr<Converter>(new DefaultConverter<ESM::ItemLevList>());
converters[ESM::REC_CNTC] = boost::shared_ptr<Converter>(new ConvertCNTC());
converters[ESM::REC_FACT] = boost::shared_ptr<Converter>(new ConvertFACT());
converters[ESM::REC_INFO] = boost::shared_ptr<Converter>(new ConvertINFO());
converters[ESM::REC_DIAL] = boost::shared_ptr<Converter>(new ConvertDIAL());
converters[ESM::REC_QUES] = boost::shared_ptr<Converter>(new ConvertQUES());
converters[recJOUR ] = boost::shared_ptr<Converter>(new ConvertJOUR());
converters[ESM::REC_SCPT] = boost::shared_ptr<Converter>(new ConvertSCPT());
std::map<unsigned int, std::shared_ptr<Converter> > converters;
converters[ESM::REC_GLOB] = std::shared_ptr<Converter>(new ConvertGlobal());
converters[ESM::REC_BOOK] = std::shared_ptr<Converter>(new ConvertBook());
converters[ESM::REC_NPC_] = std::shared_ptr<Converter>(new ConvertNPC());
converters[ESM::REC_CREA] = std::shared_ptr<Converter>(new ConvertCREA());
converters[ESM::REC_NPCC] = std::shared_ptr<Converter>(new ConvertNPCC());
converters[ESM::REC_CREC] = std::shared_ptr<Converter>(new ConvertCREC());
converters[recREFR ] = std::shared_ptr<Converter>(new ConvertREFR());
converters[recPCDT ] = std::shared_ptr<Converter>(new ConvertPCDT());
converters[recFMAP ] = std::shared_ptr<Converter>(new ConvertFMAP());
converters[recKLST ] = std::shared_ptr<Converter>(new ConvertKLST());
converters[recSTLN ] = std::shared_ptr<Converter>(new ConvertSTLN());
converters[recGAME ] = std::shared_ptr<Converter>(new ConvertGAME());
converters[ESM::REC_CELL] = std::shared_ptr<Converter>(new ConvertCell());
converters[ESM::REC_ALCH] = std::shared_ptr<Converter>(new DefaultConverter<ESM::Potion>());
converters[ESM::REC_CLAS] = std::shared_ptr<Converter>(new ConvertClass());
converters[ESM::REC_SPEL] = std::shared_ptr<Converter>(new DefaultConverter<ESM::Spell>());
converters[ESM::REC_ARMO] = std::shared_ptr<Converter>(new DefaultConverter<ESM::Armor>());
converters[ESM::REC_WEAP] = std::shared_ptr<Converter>(new DefaultConverter<ESM::Weapon>());
converters[ESM::REC_CLOT] = std::shared_ptr<Converter>(new DefaultConverter<ESM::Clothing>());
converters[ESM::REC_ENCH] = std::shared_ptr<Converter>(new DefaultConverter<ESM::Enchantment>());
converters[ESM::REC_WEAP] = std::shared_ptr<Converter>(new DefaultConverter<ESM::Weapon>());
converters[ESM::REC_LEVC] = std::shared_ptr<Converter>(new DefaultConverter<ESM::CreatureLevList>());
converters[ESM::REC_LEVI] = std::shared_ptr<Converter>(new DefaultConverter<ESM::ItemLevList>());
converters[ESM::REC_CNTC] = std::shared_ptr<Converter>(new ConvertCNTC());
converters[ESM::REC_FACT] = std::shared_ptr<Converter>(new ConvertFACT());
converters[ESM::REC_INFO] = std::shared_ptr<Converter>(new ConvertINFO());
converters[ESM::REC_DIAL] = std::shared_ptr<Converter>(new ConvertDIAL());
converters[ESM::REC_QUES] = std::shared_ptr<Converter>(new ConvertQUES());
converters[recJOUR ] = std::shared_ptr<Converter>(new ConvertJOUR());
converters[ESM::REC_SCPT] = std::shared_ptr<Converter>(new ConvertSCPT());
converters[ESM::REC_PROJ] = std::shared_ptr<Converter>(new ConvertPROJ());
converters[recSPLM] = std::shared_ptr<Converter>(new ConvertSPLM());
// TODO:
// - REGN (weather in certain regions?)
// - VFXM
// - SPLM (active spell effects)
// - PROJ (magic projectiles in air)
std::set<unsigned int> unknownRecords;
for (std::map<unsigned int, boost::shared_ptr<Converter> >::const_iterator it = converters.begin();
for (std::map<unsigned int, std::shared_ptr<Converter> >::const_iterator it = converters.begin();
it != converters.end(); ++it)
{
it->second->setContext(context);
@ -322,17 +325,17 @@ namespace ESSImport
ESM::NAME n = esm.getRecName();
esm.getRecHeader();
std::map<unsigned int, boost::shared_ptr<Converter> >::iterator it = converters.find(n.val);
std::map<unsigned int, std::shared_ptr<Converter> >::iterator it = converters.find(n.intval);
if (it != converters.end())
{
it->second->read(esm);
}
else
{
if (unknownRecords.insert(n.val).second)
if (unknownRecords.insert(n.intval).second)
{
std::ios::fmtflags f(std::cerr.flags());
std::cerr << "unknown record " << n.toString() << " (0x" << std::hex << esm.getFileOffset() << ")" << std::endl;
std::cerr << "Error: unknown record " << n.toString() << " (0x" << std::hex << esm.getFileOffset() << ")" << std::endl;
std::cerr.flags(f);
}
@ -374,7 +377,7 @@ namespace ESSImport
profile.mPlayerClassName = context.mCustomPlayerClassName;
else
profile.mPlayerClassId = context.mPlayerBase.mClass;
profile.mPlayerLevel = context.mPlayerBase.mNpdt52.mLevel;
profile.mPlayerLevel = context.mPlayerBase.mNpdt.mLevel;
profile.mPlayerName = header.mGameData.mPlayerName.toString();
writeScreenshot(header, profile);
@ -385,7 +388,7 @@ namespace ESSImport
// Writing order should be Dynamic Store -> Cells -> Player,
// so that references to dynamic records can be recognized when loading
for (std::map<unsigned int, boost::shared_ptr<Converter> >::const_iterator it = converters.begin();
for (std::map<unsigned int, std::shared_ptr<Converter> >::const_iterator it = converters.begin();
it != converters.end(); ++it)
{
if (it->second->getStage() != 0)
@ -398,7 +401,7 @@ namespace ESSImport
context.mPlayerBase.save(writer);
writer.endRecord(ESM::REC_NPC_);
for (std::map<unsigned int, boost::shared_ptr<Converter> >::const_iterator it = converters.begin();
for (std::map<unsigned int, std::shared_ptr<Converter> >::const_iterator it = converters.begin();
it != converters.end(); ++it)
{
if (it->second->getStage() != 1)
@ -419,9 +422,26 @@ namespace ESSImport
context.mPlayer.save(writer);
writer.endRecord(ESM::REC_PLAY);
writer.startRecord(ESM::REC_ACTC);
writer.writeHNT("COUN", context.mNextActorId);
writer.endRecord(ESM::REC_ACTC);
// Stage 2 requires cell references to be written / actors IDs assigned
for (std::map<unsigned int, std::shared_ptr<Converter> >::const_iterator it = converters.begin();
it != converters.end(); ++it)
{
if (it->second->getStage() != 2)
continue;
it->second->write(writer);
}
writer.startRecord (ESM::REC_DIAS);
context.mDialogueState.save(writer);
writer.endRecord(ESM::REC_DIAS);
writer.startRecord(ESM::REC_INPU);
context.mControlsState.save(writer);
writer.endRecord(ESM::REC_INPU);
}

View file

@ -9,12 +9,13 @@
#include <components/esm/globalmap.hpp>
#include <components/esm/loadcrea.hpp>
#include <components/esm/loadnpc.hpp>
#include <components/esm/controlsstate.hpp>
#include "importnpcc.hpp"
#include "importcrec.hpp"
#include "importcntc.hpp"
#include "importplayer.hpp"
#include "importsplm.h"
@ -32,6 +33,8 @@ namespace ESSImport
ESM::DialogueState mDialogueState;
ESM::ControlsState mControlsState;
// cells which should show an explored overlay on the global map
std::set<std::pair<int, int> > mExploredCells;
@ -45,31 +48,48 @@ namespace ESSImport
std::map<std::pair<int, std::string>, NPCC> mNpcChanges;
std::map<std::pair<int, std::string>, CNTC> mContainerChanges;
std::map<std::pair<int, std::string>, int> mActorIdMap;
int mNextActorId;
std::map<std::string, ESM::Creature> mCreatures;
std::map<std::string, ESM::NPC> mNpcs;
std::vector<SPLM::ActiveSpell> mActiveSpells;
Context()
: mDay(0)
, mMonth(0)
, mYear(0)
, mHour(0.f)
, mNextActorId(0)
{
mPlayer.mAutoMove = 0;
ESM::CellId playerCellId;
playerCellId.mPaged = true;
playerCellId.mIndex.mX = playerCellId.mIndex.mY = 0;
mPlayer.mCellId = playerCellId;
//mPlayer.mLastKnownExteriorPosition
mPlayer.mHasMark = 0; // TODO
mPlayer.mCurrentCrimeId = 0; // TODO
mPlayer.mLastKnownExteriorPosition[0]
= mPlayer.mLastKnownExteriorPosition[1]
= mPlayer.mLastKnownExteriorPosition[2]
= 0.0f;
mPlayer.mHasMark = 0;
mPlayer.mCurrentCrimeId = -1; // TODO
mPlayer.mPaidCrimeId = -1;
mPlayer.mObject.blank();
mPlayer.mObject.mEnabled = true;
mPlayer.mObject.mRef.mRefID = "player"; // REFR.mRefID would be PlayerSaveGame
mPlayer.mObject.mCreatureStats.mActorId = generateActorId();
mGlobalMapState.mBounds.mMinX = 0;
mGlobalMapState.mBounds.mMaxX = 0;
mGlobalMapState.mBounds.mMinY = 0;
mGlobalMapState.mBounds.mMaxY = 0;
}
int generateActorId()
{
return mNextActorId++;
}
};
}

View file

@ -20,14 +20,20 @@ namespace ESSImport
item.mId = contItem.mItem.toString();
item.mCount = contItem.mCount;
item.mRelativeEquipmentSlot = -1;
item.mLockLevel = 0;
// seems that a stack of items can have a set of subrecords for each item? rings0000.ess
// doesn't make any sense to me, if the values were different then the items shouldn't stack in the first place?
// I guess we should double check the stacking logic in OpenMW
for (int i=0;i<std::abs(item.mCount);++i)
unsigned int itemCount = std::abs(item.mCount);
bool separateStacks = false;
for (unsigned int i=0;i<itemCount;++i)
{
if (esm.isNextSub("XIDX")) // index in the stack?
esm.skipHSub();
bool newStack = esm.isNextSub("XIDX");
if (newStack)
{
unsigned int idx;
esm.getHT(idx);
separateStacks = true;
item.mCount = 1;
}
item.mSCRI.load(esm);
@ -38,9 +44,13 @@ namespace ESSImport
int charge=-1;
esm.getHNOT(charge, "XHLT");
item.mChargeInt = charge;
if (newStack)
mItems.push_back(item);
}
mItems.push_back(item);
if (!separateStacks)
mItems.push_back(item);
}
// equipped items

View file

@ -23,9 +23,12 @@ namespace ESSImport
mKnownDialogueTopics.push_back(esm.getHString());
}
mHasMark = false;
if (esm.isNextSub("MNAM"))
esm.skipHSub(); // If this field is here it seems to specify the interior cell the player is in,
// but it's not always here, so it's kinda useless
{
mHasMark = true;
mMNAM = esm.getHString();
}
esm.getHNT(mPNAM, "PNAM");
@ -34,6 +37,14 @@ namespace ESSImport
if (esm.isNextSub("NAM9"))
esm.skipHSub();
// Rest state. You shouldn't even be able to save during rest, but skip just in case.
if (esm.isNextSub("RNAM"))
/*
int hoursLeft;
float x, y, z; // resting position
*/
esm.skipHSub(); // 16 bytes
mBounty = 0;
esm.getHNOT(mBounty, "CNAM");
@ -50,8 +61,12 @@ namespace ESSImport
if (esm.isNextSub("NAM3"))
esm.skipHSub();
mHasENAM = false;
if (esm.isNextSub("ENAM"))
esm.skipHSub();
{
mHasENAM = true;
esm.getHT(mENAM);
}
if (esm.isNextSub("LNAM"))
esm.skipHSub();
@ -63,12 +78,19 @@ namespace ESSImport
mFactions.push_back(fnam);
}
if (esm.isNextSub("AADT"))
esm.skipHSub(); // 44 bytes, no clue
mHasAADT = false;
if (esm.isNextSub("AADT")) // Attack animation data?
{
mHasAADT = true;
esm.getHT(mAADT);
}
if (esm.isNextSub("KNAM"))
esm.skipHSub(); // assigned Quick Keys, I think
if (esm.isNextSub("ANIS"))
esm.skipHSub(); // 16 bytes
if (esm.isNextSub("WERE"))
{
// some werewolf data, 152 bytes
@ -76,10 +98,6 @@ namespace ESSImport
esm.getSubHeader();
esm.skip(152);
}
// unsure if before or after WERE
if (esm.isNextSub("ANIS"))
esm.skipHSub();
}
}

View file

@ -38,15 +38,23 @@ struct PCDT
std::vector<std::string> mKnownDialogueTopics;
enum DrawState_
enum PlayerFlags
{
DrawState_Weapon = 0x80,
DrawState_Spell = 0x100
};
enum CameraState
{
CameraState_FirstPerson = 0x8,
CameraState_ThirdPerson = 0xa
PlayerFlags_ViewSwitchDisabled = 0x1,
PlayerFlags_ControlsDisabled = 0x4,
PlayerFlags_Sleeping = 0x10,
PlayerFlags_Waiting = 0x40,
PlayerFlags_WeaponDrawn = 0x80,
PlayerFlags_SpellDrawn = 0x100,
PlayerFlags_InJail = 0x200,
PlayerFlags_JumpingDisabled = 0x1000,
PlayerFlags_LookingDisabled = 0x2000,
PlayerFlags_VanityModeDisabled = 0x4000,
PlayerFlags_WeaponDrawingDisabled = 0x8000,
PlayerFlags_SpellDrawingDisabled = 0x10000,
PlayerFlags_ThirdPerson = 0x20000,
PlayerFlags_TeleportingDisabled = 0x40000,
PlayerFlags_LevitationDisabled = 0x80000
};
#pragma pack(push)
@ -63,18 +71,53 @@ struct PCDT
struct PNAM
{
short mDrawState; // DrawState
short mCameraState; // CameraState
struct MarkLocation
{
float mX, mY, mZ; // worldspace position
float mRotZ; // Z angle in radians
int mCellX, mCellY; // grid coordinates; for interior cells this is always (0, 0)
};
int mPlayerFlags; // controls, camera and draw state
unsigned int mLevelProgress;
float mSkillProgress[27]; // skill progress, non-uniform scaled
unsigned char mSkillIncreases[8]; // number of skill increases for each attribute
unsigned char mUnknown3[88];
int mTelekinesisRangeBonus; // in units; seems redundant
float mVisionBonus; // range: <0.0, 1.0>; affected by light spells and Get/Mod/SetPCVisionBonus
int mDetectKeyMagnitude; // seems redundant
int mDetectEnchantmentMagnitude; // seems redundant
int mDetectAnimalMagnitude; // seems redundant
MarkLocation mMarkLocation;
unsigned char mUnknown3[40];
unsigned char mSpecIncreases[3]; // number of skill increases for each specialization
unsigned char mUnknown4;
};
struct ENAM
{
int mCellX;
int mCellY;
};
struct AADT // 44 bytes
{
int animGroupIndex; // See convertANIS() for the mapping.
unsigned char mUnknown5[40];
};
#pragma pack(pop)
std::vector<FNAM> mFactions;
PNAM mPNAM;
bool mHasMark;
std::string mMNAM; // mark cell name; can also be sDefaultCellname or region name
bool mHasENAM;
ENAM mENAM; // last exterior cell
bool mHasAADT;
AADT mAADT;
void load(ESM::ESMReader& esm);
};

View file

@ -0,0 +1,18 @@
#include "importproj.h"
#include <components/esm/esmreader.hpp>
namespace ESSImport
{
void ESSImport::PROJ::load(ESM::ESMReader& esm)
{
while (esm.isNextSub("PNAM"))
{
PNAM pnam;
esm.getHT(pnam);
mProjectiles.push_back(pnam);
}
}
}

View file

@ -0,0 +1,47 @@
#ifndef OPENMW_ESSIMPORT_IMPORTPROJ_H
#define OPENMW_ESSIMPORT_IMPORTPROJ_H
#include <vector>
#include <components/esm/esmcommon.hpp>
#include <components/esm/util.hpp>
namespace ESM
{
class ESMReader;
}
namespace ESSImport
{
struct PROJ
{
#pragma pack(push)
#pragma pack(1)
struct PNAM // 184 bytes
{
float mAttackStrength;
float mSpeed;
unsigned char mUnknown[4*2];
float mFlightTime;
int mSplmIndex; // reference to a SPLM record (0 for ballistic projectiles)
unsigned char mUnknown2[4];
ESM::Vector3 mVelocity;
ESM::Vector3 mPosition;
unsigned char mUnknown3[4*9];
ESM::NAME32 mActorId; // indexed refID (with the exception of "PlayerSaveGame")
ESM::NAME32 mArrowId;
ESM::NAME32 mBowId;
bool isMagic() const { return mSplmIndex != 0; }
};
#pragma pack(pop)
std::vector<PNAM> mProjectiles;
void load(ESM::ESMReader& esm);
};
}
#endif

View file

@ -13,7 +13,7 @@ namespace ESM
namespace ESSImport
{
/// Local variable assigments for a running script
/// Local variable assignments for a running script
struct SCRI
{
std::string mScript;

View file

@ -0,0 +1,43 @@
#include "importsplm.h"
#include <components/esm/esmreader.hpp>
namespace ESSImport
{
void SPLM::load(ESM::ESMReader& esm)
{
while (esm.isNextSub("NAME"))
{
ActiveSpell spell;
esm.getHT(spell.mIndex);
esm.getHNT(spell.mSPDT, "SPDT");
spell.mTarget = esm.getHNOString("TNAM");
while (esm.isNextSub("NPDT"))
{
ActiveEffect effect;
esm.getHT(effect.mNPDT);
// Effect-specific subrecords can follow:
// - INAM for disintegration and bound effects
// - CNAM for summoning and command effects
// - VNAM for vampirism
// NOTE: There can be multiple INAMs per effect.
// TODO: Needs more research.
esm.skipHSubUntil("NAM0"); // sentinel
esm.getSubName();
esm.skipHSub();
spell.mActiveEffects.push_back(effect);
}
unsigned char xnam; // sentinel
esm.getHNT(xnam, "XNAM");
mActiveSpells.push_back(spell);
}
}
}

View file

@ -0,0 +1,81 @@
#ifndef OPENMW_ESSIMPORT_IMPORTSPLM_H
#define OPENMW_ESSIMPORT_IMPORTSPLM_H
#include <vector>
#include <components/esm/esmcommon.hpp>
#include <components/esm/util.hpp>
namespace ESM
{
class ESMReader;
}
namespace ESSImport
{
struct SPLM
{
#pragma pack(push)
#pragma pack(1)
struct SPDT // 160 bytes
{
int mType; // 1 = spell, 2 = enchantment, 3 = potion
ESM::NAME32 mId; // base ID of a spell/enchantment/potion
unsigned char mUnknown[4*4];
ESM::NAME32 mCasterId;
ESM::NAME32 mSourceId; // empty for spells
unsigned char mUnknown2[4*11];
};
struct NPDT // 56 bytes
{
ESM::NAME32 mAffectedActorId;
unsigned char mUnknown[4*2];
int mMagnitude;
float mSecondsActive;
unsigned char mUnknown2[4*2];
};
struct INAM // 40 bytes
{
int mUnknown;
unsigned char mUnknown2;
ESM::FIXED_STRING<35> mItemId; // disintegrated item / bound item / item to re-equip after expiration
};
struct CNAM // 36 bytes
{
int mUnknown; // seems to always be 0
ESM::NAME32 mSummonedOrCommandedActor[32];
};
struct VNAM // 4 bytes
{
int mUnknown;
};
#pragma pack(pop)
struct ActiveEffect
{
NPDT mNPDT;
};
struct ActiveSpell
{
int mIndex;
SPDT mSPDT;
std::string mTarget;
std::vector<ActiveEffect> mActiveEffects;
};
std::vector<ActiveSpell> mActiveSpells;
void load(ESM::ESMReader& esm);
};
}
#endif

View file

@ -2,8 +2,6 @@
#include <boost/program_options.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/fstream.hpp>
#include <components/files/configurationmanager.hpp>

View file

@ -6,7 +6,9 @@ set(LAUNCHER
playpage.cpp
textslotmsgbox.cpp
settingspage.cpp
advancedpage.cpp
utils/cellnameloader.cpp
utils/profilescombobox.cpp
utils/textinputdialog.cpp
utils/lineedit.cpp
@ -21,7 +23,9 @@ set(LAUNCHER_HEADER
playpage.hpp
textslotmsgbox.hpp
settingspage.hpp
advancedpage.hpp
utils/cellnameloader.hpp
utils/profilescombobox.hpp
utils/textinputdialog.hpp
utils/lineedit.hpp
@ -35,7 +39,9 @@ set(LAUNCHER_HEADER_MOC
playpage.hpp
textslotmsgbox.hpp
settingspage.hpp
advancedpage.hpp
utils/cellnameloader.hpp
utils/textinputdialog.hpp
utils/profilescombobox.hpp
utils/lineedit.hpp
@ -49,6 +55,7 @@ set(LAUNCHER_UI
${CMAKE_SOURCE_DIR}/files/ui/playpage.ui
${CMAKE_SOURCE_DIR}/files/ui/contentselector.ui
${CMAKE_SOURCE_DIR}/files/ui/settingspage.ui
${CMAKE_SOURCE_DIR}/files/ui/advancedpage.ui
)
source_group(launcher FILES ${LAUNCHER} ${LAUNCHER_HEADER})
@ -78,7 +85,7 @@ if(NOT WIN32)
endif(NOT WIN32)
# Main executable
add_executable(openmw-launcher
openmw_add_executable(openmw-launcher
${GUI_TYPE}
${LAUNCHER}
${LAUNCHER_HEADER}
@ -87,6 +94,10 @@ add_executable(openmw-launcher
${UI_HDRS}
)
if (WIN32)
INSTALL(TARGETS openmw-launcher RUNTIME DESTINATION ".")
endif (WIN32)
target_link_libraries(openmw-launcher
${SDL2_LIBRARY_ONLY}
components
@ -98,7 +109,7 @@ if (DESIRED_QT_VERSION MATCHES 4)
target_link_libraries(openmw-launcher ${QT_QTMAIN_LIBRARY})
endif(WIN32)
else()
qt5_use_modules(openmw-launcher Widgets Core)
target_link_libraries(openmw-launcher Qt5::Widgets Qt5::Core)
endif()
if (BUILD_WITH_CODE_COVERAGE)

View file

@ -0,0 +1,176 @@
#include "advancedpage.hpp"
#include <components/config/gamesettings.hpp>
#include <components/config/launchersettings.hpp>
#include <QFileDialog>
#include <QCompleter>
#include <components/contentselector/view/contentselector.hpp>
#include <components/contentselector/model/esmfile.hpp>
Launcher::AdvancedPage::AdvancedPage(Files::ConfigurationManager &cfg,
Config::GameSettings &gameSettings,
Settings::Manager &engineSettings, QWidget *parent)
: QWidget(parent)
, mCfgMgr(cfg)
, mGameSettings(gameSettings)
, mEngineSettings(engineSettings)
{
setObjectName ("AdvancedPage");
setupUi(this);
loadSettings();
}
void Launcher::AdvancedPage::loadCellsForAutocomplete(QStringList cellNames) {
// Set up an auto-completer for the "Start default character at" field
auto *completer = new QCompleter(cellNames);
completer->setCompletionMode(QCompleter::PopupCompletion);
completer->setCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive);
startDefaultCharacterAtField->setCompleter(completer);
}
void Launcher::AdvancedPage::on_skipMenuCheckBox_stateChanged(int state) {
startDefaultCharacterAtLabel->setEnabled(state == Qt::Checked);
startDefaultCharacterAtField->setEnabled(state == Qt::Checked);
}
void Launcher::AdvancedPage::on_runScriptAfterStartupBrowseButton_clicked()
{
QString scriptFile = QFileDialog::getOpenFileName(
this,
QObject::tr("Select script file"),
QDir::currentPath(),
QString(tr("Text file (*.txt)")));
if (scriptFile.isEmpty())
return;
QFileInfo info(scriptFile);
if (!info.exists() || !info.isReadable())
return;
const QString path(QDir::toNativeSeparators(info.absoluteFilePath()));
runScriptAfterStartupField->setText(path);
}
bool Launcher::AdvancedPage::loadSettings()
{
// Testing
bool skipMenu = mGameSettings.value("skip-menu").toInt() == 1;
if (skipMenu) {
skipMenuCheckBox->setCheckState(Qt::Checked);
}
startDefaultCharacterAtLabel->setEnabled(skipMenu);
startDefaultCharacterAtField->setEnabled(skipMenu);
startDefaultCharacterAtField->setText(mGameSettings.value("start"));
runScriptAfterStartupField->setText(mGameSettings.value("script-run"));
// Game Settings
loadSettingBool(canLootDuringDeathAnimationCheckBox, "can loot during death animation", "Game");
loadSettingBool(followersAttackOnSightCheckBox, "followers attack on sight", "Game");
loadSettingBool(preventMerchantEquippingCheckBox, "prevent merchant equipping", "Game");
loadSettingBool(rebalanceSoulGemValuesCheckBox, "rebalance soul gem values", "Game");
loadSettingBool(chargeForEveryFollowerCheckBox, "charge for every follower travelling", "Game");
loadSettingBool(enchantedWeaponsMagicalCheckBox, "enchanted weapons are magical", "Game");
loadSettingBool(permanentBarterDispositionChangeCheckBox, "barter disposition change is permanent", "Game");
// Input Settings
loadSettingBool(allowThirdPersonZoomCheckBox, "allow third person zoom", "Input");
loadSettingBool(grabCursorCheckBox, "grab cursor", "Input");
loadSettingBool(toggleSneakCheckBox, "toggle sneak", "Input");
// Saves Settings
loadSettingBool(timePlayedCheckbox, "timeplayed", "Saves");
maximumQuicksavesComboBox->setValue(mEngineSettings.getInt("max quicksaves", "Saves"));
// User Interface Settings
loadSettingBool(showEffectDurationCheckBox, "show effect duration", "Game");
loadSettingBool(showEnchantChanceCheckBox, "show enchant chance", "Game");
loadSettingBool(showMeleeInfoCheckBox, "show melee info", "Game");
loadSettingBool(showProjectileDamageCheckBox, "show projectile damage", "Game");
int showOwnedIndex = mEngineSettings.getInt("show owned", "Game");
// Match the index with the option (only 0, 1, 2, or 3 are valid). Will default to 0 if invalid.
if (showOwnedIndex >= 0 && showOwnedIndex <= 3)
showOwnedComboBox->setCurrentIndex(showOwnedIndex);
// Other Settings
QString screenshotFormatString = QString::fromStdString(mEngineSettings.getString("screenshot format", "General")).toUpper();
if (screenshotFormatComboBox->findText(screenshotFormatString) == -1)
screenshotFormatComboBox->addItem(screenshotFormatString);
screenshotFormatComboBox->setCurrentIndex(screenshotFormatComboBox->findText(screenshotFormatString));
return true;
}
void Launcher::AdvancedPage::saveSettings()
{
// Ensure we only set the new settings if they changed. This is to avoid cluttering the
// user settings file (which by definition should only contain settings the user has touched)
// Testing
int skipMenu = skipMenuCheckBox->checkState() == Qt::Checked;
if (skipMenu != mGameSettings.value("skip-menu").toInt())
mGameSettings.setValue("skip-menu", QString::number(skipMenu));
QString startCell = startDefaultCharacterAtField->text();
if (startCell != mGameSettings.value("start")) {
mGameSettings.setValue("start", startCell);
}
QString scriptRun = runScriptAfterStartupField->text();
if (scriptRun != mGameSettings.value("script-run"))
mGameSettings.setValue("script-run", scriptRun);
// Game Settings
saveSettingBool(canLootDuringDeathAnimationCheckBox, "can loot during death animation", "Game");
saveSettingBool(followersAttackOnSightCheckBox, "followers attack on sight", "Game");
saveSettingBool(preventMerchantEquippingCheckBox, "prevent merchant equipping", "Game");
saveSettingBool(rebalanceSoulGemValuesCheckBox, "rebalance soul gem values", "Game");
saveSettingBool(chargeForEveryFollowerCheckBox, "charge for every follower travelling", "Game");
saveSettingBool(enchantedWeaponsMagicalCheckBox, "enchanted weapons are magical", "Game");
saveSettingBool(permanentBarterDispositionChangeCheckBox, "barter disposition change is permanent", "Game");
// Input Settings
saveSettingBool(allowThirdPersonZoomCheckBox, "allow third person zoom", "Input");
saveSettingBool(grabCursorCheckBox, "grab cursor", "Input");
saveSettingBool(toggleSneakCheckBox, "toggle sneak", "Input");
// Saves Settings
saveSettingBool(timePlayedCheckbox, "timeplayed", "Saves");
int maximumQuicksaves = maximumQuicksavesComboBox->value();
if (maximumQuicksaves != mEngineSettings.getInt("max quicksaves", "Saves")) {
mEngineSettings.setInt("max quicksaves", "Saves", maximumQuicksaves);
}
// User Interface Settings
saveSettingBool(showEffectDurationCheckBox, "show effect duration", "Game");
saveSettingBool(showEnchantChanceCheckBox, "show enchant chance", "Game");
saveSettingBool(showMeleeInfoCheckBox, "show melee info", "Game");
saveSettingBool(showProjectileDamageCheckBox, "show projectile damage", "Game");
int showOwnedCurrentIndex = showOwnedComboBox->currentIndex();
if (showOwnedCurrentIndex != mEngineSettings.getInt("show owned", "Game"))
mEngineSettings.setInt("show owned", "Game", showOwnedCurrentIndex);
// Other Settings
std::string screenshotFormatString = screenshotFormatComboBox->currentText().toLower().toStdString();
if (screenshotFormatString != mEngineSettings.getString("screenshot format", "General"))
mEngineSettings.setString("screenshot format", "General", screenshotFormatString);
}
void Launcher::AdvancedPage::loadSettingBool(QCheckBox *checkbox, const std::string &setting, const std::string &group) {
if (mEngineSettings.getBool(setting, group))
checkbox->setCheckState(Qt::Checked);
}
void Launcher::AdvancedPage::saveSettingBool(QCheckBox *checkbox, const std::string &setting, const std::string &group) {
bool cValue = checkbox->checkState();
if (cValue != mEngineSettings.getBool(setting, group))
mEngineSettings.setBool(setting, group, cValue);
}
void Launcher::AdvancedPage::slotLoadedCellsChanged(QStringList cellNames)
{
loadCellsForAutocomplete(cellNames);
}

View file

@ -0,0 +1,47 @@
#ifndef ADVANCEDPAGE_H
#define ADVANCEDPAGE_H
#include <QWidget>
#include "ui_advancedpage.h"
#include <components/settings/settings.hpp>
namespace Files { struct ConfigurationManager; }
namespace Config { class GameSettings; }
namespace Launcher
{
class AdvancedPage : public QWidget, private Ui::AdvancedPage
{
Q_OBJECT
public:
AdvancedPage(Files::ConfigurationManager &cfg, Config::GameSettings &gameSettings,
Settings::Manager &engineSettings, QWidget *parent = 0);
bool loadSettings();
void saveSettings();
public slots:
void slotLoadedCellsChanged(QStringList cellNames);
private slots:
void on_skipMenuCheckBox_stateChanged(int state);
void on_runScriptAfterStartupBrowseButton_clicked();
private:
Files::ConfigurationManager &mCfgMgr;
Config::GameSettings &mGameSettings;
Settings::Manager &mEngineSettings;
/**
* Load the cells associated with the given content files for use in autocomplete
* @param filePaths the file paths of the content files to be examined
*/
void loadCellsForAutocomplete(QStringList filePaths);
void loadSettingBool(QCheckBox *checkbox, const std::string& setting, const std::string& group);
void saveSettingBool(QCheckBox *checkbox, const std::string& setting, const std::string& group);
};
}
#endif

View file

@ -7,7 +7,10 @@
#include <QCheckBox>
#include <QMenu>
#include <QSortFilterProxyModel>
#include <thread>
#include <mutex>
#include <apps/launcher/utils/cellnameloader.hpp>
#include <components/files/configurationmanager.hpp>
#include <components/contentselector/model/esmfile.hpp>
@ -16,6 +19,7 @@
#include <components/config/gamesettings.hpp>
#include <components/config/launchersettings.hpp>
#include <iostream>
#include "utils/textinputdialog.hpp"
#include "utils/profilescombobox.hpp"
@ -40,6 +44,13 @@ Launcher::DataFilesPage::DataFilesPage(Files::ConfigurationManager &cfg, Config:
buildView();
loadSettings();
// Connect signal and slot after the settings have been loaded. We only care about the user changing
// the addons and don't want to get signals of the system doing it during startup.
connect(mSelector, SIGNAL(signalAddonDataChanged(QModelIndex,QModelIndex)),
this, SLOT(slotAddonDataChanged()));
// Call manually to indicate all changes to addon data during startup.
slotAddonDataChanged();
}
void Launcher::DataFilesPage::buildView()
@ -142,6 +153,17 @@ void Launcher::DataFilesPage::saveSettings(const QString &profile)
mGameSettings.setContentList(fileNames);
}
QStringList Launcher::DataFilesPage::selectedFilePaths()
{
//retrieve the files selected for the profile
ContentSelectorModel::ContentFileList items = mSelector->selectedFiles();
QStringList filePaths;
foreach(const ContentSelectorModel::EsmFile *item, items) {
filePaths.append(item->filePath());
}
return filePaths;
}
void Launcher::DataFilesPage::removeProfile(const QString &profile)
{
mLauncherSettings.removeContentList(profile);
@ -308,3 +330,31 @@ bool Launcher::DataFilesPage::showDeleteMessageBox (const QString &text)
return (msgBox.clickedButton() == deleteButton);
}
void Launcher::DataFilesPage::slotAddonDataChanged()
{
QStringList selectedFiles = selectedFilePaths();
if (previousSelectedFiles != selectedFiles) {
previousSelectedFiles = selectedFiles;
// Loading cells for core Morrowind + Expansions takes about 0.2 seconds, which is enough to cause a
// barely perceptible UI lag. Splitting into its own thread to alleviate that.
std::thread loadCellsThread(&DataFilesPage::reloadCells, this, selectedFiles);
loadCellsThread.detach();
}
}
// Mutex lock to run reloadCells synchronously.
std::mutex _reloadCellsMutex;
void Launcher::DataFilesPage::reloadCells(QStringList selectedFiles)
{
// Use a mutex lock so that we can prevent two threads from executing the rest of this code at the same time
// Based on https://stackoverflow.com/a/5429695/531762
std::unique_lock<std::mutex> lock(_reloadCellsMutex);
// The following code will run only if there is not another thread currently running it
CellNameLoader cellNameLoader;
QStringList cellNamesList = QStringList::fromSet(cellNameLoader.getCellNames(selectedFiles));
std::sort(cellNamesList.begin(), cellNamesList.end());
emit signalLoadedCellsChanged(cellNamesList);
}

View file

@ -7,6 +7,7 @@
#include <QDir>
#include <QFile>
#include <QStringList>
class QSortFilterProxyModel;
class QAbstractItemModel;
@ -41,8 +42,15 @@ namespace Launcher
void saveSettings(const QString &profile = "");
bool loadSettings();
/**
* Returns the file paths of all selected content files
* @return the file paths of all selected content files
*/
QStringList selectedFilePaths();
signals:
void signalProfileChanged (int index);
void signalLoadedCellsChanged(QStringList selectedFiles);
public slots:
void slotProfileChanged (int index);
@ -52,6 +60,7 @@ namespace Launcher
void slotProfileChangedByUser(const QString &previous, const QString &current);
void slotProfileRenamed(const QString &previous, const QString &current);
void slotProfileDeleted(const QString &item);
void slotAddonDataChanged ();
void updateOkButton(const QString &text);
@ -72,7 +81,7 @@ namespace Launcher
Config::LauncherSettings &mLauncherSettings;
QString mPreviousProfile;
QStringList previousSelectedFiles;
QString mDataLocal;
void setPluginsCheckstates(Qt::CheckState state);
@ -87,6 +96,7 @@ namespace Launcher
void addProfile (const QString &profile, bool setAsCurrent);
void checkForDefaultProfile();
void populateFileViews(const QString& contentModelName);
void reloadCells(QStringList selectedFiles);
class PathIterator
{

View file

@ -1,5 +1,7 @@
#include "graphicspage.hpp"
#include <boost/math/common_factor.hpp>
#include <csignal>
#include <QDesktopWidget>
#include <QMessageBox>
#include <QDir>
@ -10,16 +12,11 @@
#define MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
#endif // MAC_OS_X_VERSION_MIN_REQUIRED
#include <SDL.h>
#include <SDL_video.h>
#include <boost/math/common_factor.hpp>
#include <components/files/configurationmanager.hpp>
#include <components/contentselector/model/naturalsort.hpp>
#include <components/settings/settings.hpp>
QString getAspect(int x, int y)
{
int gcd = boost::math::gcd (x, y);
@ -51,8 +48,28 @@ Launcher::GraphicsPage::GraphicsPage(Files::ConfigurationManager &cfg, Settings:
}
bool Launcher::GraphicsPage::connectToSdl() {
SDL_SetHint(SDL_HINT_RENDER_DRIVER, "software");
SDL_SetMainReady();
// Required for determining screen resolution and such on the Graphics tab
if (SDL_Init(SDL_INIT_VIDEO) != 0)
{
return false;
}
signal(SIGINT, SIG_DFL); // We don't want to use the SDL event loop in the launcher,
// so reset SIGINT which SDL wants to redirect to an SDL_Quit event.
return true;
}
bool Launcher::GraphicsPage::setupSDL()
{
bool sdlConnectSuccessful = connectToSdl();
if (!sdlConnectSuccessful)
{
return false;
}
int displays = SDL_GetNumVideoDisplays();
if (displays < 0)
@ -72,6 +89,9 @@ bool Launcher::GraphicsPage::setupSDL()
screenComboBox->addItem(QString(tr("Screen ")) + QString::number(i + 1));
}
// Disconnect from SDL processes
SDL_Quit();
return true;
}

View file

@ -37,6 +37,11 @@ namespace Launcher
QStringList getAvailableResolutions(int screen);
QRect getMaximumResolution();
/**
* Connect to the SDL so that we can use it to determine graphics
* @return whether or not connecting to SDL is successful
*/
bool connectToSdl();
bool setupSDL();
};
}

View file

@ -1,5 +1,4 @@
#include <iostream>
#include <csignal>
#include <QApplication>
#include <QTextCodec>
@ -12,37 +11,17 @@
#define MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
#endif // MAC_OS_X_VERSION_MIN_REQUIRED
#include <SDL.h>
#include "maindialog.hpp"
int main(int argc, char *argv[])
{
try
{
SDL_SetHint(SDL_HINT_RENDER_DRIVER, "software");
SDL_SetMainReady();
if (SDL_Init(SDL_INIT_VIDEO) != 0)
{
qDebug() << "SDL_Init failed: " << QString::fromUtf8(SDL_GetError());
return 0;
}
signal(SIGINT, SIG_DFL); // We don't want to use the SDL event loop in the launcher,
// so reset SIGINT which SDL wants to redirect to an SDL_Quit event.
QApplication app(argc, argv);
// Now we make sure the current dir is set to application path
QDir dir(QCoreApplication::applicationDirPath());
#ifdef Q_OS_MAC
if (dir.dirName() == "MacOS") {
dir.cdUp();
dir.cdUp();
dir.cdUp();
}
#endif
QDir::setCurrent(dir.absolutePath());
Launcher::MainDialog mainWin;
@ -54,9 +33,7 @@ int main(int argc, char *argv[])
if (result == Launcher::FirstRunDialogResultContinue)
mainWin.show();
int returnValue = app.exec();
SDL_Quit();
return returnValue;
return app.exec();
}
catch (std::exception& e)
{

View file

@ -2,9 +2,7 @@
#include <components/version/version.hpp>
#include <QLabel>
#include <QDate>
#include <QTime>
#include <QMessageBox>
#include <QPushButton>
#include <QFontDatabase>
@ -12,8 +10,6 @@
#include <QFileDialog>
#include <QCloseEvent>
#include <QTextCodec>
#include <QFile>
#include <QDir>
#include <QDebug>
@ -21,6 +17,7 @@
#include "graphicspage.hpp"
#include "datafilespage.hpp"
#include "settingspage.hpp"
#include "advancedpage.hpp"
using namespace Process;
@ -93,17 +90,23 @@ void Launcher::MainDialog::createIcons()
dataFilesButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
QListWidgetItem *graphicsButton = new QListWidgetItem(iconWidget);
graphicsButton->setIcon(QIcon::fromTheme("video-display"));
graphicsButton->setIcon(QIcon(":/images/preferences-video.png"));
graphicsButton->setText(tr("Graphics"));
graphicsButton->setTextAlignment(Qt::AlignHCenter | Qt::AlignBottom | Qt::AlignAbsolute);
graphicsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
QListWidgetItem *settingsButton = new QListWidgetItem(iconWidget);
settingsButton->setIcon(QIcon::fromTheme("preferences-system"));
settingsButton->setIcon(QIcon(":/images/preferences.png"));
settingsButton->setText(tr("Settings"));
settingsButton->setTextAlignment(Qt::AlignHCenter | Qt::AlignBottom);
settingsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
QListWidgetItem *advancedButton = new QListWidgetItem(iconWidget);
advancedButton->setIcon(QIcon(":/images/preferences-advanced.png"));
advancedButton->setText(tr("Advanced"));
advancedButton->setTextAlignment(Qt::AlignHCenter | Qt::AlignBottom);
advancedButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
connect(iconWidget,
SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
this, SLOT(changePage(QListWidgetItem*,QListWidgetItem*)));
@ -116,6 +119,7 @@ void Launcher::MainDialog::createPages()
mDataFilesPage = new DataFilesPage(mCfgMgr, mGameSettings, mLauncherSettings, this);
mGraphicsPage = new GraphicsPage(mCfgMgr, mEngineSettings, this);
mSettingsPage = new SettingsPage(mCfgMgr, mGameSettings, mLauncherSettings, this);
mAdvancedPage = new AdvancedPage(mCfgMgr, mGameSettings, mEngineSettings, this);
// Set the combobox of the play page to imitate the combobox on the datafilespage
mPlayPage->setProfilesModel(mDataFilesPage->profilesModel());
@ -126,6 +130,7 @@ void Launcher::MainDialog::createPages()
pagesWidget->addWidget(mDataFilesPage);
pagesWidget->addWidget(mGraphicsPage);
pagesWidget->addWidget(mSettingsPage);
pagesWidget->addWidget(mAdvancedPage);
// Select the first page
iconWidget->setCurrentItem(iconWidget->item(0), QItemSelectionModel::Select);
@ -134,6 +139,8 @@ void Launcher::MainDialog::createPages()
connect(mPlayPage, SIGNAL(signalProfileChanged(int)), mDataFilesPage, SLOT(slotProfileChanged(int)));
connect(mDataFilesPage, SIGNAL(signalProfileChanged(int)), mPlayPage, SLOT(setProfilesIndex(int)));
// Using Qt::QueuedConnection because signal is emitted in a subthread and slot is in the main thread
connect(mDataFilesPage, SIGNAL(signalLoadedCellsChanged(QStringList)), mAdvancedPage, SLOT(slotLoadedCellsChanged(QStringList)), Qt::QueuedConnection);
}
@ -172,7 +179,10 @@ Launcher::FirstRunDialogResult Launcher::MainDialog::showFirstRunDialog()
}
}
return setup() ? FirstRunDialogResultContinue : FirstRunDialogResultFailure;
if (!setup() || !setupGameData()) {
return FirstRunDialogResultFailure;
}
return FirstRunDialogResultContinue;
}
void Launcher::MainDialog::setVersionLabel()
@ -242,6 +252,9 @@ bool Launcher::MainDialog::reloadSettings()
if (!mGraphicsPage->loadSettings())
return false;
if (!mAdvancedPage->loadSettings())
return false;
return true;
}
@ -293,6 +306,7 @@ bool Launcher::MainDialog::setupGameSettings()
{
mGameSettings.clear();
QString localPath = QString::fromUtf8(mCfgMgr.getLocalPath().string().c_str());
QString userPath = QString::fromUtf8(mCfgMgr.getUserConfigPath().string().c_str());
QString globalPath = QString::fromUtf8(mCfgMgr.getGlobalPath().string().c_str());
@ -320,13 +334,13 @@ bool Launcher::MainDialog::setupGameSettings()
// Now the rest - priority: user > local > global
QStringList paths;
paths.append(globalPath + QString("openmw.cfg"));
paths.append(QString("openmw.cfg"));
paths.append(localPath + QString("openmw.cfg"));
paths.append(userPath + QString("openmw.cfg"));
foreach (const QString &path, paths) {
qDebug() << "Loading config file:" << path.toUtf8().constData();
foreach (const QString &path2, paths) {
qDebug() << "Loading config file:" << path2.toUtf8().constData();
QFile file(path);
file.setFileName(path2);
if (file.exists()) {
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
cfgError(tr("Error opening OpenMW configuration file"),
@ -343,16 +357,21 @@ bool Launcher::MainDialog::setupGameSettings()
file.close();
}
return true;
}
bool Launcher::MainDialog::setupGameData()
{
QStringList dataDirs;
// Check if the paths actually contain data files
foreach (const QString path, mGameSettings.getDataDirs()) {
QDir dir(path);
foreach (const QString path3, mGameSettings.getDataDirs()) {
QDir dir(path3);
QStringList filters;
filters << "*.esp" << "*.esm" << "*.omwgame" << "*.omwaddon";
if (!dir.entryList(filters).isEmpty())
dataDirs.append(path);
dataDirs.append(path3);
}
if (dataDirs.isEmpty())
@ -474,6 +493,7 @@ bool Launcher::MainDialog::writeSettings()
mDataFilesPage->saveSettings();
mGraphicsPage->saveSettings();
mSettingsPage->saveSettings();
mAdvancedPage->saveSettings();
QString userPath = QString::fromUtf8(mCfgMgr.getUserConfigPath().string().c_str());
QDir dir(userPath);
@ -579,6 +599,6 @@ void Launcher::MainDialog::play()
// Launch the game detached
if (mGameInvoker->startProcess(QLatin1String("openmw"), true))
if (mGameInvoker->startProcess(QLatin1String("tes3mp-browser"), true))
return qApp->quit();
}

View file

@ -30,6 +30,7 @@ namespace Launcher
class DataFilesPage;
class UnshieldThread;
class SettingsPage;
class AdvancedPage;
enum FirstRunDialogResult
{
@ -72,6 +73,7 @@ namespace Launcher
bool setupLauncherSettings();
bool setupGameSettings();
bool setupGraphicsSettings();
bool setupGameData();
void setVersionLabel();
@ -87,6 +89,7 @@ namespace Launcher
GraphicsPage *mGraphicsPage;
DataFilesPage *mDataFilesPage;
SettingsPage *mSettingsPage;
AdvancedPage *mAdvancedPage;
Process::ProcessInvoker *mGameInvoker;
Process::ProcessInvoker *mWizardInvoker;

View file

@ -0,0 +1,48 @@
#include "cellnameloader.hpp"
#include <components/esm/loadcell.hpp>
#include <components/contentselector/view/contentselector.hpp>
QSet<QString> CellNameLoader::getCellNames(QStringList &contentPaths)
{
QSet<QString> cellNames;
ESM::ESMReader esmReader;
// Loop through all content files
for (auto &contentPath : contentPaths) {
esmReader.open(contentPath.toStdString());
// Loop through all records
while(esmReader.hasMoreRecs())
{
ESM::NAME recordName = esmReader.getRecName();
esmReader.getRecHeader();
if (isCellRecord(recordName)) {
QString cellName = getCellName(esmReader);
if (!cellName.isEmpty()) {
cellNames.insert(cellName);
}
}
// Stop loading content for this record and continue to the next
esmReader.skipRecord();
}
}
return cellNames;
}
bool CellNameLoader::isCellRecord(ESM::NAME &recordName)
{
return recordName.intval == ESM::REC_CELL;
}
QString CellNameLoader::getCellName(ESM::ESMReader &esmReader)
{
ESM::Cell cell;
bool isDeleted = false;
cell.loadNameAndData(esmReader, isDeleted);
return QString::fromStdString(cell.mName);
}

View file

@ -0,0 +1,41 @@
#ifndef OPENMW_CELLNAMELOADER_H
#define OPENMW_CELLNAMELOADER_H
#include <QComboBox>
#include <QSet>
#include <QString>
#include <components/esm/esmreader.hpp>
namespace ESM {class ESMReader; struct Cell;}
namespace ContentSelectorView {class ContentSelector;}
class CellNameLoader {
public:
/**
* Returns the names of all cells contained within the given content files
* @param contentPaths the file paths of each content file to be examined
* @return the names of all cells
*/
QSet<QString> getCellNames(QStringList &contentPaths);
private:
/**
* Returns whether or not the given record is of type "Cell"
* @param name The name associated with the record
* @return whether or not the given record is of type "Cell"
*/
bool isCellRecord(ESM::NAME &name);
/**
* Returns the name of the cell
* @param esmReader the reader currently pointed to a loaded cell
* @return the name of the cell
*/
QString getCellName(ESM::ESMReader &esmReader);
};
#endif //OPENMW_CELLNAMELOADER_H

View file

@ -0,0 +1,32 @@
project(masterserver)
#set(CMAKE_CXX_STANDARD 14)
add_definitions(-std=gnu++14)
include_directories("./")
set(SOURCE_FILES main.cpp MasterServer.cpp MasterServer.hpp RestServer.cpp RestServer.hpp)
add_executable(masterserver ${SOURCE_FILES})
target_link_libraries(masterserver ${RakNet_LIBRARY} components)
option(BUILD_MASTER_TEST "build master server test program" OFF)
if(BUILD_MASTER_TEST)
add_executable(ServerTest ServerTest.cpp)
target_link_libraries(ServerTest ${RakNet_LIBRARY} components)
endif()
if (UNIX)
# Fix for not visible pthreads functions for linker with glibc 2.15
if(NOT APPLE)
target_link_libraries(masterserver ${CMAKE_THREAD_LIBS_INIT})
if(BUILD_MASTER_TEST)
target_link_libraries(ServerTest ${CMAKE_THREAD_LIBS_INIT})
endif()
endif(NOT APPLE)
endif(UNIX)
if(WIN32)
target_link_libraries(masterserver wsock32)
endif(WIN32)

View file

@ -0,0 +1,236 @@
//
// Created by koncord on 21.04.17.
//
#include <RakPeerInterface.h>
#include <RakSleep.h>
#include <BitStream.h>
#include <iostream>
#include "MasterServer.hpp"
#include <components/openmw-mp/Master/PacketMasterQuery.hpp>
#include <components/openmw-mp/Master/PacketMasterUpdate.hpp>
#include <components/openmw-mp/Master/PacketMasterAnnounce.hpp>
#include <components/openmw-mp/Version.hpp>
using namespace RakNet;
using namespace std;
using namespace mwmp;
using namespace chrono;
MasterServer::MasterServer(unsigned short maxConnections, unsigned short port)
{
peer = RakPeerInterface::GetInstance();
sockdescr = SocketDescriptor(port, 0);
peer->Startup(maxConnections, &sockdescr, 1, 1000);
peer->SetMaximumIncomingConnections(maxConnections);
peer->SetIncomingPassword(TES3MP_MASTERSERVER_PASSW, (int) strlen(TES3MP_MASTERSERVER_PASSW));
run = false;
}
MasterServer::~MasterServer()
{
Stop(true);
}
using namespace chrono;
void MasterServer::Thread()
{
unsigned char packetId = 0;
auto startTime = chrono::steady_clock::now();
BitStream send;
PacketMasterQuery pmq(peer);
pmq.SetSendStream(&send);
PacketMasterUpdate pmu(peer);
pmu.SetSendStream(&send);
PacketMasterAnnounce pma(peer);
pma.SetSendStream(&send);
while (run)
{
Packet *packet = peer->Receive();
auto now = steady_clock::now();
if (now - startTime >= 60s)
{
startTime = steady_clock::now();
for (auto it = servers.begin(); it != servers.end();)
{
if (it->second.lastUpdate + 60s <= now)
servers.erase(it++);
else ++it;
}
for(auto id = pendingACKs.begin(); id != pendingACKs.end();)
{
if(now - id->second >= 30s)
{
cout << "timeout: " << peer->GetSystemAddressFromGuid(id->first).ToString() << endl;
peer->CloseConnection(id->first, true);
id = pendingACKs.erase(id);
}
else
++id;
}
}
if (packet == nullptr)
RakSleep(10);
else
for (; packet; peer->DeallocatePacket(packet), packet = peer->Receive())
{
BitStream data(packet->data, packet->length, false);
data.Read(packetId);
switch (packetId)
{
case ID_NEW_INCOMING_CONNECTION:
cout << "New incoming connection: " << packet->systemAddress.ToString() << endl;
break;
case ID_DISCONNECTION_NOTIFICATION:
cout << "Disconnected: " << packet->systemAddress.ToString() << endl;
break;
case ID_CONNECTION_LOST:
cout << "Connection lost: " << packet->systemAddress.ToString() << endl;
break;
case ID_MASTER_QUERY:
{
pmq.SetServers(reinterpret_cast<map<SystemAddress, QueryData> *>(&servers));
pmq.Send(packet->systemAddress);
pendingACKs[packet->guid] = steady_clock::now();
cout << "Sent info about all " << servers.size() << " servers to "
<< packet->systemAddress.ToString() << endl;
break;
}
case ID_MASTER_UPDATE:
{
SystemAddress addr;
data.Read(addr); // update 1 server
ServerIter it = servers.find(addr);
if (it != servers.end())
{
pair<SystemAddress, QueryData> pairPtr(it->first, static_cast<QueryData>(it->second));
pmu.SetServer(&pairPtr);
pmu.Send(packet->systemAddress);
pendingACKs[packet->guid] = steady_clock::now();
cout << "Sent info about " << addr.ToString() << " to " << packet->systemAddress.ToString()
<< endl;
}
break;
}
case ID_MASTER_ANNOUNCE:
{
ServerIter iter = servers.find(packet->systemAddress);
pma.SetReadStream(&data);
SServer server;
pma.SetServer(&server);
pma.Read();
auto keepAliveFunc = [&]() {
iter->second.lastUpdate = now;
pma.SetFunc(PacketMasterAnnounce::FUNCTION_KEEP);
pma.Send(packet->systemAddress);
pendingACKs[packet->guid] = steady_clock::now();
};
if (iter != servers.end())
{
if (pma.GetFunc() == PacketMasterAnnounce::FUNCTION_DELETE)
{
servers.erase(iter);
cout << "Deleted";
pma.Send(packet->systemAddress);
pendingACKs[packet->guid] = steady_clock::now();
}
else if (pma.GetFunc() == PacketMasterAnnounce::FUNCTION_ANNOUNCE)
{
cout << "Updated";
iter->second = server;
keepAliveFunc();
}
else
{
cout << "Keeping alive";
keepAliveFunc();
}
}
else if (pma.GetFunc() == PacketMasterAnnounce::FUNCTION_ANNOUNCE)
{
cout << "Added";
iter = servers.insert({packet->systemAddress, server}).first;
keepAliveFunc();
}
else
{
cout << "Unknown";
pma.SetFunc(PacketMasterAnnounce::FUNCTION_DELETE);
pma.Send(packet->systemAddress);
pendingACKs[packet->guid] = steady_clock::now();
}
cout << " server " << packet->systemAddress.ToString() << endl;
break;
}
case ID_SND_RECEIPT_ACKED:
uint32_t num;
memcpy(&num, packet->data+1, 4);
cout << "Packet with id " << num << " was delivered." << endl;
pendingACKs.erase(packet->guid);
peer->CloseConnection(packet->systemAddress, true);
break;
default:
cout << "Wrong packet. id " << (unsigned) packet->data[0] << " packet length " << packet->length << " from " << packet->systemAddress.ToString() << endl;
peer->CloseConnection(packet->systemAddress, true);
}
}
}
peer->Shutdown(1000);
RakPeerInterface::DestroyInstance(peer);
cout << "Server thread stopped" << endl;
}
void MasterServer::Start()
{
if (!run)
{
run = true;
tMasterThread = thread(&MasterServer::Thread, this);
cout << "Started" << endl;
}
}
void MasterServer::Stop(bool wait)
{
if (run)
{
run = false;
if (wait && tMasterThread.joinable())
tMasterThread.join();
}
}
bool MasterServer::isRunning()
{
return run;
}
void MasterServer::Wait()
{
if (run)
{
if (tMasterThread.joinable())
tMasterThread.join();
}
}
MasterServer::ServerMap *MasterServer::GetServers()
{
return &servers;
}

View file

@ -0,0 +1,55 @@
//
// Created by koncord on 21.04.17.
//
#ifndef NEWMASTERPROTO_MASTERSERVER_HPP
#define NEWMASTERPROTO_MASTERSERVER_HPP
#include <thread>
#include <chrono>
#include <RakPeerInterface.h>
#include <components/openmw-mp/Master/MasterData.hpp>
class MasterServer
{
public:
struct Ban
{
RakNet::SystemAddress sa;
bool permanent;
struct Date
{
} date;
};
struct SServer : QueryData
{
std::chrono::steady_clock::time_point lastUpdate;
};
typedef std::map<RakNet::SystemAddress, SServer> ServerMap;
//typedef ServerMap::const_iterator ServerCIter;
typedef ServerMap::iterator ServerIter;
MasterServer(unsigned short maxConnections, unsigned short port);
~MasterServer();
void Start();
void Stop(bool wait = false);
bool isRunning();
void Wait();
ServerMap* GetServers();
private:
void Thread();
private:
std::thread tMasterThread;
RakNet::RakPeerInterface* peer;
RakNet::SocketDescriptor sockdescr;
ServerMap servers;
bool run;
std::map<RakNet::RakNetGUID, std::chrono::steady_clock::time_point> pendingACKs;
};
#endif //NEWMASTERPROTO_MASTERSERVER_HPP

192
apps/master/RestServer.cpp Normal file
View file

@ -0,0 +1,192 @@
//
// Created by koncord on 13.05.17.
//
#include "RestServer.hpp"
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
using namespace std;
using namespace chrono;
using namespace boost::property_tree;
static string response201 = "HTTP/1.1 201 Created\r\nContent-Length: 7\r\n\r\nCreated";
static string response202 = "HTTP/1.1 202 Accepted\r\nContent-Length: 8\r\n\r\nAccepted";
static string response400 = "HTTP/1.1 400 Bad Request\r\nContent-Length: 11\r\n\r\nbad request";
inline void ResponseStr(HttpServer::Response &response, string content, string type = "", string code = "200 OK")
{
response << "HTTP/1.1 " << code << "\r\n";
if (!type.empty())
response << "Content-Type: " << type <<"\r\n";
response << "Content-Length: " << content.length() << "\r\n\r\n" << content;
}
inline void ptreeToServer(boost::property_tree::ptree &pt, MasterServer::SServer &server)
{
server.SetName(pt.get<string>("hostname").c_str());
server.SetGameMode(pt.get<string>("modname").c_str());
server.SetVersion(pt.get<string>("version").c_str());
server.SetPassword(pt.get<bool>("passw"));
//server.query_port = pt.get<unsigned short>("query_port");
server.SetPlayers(pt.get<unsigned>("players"));
server.SetMaxPlayers(pt.get<unsigned>("max_players"));
}
inline void queryToStringStream(stringstream &ss, string addr, MasterServer::SServer &query)
{
ss <<"\"" << addr << "\":{";
ss << "\"modname\": \"" << query.GetGameMode() << "\"" << ", ";
ss << "\"passw\": " << (query.GetPassword() ? "true" : "false") << ", ";
ss << "\"hostname\": \"" << query.GetName() << "\"" << ", ";
ss << "\"query_port\": " << 0 << ", ";
ss << "\"last_update\": " << duration_cast<seconds>(steady_clock::now() - query.lastUpdate).count() << ", ";
ss << "\"players\": " << query.GetPlayers() << ", ";
ss << "\"version\": \"" << query.GetVersion() << "\"" << ", ";
ss << "\"max_players\": " << query.GetMaxPlayers();
ss << "}";
}
RestServer::RestServer(unsigned short port, MasterServer::ServerMap *pMap) : serverMap(pMap)
{
httpServer.config.port = port;
}
void RestServer::start()
{
static const string ValidIpAddressRegex = "(?:[0-9]{1,3}\\.){3}[0-9]{1,3}";
static const string ValidPortRegex = "(?:[0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$";
static const string ServersRegex = "^/api/servers(?:/(" + ValidIpAddressRegex + "\\:" + ValidPortRegex + "))?";
httpServer.resource[ServersRegex]["GET"] = [this](auto response, auto request) {
if (request->path_match[1].length() > 0)
{
try
{
stringstream ss;
ss << "{";
auto addr = request->path_match[1].str();
auto port = (unsigned short)stoi(&(addr[addr.find(':')+1]));
queryToStringStream(ss, "server", serverMap->at(RakNet::SystemAddress(addr.c_str(), port)));
ss << "}";
ResponseStr(*response, ss.str(), "application/json");
}
catch(out_of_range e)
{
*response << response400;
}
}
else
{
static string str;
//if (updatedCache)
{
stringstream ss;
ss << "{";
ss << "\"list servers\":{";
for (auto query = serverMap->begin(); query != serverMap->end(); query++)
{
queryToStringStream(ss, query->first.ToString(true, ':'), query->second);
if (next(query) != serverMap->end())
ss << ", ";
}
ss << "}}";
ResponseStr(*response, ss.str(), "application/json");
updatedCache = false;
}
*response << str;
}
};
//Add query for < 0.6 servers
httpServer.resource[ServersRegex]["POST"] = [this](auto response, auto request) {
try
{
ptree pt;
read_json(request->content, pt);
MasterServer::SServer server;
ptreeToServer(pt, server);
unsigned short port = pt.get<unsigned short>("port");
server.lastUpdate = steady_clock::now();
serverMap->insert({RakNet::SystemAddress(request->remote_endpoint_address.c_str(), port), server});
updatedCache = true;
*response << response201;
}
catch (exception& e)
{
cout << e.what() << endl;
*response << response400;
}
};
//Update query for < 0.6 servers
httpServer.resource[ServersRegex]["PUT"] = [this](auto response, auto request) {
auto addr = request->path_match[1].str();
auto port = (unsigned short)stoi(&(addr[addr.find(':')+1]));
auto query = serverMap->find(RakNet::SystemAddress(request->remote_endpoint_address.c_str(), port));
if (query == serverMap->end())
{
cout << request->remote_endpoint_address + ": Trying to update a non-existent server or without permissions." << endl;
*response << response400;
return;
}
if (request->content.size() != 0)
{
try
{
ptree pt;
read_json(request->content, pt);
ptreeToServer(pt, query->second);
updatedCache = true;
}
catch(exception &e)
{
cout << e.what() << endl;
*response << response400;
}
}
query->second.lastUpdate = steady_clock::now();
*response << response202;
};
httpServer.resource["/api/servers/info"]["GET"] = [this](auto response, auto /*request*/) {
stringstream ss;
ss << '{';
ss << "\"servers\": " << serverMap->size();
unsigned int players = 0;
for (auto s : *serverMap)
players += s.second.GetPlayers();
ss << ", \"players\": " << players;
ss << "}";
ResponseStr(*response, ss.str(), "application/json");
};
httpServer.default_resource["GET"]=[](auto response, auto /*request*/) {
*response << response400;
};
httpServer.start();
}
void RestServer::cacheUpdated()
{
updatedCache = true;
}
void RestServer::stop()
{
httpServer.stop();
}

View file

@ -0,0 +1,30 @@
//
// Created by koncord on 13.05.17.
//
#ifndef NEWRESTAPI_RESTSERVER_HPP
#define NEWRESTAPI_RESTSERVER_HPP
#include <string>
#include <unordered_map>
#include "MasterServer.hpp"
#include "SimpleWeb/http_server.hpp"
typedef SimpleWeb::Server<SimpleWeb::HTTP> HttpServer;
class RestServer
{
public:
RestServer(unsigned short port, MasterServer::ServerMap *pMap);
void start();
void stop();
void cacheUpdated();
private:
HttpServer httpServer;
MasterServer::ServerMap *serverMap;
bool updatedCache = true;
};
#endif //NEWRESTAPI_RESTSERVER_HPP

186
apps/master/ServerTest.cpp Normal file
View file

@ -0,0 +1,186 @@
//
// Created by koncord on 21.04.17.
//
#include <RakPeerInterface.h>
#include <RakSleep.h>
#include <BitStream.h>
#include <iostream>
#include <Kbhit.h>
#include <Gets.h>
#include <components/openmw-mp/Master/MasterData.hpp>
#include <components/openmw-mp/Master/PacketMasterAnnounce.hpp>
#include <components/openmw-mp/Master/PacketMasterUpdate.hpp>
#include <components/openmw-mp/Master/PacketMasterQuery.hpp>
#include <components/openmw-mp/NetworkMessages.hpp>
using namespace std;
using namespace RakNet;
using namespace mwmp;
int main()
{
cout << "Server test" << endl;
SystemAddress masterAddr("127.0.0.1", 25560);
RakPeerInterface *peer = RakNet::RakPeerInterface::GetInstance();
RakNet::SocketDescriptor sd(25565, 0);
peer->Startup(8, &sd, 1);
ConnectionAttemptResult result = peer->Connect(masterAddr.ToString(false), masterAddr.GetPort(), "pass",
(int)(strlen("pass")), 0, 0, 5, 500);
assert(result == RakNet::CONNECTION_ATTEMPT_STARTED);
char message[2048];
BitStream send;
PacketMasterQuery pmq(peer);
pmq.SetSendStream(&send);
PacketMasterAnnounce pma(peer);
pma.SetSendStream(&send);
while (true)
{
RakSleep(30);
if (kbhit())
{
Gets(message, sizeof(message));
if (strcmp(message, "quit") == 0)
{
puts("Quitting.");
break;
}
else if (strcmp(message, "send") == 0)
{
puts("Sending data about server");
QueryData server;
server.SetName("Super Server");
server.SetPlayers(0);
server.SetMaxPlayers(0);
pma.SetServer(&server);
pma.SetFunc(PacketMasterAnnounce::FUNCTION_ANNOUNCE);
pma.Send(masterAddr);
}
else if (strcmp(message, "get") == 0)
{
puts("Request query info");
send.Reset();
send.Write((unsigned char) (ID_MASTER_QUERY));
peer->Send(&send, HIGH_PRIORITY, RELIABLE_ORDERED, CHANNEL_MASTER, masterAddr, false);
}
else if (strcmp(message, "getme") == 0)
{
send.Reset();
send.Write((unsigned char) (ID_MASTER_UPDATE));
send.Write(SystemAddress("127.0.0.1", 25565));
peer->Send(&send, HIGH_PRIORITY, RELIABLE_ORDERED, CHANNEL_MASTER, masterAddr, false);
}
else if (strcmp(message, "status") == 0)
{
cout << (peer->GetConnectionState(masterAddr) == IS_CONNECTED ? "Connected" : "Not connected") << endl;
}
else if (strcmp(message, "keep") == 0)
{
cout << "Sending keep alive" << endl;
pma.SetFunc(PacketMasterAnnounce::FUNCTION_KEEP);
pma.Send(masterAddr);
}
}
for (RakNet::Packet *packet = peer->Receive(); packet; peer->DeallocatePacket(packet), packet = peer->Receive())
{
BitStream data(packet->data, packet->length, false);
unsigned char packetID;
data.Read(packetID);
switch (packetID)
{
case ID_DISCONNECTION_NOTIFICATION:
// Connection lost normally
printf("ID_DISCONNECTION_NOTIFICATION\n");
break;
case ID_ALREADY_CONNECTED:
// Connection lost normally
printf("ID_ALREADY_CONNECTED with guid %lu\n", packet->guid.g);
break;
case ID_INCOMPATIBLE_PROTOCOL_VERSION:
printf("ID_INCOMPATIBLE_PROTOCOL_VERSION\n");
break;
case ID_REMOTE_DISCONNECTION_NOTIFICATION: // Server telling the clients of another client disconnecting gracefully. You can manually broadcast this in a peer to peer enviroment if you want.
printf("ID_REMOTE_DISCONNECTION_NOTIFICATION\n");
break;
case ID_REMOTE_CONNECTION_LOST: // Server telling the clients of another client disconnecting forcefully. You can manually broadcast this in a peer to peer enviroment if you want.
printf("ID_REMOTE_CONNECTION_LOST\n");
break;
case ID_REMOTE_NEW_INCOMING_CONNECTION: // Server telling the clients of another client connecting. You can manually broadcast this in a peer to peer enviroment if you want.
printf("ID_REMOTE_NEW_INCOMING_CONNECTION\n");
break;
case ID_CONNECTION_BANNED: // Banned from this server
printf("We are banned from this server.\n");
break;
case ID_CONNECTION_ATTEMPT_FAILED:
printf("Connection attempt failed\n");
break;
case ID_NO_FREE_INCOMING_CONNECTIONS:
// Sorry, the server is full. I don't do anything here but
// A real app should tell the user
printf("ID_NO_FREE_INCOMING_CONNECTIONS\n");
break;
case ID_INVALID_PASSWORD:
printf("ID_INVALID_PASSWORD\n");
break;
case ID_CONNECTION_LOST:
// Couldn't deliver a reliable packet - i.e. the other system was abnormally
// terminated
printf("ID_CONNECTION_LOST\n");
return 0;
break;
case ID_CONNECTION_REQUEST_ACCEPTED:
// This tells the client they have connected
printf("ID_CONNECTION_REQUEST_ACCEPTED to %s with GUID %s\n", packet->systemAddress.ToString(true),
packet->guid.ToString());
printf("My external address is %s\n", peer->GetExternalID(packet->systemAddress).ToString(true));
break;
case ID_MASTER_QUERY:
{
map<SystemAddress, QueryData> servers;
pmq.SetReadStream(&data);
pmq.SetServers(&servers);
pmq.Read();
cout << "Received query data about " << servers.size() << " servers" << endl;
for (auto serv : servers)
cout << serv.second.GetName() << endl;
break;
}
case ID_MASTER_UPDATE:
{
pair<SystemAddress, QueryData> serverPair;
PacketMasterUpdate pmu(peer);
pmu.SetReadStream(&data);
pmu.SetServer(&serverPair);
pmu.Read();
cout << "Received info about " << serverPair.first.ToString() << endl;
cout << serverPair.second.GetName() << endl;
break;
}
default:
cout << "Wrong packet" << endl;
}
}
}
peer->Shutdown(1000);
RakPeerInterface::DestroyInstance(peer);
}

View file

@ -0,0 +1,511 @@
#ifndef BASE_SERVER_HPP
#define BASE_SERVER_HPP
#include <boost/asio.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <boost/functional/hash.hpp>
#include <map>
#include <unordered_map>
#include <thread>
#include <functional>
#include <iostream>
#include <sstream>
#include <regex>
#ifndef CASE_INSENSITIVE_EQUALS_AND_HASH
#define CASE_INSENSITIVE_EQUALS_AND_HASH
//Based on http://www.boost.org/doc/libs/1_60_0/doc/html/unordered/hash_equality.html
struct case_insensitive_equals
{
bool operator()(const std::string &key1, const std::string &key2) const
{
return boost::algorithm::iequals(key1, key2);
}
};
struct case_insensitive_hash
{
size_t operator()(const std::string &key) const
{
std::size_t seed = 0;
for (auto &c: key)
boost::hash_combine(seed, std::tolower(c));
return seed;
}
};
#endif
namespace SimpleWeb
{
template<class socket_type>
class Server;
template<class socket_type>
class ServerBase
{
public:
virtual ~ServerBase()
{}
class Response : public std::ostream
{
friend class ServerBase<socket_type>;
boost::asio::streambuf streambuf;
std::shared_ptr<socket_type> socket;
Response(const std::shared_ptr<socket_type> &socket) : std::ostream(&streambuf), socket(socket)
{}
public:
size_t size()
{
return streambuf.size();
}
/// If true, force server to close the connection after the response have been sent.
///
/// This is useful when implementing a HTTP/1.0-server sending content
/// without specifying the content length.
bool close_connection_after_response = false;
};
class Content : public std::istream
{
friend class ServerBase<socket_type>;
public:
size_t size()
{
return streambuf.size();
}
std::string string()
{
std::stringstream ss;
ss << rdbuf();
return ss.str();
}
private:
boost::asio::streambuf &streambuf;
Content(boost::asio::streambuf &streambuf) : std::istream(&streambuf), streambuf(streambuf)
{}
};
class Request
{
friend class ServerBase<socket_type>;
friend class Server<socket_type>;
public:
std::string method, path, http_version;
Content content;
std::unordered_multimap<std::string, std::string, case_insensitive_hash, case_insensitive_equals> header;
std::smatch path_match;
std::string remote_endpoint_address;
unsigned short remote_endpoint_port;
private:
Request(const socket_type &socket) : content(streambuf)
{
try
{
remote_endpoint_address = socket.lowest_layer().remote_endpoint().address().to_string();
remote_endpoint_port = socket.lowest_layer().remote_endpoint().port();
}
catch (...)
{}
}
boost::asio::streambuf streambuf;
};
class Config
{
friend class ServerBase<socket_type>;
Config(unsigned short port) : port(port)
{}
public:
/// Port number to use. Defaults to 80 for HTTP and 443 for HTTPS.
unsigned short port;
/// Number of threads that the server will use when start() is called. Defaults to 1 thread.
size_t thread_pool_size = 1;
/// Timeout on request handling. Defaults to 5 seconds.
size_t timeout_request = 5;
/// Timeout on content handling. Defaults to 300 seconds.
size_t timeout_content = 300;
/// IPv4 address in dotted decimal form or IPv6 address in hexadecimal notation.
/// If empty, the address will be any address.
std::string address;
/// Set to false to avoid binding the socket to an address that is already in use. Defaults to true.
bool reuse_address = true;
};
///Set before calling start().
Config config;
private:
class regex_orderable : public std::regex
{
std::string str;
public:
regex_orderable(const char *regex_cstr) : std::regex(regex_cstr), str(regex_cstr)
{}
regex_orderable(const std::string &regex_str) : std::regex(regex_str), str(regex_str)
{}
bool operator<(const regex_orderable &rhs) const
{
return str < rhs.str;
}
};
public:
/// Warning: do not add or remove resources after start() is called
std::map<regex_orderable, std::map<std::string,
std::function<void(std::shared_ptr<typename ServerBase<socket_type>::Response>,
std::shared_ptr<typename ServerBase<socket_type>::Request>)>>>
resource;
std::map<std::string,
std::function<void(std::shared_ptr<typename ServerBase<socket_type>::Response>,
std::shared_ptr<typename ServerBase<socket_type>::Request>)>> default_resource;
std::function<
void(std::shared_ptr<typename ServerBase<socket_type>::Request>,
const boost::system::error_code &)>
on_error;
std::function<void(std::shared_ptr<socket_type> socket,
std::shared_ptr<typename ServerBase<socket_type>::Request>)> on_upgrade;
virtual void start()
{
if (!io_service)
io_service = std::make_shared<boost::asio::io_service>();
if (io_service->stopped())
io_service->reset();
boost::asio::ip::tcp::endpoint endpoint;
if (config.address.size() > 0)
endpoint = boost::asio::ip::tcp::endpoint(boost::asio::ip::address::from_string(config.address),
config.port);
else
endpoint = boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), config.port);
if (!acceptor)
acceptor = std::unique_ptr<boost::asio::ip::tcp::acceptor>(
new boost::asio::ip::tcp::acceptor(*io_service));
acceptor->open(endpoint.protocol());
acceptor->set_option(boost::asio::socket_base::reuse_address(config.reuse_address));
acceptor->bind(endpoint);
acceptor->listen();
accept();
//If thread_pool_size>1, start m_io_service.run() in (thread_pool_size-1) threads for thread-pooling
threads.clear();
for (size_t c = 1; c < config.thread_pool_size; c++)
{
threads.emplace_back([this]()
{
io_service->run();
});
}
//Main thread
if (config.thread_pool_size > 0)
io_service->run();
//Wait for the rest of the threads, if any, to finish as well
for (auto &t: threads)
{
t.join();
}
}
void stop()
{
acceptor->close();
if (config.thread_pool_size > 0)
io_service->stop();
}
///Use this function if you need to recursively send parts of a longer message
void send(const std::shared_ptr<Response> &response,
const std::function<void(const boost::system::error_code &)> &callback = nullptr) const
{
boost::asio::async_write(*response->socket, response->streambuf, [this, response, callback]
(const boost::system::error_code &ec, size_t /*bytes_transferred*/)
{
if (callback)
callback(ec);
});
}
/// If you have your own boost::asio::io_service, store its pointer here before running start().
/// You might also want to set config.thread_pool_size to 0.
std::shared_ptr<boost::asio::io_service> io_service;
protected:
std::unique_ptr<boost::asio::ip::tcp::acceptor> acceptor;
std::vector<std::thread> threads;
ServerBase(unsigned short port) : config(port)
{}
virtual void accept()=0;
std::shared_ptr<boost::asio::deadline_timer>
get_timeout_timer(const std::shared_ptr<socket_type> &socket, long seconds)
{
if (seconds == 0)
return nullptr;
auto timer = std::make_shared<boost::asio::deadline_timer>(*io_service);
timer->expires_from_now(boost::posix_time::seconds(seconds));
timer->async_wait([socket](const boost::system::error_code &ec)
{
if (!ec)
{
boost::system::error_code ec;
socket->lowest_layer().shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec);
socket->lowest_layer().close();
}
});
return timer;
}
void read_request_and_content(const std::shared_ptr<socket_type> &socket)
{
//Create new streambuf (Request::streambuf) for async_read_until()
//shared_ptr is used to pass temporary objects to the asynchronous functions
std::shared_ptr<Request> request(new Request(*socket));
//Set timeout on the following boost::asio::async-read or write function
auto timer = this->get_timeout_timer(socket, config.timeout_request);
boost::asio::async_read_until(*socket, request->streambuf, "\r\n\r\n", [this, socket, request, timer]
(const boost::system::error_code &ec,
size_t bytes_transferred)
{
if (timer)
timer->cancel();
if (!ec)
{
//request->streambuf.size() is not necessarily the same as bytes_transferred, from Boost-docs:
//"After a successful async_read_until operation, the streambuf may contain additional data beyond the delimiter"
//The chosen solution is to extract lines from the stream directly when parsing the header. What is left of the
//streambuf (maybe some bytes of the content) is appended to in the async_read-function below (for retrieving content).
size_t num_additional_bytes =
request->streambuf.size() - bytes_transferred;
if (!this->parse_request(request))
return;
//If content, read that as well
auto it = request->header.find("Content-Length");
if (it != request->header.end())
{
unsigned long long content_length;
try
{
content_length = stoull(it->second);
}
catch (const std::exception &e)
{
if (on_error)
on_error(request, boost::system::error_code(
boost::system::errc::protocol_error,
boost::system::generic_category()));
return;
}
if (content_length > num_additional_bytes)
{
//Set timeout on the following boost::asio::async-read or write function
auto timer = this->get_timeout_timer(socket,
config.timeout_content);
boost::asio::async_read(*socket, request->streambuf,
boost::asio::transfer_exactly(
content_length -
num_additional_bytes),
[this, socket, request, timer]
(const boost::system::error_code &ec,
size_t /*bytes_transferred*/)
{
if (timer)
timer->cancel();
if (!ec)
this->find_resource(socket,
request);
else if (on_error)
on_error(request, ec);
});
}
else
this->find_resource(socket, request);
}
else
this->find_resource(socket, request);
}
else if (on_error)
on_error(request, ec);
});
}
bool parse_request(const std::shared_ptr<Request> &request) const
{
std::string line;
getline(request->content, line);
size_t method_end;
if ((method_end = line.find(' ')) != std::string::npos)
{
size_t path_end;
if ((path_end = line.find(' ', method_end + 1)) != std::string::npos)
{
request->method = line.substr(0, method_end);
request->path = line.substr(method_end + 1, path_end - method_end - 1);
size_t protocol_end;
if ((protocol_end = line.find('/', path_end + 1)) != std::string::npos)
{
if (line.compare(path_end + 1, protocol_end - path_end - 1, "HTTP") != 0)
return false;
request->http_version = line.substr(protocol_end + 1, line.size() - protocol_end - 2);
}
else
return false;
getline(request->content, line);
size_t param_end;
while ((param_end = line.find(':')) != std::string::npos)
{
size_t value_start = param_end + 1;
if ((value_start) < line.size())
{
if (line[value_start] == ' ')
value_start++;
if (value_start < line.size())
request->header.emplace(line.substr(0, param_end),
line.substr(value_start, line.size() - value_start - 1));
}
getline(request->content, line);
}
}
else
return false;
}
else
return false;
return true;
}
void find_resource(const std::shared_ptr<socket_type> &socket, const std::shared_ptr<Request> &request)
{
//Upgrade connection
if (on_upgrade)
{
auto it = request->header.find("Upgrade");
if (it != request->header.end())
{
on_upgrade(socket, request);
return;
}
}
//Find path- and method-match, and call write_response
for (auto &regex_method: resource)
{
auto it = regex_method.second.find(request->method);
if (it != regex_method.second.end())
{
std::smatch sm_res;
if (std::regex_match(request->path, sm_res, regex_method.first))
{
request->path_match = std::move(sm_res);
write_response(socket, request, it->second);
return;
}
}
}
auto it = default_resource.find(request->method);
if (it != default_resource.end())
{
write_response(socket, request, it->second);
}
}
void write_response(const std::shared_ptr<socket_type> &socket, const std::shared_ptr<Request> &request,
std::function<void(std::shared_ptr<typename ServerBase<socket_type>::Response>,
std::shared_ptr<
typename ServerBase<socket_type>::Request>)> &resource_function)
{
//Set timeout on the following boost::asio::async-read or write function
auto timer = this->get_timeout_timer(socket, config.timeout_content);
auto response = std::shared_ptr<Response>(new Response(socket), [this, request, timer]
(Response *response_ptr)
{
auto response = std::shared_ptr<Response>(response_ptr);
this->send(response, [this, response, request, timer](
const boost::system::error_code &ec)
{
if (timer)
timer->cancel();
if (!ec)
{
if (response->close_connection_after_response)
return;
auto range = request->header.equal_range(
"Connection");
for (auto it = range.first; it != range.second; it++)
{
if (boost::iequals(it->second, "close"))
{
return;
}
else if (boost::iequals(it->second, "keep-alive"))
{
this->read_request_and_content(
response->socket);
return;
}
}
if (request->http_version >= "1.1")
this->read_request_and_content(response->socket);
}
else if (on_error)
on_error(request, ec);
});
});
try
{
resource_function(response, request);
}
catch (const std::exception &e)
{
if (on_error)
on_error(request, boost::system::error_code(boost::system::errc::operation_canceled,
boost::system::generic_category()));
return;
}
}
};
}
#endif //BASE_SERVER_HPP

View file

@ -0,0 +1,55 @@
/*
* https://github.com/eidheim/Simple-Web-Server/
*
* The MIT License (MIT)
* Copyright (c) 2014-2016 Ole Christian Eidheim
*/
#ifndef SERVER_HTTP_HPP
#define SERVER_HTTP_HPP
#include "base_server.hpp"
namespace SimpleWeb
{
template<class socket_type>
class Server : public ServerBase<socket_type> {};
typedef boost::asio::ip::tcp::socket HTTP;
template<>
class Server<HTTP> : public ServerBase<HTTP>
{
public:
Server() : ServerBase<HTTP>::ServerBase(80)
{}
protected:
virtual void accept()
{
//Create new socket for this connection
//Shared_ptr is used to pass temporary objects to the asynchronous functions
auto socket = std::make_shared<HTTP>(*io_service);
acceptor->async_accept(*socket, [this, socket](const boost::system::error_code &ec)
{
//Immediately start accepting a new connection (if io_service hasn't been stopped)
if (ec != boost::asio::error::operation_aborted)
accept();
if (!ec)
{
boost::asio::ip::tcp::no_delay option(true);
socket->set_option(option);
this->read_request_and_content(socket);
}
else if (on_error)
on_error(std::shared_ptr<Request>(new Request(*socket)), ec);
});
}
};
}
#endif //SERVER_HTTP_HPP

View file

@ -0,0 +1,91 @@
#ifndef HTTPS_SERVER_HPP
#define HTTPS_SERVER_HPP
#include "base_server.hpp"
#include <boost/asio/ssl.hpp>
#include <openssl/ssl.h>
#include <algorithm>
namespace SimpleWeb
{
typedef boost::asio::ssl::stream<boost::asio::ip::tcp::socket> HTTPS;
template<>
class Server<HTTPS> : public ServerBase<HTTPS>
{
std::string session_id_context;
bool set_session_id_context = false;
public:
Server(const std::string &cert_file, const std::string &private_key_file,
const std::string &verify_file = std::string()) : ServerBase<HTTPS>::ServerBase(443),
context(boost::asio::ssl::context::tlsv12)
{
context.use_certificate_chain_file(cert_file);
context.use_private_key_file(private_key_file, boost::asio::ssl::context::pem);
if (verify_file.size() > 0)
{
context.load_verify_file(verify_file);
context.set_verify_mode(boost::asio::ssl::verify_peer | boost::asio::ssl::verify_fail_if_no_peer_cert |
boost::asio::ssl::verify_client_once);
set_session_id_context = true;
}
}
void start()
{
if (set_session_id_context)
{
// Creating session_id_context from address:port but reversed due to small SSL_MAX_SSL_SESSION_ID_LENGTH
session_id_context = std::to_string(config.port) + ':';
session_id_context.append(config.address.rbegin(), config.address.rend());
SSL_CTX_set_session_id_context(context.native_handle(),
reinterpret_cast<const unsigned char *>(session_id_context.data()),
std::min<size_t>(session_id_context.size(),
SSL_MAX_SSL_SESSION_ID_LENGTH));
}
ServerBase::start();
}
protected:
boost::asio::ssl::context context;
virtual void accept()
{
//Create new socket for this connection
//Shared_ptr is used to pass temporary objects to the asynchronous functions
auto socket = std::make_shared<HTTPS>(*io_service, context);
acceptor->async_accept((*socket).lowest_layer(), [this, socket](const boost::system::error_code &ec)
{
//Immediately start accepting a new connection (if io_service hasn't been stopped)
if (ec != boost::asio::error::operation_aborted)
accept();
if (!ec)
{
boost::asio::ip::tcp::no_delay option(true);
socket->lowest_layer().set_option(option);
//Set timeout on the following boost::asio::ssl::stream::async_handshake
auto timer = get_timeout_timer(socket, config.timeout_request);
socket->async_handshake(boost::asio::ssl::stream_base::server, [this, socket, timer]
(const boost::system::error_code &ec)
{
if (timer)
timer->cancel();
if (!ec)
read_request_and_content(socket);
else if (on_error)
on_error(std::shared_ptr<Request>(new Request(*socket)), ec);
});
}
else if (on_error)
on_error(std::shared_ptr<Request>(new Request(*socket)), ec);
});
}
};
}
#endif //HTTPS_SERVER_HPP

37
apps/master/main.cpp Normal file
View file

@ -0,0 +1,37 @@
#include <iostream>
#include <Kbhit.h>
#include <RakSleep.h>
#include "MasterServer.hpp"
#include "RestServer.hpp"
using namespace RakNet;
using namespace std;
unique_ptr<RestServer> restServer;
unique_ptr<MasterServer> masterServer;
bool run = true;
int main()
{
masterServer.reset(new MasterServer(2000, 25560));
restServer.reset(new RestServer(8080, masterServer->GetServers()));
auto onExit = [](int /*sig*/){
restServer->stop();
masterServer->Stop(false);
masterServer->Wait();
run = false;
};
signal(SIGINT, onExit);
signal(SIGTERM, onExit);
masterServer->Start();
thread server_thread([]() { restServer->start(); });
server_thread.join();
masterServer->Wait();
return 0;
}

View file

@ -9,7 +9,7 @@ set(MWINIIMPORT_HEADER
source_group(launcher FILES ${MWINIIMPORT} ${MWINIIMPORT_HEADER})
add_executable(openmw-iniimporter
openmw_add_executable(openmw-iniimporter
${MWINIIMPORT}
)
@ -22,7 +22,8 @@ target_link_libraries(openmw-iniimporter
if (WIN32)
target_link_libraries(openmw-iniimporter
${Boost_LOCALE_LIBRARY})
endif()
INSTALL(TARGETS openmw-iniimporter RUNTIME DESTINATION ".")
endif(WIN32)
if (MINGW)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -municode")

View file

@ -1,17 +1,13 @@
#include "importer.hpp"
#include <ctime>
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
#include <sstream>
#include <components/misc/stringops.hpp>
#include <components/esm/esmreader.hpp>
#include <boost/version.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/version.hpp>
namespace bfs = boost::filesystem;
@ -658,12 +654,6 @@ void MwIniImporter::setVerbose(bool verbose) {
mVerbose = verbose;
}
std::string MwIniImporter::numberToString(int n) {
std::stringstream str;
str << n;
return str.str();
}
MwIniImporter::multistrmap MwIniImporter::loadIniFile(const boost::filesystem::path& filename) const {
std::cout << "load ini file: " << filename << std::endl;
@ -805,7 +795,7 @@ void MwIniImporter::importArchives(multistrmap &cfg, const multistrmap &ini) con
multistrmap::const_iterator it = ini.begin();
for(int i=0; it != ini.end(); i++) {
archive = baseArchive;
archive.append(this->numberToString(i));
archive.append(std::to_string(i));
it = ini.find(archive);
if(it == ini.end()) {
@ -824,38 +814,109 @@ void MwIniImporter::importArchives(multistrmap &cfg, const multistrmap &ini) con
// does not appears in the ini file
cfg["fallback-archive"].push_back("Morrowind.bsa");
for(std::vector<std::string>::const_iterator it=archives.begin(); it!=archives.end(); ++it) {
cfg["fallback-archive"].push_back(*it);
for(std::vector<std::string>::const_iterator iter=archives.begin(); iter!=archives.end(); ++iter) {
cfg["fallback-archive"].push_back(*iter);
}
}
void MwIniImporter::importGameFiles(multistrmap &cfg, const multistrmap &ini, const boost::filesystem::path& iniFilename) const {
std::vector<std::pair<std::time_t, std::string> > contentFiles;
std::string baseGameFile("Game Files:GameFile");
std::string gameFile("");
std::time_t defaultTime = 0;
void MwIniImporter::dependencySortStep(std::string& element, MwIniImporter::dependencyList& source, std::vector<std::string>& result)
{
auto iter = std::find_if(
source.begin(),
source.end(),
[&element](std::pair< std::string, std::vector<std::string> >& sourceElement)
{
return sourceElement.first == element;
}
);
if (iter != source.end())
{
auto foundElement = std::move(*iter);
source.erase(iter);
for (auto name : foundElement.second)
{
MwIniImporter::dependencySortStep(name, source, result);
}
result.push_back(std::move(foundElement.first));
}
}
// assume the Game Files are all in a "Data Files" directory under the directory holding Morrowind.ini
const boost::filesystem::path gameFilesDir(iniFilename.parent_path() /= "Data Files");
std::vector<std::string> MwIniImporter::dependencySort(MwIniImporter::dependencyList source)
{
std::vector<std::string> result;
while (!source.empty())
{
MwIniImporter::dependencySortStep(source.begin()->first, source, result);
}
return result;
}
std::vector<std::string>::iterator MwIniImporter::findString(std::vector<std::string>& source, const std::string& string)
{
return std::find_if(source.begin(), source.end(), [&string](const std::string& sourceString)
{
return Misc::StringUtils::ciEqual(sourceString, string);
});
}
void MwIniImporter::addPaths(std::vector<boost::filesystem::path>& output, std::vector<std::string> input) {
for (auto& path : input) {
if (path.front() == '"')
{
path.erase(path.begin());
path.erase(path.end() - 1);
}
output.emplace_back(path);
}
}
void MwIniImporter::importGameFiles(multistrmap &cfg, const multistrmap &ini, const boost::filesystem::path& iniFilename) const
{
std::vector<std::pair<std::time_t, boost::filesystem::path>> contentFiles;
std::string baseGameFile("Game Files:GameFile");
std::time_t defaultTime = 0;
ToUTF8::Utf8Encoder encoder(mEncoding);
std::vector<boost::filesystem::path> dataPaths;
if (cfg.count("data"))
addPaths(dataPaths, cfg["data"]);
if (cfg.count("data-local"))
addPaths(dataPaths, cfg["data-local"]);
dataPaths.push_back(iniFilename.parent_path() /= "Data Files");
multistrmap::const_iterator it = ini.begin();
for(int i=0; it != ini.end(); i++) {
gameFile = baseGameFile;
gameFile.append(this->numberToString(i));
for (int i=0; it != ini.end(); i++)
{
std::string gameFile = baseGameFile;
gameFile.append(std::to_string(i));
it = ini.find(gameFile);
if(it == ini.end()) {
if(it == ini.end())
break;
}
for(std::vector<std::string>::const_iterator entry = it->second.begin(); entry!=it->second.end(); ++entry) {
for(std::vector<std::string>::const_iterator entry = it->second.begin(); entry!=it->second.end(); ++entry)
{
std::string filetype(entry->substr(entry->length()-3));
Misc::StringUtils::lowerCaseInPlace(filetype);
if(filetype.compare("esm") == 0 || filetype.compare("esp") == 0) {
boost::filesystem::path filepath(gameFilesDir);
filepath /= *entry;
contentFiles.push_back(std::make_pair(lastWriteTime(filepath, defaultTime), *entry));
if(filetype.compare("esm") == 0 || filetype.compare("esp") == 0)
{
bool found = false;
for (auto & dataPath : dataPaths)
{
boost::filesystem::path path = dataPath / *entry;
std::time_t time = lastWriteTime(path, defaultTime);
if (time != defaultTime)
{
contentFiles.push_back({time, path});
found = true;
break;
}
}
if (!found)
std::cout << "Warning: " << *entry << " not found, ignoring" << std::endl;
}
}
}
@ -863,11 +924,46 @@ void MwIniImporter::importGameFiles(multistrmap &cfg, const multistrmap &ini, co
cfg.erase("content");
cfg.insert( std::make_pair("content", std::vector<std::string>() ) );
// this will sort files by time order first, then alphabetical (maybe), I suspect non ASCII filenames will be stuffed.
// sort by timestamp
sort(contentFiles.begin(), contentFiles.end());
for(std::vector<std::pair<std::time_t, std::string> >::const_iterator it=contentFiles.begin(); it!=contentFiles.end(); ++it) {
cfg["content"].push_back(it->second);
MwIniImporter::dependencyList unsortedFiles;
ESM::ESMReader reader;
reader.setEncoder(&encoder);
for (auto& file : contentFiles)
{
reader.open(file.second.string());
std::vector<std::string> dependencies;
for (auto& gameFile : reader.getGameFiles())
{
dependencies.push_back(gameFile.name);
}
unsortedFiles.emplace_back(boost::filesystem::path(reader.getName()).filename().string(), dependencies);
reader.close();
}
auto sortedFiles = dependencySort(unsortedFiles);
// hard-coded dependency Morrowind - Tribunal - Bloodmoon
if(findString(sortedFiles, "Morrowind.esm") != sortedFiles.end())
{
auto tribunalIter = findString(sortedFiles, "Tribunal.esm");
auto bloodmoonIter = findString(sortedFiles, "Bloodmoon.esm");
if (bloodmoonIter != sortedFiles.end() && tribunalIter != sortedFiles.end())
{
size_t bloodmoonIndex = std::distance(sortedFiles.begin(), bloodmoonIter);
size_t tribunalIndex = std::distance(sortedFiles.begin(), tribunalIter);
if (bloodmoonIndex < tribunalIndex)
tribunalIndex++;
sortedFiles.insert(bloodmoonIter, *tribunalIter);
sortedFiles.erase(sortedFiles.begin() + tribunalIndex);
}
}
for (auto& file : sortedFiles)
cfg["content"].push_back(file);
}
void MwIniImporter::writeToFile(std::ostream &out, const multistrmap &cfg) {
@ -906,9 +1002,5 @@ std::time_t MwIniImporter::lastWriteTime(const boost::filesystem::path& filename
std::cout << "content file: " << resolved << " timestamp = (" << writeTime <<
") " << timeStrBuffer << std::endl;
}
else
{
std::cout << "content file: " << filename << " not found" << std::endl;
}
return writeTime;
}

View file

@ -14,6 +14,7 @@ class MwIniImporter {
public:
typedef std::map<std::string, std::string> strmap;
typedef std::map<std::string, std::vector<std::string> > multistrmap;
typedef std::vector< std::pair< std::string, std::vector<std::string> > > dependencyList;
MwIniImporter();
void setInputEncoding(const ToUTF8::FromType& encoding);
@ -27,9 +28,14 @@ class MwIniImporter {
void importArchives(multistrmap &cfg, const multistrmap &ini) const;
static void writeToFile(std::ostream &out, const multistrmap &cfg);
static std::vector<std::string> dependencySort(MwIniImporter::dependencyList source);
private:
static void dependencySortStep(std::string& element, MwIniImporter::dependencyList& source, std::vector<std::string>& result);
static std::vector<std::string>::iterator findString(std::vector<std::string>& source, const std::string& string);
static void insertMultistrmap(multistrmap &cfg, const std::string& key, const std::string& value);
static std::string numberToString(int n);
static void addPaths(std::vector<boost::filesystem::path>& output, std::vector<std::string> input);
/// \return file's "last modified time", used in original MW to determine plug-in load order
static std::time_t lastWriteTime(const boost::filesystem::path& filename, std::time_t defaultTime);
@ -40,5 +46,4 @@ class MwIniImporter {
ToUTF8::FromType mEncoding;
};
#endif

View file

@ -1,11 +1,9 @@
#include "importer.hpp"
#include <string>
#include <iostream>
#include <boost/program_options.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/fstream.hpp>
namespace bpo = boost::program_options;

View file

@ -4,7 +4,7 @@ set(NIFTEST
source_group(components\\nif\\tests FILES ${NIFTEST})
# Main executable
add_executable(niftest
openmw_add_executable(niftest
${NIFTEST}
)

View file

@ -33,12 +33,12 @@ bool hasExtension(std::string filename, std::string extensionToFind)
}
///See if the file has the "nif" extension.
bool isNIF(std::string filename)
bool isNIF(const std::string & filename)
{
return hasExtension(filename,"nif");
}
///See if the file has the "bsa" extension.
bool isBSA(std::string filename)
bool isBSA(const std::string & filename)
{
return hasExtension(filename,"bsa");
}

View file

@ -18,7 +18,7 @@ opencs_hdrs_noqt (model/doc
opencs_units (model/world
idtable idtableproxymodel regionmap data commanddispatcher idtablebase resourcetable nestedtableproxymodel idtree infotableproxymodel
idtable idtableproxymodel regionmap data commanddispatcher idtablebase resourcetable nestedtableproxymodel idtree infotableproxymodel landtexturetableproxymodel
)
@ -66,10 +66,11 @@ opencs_hdrs_noqt (view/doc
opencs_units (view/world
table tablesubview scriptsubview util regionmapsubview tablebottombox creator genericcreator
cellcreator referenceablecreator startscriptcreator referencecreator scenesubview
table tablesubview scriptsubview util regionmapsubview tablebottombox creator genericcreator globalcreator
cellcreator pathgridcreator referenceablecreator startscriptcreator referencecreator scenesubview
infocreator scriptedit dialoguesubview previewsubview regionmap dragrecordtable nestedtable
dialoguespinbox recordbuttonbar tableeditidaction scripterrortable extendedcommandconfigurator
bodypartcreator landtexturecreator landcreator
)
opencs_units_noqt (view/world
@ -80,18 +81,19 @@ opencs_units_noqt (view/world
opencs_units (view/widget
scenetoolbar scenetool scenetoolmode pushbutton scenetooltoggle scenetoolrun modebutton
scenetooltoggle2 completerpopup coloreditor colorpickerpopup droplineedit
scenetooltoggle2 scenetooltexturebrush completerpopup coloreditor colorpickerpopup droplineedit
)
opencs_units (view/render
scenewidget worldspacewidget pagedworldspacewidget unpagedworldspacewidget
previewwidget editmode instancemode instanceselectionmode instancemovemode
orbitcameramode
orbitcameramode pathgridmode selectionmode pathgridselectionmode cameracontroller
cellwater terraintexturemode
)
opencs_units_noqt (view/render
lighting lightingday lightingnight lightingbright object cell terrainstorage tagbase
cellarrow cellmarker cellborder cameracontroller
cellarrow cellmarker cellborder pathgrid
)
opencs_hdrs_noqt (view/render
@ -108,11 +110,12 @@ opencs_units_noqt (view/tools
)
opencs_units (view/prefs
dialogue pagebase page
dialogue pagebase page keybindingpage contextmenulist
)
opencs_units (model/prefs
state setting intsetting doublesetting boolsetting enumsetting coloursetting
state setting intsetting doublesetting boolsetting enumsetting coloursetting shortcut
shortcuteventhandler shortcutmanager shortcutsetting modifiersetting
)
opencs_units_noqt (model/prefs
@ -160,26 +163,43 @@ endif()
include_directories(${CMAKE_CURRENT_BINARY_DIR})
if(APPLE)
set (OPENCS_MAC_ICON ${CMAKE_SOURCE_DIR}/files/mac/openmw-cs.icns)
set (OPENCS_MAC_ICON "${CMAKE_SOURCE_DIR}/files/mac/openmw-cs.icns")
set (OPENCS_CFG "${OpenMW_BINARY_DIR}/openmw-cs.cfg")
set (OPENCS_DEFAULT_FILTERS_FILE "${OpenMW_BINARY_DIR}/resources/defaultfilters")
set (OPENCS_OPENMW_CFG "${OpenMW_BINARY_DIR}/openmw.cfg")
else()
set (OPENCS_MAC_ICON "")
set (OPENCS_CFG "")
set (OPENCS_DEFAULT_FILTERS_FILE "")
set (OPENCS_OPENMW_CFG "")
endif(APPLE)
add_executable(openmw-cs
openmw_add_executable(openmw-cs
MACOSX_BUNDLE
${OPENCS_SRC}
${OPENCS_UI_HDR}
${OPENCS_MOC_SRC}
${OPENCS_RES_SRC}
${OPENCS_MAC_ICON}
${OPENCS_CFG}
${OPENCS_DEFAULT_FILTERS_FILE}
${OPENCS_OPENMW_CFG}
)
if(APPLE)
set(OPENCS_BUNDLE_NAME "OpenMW-CS")
set(OPENCS_BUNDLE_RESOURCES_DIR "${OpenMW_BINARY_DIR}/${OPENCS_BUNDLE_NAME}.app/Contents/Resources")
set(OPENMW_MYGUI_FILES_ROOT ${OPENCS_BUNDLE_RESOURCES_DIR})
set(OPENMW_SHADERS_ROOT ${OPENCS_BUNDLE_RESOURCES_DIR})
add_subdirectory(../../files/ ${CMAKE_CURRENT_BINARY_DIR}/files)
set_target_properties(openmw-cs PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${OpenMW_BINARY_DIR}"
OUTPUT_NAME "OpenMW-CS"
OUTPUT_NAME ${OPENCS_BUNDLE_NAME}
MACOSX_BUNDLE_ICON_FILE "openmw-cs.icns"
MACOSX_BUNDLE_BUNDLE_NAME "OpenCS"
MACOSX_BUNDLE_BUNDLE_NAME "OpenMW-CS"
MACOSX_BUNDLE_GUI_IDENTIFIER "org.openmw.opencs"
MACOSX_BUNDLE_SHORT_VERSION_STRING ${OPENMW_VERSION}
MACOSX_BUNDLE_BUNDLE_VERSION ${OPENMW_VERSION}
@ -188,6 +208,16 @@ if(APPLE)
set_source_files_properties(${OPENCS_MAC_ICON} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources)
set_source_files_properties(${OPENCS_CFG} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources)
set_source_files_properties(${OPENCS_DEFAULT_FILTERS_FILE} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources/resources)
set_source_files_properties(${OPENCS_OPENMW_CFG} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources)
add_custom_command(TARGET openmw-cs
POST_BUILD
COMMAND cp "${OpenMW_BINARY_DIR}/resources/version" "${OPENCS_BUNDLE_RESOURCES_DIR}/resources")
endif(APPLE)
target_link_libraries(openmw-cs
@ -216,14 +246,24 @@ if (DESIRED_QT_VERSION MATCHES 4)
target_link_libraries(openmw-cs ${QT_QTMAIN_LIBRARY})
endif()
else()
qt5_use_modules(openmw-cs Widgets Core Network OpenGL)
target_link_libraries(openmw-cs Qt5::Widgets Qt5::Core Qt5::Network Qt5::OpenGL)
endif()
if (WIN32)
target_link_libraries(openmw-cs ${Boost_LOCALE_LIBRARY})
INSTALL(TARGETS openmw-cs RUNTIME DESTINATION ".")
INSTALL(FILES "${OpenMW_BINARY_DIR}/Debug/openmw-cs.cfg" DESTINATION "." CONFIGURATIONS Debug)
INSTALL(FILES "${OpenMW_BINARY_DIR}/Release/openmw-cs.cfg" DESTINATION "." CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel)
endif()
if (MSVC)
# Debug version needs increased number of sections beyond 2^16
if (CMAKE_CL_64)
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /bigobj")
endif (CMAKE_CL_64)
endif (MSVC)
if(APPLE)
INSTALL(TARGETS openmw-cs BUNDLE DESTINATION OpenMW COMPONENT BUNDLE)
INSTALL(TARGETS openmw-cs BUNDLE DESTINATION "." COMPONENT BUNDLE)
endif()

View file

@ -0,0 +1,90 @@
#include "editor.hpp"
#include <exception>
#include <iostream>
#include <string>
#include <QApplication>
#include <QIcon>
#include <QMetaType>
#include "model/doc/messages.hpp"
#include "model/world/universalid.hpp"
#ifdef Q_OS_MAC
#include <QDir>
#endif
Q_DECLARE_METATYPE (std::string)
class Application : public QApplication
{
private:
bool notify (QObject *receiver, QEvent *event)
{
try
{
return QApplication::notify (receiver, event);
}
catch (const std::exception& exception)
{
std::cerr << "An exception has been caught: " << exception.what() << std::endl;
}
return false;
}
public:
Application (int& argc, char *argv[]) : QApplication (argc, argv) {}
};
int main(int argc, char *argv[])
{
#ifdef Q_OS_MAC
setenv("OSG_GL_TEXTURE_STORAGE", "OFF", 0);
#endif
try
{
// To allow background thread drawing in OSG
QApplication::setAttribute(Qt::AA_X11InitThreads, true);
Q_INIT_RESOURCE (resources);
qRegisterMetaType<std::string> ("std::string");
qRegisterMetaType<CSMWorld::UniversalId> ("CSMWorld::UniversalId");
qRegisterMetaType<CSMDoc::Message> ("CSMDoc::Message");
Application application (argc, argv);
#ifdef Q_OS_MAC
QDir dir(QCoreApplication::applicationDirPath());
if (dir.dirName() == "MacOS") {
dir.cdUp();
dir.cdUp();
dir.cdUp();
}
QDir::setCurrent(dir.absolutePath());
#endif
application.setWindowIcon (QIcon (":./openmw-cs.png"));
CS::Editor editor;
if(!editor.makeIPCServer())
{
editor.connectToIPCServer();
return 0;
}
return editor.run();
}
catch (std::exception& e)
{
std::cerr << "ERROR: " << e.what() << std::endl;
return 0;
}
}

View file

@ -5,8 +5,8 @@
#include <QLocalSocket>
#include <QMessageBox>
#include <components/vfs/manager.hpp>
#include <components/vfs/registerarchives.hpp>
#include <components/crashcatcher/crashcatcher.hpp>
#include <components/fallback/validate.hpp>
@ -21,23 +21,23 @@
using namespace Fallback;
CS::Editor::Editor ()
CS::Editor::Editor (int argc, char **argv)
: mSettingsState (mCfgMgr), mDocumentManager (mCfgMgr),
mViewManager (mDocumentManager), mPid(""),
mLock(), mMerge (mDocumentManager),
mIpcServerName ("org.openmw.OpenCS"), mServer(NULL), mClientSocket(NULL)
{
// install the crash handler as soon as possible. note that the log path
// does not depend on config being read.
crashCatcherInstall(argc, argv, (mCfgMgr.getLogPath() / "openmw-cs-crash.log").string());
std::pair<Files::PathContainer, std::vector<std::string> > config = readConfig();
setupDataFiles (config.first);
NifOsg::Loader::setShowMarkers(true);
mVFS.reset(new VFS::Manager(mFsStrict));
VFS::registerArchives(mVFS.get(), Files::Collections(config.first, !mFsStrict), config.second, true);
mDocumentManager.setVFS(mVFS.get());
mDocumentManager.setFileData(mFsStrict, config.first, config.second);
mNewGame.setLocalData (mLocal);
mFileDialog.setLocalData (mLocal);
@ -97,16 +97,16 @@ std::pair<Files::PathContainer, std::vector<std::string> > CS::Editor::readConfi
boost::program_options::options_description desc("Syntax: openmw-cs <options>\nAllowed options");
desc.add_options()
("data", boost::program_options::value<Files::PathContainer>()->default_value(Files::PathContainer(), "data")->multitoken()->composing())
("data-local", boost::program_options::value<std::string>()->default_value(""))
("data", boost::program_options::value<Files::EscapePathContainer>()->default_value(Files::EscapePathContainer(), "data")->multitoken()->composing())
("data-local", boost::program_options::value<Files::EscapeHashString>()->default_value(""))
("fs-strict", boost::program_options::value<bool>()->implicit_value(true)->default_value(false))
("encoding", boost::program_options::value<std::string>()->default_value("win1252"))
("resources", boost::program_options::value<std::string>()->default_value("resources"))
("fallback-archive", boost::program_options::value<std::vector<std::string> >()->
default_value(std::vector<std::string>(), "fallback-archive")->multitoken())
("encoding", boost::program_options::value<Files::EscapeHashString>()->default_value("win1252"))
("resources", boost::program_options::value<Files::EscapeHashString>()->default_value("resources"))
("fallback-archive", boost::program_options::value<Files::EscapeStringVector>()->
default_value(Files::EscapeStringVector(), "fallback-archive")->multitoken())
("fallback", boost::program_options::value<FallbackMap>()->default_value(FallbackMap(), "")
->multitoken()->composing(), "fallback values")
("script-blacklist", boost::program_options::value<std::vector<std::string> >()->default_value(std::vector<std::string>(), "")
("script-blacklist", boost::program_options::value<Files::EscapeStringVector>()->default_value(Files::EscapeStringVector(), "")
->multitoken(), "exclude specified script from the verifier (if the use of the blacklist is enabled)")
("script-blacklist-use", boost::program_options::value<bool>()->implicit_value(true)
->default_value(true), "enable script blacklisting");
@ -116,25 +116,29 @@ std::pair<Files::PathContainer, std::vector<std::string> > CS::Editor::readConfi
mCfgMgr.readConfiguration(variables, desc, quiet);
mDocumentManager.setEncoding (
ToUTF8::calculateEncoding (variables["encoding"].as<std::string>()));
ToUTF8::calculateEncoding (variables["encoding"].as<Files::EscapeHashString>().toStdString()));
mDocumentManager.setResourceDir (mResources = variables["resources"].as<std::string>());
mDocumentManager.setResourceDir (mResources = variables["resources"].as<Files::EscapeHashString>().toStdString());
mDocumentManager.setFallbackMap (variables["fallback"].as<FallbackMap>().mMap);
if (variables["script-blacklist-use"].as<bool>())
mDocumentManager.setBlacklistedScripts (
variables["script-blacklist"].as<std::vector<std::string> >());
variables["script-blacklist"].as<Files::EscapeStringVector>().toStdStringVector());
mFsStrict = variables["fs-strict"].as<bool>();
Files::PathContainer dataDirs, dataLocal;
if (!variables["data"].empty()) {
dataDirs = Files::PathContainer(variables["data"].as<Files::PathContainer>());
dataDirs = Files::PathContainer(Files::EscapePath::toPathContainer(variables["data"].as<Files::EscapePathContainer>()));
}
std::string local = variables["data-local"].as<std::string>();
if (!local.empty()) {
std::string local = variables["data-local"].as<Files::EscapeHashString>().toStdString();
if (!local.empty())
{
if (local.front() == '\"')
local = local.substr(1, local.length() - 2);
dataLocal.push_back(Files::PathContainer::value_type(local));
}
@ -164,7 +168,7 @@ std::pair<Files::PathContainer, std::vector<std::string> > CS::Editor::readConfi
mFileDialog.addFiles(path);
}
return std::make_pair (dataDirs, variables["fallback-archive"].as<std::vector<std::string> >());
return std::make_pair (dataDirs, variables["fallback-archive"].as<Files::EscapeStringVector>().toStdStringVector());
}
void CS::Editor::createGame()

View file

@ -1,8 +1,6 @@
#ifndef CS_EDITOR_H
#define CS_EDITOR_H
#include <memory>
#include <boost/interprocess/sync/file_lock.hpp>
#include <boost/filesystem/fstream.hpp>
@ -30,11 +28,6 @@
#include "view/tools/merge.hpp"
namespace VFS
{
class Manager;
}
namespace CSMDoc
{
class Document;
@ -46,9 +39,6 @@ namespace CS
{
Q_OBJECT
// FIXME: should be moved to document, so we can have different resources for each opened project
std::auto_ptr<VFS::Manager> mVFS;
Files::ConfigurationManager mCfgMgr;
CSMPrefs::State mSettingsState;
CSMDoc::DocumentManager mDocumentManager;
@ -76,7 +66,7 @@ namespace CS
public:
Editor ();
Editor (int argc, char **argv);
~Editor ();
bool makeIPCServer();

View file

@ -8,8 +8,9 @@
#include <QIcon>
#include <QMetaType>
#include "model/doc/messages.hpp"
#include <components/misc/debugging.hpp>
#include "model/doc/messages.hpp"
#include "model/world/universalid.hpp"
#ifdef Q_OS_MAC
@ -41,50 +42,43 @@ class Application : public QApplication
Application (int& argc, char *argv[]) : QApplication (argc, argv) {}
};
int main(int argc, char *argv[])
int runApplication(int argc, char *argv[])
{
#ifdef Q_OS_MAC
setenv("OSG_GL_TEXTURE_STORAGE", "OFF", 0);
#endif
#ifdef Q_OS_MAC
setenv("OSG_GL_TEXTURE_STORAGE", "OFF", 0);
#endif
try
// To allow background thread drawing in OSG
QApplication::setAttribute(Qt::AA_X11InitThreads, true);
Q_INIT_RESOURCE (resources);
qRegisterMetaType<std::string> ("std::string");
qRegisterMetaType<CSMWorld::UniversalId> ("CSMWorld::UniversalId");
qRegisterMetaType<CSMDoc::Message> ("CSMDoc::Message");
Application application (argc, argv);
#ifdef Q_OS_MAC
QDir dir(QCoreApplication::applicationDirPath());
QDir::setCurrent(dir.absolutePath());
#endif
application.setWindowIcon (QIcon (":./openmw-cs.png"));
CS::Editor editor(argc, argv);
if(!editor.makeIPCServer())
{
// To allow background thread drawing in OSG
QApplication::setAttribute(Qt::AA_X11InitThreads, true);
Q_INIT_RESOURCE (resources);
qRegisterMetaType<std::string> ("std::string");
qRegisterMetaType<CSMWorld::UniversalId> ("CSMWorld::UniversalId");
qRegisterMetaType<CSMDoc::Message> ("CSMDoc::Message");
Application application (argc, argv);
#ifdef Q_OS_MAC
QDir dir(QCoreApplication::applicationDirPath());
if (dir.dirName() == "MacOS") {
dir.cdUp();
dir.cdUp();
dir.cdUp();
}
QDir::setCurrent(dir.absolutePath());
#endif
application.setWindowIcon (QIcon (":./openmw-cs.png"));
CS::Editor editor;
if(!editor.makeIPCServer())
{
editor.connectToIPCServer();
return 0;
}
return editor.run();
}
catch (std::exception& e)
{
std::cerr << "ERROR: " << e.what() << std::endl;
editor.connectToIPCServer();
return 0;
}
return editor.run();
}
int main(int argc, char *argv[])
{
return wrapApplication(&runApplication, argc, argv, "/openmw-cs.log");
}

Some files were not shown because too many files have changed in this diff Show more