Merge pull request #443 from OpenMW/master while resolving conflicts

# Conflicts:
#	README.md
pull/444/head
David Cernat 7 years ago
commit a28b27f5d9

@ -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
------ ------

@ -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 "")

@ -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.6.3 * TES3MP version: 0.6.3
* 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);
} }

@ -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;
} }

Loading…
Cancel
Save