forked from teamnwah/openmw-tes3coop
Merge pull request #444 from TES3MP/0.6.3 while resolving conflicts
This commit is contained in:
commit
6bb2a7e24a
16 changed files with 173 additions and 46 deletions
102
CHANGELOG.md
102
CHANGELOG.md
|
@ -1,3 +1,105 @@
|
||||||
|
0.45.0
|
||||||
|
------
|
||||||
|
|
||||||
|
|
||||||
|
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 #4435: Item health is considered a signed integer
|
||||||
|
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
|
0.43.0
|
||||||
------
|
------
|
||||||
|
|
||||||
|
|
|
@ -636,6 +636,17 @@ fi
|
||||||
-DQT_QMAKE_EXECUTABLE="${QT_SDK}/bin/qmake.exe" \
|
-DQT_QMAKE_EXECUTABLE="${QT_SDK}/bin/qmake.exe" \
|
||||||
-DCMAKE_PREFIX_PATH="$QT_SDK"
|
-DCMAKE_PREFIX_PATH="$QT_SDK"
|
||||||
|
|
||||||
|
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.
|
echo Done.
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -710,7 +721,7 @@ if [ ! -z $CI ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# NOTE: Disable this when/if we want to run test cases
|
# NOTE: Disable this when/if we want to run test cases
|
||||||
if [ -z $CI ]; then
|
#if [ -z $CI ]; then
|
||||||
echo "- Copying Runtime DLLs..."
|
echo "- Copying Runtime DLLs..."
|
||||||
mkdir -p $BUILD_CONFIG
|
mkdir -p $BUILD_CONFIG
|
||||||
for DLL in $RUNTIME_DLLS; do
|
for DLL in $RUNTIME_DLLS; do
|
||||||
|
@ -742,7 +753,7 @@ if [ -z $CI ]; then
|
||||||
cp "$DLL" "${BUILD_CONFIG}/platforms"
|
cp "$DLL" "${BUILD_CONFIG}/platforms"
|
||||||
done
|
done
|
||||||
echo
|
echo
|
||||||
fi
|
#fi
|
||||||
|
|
||||||
if [ -z $VERBOSE ]; then
|
if [ -z $VERBOSE ]; then
|
||||||
printf -- "- Configuring... "
|
printf -- "- Configuring... "
|
||||||
|
|
|
@ -57,7 +57,7 @@ endif()
|
||||||
message(STATUS "Configuring OpenMW...")
|
message(STATUS "Configuring OpenMW...")
|
||||||
|
|
||||||
set(OPENMW_VERSION_MAJOR 0)
|
set(OPENMW_VERSION_MAJOR 0)
|
||||||
set(OPENMW_VERSION_MINOR 43)
|
set(OPENMW_VERSION_MINOR 44)
|
||||||
set(OPENMW_VERSION_RELEASE 0)
|
set(OPENMW_VERSION_RELEASE 0)
|
||||||
|
|
||||||
set(OPENMW_VERSION_COMMITHASH "")
|
set(OPENMW_VERSION_COMMITHASH "")
|
||||||
|
@ -392,8 +392,6 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL GNU OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-but-set-parameter")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-but-set-parameter")
|
||||||
endif()
|
endif()
|
||||||
elseif (MSVC)
|
elseif (MSVC)
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} /Zi /bigobj")
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF /INCREMENTAL:NO")
|
|
||||||
# Enable link-time code generation globally for all linking
|
# Enable link-time code generation globally for all linking
|
||||||
if (OPENMW_LTO_BUILD)
|
if (OPENMW_LTO_BUILD)
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL")
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL")
|
||||||
|
@ -777,8 +775,7 @@ if (WIN32)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (BUILD_OPENMW)
|
if (BUILD_OPENMW)
|
||||||
# Very specific issue this, only needed on 32-bit VS2015 during unity builds.
|
if (OPENMW_UNITY_BUILD)
|
||||||
if (MSVC_VERSION GREATER 1800 AND CMAKE_SIZEOF_VOID_P EQUAL 4 AND OPENMW_UNITY_BUILD)
|
|
||||||
set_target_properties(tes3mp PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD} /bigobj")
|
set_target_properties(tes3mp PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD} /bigobj")
|
||||||
else()
|
else()
|
||||||
set_target_properties(tes3mp PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
|
set_target_properties(tes3mp PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
|
||||||
|
|
|
@ -6,7 +6,7 @@ TES3MP
|
||||||
TES3MP is a project aiming to add multiplayer functionality to [OpenMW](https://github.com/OpenMW/openmw), a free and open source engine recreation of the popular Bethesda Softworks game "The Elder Scrolls III: Morrowind".
|
TES3MP is a project aiming to add multiplayer functionality to [OpenMW](https://github.com/OpenMW/openmw), a free and open source engine recreation of the popular Bethesda Softworks game "The Elder Scrolls III: Morrowind".
|
||||||
|
|
||||||
* TES3MP version: 0.7-alpha
|
* TES3MP version: 0.7-alpha
|
||||||
* OpenMW version: 0.43.0
|
* OpenMW version: 0.44.0
|
||||||
* License: GPLv3 (see [LICENSE](https://github.com/TES3MP/openmw-tes3mp/blob/master/LICENSE) for more information)
|
* License: GPLv3 (see [LICENSE](https://github.com/TES3MP/openmw-tes3mp/blob/master/LICENSE) for more information)
|
||||||
|
|
||||||
Font Licenses:
|
Font Licenses:
|
||||||
|
|
|
@ -237,7 +237,6 @@ namespace MWMechanics
|
||||||
if (effects)
|
if (effects)
|
||||||
magicEffects = effects;
|
magicEffects = effects;
|
||||||
|
|
||||||
float resisted = 0;
|
|
||||||
// Effects with no resistance attribute belonging to them can not be resisted
|
// Effects with no resistance attribute belonging to them can not be resisted
|
||||||
if (ESM::MagicEffect::getResistanceEffect(effectId) == -1)
|
if (ESM::MagicEffect::getResistanceEffect(effectId) == -1)
|
||||||
return 0.f;
|
return 0.f;
|
||||||
|
@ -272,10 +271,7 @@ namespace MWMechanics
|
||||||
}
|
}
|
||||||
|
|
||||||
x = std::min(x + resistance, 100.f);
|
x = std::min(x + resistance, 100.f);
|
||||||
|
return x;
|
||||||
resisted = x;
|
|
||||||
|
|
||||||
return resisted;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float getEffectMultiplier(short effectId, const MWWorld::Ptr& actor, const MWWorld::Ptr& caster,
|
float getEffectMultiplier(short effectId, const MWWorld::Ptr& actor, const MWWorld::Ptr& caster,
|
||||||
|
@ -472,10 +468,11 @@ namespace MWMechanics
|
||||||
|
|
||||||
float magnitudeMult = 1;
|
float magnitudeMult = 1;
|
||||||
|
|
||||||
if (!absorbed)
|
if (!absorbed && target.getClass().isActor())
|
||||||
{
|
{
|
||||||
|
bool isHarmful = magicEffect->mData.mFlags & ESM::MagicEffect::Harmful;
|
||||||
// Reflect harmful effects
|
// Reflect harmful effects
|
||||||
if (magicEffect->mData.mFlags & ESM::MagicEffect::Harmful && !reflected && !caster.isEmpty() && caster != target && !(magicEffect->mData.mFlags & ESM::MagicEffect::Unreflectable))
|
if (isHarmful && !reflected && !caster.isEmpty() && caster != target && !(magicEffect->mData.mFlags & ESM::MagicEffect::Unreflectable))
|
||||||
{
|
{
|
||||||
float reflect = target.getClass().getCreatureStats(target).getMagicEffects().get(ESM::MagicEffect::Reflect).getMagnitude();
|
float reflect = target.getClass().getCreatureStats(target).getMagicEffects().get(ESM::MagicEffect::Reflect).getMagnitude();
|
||||||
bool isReflected = (Misc::Rng::roll0to99() < reflect);
|
bool isReflected = (Misc::Rng::roll0to99() < reflect);
|
||||||
|
@ -499,17 +496,17 @@ namespace MWMechanics
|
||||||
else if (castByPlayer)
|
else if (castByPlayer)
|
||||||
MWBase::Environment::get().getWindowManager()->messageBox("#{sMagicTargetResisted}");
|
MWBase::Environment::get().getWindowManager()->messageBox("#{sMagicTargetResisted}");
|
||||||
}
|
}
|
||||||
else if (magicEffect->mData.mFlags & ESM::MagicEffect::Harmful && castByPlayer && target != caster)
|
else if (isHarmful && castByPlayer && target != caster)
|
||||||
{
|
{
|
||||||
// If player is attempting to cast a harmful spell and it wasn't fully resisted, show the target's HP bar
|
// If player is attempting to cast a harmful spell and it wasn't fully resisted, show the target's HP bar
|
||||||
MWBase::Environment::get().getWindowManager()->setEnemy(target);
|
MWBase::Environment::get().getWindowManager()->setEnemy(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target == getPlayer() && MWBase::Environment::get().getWorld()->getGodModeState())
|
if (target == getPlayer() && MWBase::Environment::get().getWorld()->getGodModeState() && isHarmful)
|
||||||
magnitudeMult = 0;
|
magnitudeMult = 0;
|
||||||
|
|
||||||
// Notify the target actor they've been hit
|
// Notify the target actor they've been hit
|
||||||
if (target != caster && !caster.isEmpty() && magicEffect->mData.mFlags & ESM::MagicEffect::Harmful)
|
if (target != caster && !caster.isEmpty() && isHarmful)
|
||||||
target.getClass().onHit(target, 0.0f, true, MWWorld::Ptr(), caster, osg::Vec3f(), true);
|
target.getClass().onHit(target, 0.0f, true, MWWorld::Ptr(), caster, osg::Vec3f(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,13 +75,16 @@ void ObjectList::addContainerItem(mwmp::BaseObject& baseObject, const MWWorld::P
|
||||||
containerItem.enchantmentCharge = itemPtr.getCellRef().getEnchantmentCharge();
|
containerItem.enchantmentCharge = itemPtr.getCellRef().getEnchantmentCharge();
|
||||||
containerItem.actionCount = actionCount;
|
containerItem.actionCount = actionCount;
|
||||||
|
|
||||||
LOG_APPEND(Log::LOG_INFO, "-- Adding container item %s", containerItem.refId.c_str());
|
LOG_APPEND(Log::LOG_INFO, "--- Adding container item %s", containerItem.refId.c_str());
|
||||||
|
|
||||||
baseObject.containerItems.push_back(containerItem);
|
baseObject.containerItems.push_back(containerItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectList::addEntireContainer(const MWWorld::Ptr& ptr)
|
void ObjectList::addEntireContainer(const MWWorld::Ptr& ptr)
|
||||||
{
|
{
|
||||||
|
LOG_APPEND(Log::LOG_INFO, "-- Adding entire container %s %i-%i", ptr.getCellRef().getRefId().c_str(),
|
||||||
|
ptr.getCellRef().getRefNum().mIndex, ptr.getCellRef().getMpNum());
|
||||||
|
|
||||||
MWWorld::ContainerStore& containerStore = ptr.getClass().getContainerStore(ptr);
|
MWWorld::ContainerStore& containerStore = ptr.getClass().getContainerStore(ptr);
|
||||||
|
|
||||||
mwmp::BaseObject baseObject = getBaseObject(ptr);
|
mwmp::BaseObject baseObject = getBaseObject(ptr);
|
||||||
|
@ -102,14 +105,14 @@ void ObjectList::editContainers(MWWorld::CellStore* cellStore)
|
||||||
|
|
||||||
for (const auto &baseObject : baseObjects)
|
for (const auto &baseObject : baseObjects)
|
||||||
{
|
{
|
||||||
//LOG_APPEND(Log::LOG_VERBOSE, "- container cellRef: %s %i-%i", baseObject.refId.c_str(), baseObject.refNumIndex, baseObject.mpNum);
|
LOG_APPEND(Log::LOG_VERBOSE, "- container cellRef: %s %i-%i", baseObject.refId.c_str(), baseObject.refNumIndex, baseObject.mpNum);
|
||||||
|
|
||||||
MWWorld::Ptr ptrFound = cellStore->searchExact(baseObject.refNumIndex, baseObject.mpNum);
|
MWWorld::Ptr ptrFound = cellStore->searchExact(baseObject.refNumIndex, baseObject.mpNum);
|
||||||
|
|
||||||
if (ptrFound)
|
if (ptrFound)
|
||||||
{
|
{
|
||||||
//LOG_APPEND(Log::LOG_VERBOSE, "-- Found %s, %i, %i", ptrFound.getCellRef().getRefId().c_str(),
|
LOG_APPEND(Log::LOG_VERBOSE, "-- Found %s, %i, %i", ptrFound.getCellRef().getRefId().c_str(),
|
||||||
// ptrFound.getCellRef().getRefNum().mIndex, ptrFound.getCellRef().getMpNum());
|
ptrFound.getCellRef().getRefNum().mIndex, ptrFound.getCellRef().getMpNum());
|
||||||
|
|
||||||
bool isCurrentContainer = false;
|
bool isCurrentContainer = false;
|
||||||
bool hasActorEquipment = ptrFound.getClass().isActor() && ptrFound.getClass().hasInventoryStore(ptrFound);
|
bool hasActorEquipment = ptrFound.getClass().isActor() && ptrFound.getClass().hasInventoryStore(ptrFound);
|
||||||
|
@ -137,7 +140,8 @@ void ObjectList::editContainers(MWWorld::CellStore* cellStore)
|
||||||
bool isLocalTakeAll = isLocalEvent && containerSubAction == BaseObjectList::ContainerSubAction::TakeAll;
|
bool isLocalTakeAll = isLocalEvent && containerSubAction == BaseObjectList::ContainerSubAction::TakeAll;
|
||||||
std::string takeAllSound = "";
|
std::string takeAllSound = "";
|
||||||
|
|
||||||
MWWorld::Ptr ownerPtr = MWBase::Environment::get().getWorld()->getPlayerPtr();
|
MWWorld::Ptr ownerPtr = ptrFound.getClass().isActor() ? ptrFound : MWBase::Environment::get().getWorld()->getPlayerPtr();
|
||||||
|
|
||||||
for (const auto &containerItem : baseObject.containerItems)
|
for (const auto &containerItem : baseObject.containerItems)
|
||||||
{
|
{
|
||||||
//LOG_APPEND(Log::LOG_VERBOSE, "-- containerItem cellRef: %s, count: %i, actionCount: %i",
|
//LOG_APPEND(Log::LOG_VERBOSE, "-- containerItem cellRef: %s, count: %i, actionCount: %i",
|
||||||
|
|
|
@ -29,6 +29,7 @@ namespace mwmp
|
||||||
objectList.reset();
|
objectList.reset();
|
||||||
objectList.cell = *ptrCellStore->getCell();
|
objectList.cell = *ptrCellStore->getCell();
|
||||||
objectList.action = BaseObjectList::Action::Set;
|
objectList.action = BaseObjectList::Action::Set;
|
||||||
|
objectList.containerSubAction = BaseObjectList::ContainerSubAction::ReplyToRequest;
|
||||||
objectList.addAllContainers(ptrCellStore);
|
objectList.addAllContainers(ptrCellStore);
|
||||||
objectList.sendContainer();
|
objectList.sendContainer();
|
||||||
}
|
}
|
||||||
|
@ -39,6 +40,7 @@ namespace mwmp
|
||||||
objectList.reset();
|
objectList.reset();
|
||||||
objectList.cell = *ptrCellStore->getCell();
|
objectList.cell = *ptrCellStore->getCell();
|
||||||
objectList.action = mwmp::BaseObjectList::Action::Set;
|
objectList.action = mwmp::BaseObjectList::Action::Set;
|
||||||
|
objectList.containerSubAction = BaseObjectList::ContainerSubAction::ReplyToRequest;
|
||||||
objectList.addRequestedContainers(ptrCellStore, requestObjects);
|
objectList.addRequestedContainers(ptrCellStore, requestObjects);
|
||||||
|
|
||||||
if (objectList.baseObjects.size() > 0)
|
if (objectList.baseObjects.size() > 0)
|
||||||
|
|
|
@ -2832,11 +2832,11 @@ namespace MWWorld
|
||||||
int y = std::stoi(name.substr(name.find(',')+1));
|
int y = std::stoi(name.substr(name.find(',')+1));
|
||||||
ext = getExterior(x, y)->getCell();
|
ext = getExterior(x, y)->getCell();
|
||||||
}
|
}
|
||||||
catch (std::invalid_argument)
|
catch (const std::invalid_argument&)
|
||||||
{
|
{
|
||||||
// This exception can be ignored, as this means that name probably refers to a interior cell instead of comma separated coordinates
|
// This exception can be ignored, as this means that name probably refers to a interior cell instead of comma separated coordinates
|
||||||
}
|
}
|
||||||
catch (std::out_of_range)
|
catch (const std::out_of_range&)
|
||||||
{
|
{
|
||||||
throw std::runtime_error("Cell coordinates out of range.");
|
throw std::runtime_error("Cell coordinates out of range.");
|
||||||
}
|
}
|
||||||
|
|
15
appveyor.yml
15
appveyor.yml
|
@ -20,6 +20,7 @@ platform:
|
||||||
configuration:
|
configuration:
|
||||||
# - Debug
|
# - Debug
|
||||||
- Release
|
- Release
|
||||||
|
# - RelWithDebInfo
|
||||||
|
|
||||||
# For the Qt, Boost, CMake, etc installs
|
# For the Qt, Boost, CMake, etc installs
|
||||||
#os: Visual Studio 2017
|
#os: Visual Studio 2017
|
||||||
|
@ -48,7 +49,7 @@ install:
|
||||||
- set PATH=C:\Program Files\Git\mingw64\bin;%PATH%
|
- set PATH=C:\Program Files\Git\mingw64\bin;%PATH%
|
||||||
|
|
||||||
before_build:
|
before_build:
|
||||||
- cmd: sh %APPVEYOR_BUILD_FOLDER%\CI\before_script.msvc.sh -u -p %PLATFORM% -v %msvc% -V
|
- cmd: sh %APPVEYOR_BUILD_FOLDER%\CI\before_script.msvc.sh -c %configuration% -p %PLATFORM% -v %msvc% -V
|
||||||
|
|
||||||
build_script:
|
build_script:
|
||||||
- cmd: if %PLATFORM%==Win32 set build=MSVC%msvc%_32
|
- cmd: if %PLATFORM%==Win32 set build=MSVC%msvc%_32
|
||||||
|
@ -56,8 +57,8 @@ build_script:
|
||||||
- cmd: msbuild %build%\OpenMW.sln /t:Build /p:Configuration=%configuration% /m:2 /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
|
- cmd: msbuild %build%\OpenMW.sln /t:Build /p:Configuration=%configuration% /m:2 /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
|
||||||
|
|
||||||
after_build:
|
after_build:
|
||||||
- cmd: if %PLATFORM%==x64 7z a OpenMW_MSVC%msvc%_x64.zip %APPVEYOR_BUILD_FOLDER%\MSVC%msvc%_64\Release\ -xr"!*.pdb"
|
- cmd: if %PLATFORM%==x64 7z a OpenMW_MSVC%msvc%_%platform%_%appveyor_pull_request_number%_%appveyor_pull_request_head_commit%.zip %APPVEYOR_BUILD_FOLDER%\MSVC%msvc%_64\%configuration%\ -xr"!*.pdb"
|
||||||
- cmd: if %PLATFORM%==x64 7z a OpenMW_MSVC%msvc%_x64_pdb.zip %APPVEYOR_BUILD_FOLDER%\MSVC%msvc%_64\Release\*.pdb
|
#- cmd: if %PLATFORM%==x64 7z a OpenMW_MSVC%msvc%_%platform%_%appveyor_pull_request_number%_%appveyor_pull_request_head_commit%_pdb.zip %APPVEYOR_BUILD_FOLDER%\MSVC%msvc%_64\%configuration%\*.pdb
|
||||||
|
|
||||||
test: off
|
test: off
|
||||||
|
|
||||||
|
@ -69,7 +70,7 @@ test: off
|
||||||
# on_build_status_changed: true
|
# on_build_status_changed: true
|
||||||
|
|
||||||
artifacts:
|
artifacts:
|
||||||
- path: OpenMW_MSVC%msvc%_x64.zip
|
- path: OpenMW_MSVC%msvc%_%platform%_%appveyor_pull_request_number%_%appveyor_pull_request_head_commit%.zip
|
||||||
name: OpenMW_MSVC%msvc%_x64
|
name: OpenMW_MSVC%msvc%_%platform%_%appveyor_pull_request_number%_%appveyor_pull_request_head_commit%
|
||||||
- path: OpenMW_MSVC%msvc%_x64_pdb.zip
|
#- path: OpenMW_MSVC%msvc%_%platform%_%appveyor_pull_request_number%_%appveyor_pull_request_head_commit%_pdb.zip
|
||||||
name: OpenMW_MSVC%msvc%_x64_pdb
|
# name: OpenMW_MSVC%msvc%_%platform%_%appveyor_pull_request_number%_%appveyor_pull_request_head_commit%_pdb
|
||||||
|
|
|
@ -150,7 +150,7 @@ add_component_dir (openmw-mp
|
||||||
)
|
)
|
||||||
|
|
||||||
add_component_dir (openmw-mp/Base
|
add_component_dir (openmw-mp/Base
|
||||||
BaseActor BaseObjectList BaseNetCreature BasePacketProcessor BasePlayer BaseStructs BaseWorldstate
|
BaseActor BaseObject BaseNetCreature BasePacketProcessor BasePlayer BaseStructs BaseWorldstate
|
||||||
)
|
)
|
||||||
|
|
||||||
add_component_dir (openmw-mp/Controllers
|
add_component_dir (openmw-mp/Controllers
|
||||||
|
|
|
@ -57,7 +57,7 @@ struct Weapon
|
||||||
float mWeight;
|
float mWeight;
|
||||||
int mValue;
|
int mValue;
|
||||||
short mType;
|
short mType;
|
||||||
short mHealth;
|
unsigned short mHealth;
|
||||||
float mSpeed, mReach;
|
float mSpeed, mReach;
|
||||||
short mEnchant; // Enchantment points. The real value is mEnchant/10.f
|
short mEnchant; // Enchantment points. The real value is mEnchant/10.f
|
||||||
unsigned char mChop[2], mSlash[2], mThrust[2]; // Min and max
|
unsigned char mChop[2], mSlash[2], mThrust[2]; // Min and max
|
||||||
|
|
|
@ -63,16 +63,28 @@ std::string Misc::ResourceHelpers::correctResourcePath(const std::string &topLev
|
||||||
|
|
||||||
std::string origExt = correctedPath;
|
std::string origExt = correctedPath;
|
||||||
|
|
||||||
if (vfs->exists(origExt)
|
// since we know all (GOTY edition or less) textures end
|
||||||
|| (changeExtensionToDds(correctedPath) && vfs->exists(correctedPath)))
|
// in .dds, we change the extension
|
||||||
|
bool changedToDds = changeExtensionToDds(correctedPath);
|
||||||
|
if (vfs->exists(correctedPath))
|
||||||
return correctedPath;
|
return correctedPath;
|
||||||
|
// if it turns out that the above wasn't true in all cases (not for vanilla, but maybe mods)
|
||||||
|
// verify, and revert if false (this call succeeds quickly, but fails slowly)
|
||||||
|
if (changedToDds && vfs->exists(origExt))
|
||||||
|
return origExt;
|
||||||
|
|
||||||
// fall back to a resource in the top level directory if it exists
|
// fall back to a resource in the top level directory if it exists
|
||||||
std::string fallback = topLevelDirectory + "\\" + getBasename(origExt);
|
std::string fallback = topLevelDirectory + "\\" + getBasename(correctedPath);
|
||||||
if (vfs->exists(fallback)
|
if (vfs->exists(fallback))
|
||||||
|| (changeExtensionToDds(fallback) && vfs->exists(fallback)))
|
|
||||||
return fallback;
|
return fallback;
|
||||||
|
|
||||||
|
if (changedToDds)
|
||||||
|
{
|
||||||
|
fallback = topLevelDirectory + "\\" + getBasename(origExt);
|
||||||
|
if (vfs->exists(fallback))
|
||||||
|
return fallback;
|
||||||
|
}
|
||||||
|
|
||||||
return correctedPath;
|
return correctedPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -94,7 +94,8 @@ namespace mwmp
|
||||||
None = 0,
|
None = 0,
|
||||||
Drag,
|
Drag,
|
||||||
Drop,
|
Drop,
|
||||||
TakeAll
|
TakeAll,
|
||||||
|
ReplyToRequest
|
||||||
};
|
};
|
||||||
|
|
||||||
RakNet::RakNetGUID guid;
|
RakNet::RakNetGUID guid;
|
||||||
|
|
|
@ -38,11 +38,11 @@ namespace Gui
|
||||||
setCaption(MyGUI::utility::toString(mValue));
|
setCaption(MyGUI::utility::toString(mValue));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (std::invalid_argument)
|
catch (const std::invalid_argument&)
|
||||||
{
|
{
|
||||||
setCaption(MyGUI::utility::toString(mValue));
|
setCaption(MyGUI::utility::toString(mValue));
|
||||||
}
|
}
|
||||||
catch (std::out_of_range)
|
catch (const std::out_of_range&)
|
||||||
{
|
{
|
||||||
setCaption(MyGUI::utility::toString(mValue));
|
setCaption(MyGUI::utility::toString(mValue));
|
||||||
}
|
}
|
||||||
|
|
4
extern/oics/ICSInputControlSystem_mouse.cpp
vendored
4
extern/oics/ICSInputControlSystem_mouse.cpp
vendored
|
@ -268,11 +268,11 @@ namespace ICS
|
||||||
ctrl->setIgnoreAutoReverse(true);
|
ctrl->setIgnoreAutoReverse(true);
|
||||||
if(mouseBinderItem.direction == Control::INCREASE)
|
if(mouseBinderItem.direction == Control::INCREASE)
|
||||||
{
|
{
|
||||||
ctrl->setValue( float( (evt.state.Z.abs) / float(evt.state.¿width?) ) );
|
ctrl->setValue( float( (evt.state.Z.abs) / float(evt.state.¿width?) ) );
|
||||||
}
|
}
|
||||||
else if(mouseBinderItem.direction == Control::DECREASE)
|
else if(mouseBinderItem.direction == Control::DECREASE)
|
||||||
{
|
{
|
||||||
ctrl->setValue( float( (1 - evt.state.Z.abs) / float(evt.state.¿width?) ) );
|
ctrl->setValue( float( (1 - evt.state.Z.abs) / float(evt.state.¿width?) ) );
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
2
extern/oics/tinystr.cpp
vendored
2
extern/oics/tinystr.cpp
vendored
|
@ -23,7 +23,7 @@ distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* THIS FILE WAS ALTERED BY Tyge Løvset, 7. April 2005.
|
* THIS FILE WAS ALTERED BY Tyge Løvset, 7. April 2005.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue