https://wiki.openmw.org/api.php?action=feedcontributions&user=Hrnchamd&feedformat=atom
OpenMW Wiki - User contributions [en]
2024-03-28T22:54:19Z
User contributions
MediaWiki 1.39.3
https://wiki.openmw.org/index.php?title=Research:Magic&diff=6332
Research:Magic
2023-11-14T22:29:05Z
<p>Hrnchamd: Spell radius mechanics.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Spell Casting==<br />
<br />
<br />
====Chance of successful spell cast====<br />
{{Formula<br />
|On cast attempt, on AI spell evaluation, on UI update or in spellmaking<br />
|Uses common term [[Research:Common_Terms#fatigueTerm|fatigueTerm]].<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
if actor is silenced: return 0<br />
if <flag> and current magicka < magicka cost: return 0 # see comments<br />
if spell.castingType not (spell or power): return 100<br />
<br />
if castingType is power:<br />
check power timeout for this spell (24 hours from previous use)<br />
if power is available: return 100 else return 0<br />
<br />
if castingType is spell:<br />
if spell is flagged always succeeds: return 100<br />
<br />
y = FLOAT_MAX<br />
for each effect in spell:<br />
x = effect.duration<br />
if not effect.magicEffect.flags & UNCAPPED_DAMAGE: x = max(1, x)<br />
x *= 0.1 * effect.magicEffect.baseMagickaCost<br />
x *= 0.5 * (effect.magnitudeMin + effect.magnitudeMax)<br />
x += effect.area * 0.05 * effect.magicEffect.baseMagickaCost<br />
if effect.rangeType & CAST_TARGET: x *= 1.5<br />
x *= fEffectCostMult<br />
<br />
s = 2 * actor.skill[effect.magicEffect.school.associatedSkillId]<br />
if (s - x) < y:<br />
y = s - x<br />
effectiveSchool = effect.magicEffect.school<br />
lowestSkill = s<br />
<br />
# castBonus is the stat modified by the Sound magic effect;<br />
# it behaves in the same way as other hidden stats, that is positive for a bonus, and negative for a penalty<br />
castChance = (lowestSkill - spellCost + actor.castBonus + 0.2 * actorWillpower + 0.1 * actorLuck) * fatigueTerm<br />
if godmode is on: castChance = 100<br />
return castChance, effectiveSchool<br />
</syntaxhighlight><br />
<br />
<br />
=====Comments=====<br />
<br />
The cast chance calculation is used in multiple places, some where magicka use may not be important, so there is a <flag>, which is normally true for casting/AI use and the inventory spell list, and false for all other UI uses of spell chance. The function returns the weakest school used out of all the effects, which is the skill that will gain progress when the spell is cast. Note that spells that are marked "always succeed" do not seem to contribute to skill progress.<br />
<br />
====Cast cost====<br />
{{Formula<br />
|On cast attempt<br />
|Magicka and fatigue costs of casting. Uses common term [[Research:Common_Terms#normalizedEncumbrance|normalizedEncumbrance]].<br />
|{{StatusCol|green|Implemented, bug corrected}}<br />
|{{StatusCol|green|Verified, but fatigue cost contains a bug}}}}<br />
Casting cost is an independent variable in the spell data. For spellmaker generated spells, refer to [[Research:Trading and Services#Spell merchant|Spell merchant]].<br />
<syntaxhighlight lang="python"><br />
magicka loss = spell.magickaCost<br />
</syntaxhighlight><br />
Failed casts still incur all costs.<br />
<br />
<br />
Casting incurs a fatigue hit.<br />
<syntaxhighlight lang="python"><br />
fatigue loss = magickaCost * (fFatigueSpellBase * normalizedEncumbrance * fFatigueSpellMult)<br />
</syntaxhighlight><br />
which is how Morrowind behaves but is clearly incorrect; a fixed formula is<br />
<syntaxhighlight lang="python"><br />
fatigue loss = magickaCost * (fFatigueSpellBase + normalizedEncumbrance * fFatigueSpellMult)<br />
</syntaxhighlight><br />
<br />
The GMST fFatigueSpellCostMult is unused.<br />
<br />
====Area effect====<br />
<br />
Area effect spells hit a radius around a point. For touch spells, the point is the target mobile's position. For target spells, the point is the projectile collision point. Spell radius is converted to world units with a fixed multiplier.<br />
<syntaxhighlight lang="python"><br />
radius (world units) = 22.1 * spell.radius<br />
</syntaxhighlight><br />
<br />
===Magic resistance===<br />
<br />
====Spell application type "Magic"====<br />
{{Formula<br />
|On magic effect hit, applies separately for each effect<br />
|Uses [[Research:Magic#Effect attributes|resistance effect attributes]].<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Surrounding mechanics still need evaluating}}}}<br />
<syntaxhighlight lang="python"><br />
i = look up corresponding resistance effect attribute for effect<br />
if effect is not linked to a resistance effect attribute: effect cannot be resisted<br />
<br />
resistance = get defending actor effect attribute i<br />
castChance = attackers chance of casting spell (uncapped)<br />
<br />
x = (willpower + 0.1 * luck) * fatigueTerm<br />
if castChance > 0: x *= 50 / castChance<br />
roll float [0..100]<br />
if effect.flags & NO_MAGNITUDE: roll -= resistance<br />
<br />
if x <= roll:<br />
x = 0<br />
else:<br />
if effect.flags & NO_MAGNITUDE:<br />
x = 100<br />
else:<br />
x = roll / min(x, 100)<br />
<br />
x = min(x + resistance, 100)<br />
<br />
if x > 100: effect is fully resisted, show message, remove effect<br />
else: effect is applied with resistance x%<br />
</syntaxhighlight><br />
<br />
=====Comments=====<br />
<br />
Note that this punishes casting difficult (low cast chance) spells versus high willpower enemies. The ''castChance'' scaling will go almost guarantee resists if ''castChance'' < 25%.<br />
<br />
Has an interesting situation, where spells with magnitude _do_ take resistance from willpower but at a very low rate (0.01x due to lack of rescaling) than would be expected, making willpower resistance almost useless for that class of spells.<br />
<br />
The way resistance affects the final attribute, is that magnitude is stored untouched, resistance is stored with the active effect, and resistance is applied every time the spell has an application tick. The outward effect is that spell effect tooltips list the original magnitude, without factoring resistance.<br />
<br />
<br />
====Spell application types "Disease" or "Blight"====<br />
{{Formula<br />
|On spell hit, applies once for entire spell<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Surrounding mechanics still need evaluating}}}}<br />
<syntaxhighlight lang="python"><br />
x = actor effect attribute "Resist Disease" or "Resist Blight"<br />
roll 100, if roll <= x then fully resist the disease<br />
</syntaxhighlight><br />
<br />
==Item Charge==<br />
<br />
====Using enchanted items====<br />
{{Formula<br />
|On enchanted item use<br />
|Charge consumed on use depends on skill.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified; but a poorly scaling mechanic}}}}<br />
<syntaxhighlight lang="python"><br />
x = 0.01 * (110 - pcEnchant)<br />
charge used = int(x * enchant base charge cost)<br />
</syntaxhighlight><br />
<br />
This makes items last 10 times longer at 100 enchant compared to 10 enchant, making it scale a little too well. MCP uses x = 0.025 * (400 - pcEnchant).<br />
<br />
<br />
====Natural recharge====<br />
{{Formula<br />
|On game tick<br />
|Enchanted items may gain charge over time.<br />
|{{StatusCol|orange|Changed since last implementation}}<br />
|{{StatusCol|green|Verified}}}}<br />
When an enchanted item is cast by any actor, both on-use or on-strike, the item is placed onto a list of items that need recharging. Every item in this list charges by tickTime * fMagicItemRechargePerSecond every frame, and items are removed when they are full. This list is not saved; instead, on loading a game, all non-fully charged items stored in the savegame are placed on the recharge list.<br />
<br />
There is a bug where on-use enchanted items used by an NPC do not get placed on the recharge list after they are cast, resulting in an item that does not appear to charge until the player uses it, or on load/save.<br />
<br />
<br />
====Soulgem charging====<br />
Refer to [[Research:Player Craft Skills#Enchanting|Player Craft Skills]].<br />
<br />
==Magic effects==<br />
<br />
Spells are combinations of one or more effects, which have associated code specific to the effect, and properties which cover cast ranges, resistances and other generalized behaviours that may be shared by a small set of effects.<br />
<br />
<br />
===Effect attributes===<br />
<br />
All actors have "hidden" attributes that effects apply to, to allow effects to stack, have resistance applied and counteract each other. These attributes are saved with actors, appearing in the actor data in the same order. All effect attributes are applied and stored as integers. Resists and weaknesses are unified under the Resist- attributes, with resistances being positive and weaknesses being negative. Non-magnitude spells have an effective attribute of 1 when active.<br />
<br />
Some attributes provide resistance values vs magic effects when calculating magic mitigation. These resistances only apply in certain cases, check [[Research:Magic#Magic resistance|magic resistance]].<br />
<br />
{| class="wikitable"<br />
! Index !! Name !! Provides resistance against magic effects<br />
|-<br />
| 0 || Fortify Attack<br />
|-<br />
| 1 || Sanctuary || Disintegrate *<br />
|-<br />
| 2 || Resist Magicka || Drain *, Damage *, Absorb *, Weakness to *, Burden, Charm, Silence, Blind, Sound, Calm, Frenzy, Demoralize, Rally, Turn Undead<br />
|-<br />
| 3 || Resist Fire || Fire<br />
|-<br />
| 4 || Resist Frost || Frost<br />
|-<br />
| 5 || Resist Shock || Shock<br />
|-<br />
| 6 || Resist Common Disease || Vampirism<br />
|-<br />
| 7 || Resist Blight Disease ||<br />
|-<br />
| 8 || Resist Corprus || Corprus<br />
|-<br />
| 9 || Resist Poison || Poison<br />
|-<br />
| 10 || Resist Paralysis || Paralysis<br />
|-<br />
| 11 || Chameleon ||<br />
|-<br />
| 12 || Resist Normal Weapons ||<br />
|-<br />
| 13 || Water Breathing ||<br />
|-<br />
| 14 || Water Walking ||<br />
|-<br />
| 15 || Swift Swim ||<br />
|-<br />
| 16 || Jump ||<br />
|-<br />
| 17 || Levitate ||<br />
|-<br />
| 18 || Shield ||<br />
|-<br />
| 19 || Sound ||<br />
|-<br />
| 20 || Silence ||<br />
|-<br />
| 21 || Blind ||<br />
|-<br />
| 22 || Paralyze ||<br />
|-<br />
| 23 || Invisibility ||<br />
|-<br />
| 24 || Fight ||<br />
|-<br />
| 25 || Flee ||<br />
|-<br />
| 26 || Hello ||<br />
|-<br />
| 27 || Alarm ||<br />
|}<br />
<br />
===Effect flags===<br />
<br />
These are the properties of magic effects. Excluding flags 0x200, 0x400 and 0x800 they are all obtained from the code and are not affected by mods.<br />
<br />
{| class="wikitable"<br />
! Bit !! Enum name !! Status !! Description<br />
|-<br />
| 0x1 || TARGET_SKILL || <font color="green"> implemented </font> || Affects a specific skill, which is specified elsewhere in the effect structure.<br />
|-<br />
| 0x2 || TARGET_ATTR || <font color="green"> implemented </font> || Affects a specific attribute, which is specified elsewhere in the effect structure.<br />
|-<br />
| 0x4 || NO_DURATION || <font color="green"> implemented </font> || Has no duration. Only runs effect once on cast.<br />
|-<br />
| 0x8 || NO_MAGNITUDE || <font color="green"> implemented </font> || Has no magnitude.<br />
|-<br />
| 0x10 || HARMFUL || <font color="green"> implemented </font> || Counts as a harmful effect. Interpreted as useful effects for attack by the AI, and is treated as a bad effect in alchemy.<br />
|-<br />
| 0x20 || CONTINUOUS_VFX || <font color="green"> implemented </font> || The effect's hit particle VFX repeats for the full duration of the spell, rather than occurring once on hit.<br />
|-<br />
| 0x40 || CAST_SELF || <font color="green"> implemented </font> || Allows range - cast on self.<br />
|-<br />
| 0x80 || CAST_TOUCH || <font color="green"> implemented </font> || Allows range - cast on touch.<br />
|-<br />
| 0x100 || CAST_TARGET || <font color="green"> implemented </font> || Allows range - cast on target.<br />
|-<br />
| 0x200 || ALLOWS_SPELLMAKING || <font color="green"> implemented </font> || Allows to use this effect in spellmaking.<br />
|-<br />
| 0x400 || ALLOWS_ENCHANTING || <font color="green"> implemented </font> || Allows to use this effect in enchanting.<br />
|-<br />
| 0x800 || NEGATIVE_LIGHT || <font color="blue"> unused </font> || Use negative lighting for this effect. Unused in the original engine.<br />
|-<br />
| 0x1000 || APPLIED_ONCE || <font color="orange"> partially implemented </font> || An effect that is applied once it lands, instead of continuously (see [https://gitlab.com/OpenMW/openmw/issues/4297 feature #4297]). Allows an effect to reduce an attribute below zero; removes the normal minimum effect duration of 1 second.<br />
|-<br />
| 0x2000 || STEALTH || <font color="red"> not started </font> || Unverified. Used only by chameleon effect.<br />
|-<br />
| 0x4000 || NON_RECASTABLE || <font color="green"> implemented </font> || Does not land if parent spell is already affecting target. Shows "you cannot re-cast" message for self target.<br />
|-<br />
| 0x8000 || ILLEGAL_DAEDRA || <font color="blue"> unused </font> || Flagged on summon daedra effects. Unused in the original engine.<br />
|-<br />
| 0x10000 || UNREFLECTABLE || <font color="green"> implemented </font> || Cannot be reflected, the effect always lands normally.<br />
|-<br />
| 0x20000 || CASTER_LINKED || <font color="green"> implemented </font> || Must quench if caster is dead, or not an NPC/creature. Not allowed in containter/door trap spells.<br />
|}<br />
<br />
<br />
Flags for all effects:<br />
<br />
int effectFlags[] = {<br />
0x11c8, 0x11c0, 0x11c8, 0x11e0, 0x11e0, 0x11e0, 0x11e0, 0x11d0,<br />
0x11c0, 0x11c0, 0x11e0, 0x11c0, 0x11184, 0x11184, 0x1f0, 0x1f0,<br />
0x1f0, 0x11d2, 0x11f0, 0x11d0, 0x11d0, 0x11d1, 0x1d2, 0x1f0,<br />
0x1d0, 0x1d0, 0x1d1, 0x1f0, 0x11d0, 0x11d0, 0x11d0, 0x11d0,<br />
0x11d0, 0x11d0, 0x11d0, 0x11d0, 0x11d0, 0x1d0, 0x1d0, 0x11c8,<br />
0x31c0, 0x11c0, 0x11c0, 0x11c0, 0x1180, 0x11d8, 0x11d8, 0x11d0,<br />
0x11d0, 0x11180, 0x11180, 0x11180, 0x11180, 0x11180, 0x11180, 0x11180,<br />
0x11180, 0x11c4, 0x111b8, 0x1040, 0x104c, 0x104c, 0x104c, 0x104c,<br />
0x1040, 0x1040, 0x1040, 0x11c0, 0x11c0, 0x1cc, 0x1cc, 0x1cc,<br />
0x1cc, 0x1cc, 0x1c2, 0x1c0, 0x1c0, 0x1c0, 0x1c1, 0x11c2,<br />
0x11c0, 0x11c0, 0x11c0, 0x11c1, 0x11c0, 0x21192, 0x20190, 0x20190,<br />
0x20190, 0x21191, 0x11c0, 0x11c0, 0x11c0, 0x11c0, 0x11c0, 0x11c0,<br />
0x11c0, 0x11c0, 0x11c0, 0x11c0, 0x1c0, 0x11190, 0x9048, 0x9048,<br />
0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x9048,<br />
0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x11c0, 0x1180, 0x1180,<br />
0x5048, 0x5048, 0x5048, 0x5048, 0x5048, 0x5048, 0x1188, 0x5048,<br />
0x5048, 0x5048, 0x5048, 0x5048, 0x1048, 0x104c, 0x1048, 0x40,<br />
0x11c8, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048<br />
};<br />
<br />
==Specific magic effects==<br />
<br />
While all magic effects have programmed behaviour, there are specific ones that may have complicated side effects. Any particular information for a single effect is documented here.<br />
<br />
<br />
===Corprus===<br />
{{Formula<br />
|On application, and every 24 hours<br />
|Spell effect "Corprus"<br />
|<br />
|{{StatusCol|orange|Under research}}}}<br />
The corprus effect is closely linked to the corprus spell. Every 24 hours after the contraction of corprus, all other effects on the same spell as corprus, that also have effect flag 0x1000 (APPLIED_ONCE) are re-applied in a special case. This increases the magnitude of the effect, while correctly recording the amount applied so it can be removed later. Without other effects on the spell, corprus does nothing.<br />
<br />
On removal, the drain spells are removed normally, while another special case interdicts any removal of positive attribute effects. Instead, a fortification is converted into a restore effect of the same magnitude.<br />
<br />
<br />
===Light===<br />
Light spell magnitude is converted to the radius of a point light.<br />
<syntaxhighlight lang="python"><br />
light radius = 22 * light magnitude<br />
</syntaxhighlight><br />
<br />
<br />
<br />
===Sun Damage===<br />
{{Formula<br />
|Continuously applied, triggering the hit fader to pulse<br />
|Spell effect "Sun Damage"<br />
|<br />
|{{StatusCol|green|Verified}}}}<br />
TitleCaps variables indicate values taken from the morrowind.ini section related to that object.<br />
<br />
<syntaxhighlight lang="python"><br />
if current cell is interior only: return 0<br />
<br />
if gamehour <= Weather.SunriseTime or gamehour >= Weather.SunsetTime + Weather.SunsetDuration:<br />
sunRisen = 0<br />
elif gamehour <= Weather.SunriseTime + Weather.SunriseDuration:<br />
sunRisen = (gamehour - Weather.SunriseTime) / Weather.SunriseDuration<br />
elif gamehour > Weather.SunsetTime:<br />
sunRisen = 1 - ((gamehour - Weather.SunsetTime) / Weather.SunsetDuration)<br />
else:<br />
sunRisen = 1<br />
<br />
# transition is 0 at the start of a weather change and 1.0 at the end<br />
# note that CloudsMaximumPercent is not actually a percentage<br />
if weather is changing and transition < nextWeather.CloudsMaximumPercent:<br />
t = transition / nextWeather.CloudsMaximumPercent<br />
sunVisibility = (1-t) * currentWeather.GlareView + t * nextWeather.GlareView<br />
else:<br />
sunVisibility = currentWeather.GlareView<br />
<br />
damageScale = max(sunVisibility * sunRisen, fMagicSunBlockedMult * sunRisen)<br />
damageScale = max(0, min(damage, 1))<br />
<br />
return damageScale * spelleffect.magnitude<br />
</syntaxhighlight><br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=GMSTs_(status)&diff=6317
GMSTs (status)
2023-03-12T16:32:45Z
<p>Hrnchamd: fMagicCreatureCastDelay</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
===Notes===<br />
<br />
Removed due to implementation difference:<br />
- sKeyName_*<br />
<br />
Implemented, but unlisted:<br />
- sSkill* (skill names)<br />
- sEffect* (magic effect names)<br />
- sMagic*ID (summoned creature & bound item IDs)<br />
- fWerewolf* (implemented werewolf skill/stat/attribute values)<br />
<br />
<br />
===Legend===<br />
<br />
====Implementation====<br />
<br />
* ''Implemented'': This GMST is used by OpenMW.<br />
* ''Not started'': This GMST is not currently used by OpenMW. Note: we might not want to implement GMSTs that are not used by Morrowind, because we can not be sure there is a proper translation or proper value for this GMST in all versions of Morrowind.<br />
* ''Removed'': This GMST will not be used by OpenMW, because it was broken or not useful.<br />
<br />
====Specification====<br />
<br />
* ''Used'': This GMST is used by the original engine (''please add a link to the Research wiki page to clarify what the GMST is used for'').<br />
* ''Unused'': This GMST was never used by the original engine.<br />
* ''Reportedly missing in unpatched MW 1.0'': This GMST reportedly does not exist in unpatched versions of Morrowind's data files, so when implementing this GMST in OpenMW special care must be taken to add a reasonable default value to the code.<br />
<br />
===GMSTs===<br />
<br />
{| class="wikitable sortable" border="1"<br />
!GMST<br />
!Specification<br />
!Implementation<br />
!Default value<br />
|-<br />
| sMonthMorningstar<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Morning Star<br />
|-<br />
| sMonthSunsdawn<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Sun's Dawn<br />
|-<br />
| sMonthFirstseed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| First Seed<br />
|-<br />
| sMonthRainshand<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Rain's Hand<br />
|-<br />
| sMonthSecondseed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Second Seed<br />
|-<br />
| sMonthMidyear<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Mid Year<br />
|-<br />
| sMonthSunsheight<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Sun's Height<br />
|-<br />
| sMonthLastseed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Last Seed<br />
|-<br />
| sMonthHeartfire<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Heartfire<br />
|-<br />
| sMonthFrostfall<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Frost Fall<br />
|-<br />
| sMonthSunsdusk<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Sun's Dusk<br />
|-<br />
| sMonthEveningstar<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Evening Star<br />
|-<br />
| sSpecialization<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Specialization<br />
|-<br />
| sSpecializationCombat<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Combat<br />
|-<br />
| sSpecializationMagic<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic<br />
|-<br />
| sSpecializationStealth<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Stealth<br />
|-<br />
| sSkillClassMajor<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Major Skills<br />
|-<br />
| sSkillClassMinor<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Minor Skills<br />
|-<br />
| sSkillClassMisc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Misc Skills<br />
|-<br />
| sRacialTraits<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Racial Traits<br />
|-<br />
| sHealthPerHourOfRest<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Health per hour of rest<br />
|-<br />
| sHealthPerLevel<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Health per level<br />
|-<br />
| sGoverningAttribute<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Governing Attribute<br />
|-<br />
| sClass<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Class<br />
|-<br />
| sTraits<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Traits<br />
|-<br />
| sJournal<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Journal<br />
|-<br />
| sOK<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| OK<br />
|-<br />
| sClose<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Close<br />
|-<br />
| sPrev<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Prev<br />
|-<br />
| sNext<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Next<br />
|-<br />
| sTake<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Take<br />
|-<br />
| sWeaponTab<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Weapon<br />
|-<br />
| sApparelTab<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Apparel<br />
|-<br />
| sMagicTab<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic<br />
|-<br />
| sMiscTab<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Misc<br />
|-<br />
| sWornTab<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Worn<br />
|-<br />
| sAllTab<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| All<br />
|-<br />
| sAttack<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Attack<br />
|-<br />
| sUses<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Uses<br />
|-<br />
| sQuality<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quality<br />
|-<br />
| sCharges<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Charge:<br />
|-<br />
| sArmorRating<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Armor Rating<br />
|-<br />
| sSlash<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Slash<br />
|-<br />
| sThrust<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Thrust<br />
|-<br />
| sChop<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Chop<br />
|-<br />
| sEncumbrance<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Encumbrance<br />
|-<br />
| sCondition<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Condition<br />
|-<br />
| sWeight<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Weight<br />
|-<br />
| sValue<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Value<br />
|-<br />
| sLight<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Light<br />
|-<br />
| sMedium<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Medium<br />
|-<br />
| sHeavy<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Heavy<br />
|-<br />
| sCancel<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cancel<br />
|-<br />
| sTakeAll<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Take All<br />
|-<br />
| sUntilHealed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Until Healed<br />
|-<br />
| sRest<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Rest<br />
|-<br />
| sWait<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Wait<br />
|-<br />
| sRestIllegal<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Resting here is illegal. You'll need to find a bed.<br />
|-<br />
| sGold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Gold<br />
|-<br />
| sMove<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Move<br />
|-<br />
| sTo<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| to<br />
|-<br />
| sActorInCombat<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| This character is in combat.<br />
|-<br />
| sArmor<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Armor<br />
|-<br />
| sTopics<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Topics<br />
|-<br />
| sService<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Service<br />
|-<br />
| sPersuasion<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Persuasion<br />
|-<br />
| sBye<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Bye<br />
|-<br />
| sGoodbye<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Goodbye<br />
|-<br />
| sYes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Yes<br />
|-<br />
| sNo<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| No<br />
|-<br />
| sOn<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| On<br />
|-<br />
| sOff<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Off<br />
|-<br />
| sFull<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Full<br />
|-<br />
| sWorld<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| World<br />
|-<br />
| sExpelled<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| EXPELLED<br />
|-<br />
| sExpelledMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have been expelled from <br />
|-<br />
| sFavoriteSkills<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Favorite Skills<br />
|-<br />
| sGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Game<br />
|-<br />
| sVideo<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Video<br />
|-<br />
| sAudio<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Audio<br />
|-<br />
| sControls<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Controls<br />
|-<br />
| sPrefs<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Prefs<br />
|-<br />
| sPreferences<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Preferences<br />
|-<br />
| sNewGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| New Game<br />
|-<br />
| sExitGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Exit Game<br />
|-<br />
| sOptions<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Options Menu<br />
|-<br />
| sSaveGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Save Game<br />
|-<br />
| sLoadGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Load Game<br />
|-<br />
| sDeleteGame<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Delete Game<br />
|-<br />
| sSaveGameDenied<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot save your game right now.<br />
|-<br />
| sSaveGameFailed<br />
|<br />
| {{StatusCol|red|not started}}<br />
| An error was encountered while saving the game.<br />
|-<br />
| sSaveGameTooBig<br />
|<br />
| {{StatusCol|red|not started}}<br />
| There is not enough space to save this game. Free up at least %i blocks and try again.<br />
|-<br />
| sSaveGameNoMemory<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Unable to create Save Game. Free up 100 blocks and try again.<br />
|-<br />
| sMaximumSaveGameMessage<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|blue|removed}}<br />
| You have reached the limit of Morrowind saved games. Please delete a Morrowind saved game and try again.<br />
|-<br />
| sRender_Distance<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| View Distance<br />
|-<br />
| sNear<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Near<br />
|-<br />
| sFar<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Far<br />
|-<br />
| sGamma_Correction<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Gamma Correction<br />
|-<br />
| sLight_Gamma<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Light<br />
|-<br />
| sDark_Gamma<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Dark<br />
|-<br />
| sSeldom<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Seldom<br />
|-<br />
| sAlways<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Always<br />
|-<br />
| sWaterTerrainReflect<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Reflect Terrain<br />
|-<br />
| sWaterReflectUpdate<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Reflection Updating<br />
|-<br />
| fWaterReflectUpdateAlways<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0<br />
|-<br />
| fWaterReflectUpdateSeldom<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 10<br />
|-<br />
| sMaster<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Master<br />
|-<br />
| sVoice<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Voice<br />
|-<br />
| sEffects<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Effects<br />
|-<br />
| sFootsteps<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Footsteps<br />
|-<br />
| sMusic<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Music<br />
|-<br />
| sTransparency_Menu<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Menu Transparency<br />
|-<br />
| sMenu_Help_Delay<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Menu Help Delay<br />
|-<br />
| sAIDistance<br />
|<br />
| {{StatusCol|red|not started}}<br />
| AI Distance<br />
|-<br />
| sHigh<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| High<br />
|-<br />
| sLow<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Low<br />
|-<br />
| sDetail_Level<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Detail Level<br />
|-<br />
| sMenus<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Menus<br />
|-<br />
| sStrip<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Strip<br />
|-<br />
| sReturnToGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Return To Game<br />
|-<br />
| sForward<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Forward<br />
|-<br />
| sBack<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Back<br />
|-<br />
| sLeft<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Left<br />
|-<br />
| sRight<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Right<br />
|-<br />
| sUse<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Use<br />
|-<br />
| sActivate<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Activate<br />
|-<br />
| sReady_Weapon<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Ready Weapon<br />
|-<br />
| sReady_Magic<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Ready Magic<br />
|-<br />
| sCrouch_Sneak<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Sneak<br />
|-<br />
| sRun<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Run<br />
|-<br />
| sAlways_Run<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Always Run<br />
|-<br />
| sAuto_Run<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Auto Run<br />
|-<br />
| sJump<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Jump<br />
|-<br />
| sNextWeapon<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Next Weapon<br />
|-<br />
| sPrevWeapon<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Previous Weapon<br />
|-<br />
| sNextSpell<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Next Spell<br />
|-<br />
| sPrevSpell<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Previous Spell<br />
|-<br />
| sTogglePOVCmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Toggle POV<br />
|-<br />
| sMenu_Mode<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Menu Mode<br />
|-<br />
| sJournalCmd<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Journal<br />
|-<br />
| sRestKey<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Rest<br />
|-<br />
| sQuickMenu<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick Menu<br />
|-<br />
| sQuick1Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 1<br />
|-<br />
| sQuick2Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 2<br />
|-<br />
| sQuick3Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 3<br />
|-<br />
| sQuick4Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 4<br />
|-<br />
| sQuick5Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 5<br />
|-<br />
| sQuick6Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 6<br />
|-<br />
| sQuick7Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 7<br />
|-<br />
| sQuick8Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 8<br />
|-<br />
| sQuick9Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 9<br />
|-<br />
| sQuick10Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 10<br />
|-<br />
| sQuickSaveCmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick Save<br />
|-<br />
| sQuickLoadCmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick Load<br />
|-<br />
| sForwardXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Move Forward<br />
|-<br />
| sBackXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Move Backward<br />
|-<br />
| sSlideLeftXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Slide Left<br />
|-<br />
| sSlideRightXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Slide Right<br />
|-<br />
| sMenuModeXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Menu Mode<br />
|-<br />
| sActivateXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Activate<br />
|-<br />
| sUseXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Use<br />
|-<br />
| sReadyItemXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Ready Item<br />
|-<br />
| sReadyMagicXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Ready Magic<br />
|-<br />
| sCrouchXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Sneak<br />
|-<br />
| sRunXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Run<br />
|-<br />
| sToggleRunXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Toggle Run<br />
|-<br />
| sJumpXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Jump<br />
|-<br />
| sTogglePOVXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Toggle View<br />
|-<br />
| sMenuNextXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Next Menu<br />
|-<br />
| sMenuPrevXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Previous Menu<br />
|-<br />
| sJournalXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Journal<br />
|-<br />
| sQuick4Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick4Xbox<br />
|-<br />
| sQuick5Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick5Xbox<br />
|-<br />
| sQuick6Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick6Xbox<br />
|-<br />
| sQuick7Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick7Xbox<br />
|-<br />
| sQuick8Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick8Xbox<br />
|-<br />
| sQuick9Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick9Xbox<br />
|-<br />
| sQuick0Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick0Xbox<br />
|-<br />
| sOptionsMenuXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Options Menu<br />
|-<br />
| sSystemMenuXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| System Menu<br />
|-<br />
| sRestMenuXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Rest/Wait<br />
|-<br />
| sQuickSaveXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Quick Save<br />
|-<br />
| sQuickLoadXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Quick Load<br />
|-<br />
| sMoveUpXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Move Up<br />
|-<br />
| sMoveDownXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Move Down<br />
|-<br />
| sLookUpXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Look Up<br />
|-<br />
| sLookDownXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Look Down<br />
|-<br />
| sTurnLeftXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Turn Left<br />
|-<br />
| sTurnRightXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Turn Right<br />
|-<br />
| sNextWeaponXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Next Weapon<br />
|-<br />
| sPrevWeaponXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Previous Weapon<br />
|-<br />
| sNextSpellXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Next Spell<br />
|-<br />
| sPrevSpellXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Previous Spell<br />
|-<br />
| sDialogText1Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| PUSH<br />
|-<br />
| sDialogText2Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| TO GO BACK<br />
|-<br />
| sDialogText3Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| TO READ MORE<br />
|-<br />
| sQuick_Save<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Auto-Save when Rest<br />
|-<br />
| sShadowText<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Real-time Shadows<br />
|-<br />
| sLockSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Lock pick success!<br />
|-<br />
| sLockFail<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Lock pick failed.<br />
|-<br />
| sLockImpossible<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Lock too complex.<br />
|-<br />
| sTrapSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Trap disarmed!<br />
|-<br />
| sTrapFail<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Disarm trap failed.<br />
|-<br />
| sTrapImpossible<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Trap too complex, your chance to disarm it is zero<br />
|-<br />
| sTrapped<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Trapped<br />
|-<br />
| sLockLevel<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Lock Level<br />
|-<br />
| sKeyUsed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| used to open lock<br />
|-<br />
| sUnlocked<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Unlocked<br />
|-<br />
| fRepairMult<br />
| [[Research:Trading_and_Services#Merchant_repair|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fRepairAmountMult<br />
| [[Research:Player_Craft_Skills#Armorer|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fSpellValueMult<br />
| [[Research:Trading_and_Services#Spell_merchant|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| fSpellMakingValueMult<br />
| [[Research:Trading_and_Services#Spell_merchant|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 7<br />
|-<br />
| fEnchantmentValueMult<br />
| [[Research:Trading_and_Services#Enchanting_merchant|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1000<br />
|-<br />
| fTravelMult<br />
| [[Research:Trading_and_Services#Physical_travel|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4000<br />
|-<br />
| fTravelTimeMult<br />
| [[Research:Trading_and_Services#Physical_travel|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 16000<br />
|-<br />
| fMagesGuildTravel<br />
| [[Research:Trading_and_Services#Guild_guide|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| sBarter<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Barter<br />
|-<br />
| sRepair<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Repair<br />
|-<br />
| sSpells<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spells<br />
|-<br />
| sTraining<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Training<br />
|-<br />
| sTravel<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Travel<br />
|-<br />
| sSpellmaking<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spellmaking<br />
|-<br />
| sEnchanting<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Enchanting<br />
|-<br />
| sJoystickNotFound<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Joystick not found.<br />
|-<br />
| sJournalEntry<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your journal has been updated.<br />
|-<br />
| sDay<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Day<br />
|-<br />
| sCreate<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Create<br />
|-<br />
| sIngredients<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Ingredients<br />
|-<br />
| sApparatus<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Apparatus<br />
|-<br />
| sCreatedEffects<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Created Effects<br />
|-<br />
| sOnetypeEffectMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| This effect has already been added.<br />
|-<br />
| sName<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Name<br />
|-<br />
| sNameTitle<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Name<br />
|-<br />
| sSelect<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Select<br />
|-<br />
| sBuy<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Buy<br />
|-<br />
| sInfo<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Info<br />
|-<br />
| sMagicEffects<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic Effects<br />
|-<br />
| sOnce<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Once<br />
|-<br />
| sCostCharge<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cost/Charge<br />
|-<br />
| sCostChance<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cost/Chance<br />
|-<br />
| sAttributesMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Choose an Attribute <br />
|-<br />
| sBirthsignmenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Abilities:<br />
|-<br />
| sBirthsignmenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spells:<br />
|-<br />
| sChooseClassMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Specialization:<br />
|-<br />
| sChooseClassMenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Favorite Attributes:<br />
|-<br />
| sChooseClassMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Major Skills:<br />
|-<br />
| sChooseClassMenu4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Minor Skills:<br />
|-<br />
| sCreateClassMenuWarning<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Reselect your class?<br />
|-<br />
| sClassChoiceMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Answer his questions (Generates Class)<br />
|-<br />
| sClassChoiceMenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Give him the info (Pick from Class List)<br />
|-<br />
| sClassChoiceMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Fill out forms yourself (Create Custom Class)<br />
|-<br />
| sNotifyMessage1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can only rest on solid ground.<br />
|-<br />
| sNotifyMessage2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can't rest here enemies are nearby.<br />
|-<br />
| sNotifyMessage3<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You cannot sleep when dreaming.<br />
|-<br />
| sNotifyMessage4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Saving...<br />
|-<br />
| sNotifyMessage4XBOX<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Saving. Please don't turn off your Xbox console.<br />
|-<br />
| sNotifyMessage5<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| You must place the object you are holding into a container before exiting menus.<br />
|-<br />
| sNotifyMessage6<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Only one of each ingredient can be used to make a potion.<br />
|-<br />
| sNotifyMessage6a<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| At least two ingredients are needed to make a potion.<br />
|-<br />
| sNotifyMessage7<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Only four ingredients can be used in a potion.<br />
|-<br />
| sNotifyMessage8<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your potion failed.<br />
|-<br />
| sNotifyMessage9<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your offer is refused.<br />
|-<br />
| sNotifyMessage10<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have to name the spell before buying it.<br />
|-<br />
| sNotifyMessage11<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have to have an item to enchant.<br />
|-<br />
| sNotifyMessage12<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You don't have enough gold to buy this spell.<br />
|-<br />
| sNotifyMessage13<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Beast races cannot wear full helmets.<br />
|-<br />
| sNotifyMessage14<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Beast races cannot wear boots.<br />
|-<br />
| sNotifyMessage15<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Beast races cannot wear shoes.<br />
|-<br />
| sNotifyMessage16<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You can only wear one clothing item at a time.<br />
|-<br />
| sNotifyMessage16_a<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You can only equip one item of that type at a time.<br />
|-<br />
| sNotifyMessage17<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot train a skill above its governing attribute.<br />
|-<br />
| sNotifyMessage18<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You don't have enough gold to buy this spell.<br />
|-<br />
| sNotifyMessage19<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Only one apparatus can be placed in each slot of the alchemy menu.<br />
|-<br />
| sNotifyMessage20<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please remove the object already in the mortar and pestle slot.<br />
|-<br />
| sNotifyMessage21<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please remove the object already in the alembic slot.<br />
|-<br />
| sNotifyMessage22<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please remove the object already in the calcinator slot.<br />
|-<br />
| sNotifyMessage23<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please remove the object already in the retort slot.<br />
|-<br />
| sNotifyMessage24<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need to assign all the major and minor skill slots.<br />
|-<br />
| sNotifyMessage25<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need to pick two favorite attributes.<br />
|-<br />
| sNotifyMessage26<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need to pick a specialization.<br />
|-<br />
| sNotifyMessage27<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need to assign all the major and minor skill slots.<br />
|-<br />
| sNotifyMessage28<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can only add eight effects to a spell.<br />
|-<br />
| sNotifyMessage29<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot add more enchantment to an object then it can hold.<br />
|-<br />
| sNotifyMessage30<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have to add at least one effect to a spell.<br />
|-<br />
| sNotifyMessage31<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Items already enchanted cannot have another enchantment added.<br />
|-<br />
| sNotifyMessage32<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Only soul gems with a soul can be put in the soul gem slot.<br />
|-<br />
| sNotifyMessage33<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Only soul gems put in the soul gem slot.<br />
|-<br />
| sNotifyMessage34<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The enchantment failed and your gem is destroyed.<br />
|-<br />
| sNotifyMessage35<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Only one apparatus item can be equipped at a time.<br />
|-<br />
| sNotifyMessage36<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have to distribute all you points before exiting.<br />
|-<br />
| sNotifyMessage37<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You need to type in your name.<br />
|-<br />
| sNotifyMessage38<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Skill Increase:<br />
|-<br />
| sNotifyMessage39<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your %s skill increased to %d.<br />
|-<br />
| sNotifyMessage40<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Skill Maximum Reached.<br />
|-<br />
| sNotifyMessage41<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Your %s skill has reached the limit of your %s.<br />
|-<br />
| sNotifyMessage42<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have been released after %d day.<br />
A skill has been affected by your time in prison.<br />
|-<br />
| sNotifyMessage43<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have been released after %d days.<br />
Your skills have been affected by your time in prison.<br />
|-<br />
| sNotifyMessage44<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your %s skill decreased to %d.<br />
|-<br />
| sNotifyMessage45<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You need a Mortar and Pestle to use<br />
|-<br />
| sNotifyMessage46<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need a Alembic to use<br />
|-<br />
| sNotifyMessage47<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need a Calcinator to use<br />
|-<br />
| sNotifyMessage48<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need a Retort to use<br />
|-<br />
| sNotifyMessage49<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| That %s is mine.<br />
|-<br />
| sNotifyMessage50<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %s has no effect on you.<br />
|-<br />
| sNotifyMessage51<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The %s has been used up.<br />
|-<br />
| sNotifyMessage52<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You must have a soul gem with a soul to make an Enchanted Item<br />
|-<br />
| sNotifyMessage53<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Your menu sizes and positions have been saved for exploring mode.<br />
|-<br />
| sNotifyMessage54<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Do you want to start a new game and lose your current game?<br />
|-<br />
| sNotifyMessage55<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please reconnect the controller and press START to continue.<br />
|-<br />
| sNotifyMessage56<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| There's a problem with the disc you're using. It may be dirty or damaged. <br />
Press A to continue.<br />
|-<br />
| sNotifyMessage57<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please press START to begin.<br />
|-<br />
| sNotifyMessage58<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Your Xbox Hard Disk doesn't have enough free blocks to save games. <br />
Press A to continue without saving <br />
or B to free more blocks.<br />
|-<br />
| sNotifyMessage59<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You are over-encumbered.<br />
|-<br />
| sNotifyMessage60<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %s has been added to your inventory.<br />
|-<br />
| sNotifyMessage61<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %d %s has been added to your inventory.<br />
|-<br />
| sNotifyMessage62<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %s has been removed from your inventory.<br />
|-<br />
| sNotifyMessage63<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %d %s has been removed from your inventory.<br />
|-<br />
| sNotifyMessage64<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can't sleep in someone else's bed!<br />
|-<br />
| sNotifyMessage65<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can't save a game with no name!<br />
|-<br />
| sNotifyMessage66<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| This will reset all controls to the default settings. Do you wish to continue?<br />
|-<br />
| sNotifyMessage67<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| This will immediately change your resolution. Do you want to continue?<br />
|-<br />
| sInPrisonTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Serving time...<br />
|-<br />
| sInfoRefusal<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Info Refusal<br />
|-<br />
| sAdmireSuccess<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Admire Success<br />
|-<br />
| sAdmireFail<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Admire Fail<br />
|-<br />
| sIntimidateSuccess<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Intimidate Success<br />
|-<br />
| sIntimidateFail<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Intimidate Fail<br />
|-<br />
| sTauntSuccess<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Taunt Success<br />
|-<br />
| sTauntFail<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Taunt Fail<br />
|-<br />
| sServiceRefusal<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Service Refusal<br />
|-<br />
| sBribeSuccess<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Bribe Success<br />
|-<br />
| sBribeFail<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Bribe Fail<br />
|-<br />
| sBookSkillMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have gained knowledge from this book. <br />
|-<br />
| sLoadingMessage1<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Loading Master/Plugin Files<br />
|-<br />
| sLoadingMessage2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Loading Interior<br />
|-<br />
| sLoadingMessage3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Loading Exterior<br />
|-<br />
| sLoadingMessage4<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Initializing Data...<br />
|-<br />
| sLoadingMessage5<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Parsing Quests...<br />
|-<br />
| sLoadingMessage9<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Clearing Data...<br />
|-<br />
| sLoadingMessage14<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Loading Save Game<br />
|-<br />
| sLoadingMessage15<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Loading (%s)<br />
|-<br />
| sInvalidSaveGameMsg<br />
|<br />
| {{StatusCol|red|not started}}<br />
| This file is an invalid Save Game.<br />
|-<br />
| sInvalidSaveGameMsgXBOX<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Unable to load saved game. Press A to continue.<br />
|-<br />
| sLoadingErrorsMsg<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Errors were encountered loading from file '%s'.<br />
|-<br />
| sMissingMastersMsg<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The currently selected master files and plugins do not match the ones used by this save game. Errors may occur during load or game play.<br />
Do you wish to continue?<br />
|-<br />
| sChangedMastersMsg<br />
|<br />
| {{StatusCol|red|not started}}<br />
| The selected master files and plugins may have changed since this save game was created. Errors may occur during load or game play.<br />
Do you wish to continue?<br />
|-<br />
| sMastPlugMismatchMsg<br />
|<br />
| {{StatusCol|red|not started}}<br />
| One of the files that "%s" is dependent on has changed since the last save.<br />
This may result in errors. Saving again will clear this message<br />
but not necessarily fix any errors.<br />
<br />
|-<br />
| sGeneralMastPlugMismatchMsg<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| One or more plugins could not find the correct versions of the master files they depend on. Errors may occur during load or game play. Check the "Warnings.txt" file for more information.<br />
|-<br />
| sLoadLastSaveMsg<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The most recent Save Game is '%s'. <br />
Would you like to load it?<br />
|-<br />
| sMessage1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Do you want to Load a save game and lose your current game?<br />
|-<br />
| sMessage2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quit Morrowind?<br />
|-<br />
| sMessage3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Are you sure you want to delete this Save Game?<br />
|-<br />
| sMessage4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Are you sure you want to overwrite this Save Game?<br />
|-<br />
| sMessage5<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Do you wish to quit your current game? <br />
All unsaved progress will be lost.<br />
|-<br />
| sMessageQuestionAnswer1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your personality and past reflect a:<br />
|-<br />
| sMessageQuestionAnswer2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Accept this Class<br />
|-<br />
| sMessageQuestionAnswer3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Choose Another Class<br />
|-<br />
| sBarterDialog1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot afford this transaction.<br />
|-<br />
| sBarterDialog2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| I cannot afford this transaction.<br />
|-<br />
| sBarterDialog3<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| This is to heavy for you to carry.<br />
|-<br />
| sBarterDialog4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| I don't buy that item.<br />
|-<br />
| sBarterDialog5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Thank you, Please Come Again.<br />
|-<br />
| sBarterDialog6<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| You need to place the bartered item before existing Barter Menu!<br />
|-<br />
| sBarterDialog7<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Price<br />
|-<br />
| sBarterDialog8<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Offer<br />
|-<br />
| sBarterDialog9<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot sell summoned items!<br />
|-<br />
| sBarterDialog10<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| You cannot buy summoned items!<br />
|-<br />
| sBarterDialog11<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You need to trade items before making an offer.<br />
|-<br />
| sBarterDialog12<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot drop summoned items!<br />
|-<br />
| sInventoryMessage1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| This object is broken and cannot be equipped until fixed.<br />
|-<br />
| sInventoryMessage2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot repair items during battle.<br />
|-<br />
| sInventoryMessage3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot make potions during battle.<br />
|-<br />
| sInventoryMessage4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot read during battle.<br />
|-<br />
| sInventoryMessage5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot use soul gems during battle.<br />
|-<br />
| sContentsMessage1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot remove summoned items from their container.<br />
|-<br />
| sContentsMessage2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot place items in this container.<br />
|-<br />
| sContentsMessage3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The item will not fit.<br />
|-<br />
| sAttributeListTitle<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Attribute List<br />
|-<br />
| sConsoleTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Console<br />
|-<br />
| sCreateClassMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Class Description<br />
|-<br />
| sCreateClassMenu2<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Close the Description menu before leaving Class Creation<br />
|-<br />
| sCreateClassMenu3<br />
|<br />
| {{StatusCol|red|not started}}<br />
| The class needs a description.<br />
|-<br />
| sCreateClassMenuHelp1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You'll get +5 to all skills of your specialization. They'll also be easier to increase.<br />
|-<br />
| sCreateClassMenuHelp2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You'll get +10 to each of your favored attributes.<br />
|-<br />
| sControlsMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Reset Controls<br />
|-<br />
| sControlsMenu2<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Mouse Sensitivity<br />
|-<br />
| sControlsMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Press a key or push a button to set this command.<br />
|-<br />
| sControlsMenu4<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Vertical Sensitivity<br />
|-<br />
| sControlsMenu5<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Horizontal Sensitivity<br />
|-<br />
| sControlsMenu6<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Push a button to set this command.<br />
|-<br />
| sGameWithoutLauncherXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| The game was started without the launcher. Press START to continue.<br />
|-<br />
| sDialogMenu1<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Final Disposition: <br />
|-<br />
| sEnchantmentMenu1<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Enchantment Menu<br />
|-<br />
| sEnchantmentMenu2<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Enchantment Name<br />
|-<br />
| sEnchantmentMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Enchantment<br />
|-<br />
| sEnchantmentMenu4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Point Cost<br />
|-<br />
| sEnchantmentMenu5<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Buy<br />
|-<br />
| sEnchantmentMenu6<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Chance<br />
|-<br />
| sEnchantmentMenu7<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please remove the current soul gem before placing a different soul gem.<br />
|-<br />
| sEnchantmentMenu8<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot buy a spell that has a zero point cost.<br />
|-<br />
| sEnchantmentMenu9<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| You cannot enchant more then one item of that type at a time.<br />
|-<br />
| sEnchantmentMenu10<br />
|<br />
| {{StatusCol|red|not started}}<br />
| The cast cost cannot exceed the charge amount put into the time<br />
|-<br />
| sEnchantmentMenu11<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You must add at least one effect to an enchantment<br />
|-<br />
| sEnchantmentMenu12<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have successfully created an enchanted item<br />
|-<br />
| sEnchantmentHelp1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Slot for item to enchant. Only weapons, armor, scrolls and clothing that are not already enchanted can be enchanted.<br />
|-<br />
| sEnchantmentHelp2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Slot for the soul gem used to enchant an item. Only soul gems filled with a soul can be used. The soul amount is the total charge placed into the item.<br />
|-<br />
| sEnchantmentHelp3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The first number is the total amount the enchantment would cost to cast. The second number is the total enchantment cost that can be placed on this type of item.<br />
|-<br />
| sEnchantmentHelp4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The amount of charge points needed each time this enchantment is cast. This number is modified by your enchant skill.<br />
|-<br />
| sEnchantmentHelp5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The amount of soul in the soul gem in the soul gem slot<br />
|-<br />
| sEnchantmentHelp6<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Amount of gold to buy this enchantment<br />
|-<br />
| sEnchantmentHelp7<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Type of cast for the enchantment.<br />
|-<br />
| sEnchantmentHelp8<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Name you give the spell.<br />
|-<br />
| sEnchantmentHelp9<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic effects you know that you can add to an item<br />
|-<br />
| sEnchantmentHelp10<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Current effects on the item<br />
|-<br />
| sInputMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Enter<br />
|-<br />
| sInventoryMenu1<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| You cannot equip items being bartered.<br />
|-<br />
| sLevelUpMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have ascended to Level <br />
|-<br />
| sLevelUpMenu2<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| It's all suddenly obvious to you. You just have to concentrate. All the energy and time you've wasted is a sin, but without the experience you've gained, taking risks, taking responsibility for failure how could you have understood?<br />
|-<br />
| sLevelUpMenu3<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| x2<br />
|-<br />
| sLevelUpMenu4<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| x3<br />
|-<br />
| sLevelUpMsg<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You should rest and meditate on what you've learned.<br />
|-<br />
| sLevelUp<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Level Up<br />
|-<br />
| sRange<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Range<br />
|-<br />
| sArea<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Area<br />
|-<br />
| sMagnitude<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magnitude<br />
|-<br />
| sDuration<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Duration<br />
|-<br />
| sDrain<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Drain<br />
|-<br />
| sAbsorb<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Absorb<br />
|-<br />
| sFortify<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Fortify<br />
|-<br />
| sRestore<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Restore<br />
|-<br />
| sDamage<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Damage<br />
|-<br />
| spoint<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| pt<br />
|-<br />
| spoints<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| pts<br />
|-<br />
| spercent<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %<br />
|-<br />
| sfor<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| for<br />
|-<br />
| ssecond<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| sec<br />
|-<br />
| sseconds<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| secs<br />
|-<br />
| sin<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| in<br />
|-<br />
| sfootarea<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| ft<br />
|-<br />
| sfeet<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| ft<br />
|-<br />
| sXTimes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| x<br />
|-<br />
| sXTimesINT<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| x INT<br />
|-<br />
| sonword<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| on<br />
|-<br />
| sNone<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| None<br />
|-<br />
| sDone<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Done<br />
|-<br />
| sStartCell<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Cavern of the Incarnate<br />
|-<br />
| sStartError<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Cannot start in an empty interior cell!<br />
|-<br />
| sStartCellError<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Starting interior cell "Cavern of the Incarnate" not found!<br />
|-<br />
| sAdmire<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Admire<br />
|-<br />
| sIntimidate<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Intimidate<br />
|-<br />
| sTaunt<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Taunt<br />
|-<br />
| sBribe 10 Gold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Bribe 10 Gold<br />
|-<br />
| sBribe 100 Gold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Bribe 100 Gold<br />
|-<br />
| sBribe 1000 Gold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Bribe 1000 Gold<br />
|-<br />
| sPersuasionMenuTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Persuasion<br />
|-<br />
| sFast<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Fast<br />
|-<br />
| sSlow<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Slow<br />
|-<br />
| sBestAttack<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Always Use Best Attack<br />
|-<br />
| sSubtitles<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Subtitles<br />
|-<br />
| sMouseFlip<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Invert Y Axis<br />
|-<br />
| sCursorOff<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Crosshair<br />
|-<br />
| sEnableJoystick<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Enable Joystick<br />
|-<br />
| sXStrafe<br />
|<br />
| {{StatusCol|red|not started}}<br />
| X-Axis Movement<br />
|-<br />
| sStrafe<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Strafe<br />
|-<br />
| sTurn<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Turn<br />
|-<br />
| sMouseWheelUpShort<br />
|<br />
| {{StatusCol|red|not started}}<br />
| MWheel Up<br />
|-<br />
| sMouseWheelDownShort<br />
|<br />
| {{StatusCol|red|not started}}<br />
| MWheel Down<br />
|-<br />
| sMouse<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Mouse<br />
|-<br />
| sJoystickShort<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Joy<br />
|-<br />
| sJoystickHatShort<br />
|<br />
| {{StatusCol|red|not started}}<br />
| JHat<br />
|-<br />
| sPickUp<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Take<br />
|-<br />
| sItemName<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Item Name<br />
|-<br />
| sNoName<br />
|<br />
| {{StatusCol|red|not started}}<br />
| NO NAME GIVEN!<br />
|-<br />
| sItem<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Item<br />
|-<br />
| sRaceMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Appearance<br />
|-<br />
| sRaceMenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Change Sex<br />
|-<br />
| sRaceMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Change Face<br />
|-<br />
| sRaceMenu4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Change Hair<br />
|-<br />
| sRaceMenu5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Race<br />
|-<br />
| sRaceMenu6<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Race Description<br />
|-<br />
| sRaceMenu7<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Specials<br />
|-<br />
| sRestMenu1<br />
|<br />
| {{StatusCol|red|not started}}<br />
| How many hours?<br />
|-<br />
| sRestMenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Hours<br />
|-<br />
| sRestMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| REST<br />
|-<br />
| sRestMenu4<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You can't rest right now.<br />
|-<br />
| fRestMagicMult<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.15<br />
|-<br />
| sSaveMenu1<br />
|<br />
| {{StatusCol|red|not started}}<br />
| New Save Game<br />
|-<br />
| sServiceRepairTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Repair Service Menu<br />
|-<br />
| sServiceTravelTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Travel<br />
|-<br />
| sServiceTrainingTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Training<br />
|-<br />
| sServiceTrainingWords<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| I can teach nothing more about that skill<br />
|-<br />
| sServiceSpellsTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spells<br />
|-<br />
| sSkillsMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Choose a Skill<br />
|-<br />
| sBonusSkillTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Skill Bonus<br />
|-<br />
| sSpecializationMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Choose a Specialization<br />
|-<br />
| sSpellmakingMenuTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spellmaking<br />
|-<br />
| sSpellmakingMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spell Chance<br />
|-<br />
| sSpellmakingHelp1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Name you give the spell.<br />
|-<br />
| sSpellmakingHelp2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Amount of Magika one cast of the spell will cost<br />
|-<br />
| sSpellmakingHelp3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The chance you have to cast the spell at your current skill level<br />
|-<br />
| sSpellmakingHelp4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| How much gold the spell will cost you.<br />
|-<br />
| sSpellmakingHelp5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic effects you know that you can add to a spell<br />
|-<br />
| sSpellmakingHelp6<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Current effects on the spell<br />
|-<br />
| sKilledEssential<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| With this character's death, the thread of prophecy is severed. Restore a saved game to restore the weave of fate, or persist in the doomed world you have created.<br />
|-<br />
| sCrimeMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your crime has been reported!<br />
|-<br />
| sPotionSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You created a potion<br />
|-<br />
| sMagicItem<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic Items<br />
|-<br />
| sMagnitudeDes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The range of a spells power<br />
|-<br />
| sAreaDes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The radius the spell attempt to affect<br />
|-<br />
| sDurationDes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The length a spell lasts<br />
|-<br />
| sRangeDes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| What the spell is directed at such as yourself, a target or who you touch<br />
|-<br />
| sCrimeHelp<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The penalty you must pay for your crimes, if caught.<br />
|-<br />
| sSoulGem<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Soul<br />
|-<br />
| sCastCost<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cast Cost<br />
|-<br />
| sTravelServiceTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Select destination<br />
|-<br />
| sSpellServiceTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Select spell to buy<br />
|-<br />
| sRepairServiceTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Select item to repair<br />
|-<br />
| sTrainingServiceTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Select skill to train<br />
|-<br />
| sMortar<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Mortar<br />
|-<br />
| sCalcinator<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Calcinator<br />
|-<br />
| sAlembic<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Alembic<br />
|-<br />
| sRetort<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Retort<br />
|-<br />
| sQuestionMark<br />
|<br />
| {{StatusCol|red|not started}}<br />
| ?<br />
|-<br />
| s3dAudio<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 3D Audio<br />
|-<br />
| s3dHardware<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Hardware Accelerated<br />
|-<br />
| s3dSoftware<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Software Mode<br />
|-<br />
| sYourGold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| YOUR GOLD<br />
|-<br />
| sSellerGold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| SELLER GOLD<br />
|-<br />
| sTotalCost<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| TOTAL COST<br />
|-<br />
| sTotalSold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| TOTAL SOLD<br />
|-<br />
| sOffer<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Offer<br />
|-<br />
| sLess<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Less<br />
|-<br />
| sMore<br />
|<br />
| {{StatusCol|red|not started}}<br />
| More<br />
|-<br />
| sInventory<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Inventory<br />
|-<br />
| sBookPageOne<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| 1<br />
|-<br />
| sBookPageTwo<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| 2<br />
|-<br />
| sDisposeofCorpse<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Dispose of Corpse<br />
|-<br />
| sCaughtStealingMessage<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Hey he's stealing my stuff!<br />
|-<br />
| sUserDefinedClass<br />
|<br />
| {{StatusCol|red|not started}}<br />
| User Defined Class<br />
|-<br />
| sAsk<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Ask<br />
|-<br />
| sEnchantItems<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Items to Enchant<br />
|-<br />
| sSoulGemsWithSouls<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Soul Gems with Souls<br />
|-<br />
| sDoYouWantTo<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Do you want to <br />
|-<br />
| sRechargeEnchantment<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Recharge Enchanted Item <br />
|-<br />
| sMake Enchantment<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Make an Enchanted Item <br />
|-<br />
| sSell<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Sell<br />
|-<br />
| sEquip<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Equip<br />
|-<br />
| sDrop<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Drop<br />
|-<br />
| sContainer<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Container <br />
|-<br />
| sStats<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Stats <br />
|-<br />
| sMap<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Map <br />
|-<br />
| sCenter<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Center <br />
|-<br />
| sSaveMenuHelp01<br />
|<br />
| {{StatusCol|red|not started}}<br />
| th of<br />
|-<br />
| sSaveMenuHelp02<br />
|<br />
| {{StatusCol|red|not started}}<br />
| month<br />
|-<br />
| sSaveMenuHelp03<br />
|<br />
| {{StatusCol|red|not started}}<br />
| day<br />
|-<br />
| sSaveMenuHelp04<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| a.m.<br />
|-<br />
| sSaveMenuHelp05<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| p.m.<br />
|-<br />
| sSaveMenuHelp06<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Delete Game?<br />
|-<br />
| sBlocks<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Blocks<br />
|-<br />
| sFileSize<br />
|<br />
| {{StatusCol|red|not started}}<br />
| File Size<br />
|-<br />
| sSave<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Save<br />
|-<br />
| sDeleteSpell<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Delete Spell<br />
|-<br />
| sQuestionDeleteSpell<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Are you sure you wish to delete %s?<br />
|-<br />
| sDeleteSpellError<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot delete this item from the Magic Menu<br />
|-<br />
| sLocal<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Local<br />
|-<br />
| sLoadFailedMessage<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Your last load failed. You must load another game or start a new game.<br />
|-<br />
| sShadows<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Shadows<br />
|-<br />
| sControlerVibration<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Controller Vibration<br />
|-<br />
| sQuanityMenuMessage01<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Amount to Sell<br />
|-<br />
| sQuanityMenuMessage02<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Amount to Buy<br />
|-<br />
| sSex<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Sex<br />
|-<br />
| sHair<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Hair<br />
|-<br />
| sFace<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Face<br />
|-<br />
| sRepairFailed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your repair failed!<br />
|-<br />
| sRepairSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your repair succeeded!<br />
|-<br />
| sHeal<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Heal<br />
|-<br />
| sgp<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| gp<br />
|-<br />
| sSetValueMessage01<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| The maximum magnitude cannot be less then the minimum magnitude!<br />
|-<br />
| sDelete<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Delete<br />
|-<br />
| sVideoWarning<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Warning: Video Resolution does not allow shadows.<br />
|-<br />
| sResChangeWarning<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Desired resolution not supported by video card.<br />
|-<br />
| sShift<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Shift<br />
|-<br />
| sBackspace<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Backspace<br />
|-<br />
| sCustomClassName<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Adventurer<br />
|-<br />
| sSpace<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Space<br />
|-<br />
| sInventorySelectNoItems<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You have no items to fill this slot.<br />
|-<br />
| sInventorySelectNoSoul<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have no filled Soul Gems<br />
|-<br />
| sInventorySelectNoIngredients<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You have no ingredients<br />
|-<br />
| sDisposeCorpseFail<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can not remove this corpse<br />
|-<br />
| sQuickMenuTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick Keys<br />
|-<br />
| sQuickMenuInstruc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Click on quick key slot to add a spell, magic item or inventory item<br />
|-<br />
| sQuickMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Item to QuickKey<br />
|-<br />
| sQuickMenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Inventory Menu Item<br />
|-<br />
| sQuickMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic Menu Item<br />
|-<br />
| sQuickMenu4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Delete QuickKey Item<br />
|-<br />
| sQuickMenu5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You no longer have<br />
|-<br />
| sQuickMenu6<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Inventory Items to Quick key<br />
|-<br />
| sMagicSelectTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Select a magic to Quick key.<br />
|-<br />
| sNextRank<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Next Rank:<br />
|-<br />
| sNeedOneSkill<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Need one skill at<br />
|-<br />
| sNeedTwoSkills<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Need two skills at<br />
|-<br />
| sand<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| and<br />
|-<br />
| sOneHanded<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| One Handed<br />
|-<br />
| sTwoHanded<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Two Handed<br />
|-<br />
| sType<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Type:<br />
|-<br />
| sAt<br />
|<br />
| {{StatusCol|red|not started}}<br />
| At<br />
|-<br />
| sUnequip<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Unequip<br />
|-<br />
| sScrolldown<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Scroll Down<br />
|-<br />
| sScrollup<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Scroll Up<br />
|-<br />
| sSleepInterrupt<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your rest has been interrupted.<br />
|-<br />
| sSoultrapSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your have trapped a soul<br />
|-<br />
| sCantEquipWeapWarning<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Finish your current attack before equipping a new weapon<br />
|-<br />
| sOfferMenuTitle<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Offer Menu<br />
|-<br />
| sPowers<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Powers<br />
|-<br />
| sBreath<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Breath<br />
|-<br />
| sDifficulty<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Difficulty<br />
|-<br />
| sEasy<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Easy<br />
|-<br />
| sHard<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Hard<br />
|-<br />
| sAttributeStrength<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Strength<br />
|-<br />
| sAttributeIntelligence<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Intelligence<br />
|-<br />
| sAttributeWillpower<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Willpower<br />
|-<br />
| sAttributeAgility<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Agility<br />
|-<br />
| sAttributeSpeed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Speed<br />
|-<br />
| sAttributeEndurance<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Endurance<br />
|-<br />
| sAttributePersonality<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Personality<br />
|-<br />
| sAttributeLuck<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Luck<br />
|-<br />
| sHealth<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Health<br />
|-<br />
| sRace<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Race<br />
|-<br />
| sLevel<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Level<br />
|-<br />
| sLevels<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Levels<br />
|-<br />
| sFaction<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Faction<br />
|-<br />
| sBirthSign<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Sign<br />
|-<br />
| sBounty<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Bounty<br />
|-<br />
| sReputation<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Reputation<br />
|-<br />
| sSchool<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| School<br />
|-<br />
| sSkill<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Skill<br />
|-<br />
| sSkillProgress<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Progress towards skill increase<br />
|-<br />
| sSkillMaxReached<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Maximum proficiency has been reached.<br />
|-<br />
| sLevelProgress<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Progress towards level increase<br />
|-<br />
| sMagic<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magicka<br />
|-<br />
| sMagicMenu<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Magic<br />
|-<br />
| sFatigue<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Fatigue<br />
|-<br />
| sSkillsMenuReputationHelp<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your fame rating in the world of Morrowind.<br />
|-<br />
| sStrDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects your starting Health, how much you can carry, your maximum Fatigue, and how much damage you do in melee.<br />
|-<br />
| sIntDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Determines your maximum amount of Magicka.<br />
|-<br />
| sWilDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects your ability to resist magic, and your maximum Fatigue.<br />
|-<br />
| sAgiDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects your ability to dodge and hit targets in melee as well as your maximum Fatigue.<br />
|-<br />
| sSpdDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Determines how fast you can move.<br />
|-<br />
| sEndDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects your starting Health, your Health gain per level, and your maximum Fatigue.<br />
|-<br />
| sPerDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects your ability to deal with other characters and how much they like you.<br />
|-<br />
| sLucDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects every action you do in a small way.<br />
|-<br />
| sFatDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| How tired you are. Low fatigue makes it harder to successfully perform actions.<br />
|-<br />
| sHealthDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The amount of damage you can take before you die. Increases every time you gain a level.<br />
|-<br />
| sMagDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Used to cast spells. Magicka is naturally restored by resting.<br />
|-<br />
| fWortChanceValue<br />
| [[Research:Player_Craft_Skills#Wortcraft|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 15<br />
|-<br />
| sDefaultCellname<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Wilderness<br />
|-<br />
| fMinWalkSpeed<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| fMaxWalkSpeed<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 200<br />
|-<br />
| fMinWalkSpeedCreature<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fMaxWalkSpeedCreature<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 300<br />
|-<br />
| fEncumberedMoveEffect<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.3<br />
|-<br />
| fBaseRunMultiplier<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.75<br />
|-<br />
| fAthleticsRunBonus<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fJumpAcrobaticsBase<br />
| [[Research:Movement#On_jumping|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 128<br />
|-<br />
| fJumpAcroMultiplier<br />
| [[Research:Movement#On_jumping|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| fJumpEncumbranceBase<br />
| [[Research:Movement#On_jumping|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fJumpEncumbranceMultiplier<br />
| [[Research:Movement#On_jumping|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fJumpRunMultiplier<br />
| [[Research:Movement#On_jumping|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fJumpMoveBase<br />
| [[Research:Movement#Midair|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fJumpMoveMult<br />
| [[Research:Movement#Midair|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fSwimWalkBase<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0.5<br />
|-<br />
| fSwimRunBase<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fSwimWalkAthleticsMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0.02<br />
|-<br />
| fSwimRunAthleticsMult<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fSwimHeightScale<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.9<br />
|-<br />
| fHoldBreathTime<br />
| used; numerous use cases<br />
| {{StatusCol|green|implemented}}<br />
| 20<br />
|-<br />
| fHoldBreathEndMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0.5<br />
|-<br />
| fSuffocationDamage<br />
| used<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fMinFlySpeed<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fMaxFlySpeed<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 300<br />
|-<br />
| fStromWindSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.7<br />
|-<br />
| fStromWalkMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.25<br />
|-<br />
| fFallDamageDistanceMin<br />
| [[Research:Movement#On_landing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 400<br />
|-<br />
| fFallDistanceBase<br />
| [[Research:Movement#On_landing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFallDistanceMult<br />
| [[Research:Movement#On_landing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.07<br />
|-<br />
| fFallAcroBase<br />
| [[Research:Movement#On_landing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.25<br />
|-<br />
| fFallAcroMult<br />
| [[Research:Movement#On_landing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.01<br />
|-<br />
| iMaxActivateDist<br />
| used with all raycasts for player actions<br />
| {{StatusCol|green|implemented}}<br />
| 192<br />
|-<br />
| iMaxInfoDist<br />
| used; maximum distance for entity info popup<br />
| {{StatusCol|red|not started}}<br />
| 192<br />
|-<br />
| fVanityDelay<br />
| used; camera controller<br />
| {{StatusCol|green|implemented}}<br />
| 30<br />
|-<br />
| fMaxHeadTrackDistance<br />
| used; actor controller<br />
| {{StatusCol|green|implemented}}<br />
| 400<br />
|-<br />
| fInteriorHeadTrackMult<br />
| used; actor controller<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| iHelmWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iPauldronWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iCuirassWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 30<br />
|-<br />
| iGauntletWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iGreavesWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 15<br />
|-<br />
| iBootsWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 20<br />
|-<br />
| iShieldWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 15<br />
|-<br />
| fLightMaxMod<br />
| [[Research:Combat#Determining_armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.6<br />
|-<br />
| fMedMaxMod<br />
| [[Research:Combat#Determining_armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.9<br />
|-<br />
| fUnarmoredBase1<br />
| [[Research:Combat#Armor_rating|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fUnarmoredBase2<br />
| [[Research:Combat#Armor_rating|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.065<br />
|-<br />
| iBaseArmorSkill<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 30<br />
|-<br />
| fBlockStillBonus<br />
| unused; [[Research:Combat#Blocking_with_a_shield|resolution possible]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.25<br />
|-<br />
| fDamageStrengthBase<br />
| [[Research:Combat#Damage|unused, resolution possible]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fDamageStrengthMult<br />
| [[Research:Combat#Damage|unused, resolution possible]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fSwingBlockBase<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fSwingBlockMult<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fFatigueBase<br />
| used; used in calculating fatigueTerm<br />
| {{StatusCol|green|implemented}}<br />
| 1.25<br />
|-<br />
| fFatigueMult<br />
| used; used in calculating fatigueTerm<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fFatigueReturnBase<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2.5<br />
|-<br />
| fFatigueReturnMult<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.02<br />
|-<br />
| fEndFatigueMult<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.04<br />
|-<br />
| fFatigueAttackBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| fFatigueAttackMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fWeaponFatigueMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.25<br />
|-<br />
| fFatigueBlockBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| fFatigueBlockMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fWeaponFatigueBlockMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fFatigueRunBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fFatigueRunMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| fFatigueJumpBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fFatigueJumpMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFatigueSwimWalkBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 2.5<br />
|-<br />
| fFatigueSwimRunBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 7<br />
|-<br />
| fFatigueSwimWalkMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFatigueSwimRunMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFatigueSneakBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fFatigueSneakMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fMinHandToHandMult<br />
| [[Research:Combat#Damage|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fMaxHandToHandMult<br />
| [[Research:Combat#Damage|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fHandtoHandHealthPer<br />
| [[Research:Combat#Physical_contact|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fCombatInvisoMult<br />
| [[Research:Combat#Hit_Chance|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.2<br />
|-<br />
| fCombatKODamageMult<br />
| [[Research:Combat#Physical_contact|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fCombatCriticalStrikeMult<br />
| [[Research:Combat#Physical_contact|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| iBlockMinChance<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iBlockMaxChance<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| fLevelUpHealthEndMult<br />
| [[Research:Stats_and_Levelling#HP|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fSoulGemMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fEffectCostMult<br />
| used; numerous use cases<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fSpellPriceMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 2<br />
|-<br />
| fFatigueSpellBase<br />
| [[Research:Magic#Cast_cost|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFatigueSpellMult<br />
| [[Research:Magic#Cast_cost|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFatigueSpellCostMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|blue|removed}}<br />
| 0<br />
|-<br />
| fPotionStrengthMult<br />
| [[Research:Player_Craft_Skills#Potions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fPotionT1MagMult<br />
| [[Research:Player_Craft_Skills#Potions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fPotionT1DurMult<br />
| [[Research:Player_Craft_Skills#Potions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fPotionMinUsefulDuration<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 20<br />
|-<br />
| fPotionT4BaseStrengthMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 20<br />
|-<br />
| fPotionT4EquipStrengthMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 12<br />
|-<br />
| fIngredientMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemCostMult<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemPriceMult<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemOnceMult<br />
| unused, resolution possible<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemUsedMult<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemStrikeMult<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemConstantMult<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fEnchantmentMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fEnchantmentChanceMult<br />
| [[Research:Trading_and_Services#Enchanting_merchant|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fPCbaseMagickaMult<br />
| [[Research:Stats_and_Levelling#Magicka_multiplier|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fNPCbaseMagickaMult<br />
| [[Research:Stats_and_Levelling#Magicka_multiplier|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| fAutoSpellChance<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 80<br />
|-<br />
| fAutoPCSpellChance<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| iAutoSpellTimesCanCast<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| iAutoSpellAttSkillMin<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 70<br />
|-<br />
| iAutoSpellAlterationMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iAutoSpellConjurationMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iAutoSpellDestructionMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iAutoSpellIllusionMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iAutoSpellMysticismMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iAutoSpellRestorationMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iAutoPCSpellMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| iAutoRepFacMod<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Stats|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iAutoRepLevMod<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Stats|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| iMagicItemChargeOnce<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| iMagicItemChargeConst<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 10<br />
|-<br />
| iMagicItemChargeUse<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 5<br />
|-<br />
| iMagicItemChargeStrike<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 10<br />
|-<br />
| iMonthsToRespawn<br />
| [[Research:World#Container_respawning|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| fCorpseClearDelay<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 72<br />
|-<br />
| fCorpseRespawnDelay<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 72<br />
|-<br />
| fBarterGoldResetDelay<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 24<br />
|-<br />
| fEncumbranceStrMult<br />
| [[Research:Stats_and_Levelling#Encumbrance|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fPickLockMult<br />
| [[Research:Security_and_Crime#Security|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -1<br />
|-<br />
| fTrapCostMult<br />
| [[Research:Security_and_Crime#Security|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fMessageTimePerChar<br />
| used; pop-up message UI<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fMagicItemRechargePerSecond<br />
| [[Research:Magic#Natural_recharge|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.05<br />
|-<br />
| i1stPersonSneakDelta<br />
| used; camera height difference while sneaking<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iBarterSuccessDisposition<br />
| [[Research:Trading_and_Services#Bartering|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iBarterFailDisposition<br />
| [[Research:Trading_and_Services#Bartering|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -1<br />
|-<br />
| iLevelupTotal<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iLevelupMajorMult<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iLevelupMinorMult<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iLevelupMajorMultAttribute<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iLevelupMinorMultAttribute<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iLevelupMiscMultAttriubte<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iLevelupSpecialization<br />
| {{StatusCol|orange|used; may not have any gameplay effect}}<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iLevelUp01Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iLevelUp02Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iLevelUp03Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iLevelUp04Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iLevelUp05Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| iLevelUp06Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| iLevelUp07Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| iLevelUp08Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| iLevelUp09Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| iLevelUp10Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iSoulAmountForConstantEffect<br />
| {{StatusCol|orange|used, un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 400<br />
|-<br />
| fConstantEffectMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 15<br />
|-<br />
| fEnchantmentConstantDurationMult<br />
| [[Research:Trading_and_Services#Enchanting_merchant|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| fEnchantmentConstantChanceMult<br />
| [[Research:Player_Craft_Skills#Self-enchanting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fWeaponDamageMult<br />
| [[Research:Combat#Weapon_wear|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fSeriousWoundMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0<br />
|-<br />
| fKnockDownMult<br />
| [[Research:Combat#Knockdowns|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| iKnockDownOddsBase<br />
| [[Research:Combat#Knockdowns|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| iKnockDownOddsMult<br />
| [[Research:Combat#Knockdowns|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| fCombatArmorMinMult<br />
| [[Research:Combat#Armor_mitigation|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.25<br />
|-<br />
| fHandToHandReach<br />
| used; combat system<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fVoiceIdleOdds<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iVoiceAttackOdds<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 10<br />
|-<br />
| iVoiceHitOdds<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 30<br />
|-<br />
| fProjectileMinSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 400<br />
|-<br />
| fProjectileMaxSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 3000<br />
|-<br />
| fThrownWeaponMinSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 300<br />
|-<br />
| fThrownWeaponMaxSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 1000<br />
|-<br />
| fTargetSpellMaxSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 1000<br />
|-<br />
| fProjectileThrownStoreChance<br />
| used; % chance of recovery<br />
| {{StatusCol|green|Implemented}}<br />
| 25<br />
|-<br />
| iPickMinChance<br />
| [[Research:Security_and_Crime#Pickpocketing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iPickMaxChance<br />
| [[Research:Security_and_Crime#Pickpocketing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 75<br />
|-<br />
| fDispRaceMod<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fDispPersonalityMult<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fDispPersonalityBase<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| fDispFactionMod<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fDispFactionRankBase<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fDispFactionRankMult<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fDispCrimeMod<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fDispDiseaseMod<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -10<br />
|-<br />
| iDispAttackMod<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -50<br />
|-<br />
| fDispWeaponDrawn<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -5<br />
|-<br />
| fDispBargainSuccessMod<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fDispBargainFailMod<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| -1<br />
|-<br />
| fDispPickPocketMod<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -25<br />
|-<br />
| iDaysinPrisonMod<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| fDispAttacking<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -10<br />
|-<br />
| fDispStealing<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -0.5<br />
|-<br />
| iDispTresspass<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -20<br />
|-<br />
| iDispKilling<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|Implemented}}<br />
| -50<br />
|-<br />
| iTrainingMod<br />
| [[Research:Trading_and_Services#Trainers|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iAlchemyMod<br />
| [[Research:Player_Craft_Skills#Potions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| fBargainOfferBase<br />
| [[Research:Trading_and_Services#Bartering|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| fBargainOfferMulti<br />
| [[Research:Trading_and_Services#Bartering|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -4<br />
|-<br />
| fDispositionMod<br />
| [[Research:Trading_and_Services#Bartering|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fPersonalityMod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fLuckMod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| fReputationMod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fLevelMod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fBribe10Mod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 35<br />
|-<br />
| fBribe100Mod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 75<br />
|-<br />
| fBribe1000Mod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 150<br />
|-<br />
| fPerDieRollMult<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.3<br />
|-<br />
| fPerTempMult<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iPerMinChance<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iPerMinChange<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| fSpecialSkillBonus<br />
| [[Research:Stats_and_Levelling#Skill_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.8<br />
|-<br />
| fMajorSkillBonus<br />
| [[Research:Stats_and_Levelling#Skill_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.75<br />
|-<br />
| fMinorSkillBonus<br />
| [[Research:Stats_and_Levelling#Skill_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fMiscSkillBonus<br />
| [[Research:Stats_and_Levelling#Skill_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.25<br />
|-<br />
| iAlarmKilling<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 90<br />
|-<br />
| iAlarmAttack<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 50<br />
|-<br />
| iAlarmStealing<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| iAlarmPickPocket<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 20<br />
|-<br />
| iAlarmTresspass<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 5<br />
|-<br />
| fAlarmRadius<br />
| used; AI controller<br />
| {{StatusCol|green|implemented}}<br />
| 2000<br />
|-<br />
| iCrimeKilling<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1000<br />
|-<br />
| iCrimeAttack<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 40<br />
|-<br />
| fCrimeStealing<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iCrimePickPocket<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 25<br />
|-<br />
| iCrimeTresspass<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iCrimeThreshold<br />
| [[Research:Security_and_Crime#Guard_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1000<br />
|-<br />
| iCrimeThresholdMultiplier<br />
| [[Research:Security_and_Crime#Guard_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| fCrimeGoldDiscountMult<br />
| [[Research:Security_and_Crime#Thieves_Guild_reductions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fCrimeGoldTurnInMult<br />
| [[Research:Security_and_Crime#Thieves_Guild_reductions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.9<br />
|-<br />
| iFightAttack<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| iFightAttacking<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| iFightDistanceBase<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 20<br />
|-<br />
| fFightDistanceMultiplier<br />
| [[Research:NPC_AI_Behaviour#Decision_scan|use 1]], [[Research:Security_and_Crime#NPC_reactions|use 2]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.005<br />
|-<br />
| iFightAlarmMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fFightDispMult<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.2<br />
|-<br />
| fFightStealing<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| iFightPickpocket<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 25<br />
|-<br />
| iFightTrespass<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 25<br />
|-<br />
| iFightKilling<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| iFlee<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0<br />
|-<br />
| iGreetDistanceMultiplier<br />
| [[Research:NPC_AI_Behaviour#General_behaviour|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 6<br />
|-<br />
| iGreetDuration<br />
| used; AI dialog system<br />
| {{StatusCol|red|not started}}<br />
| 4<br />
|-<br />
| fGreetDistanceReset<br />
| used; NPC controller<br />
| {{StatusCol|red|not started}}<br />
| 512<br />
|-<br />
| fIdleChanceMultiplier<br />
| used; multiplies AIWander idle parameters<br />
| {{StatusCol|green|implemented}}<br />
| 0.75<br />
|-<br />
| fSneakUseDist<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 500<br />
|-<br />
| fSneakUseDelay<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fSneakDistanceBase<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fSneakDistanceMultiplier<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.002<br />
|-<br />
| fSneakSpeedMultiplier<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.75<br />
|-<br />
| fSneakViewMult<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fSneakNoViewMult<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fSneakSkillMult<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fSneakBootMult<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -1<br />
|-<br />
| fCombatDistance<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 128<br />
|-<br />
| fCombatAngleXY<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 60<br />
|-<br />
| fCombatAngleZ<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 60<br />
|-<br />
| fCombatForceSideAngle<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 30<br />
|-<br />
| fCombatTorsoSideAngle<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 45<br />
|-<br />
| fCombatTorsoStartPercent<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0.3<br />
|-<br />
| fCombatTorsoStopPercent<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0.8<br />
|-<br />
| fCombatBlockLeftAngle<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -90<br />
|-<br />
| fCombatBlockRightAngle<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 30<br />
|-<br />
| fCombatDelayCreature<br />
| [[Research:NPC_AI_Behaviour#Attack_frequency|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fCombatDelayNPC<br />
| [[Research:NPC_AI_Behaviour#Attack_frequency|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| sTargetCriticalStrike<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Critical Damage!<br />
|-<br />
| fAIMeleeWeaponMult<br />
| used<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| fAIRangeMeleeWeaponMult<br />
| used<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fAIMagicSpellMult<br />
| used<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fAIRangeMagicSpellMult<br />
| used<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fAIMeleeArmorMult<br />
| used<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fAIMeleeSummWeaponMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fAIFleeHealthMult<br />
| used<br />
| {{StatusCol|green|implemented}}<br />
| 7<br />
|-<br />
| fAIFleeFleeMult<br />
| used<br />
| {{StatusCol|green|implemented}}<br />
| 0.3<br />
|-<br />
| fPickPocketMod<br />
| [[Research:Security_and_Crime#Pickpocketing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.3<br />
|-<br />
| fSleepRandMod<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.25<br />
|-<br />
| fSleepRestMod<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.3<br />
|-<br />
| iNumberCreatures<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fAudioDefaultMinDistance<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fAudioDefaultMaxDistance<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 40<br />
|-<br />
| fAudioVoiceDefaultMinDistance<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| fAudioVoiceDefaultMaxDistance<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 60<br />
|-<br />
| fAudioMinDistanceMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 20<br />
|-<br />
| fAudioMaxDistanceMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| fNPCHealthBarTime<br />
| used; target health UI. reportedly missing in unpatched Morrowind 1.0<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fNPCHealthBarFade<br />
| used; target health UI. reportedly missing in unpatched Morrowind 1.0<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fDifficultyMult<br />
| [[Research:Combat#Difficulty_multiplier|used]]. reportedly missing in unpatched Morrowind 1.0<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| sSchoolAlteration<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Alteration<br />
|-<br />
| sSchoolConjuration<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Conjuration<br />
|-<br />
| sSchoolDestruction<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Destruction<br />
|-<br />
| sSchoolIllusion<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Illusion<br />
|-<br />
| sSchoolMysticism<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Mysticism<br />
|-<br />
| sSchoolRestoration<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Restoration<br />
|-<br />
| sTypeSpell<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Spells<br />
|-<br />
| sTypeAbility<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Abilities<br />
|-<br />
| sTypeBlightDisease<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Blight Disease<br />
|-<br />
| sTypeDisease<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Disease<br />
|-<br />
| sTypeCurse<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Curse<br />
|-<br />
| sTypePower<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Powers<br />
|-<br />
| sItemCastOnce<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cast Once<br />
|-<br />
| sItemCastWhenStrikes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cast When Strikes<br />
|-<br />
| sItemCastWhenUsed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cast When Used<br />
|-<br />
| sItemCastConstant<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Constant Effect<br />
|-<br />
| sRangeSelf<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Self<br />
|-<br />
| sRangeTouch<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Touch<br />
|-<br />
| sRangeTarget<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Target<br />
|-<br />
| sMagicSkillFail<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You failed casting the spell.<br />
|-<br />
| sMagicInsufficientSP<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You do not have enough Magicka to cast the spell.<br />
|-<br />
| sMagicInsufficientCharge<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Item does not have enough charge.<br />
|-<br />
| sPowerAlreadyUsed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You already used that power today.<br />
|-<br />
| sMagicInvalidTarget<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your spell did not get a target.<br />
|-<br />
| sMagicLockSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your spell has locked its target.<br />
|-<br />
| sMagicOpenSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your spell has unlocked its target.<br />
|-<br />
| sMagicTargetResistsWeapons<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your weapon has no effect.<br />
|-<br />
| sMagicContractDisease<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have contracted %s<br />
|-<br />
| fMagicDetectRefreshRate<br />
| used; detect spells<br />
| {{StatusCol|red|not started}}<br />
| 0.016667<br />
|-<br />
| fMagicStartIconBlink<br />
| used; spell effect UI elements<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fMagicCreatureCastDelay<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 1.5<br />
|-<br />
| fDiseaseXferChance<br />
| [[Research:Combat#Disease_transfer|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2.5<br />
|-<br />
| fElementalShieldMult<br />
| [[Research:Combat#Hit_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| sMagicCorprusWorsens<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your case of Corprus has worsened.<br />
|-<br />
| sMagicCannotRecast<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot re-cast this spell while it is still in effect.<br />
|-<br />
| fMagicSunBlockedMult<br />
| [[Research:Magic#Sun_Damage|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| sMagicPCResisted<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You resisted magic.<br />
|-<br />
| sMagicTargetResisted<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Target resisted magic.<br />
|-<br />
| sMagicInvalidEffect<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot cast this effect right now.<br />
|-<br />
| sAcrobat<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Acrobat<br />
|-<br />
| sAgent<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Agent<br />
|-<br />
| sArcher<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Archer<br />
|-<br />
| sAssassin<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Assassin<br />
|-<br />
| sBarbarian<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Barbarian<br />
|-<br />
| sBard<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Bard<br />
|-<br />
| sBattlemage<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Battlemage<br />
|-<br />
| sCrusader<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Crusader<br />
|-<br />
| sCustom<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Custom<br />
|-<br />
| sHealer<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Healer<br />
|-<br />
| sKnight<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Knight<br />
|-<br />
| sMage<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Mage<br />
|-<br />
| sMonk<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Monk<br />
|-<br />
| sNightblade<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Nightblade<br />
|-<br />
| sPilgrim<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Pilgrim<br />
|-<br />
| sRogue<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Rogue<br />
|-<br />
| sScout<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Scout<br />
|-<br />
| sSorceror<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Sorcerer<br />
|-<br />
| sSpellsword<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Spellsword<br />
|-<br />
| sThief<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Thief<br />
|-<br />
| sWarrior<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Warrior<br />
|-<br />
| sWitchhunter<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Witchhunter<br />
|-<br />
| fFleeDistance<br />
| used; AI controller. reportedly missing in unpatched Morrowind 1.0<br />
| {{StatusCol|green|implemented}}<br />
| 3000<br />
|-<br />
| fCombatDistanceWerewolfMod<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.3<br />
|-<br />
| iWereWolfBounty<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10000<br />
|-<br />
| fWereWolfSilverWeaponDamageMult<br />
| [[Research:Combat#Physical_contact|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fWereWolfRunMult<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| sProfitValue<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Profit:<br />
|-<br />
| sCompanionShare<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Share<br />
|-<br />
| sCompanionWarningMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your mercenary is poorer now than when he contracted with you. Your mercenary will quit if you do not give him gold or goods to bring his Profit to a positive value.<br />
|-<br />
| sCompanionWarningButtonOne<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Let the mercenary quit.<br />
|-<br />
| sCompanionWarningButtonTwo<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Return to Companion Share display.<br />
|-<br />
| sDeleteNote<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Delete Note?<br />
|-<br />
| sEditNote<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Edit Note<br />
|-<br />
| sWerewolfRefusal<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot do this as a werewolf.<br />
|-<br />
| sWerewolfPopup<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Werewolf<br />
|-<br />
| sWerewolfRestMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot rest in werewolf form.<br />
|-<br />
| sWerewolfAlarmMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have been detected changing from a werewolf state.<br />
|-<br />
| sTeleportDisabled<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Teleportation magic does not work here.<br />
|-<br />
| sLevitateDisabled<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Levitation magic does not work here.<br />
|-<br />
| iWereWolfLevelToAttack<br />
| {{StatusCol|orange|used, un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 20<br />
|-<br />
| iWereWolfFightMod<br />
| [[Research:NPC_AI_Behaviour#General_behaviour|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| iWereWolfFleeMod<br />
| {{StatusCol|orange|used, un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|}<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Rendering&diff=5418
Research:Rendering
2021-05-25T22:15:35Z
<p>Hrnchamd: /* Spell effect VFX */</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Spell effect VFX==<br />
<syntaxhighlight lang="python"><br />
Parameters: Reference reference, float sourceScale<br />
<br />
sourceScale is normally 1.0, except:<br />
Physical projectile hits use 0.5<br />
Area spell effects use 2 * spell area radius<br />
<br />
</syntaxhighlight><br />
<syntaxhighlight lang="python"><br />
<br />
entity = reference.baseEntity <br />
<br />
if entity is an NPC:<br />
offset_z = 0<br />
vfxScale = reference.scale * entity.height<br />
else:<br />
if actor scenegraph root node has a NIF box bounding volume:<br />
# Morrowind Bug: Note that the extents aren't multiplied by 2 to get the full dimensions.<br />
# This affects all other calculations and is probably unwanted.<br />
box_dimensions = sceneNode.boxBV.extents<br />
else:<br />
# entity.bounds are from the "Bounding Box" named node.<br />
box_dimensions = entity.bounds.box.max - entity.bounds.box.min<br />
<br />
scaleFactor_xy = max(box_dimensions.x, box_dimensions.y) / 64.0<br />
scaleFactor_z = box_dimensions.z / 128.0<br />
scaleFactor = reference.scale * max(factor_xy, factor_z)<br />
<br />
offset_z = 0<br />
if box_dimensions.z >= 128.0:<br />
if box_dimensions.z < (box_dimensions.x + box_dimensions.y):<br />
offset_z = 128.0 - box_dimensions.z<br />
else:<br />
offset_z = box_dimensions.z - 128.0<br />
<br />
if entity is a flying actor:<br />
offset_z = offset_z * 0.05<br />
<br />
offset_z = offset_z * scaleFactor<br />
vfxScale = scaleFactor<br />
<br />
vfxScale = max(1.0, sourceScale * finalScale)<br />
<br />
Attaches visual effect with local scale vfxScale. It is positioned at entity centre + (0, 0, offset_z).<br />
<br />
</syntaxhighlight><br />
This is preliminary research, please verify it matches standard Morrowind.</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Rendering&diff=5417
Research:Rendering
2021-05-24T11:21:28Z
<p>Hrnchamd: Clarify how output variables are used.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Spell effect VFX==<br />
<syntaxhighlight lang="python"><br />
Parameters: Reference reference, float sourceScale<br />
<br />
sourceScale is normally 1.0, except:<br />
Physical projectile hits use 0.5<br />
Area spell effects use 2 * spell area radius<br />
<br />
</syntaxhighlight><br />
<syntaxhighlight lang="python"><br />
<br />
entity = reference.baseEntity <br />
<br />
if entity is an NPC:<br />
offset_z = 0<br />
vfxScale = reference.scale * entity.height<br />
else:<br />
# entity.bounds are from the "Bounding Box" named node.<br />
box_dimensions = entity.bounds.box.max - entity.bounds.box.min<br />
<br />
scaleFactor_xy = max(box_dimensions.x, box_dimensions.y) / 64.0<br />
scaleFactor_z = box_dimensions.z / 128.0<br />
scaleFactor = reference.scale * max(factor_xy, factor_z)<br />
<br />
offset_z = 0<br />
if box_dimensions.z >= 128.0:<br />
if box_dimensions.z < (box_dimensions.x + box_dimensions.y):<br />
offset_z = 128.0 - box_dimensions.z<br />
else:<br />
offset_z = box_dimensions.z - 128.0<br />
<br />
if entity is a flying actor:<br />
offset_z = offset_z * 0.05<br />
<br />
offset_z = offset_z * scaleFactor<br />
vfxScale = scaleFactor<br />
<br />
vfxScale = max(1.0, sourceScale * finalScale)<br />
<br />
Attaches visual effect with local scale vfxScale. It is positioned at entity centre + (0, 0, offset_z).<br />
<br />
</syntaxhighlight><br />
This is preliminary research, please verify it matches standard Morrowind.</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Rendering&diff=5416
Research:Rendering
2021-05-23T16:35:13Z
<p>Hrnchamd: </p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Spell effect VFX==<br />
<syntaxhighlight lang="python"><br />
Parameters: Reference reference, float sourceScale<br />
<br />
sourceScale is normally 1.0, except:<br />
Physical projectile hits use 0.5<br />
Area spell effects use 2 * spell area radius<br />
<br />
</syntaxhighlight><br />
<syntaxhighlight lang="python"><br />
<br />
entity = reference.baseEntity <br />
<br />
if entity is an NPC:<br />
offset_z = 0<br />
vfxScale = reference.scale * entity.height<br />
else:<br />
# entity.bounds are from the "Bounding Box" named node.<br />
box_dimensions = entity.bounds.box.max - entity.bounds.box.min<br />
<br />
scaleFactor_xy = max(box_dimensions.x, box_dimensions.y) / 64.0<br />
scaleFactor_z = box_dimensions.z / 128.0<br />
scaleFactor = reference.scale * max(factor_xy, factor_z)<br />
<br />
offset_z = 0<br />
if box_dimensions.z >= 128.0:<br />
if box_dimensions.z < (box_dimensions.x + box_dimensions.y):<br />
offset_z = 128.0 - box_dimensions.z<br />
else:<br />
offset_z = box_dimensions.z - 128.0<br />
<br />
if entity is a flying actor:<br />
offset_z = offset_z * 0.05<br />
<br />
offset_z = offset_z * scaleFactor<br />
vfxScale = scaleFactor<br />
<br />
vfxScale = max(1.0, sourceScale * finalScale)<br />
<br />
Attaches visual effect at entity centre + (0, 0, offset_z), scale vfxScale.<br />
<br />
</syntaxhighlight><br />
This is preliminary research, please verify it matches standard Morrowind.</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Rendering&diff=5415
Research:Rendering
2021-05-23T16:32:42Z
<p>Hrnchamd: Add Spell effect VFX.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Spell effect VFX==<br />
<syntaxhighlight lang="python"><br />
Parameters: entity, sourceScale<br />
<br />
sourceScale is normally 1.0, except:<br />
Physical projectile hits use 0.5<br />
Area spell effects use 2 * spell area radius<br />
<br />
</syntaxhighlight><br />
<syntaxhighlight lang="python"><br />
<br />
if entity is an NPC:<br />
offset_z = 0<br />
vfxScale = entity.scale * entity.height<br />
else:<br />
# entity.bounds are from the "Bounding Box" named node.<br />
box_dimensions = entity.bounds.box.max - entity.bounds.box.min<br />
<br />
scaleFactor_xy = max(box_dimensions.x, box_dimensions.y) / 64.0<br />
scaleFactor_z = box_dimensions.z / 128.0<br />
scaleFactor = entity.scale * max(factor_xy, factor_z)<br />
<br />
offset_z = 0<br />
if box_dimensions.z >= 128.0:<br />
if box_dimensions.z < (box_dimensions.x + box_dimensions.y):<br />
offset_z = 128.0 - box_dimensions.z<br />
else:<br />
offset_z = box_dimensions.z - 128.0<br />
<br />
if entity is a flying actor:<br />
offset_z = offset_z * 0.05<br />
<br />
offset_z = offset_z * scaleFactor<br />
vfxScale = scaleFactor<br />
<br />
vfxScale = max(1.0, sourceScale * finalScale)<br />
<br />
Attaches visual effect at entity centre + (0, 0, offset_z), scale vfxScale.<br />
<br />
</syntaxhighlight><br />
This is preliminary research, please verify it matches standard Morrowind.</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research&diff=5414
Research
2021-05-23T15:41:00Z
<p>Hrnchamd: Add rendering section link.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
Morrowind's game mechanics in full detail and coverage.<br />
<br />
<br />
==Conventions==<br />
<br />
====Variables====<br />
* All attribute accesses are the modified (fortified/drained) value by default. Base attribute access is indicated by attributes starting with ''base''.<br />
* Attributes may be prefixed with ''pc'' or ''npc'' to indicate the owner of the attribute when opposing actors are involved.<br />
<br />
====Calculation====<br />
* All numeric operations occur in floating point unless indicated.<br />
* int(x) truncates.<br />
* round(x) uses the default FPU rounding mode. [IEEE 754 round-half-towards-even]<br />
* roll(n) returns an integer from 0 up to but not including n.<br />
<br />
<br />
==Categories==<br />
<br />
[[Research:Common Terms|Common Terms]]<br />
<br />
[[Research:Movement|Movement]]<br />
<br />
[[Research:Combat|Combat]]<br />
<br />
[[Research:Magic|Magic]]<br />
<br />
[[Research:NPC AI Behaviour|NPC AI Behaviour]]<br />
<br />
[[Research:Trading and Services|Trading and Services]]<br />
<br />
[[Research:Disposition and Persuasion|Disposition and Persuasion]]<br />
<br />
[[Research:Player Craft Skills|Player Craft Skills]]<br />
<br />
[[Research:Security and Crime|Security and Crime]]<br />
<br />
[[Research:Stats and Levelling|Stats and Levelling]]<br />
<br />
[[Research:Dialogue and Messages|Dialogue and Messages]]<br />
<br />
[[Research:Scripting|Scripting]]<br />
<br />
[[Research:Weather|Weather]]<br />
<br />
[[Research:World|World]]<br />
<br />
[[GMSTs_(status)|Game Settings]]<br />
<br />
[[Research:Rendering|Rendering]]<br />
<br />
<br />
==Contributing==<br />
<br />
Please submit only primary research, or sourced research that you have independently verified.<br />
<br />
==To-do list==<br />
<br />
[[Research:todo]]<br />
<br />
==Sources==<br />
<br />
* [http://forums.bethsoft.com/index.php?/topic/1097214-gameplay-mechanics-analysis/ bethsoft forum thread]<br />
* [http://www.uesp.net/wiki/Morrowind:Combat UESP Wiki: Combat section]</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:NPC_AI_Behaviour&diff=5103
Research:NPC AI Behaviour
2019-05-24T12:04:53Z
<p>Hrnchamd: Shielding face from storm added</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==General behaviour==<br />
<br />
===Decision scan===<br />
{{Formula<br />
|AI decision check, every 5.0 seconds<br />
|The main point for actor behaviour selection<br />
|<br />
|{{StatusCol|orange|Early, incomplete research}}}}<br />
====Weight functions====<br />
<syntaxhighlight lang="python"><br />
actionGreetWeighting :: (npc, actor) -> weight<br />
if npc is creature: return 0<br />
if actor is not player: return 0<br />
if player is incapacitated: return 0<br />
if player is invisible or player.chameleon >= 75: return 0<br />
if npc.hello == 0: return 0<br />
if npc.currentAIPackage not in { AIWander, AITravel, AIPursue }: return 0<br />
<br />
x = iGreetDistanceMultiplier * npc.hello<br />
dist = distance(npc, actor)<br />
if npc has already greeted and dist > 2 * x:<br />
npc resets greeting flag<br />
npc.target = none<br />
elif npc has not greeted and dist < x:<br />
npc.target = actor<br />
return 100<br />
else:<br />
return 0<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="python"><br />
actionCrimeWeighting :: (npc, actor) -> weight<br />
if npc is creature: return 0<br />
if npc is incapacitated: return 0<br />
if npc.alarm == 0: return 0<br />
if not npc.isGuard: return 0<br />
if actor is not player: return 0<br />
if player is incapacitated: return 0<br />
if player is invisible or player.chameleon >= 75: return 0<br />
if player is resisting arrest: return 0<br />
if bounty < iCrimeThreshold: return 0<br />
<br />
weight = npc.alarm + 0.1 * bounty<br />
if weight < 100: return 0<br />
return weight<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="python"><br />
actionFightWeighting :: (npc, actor) -> weight<br />
if actor is in combat with an npc escort: return 100<br />
if actor is in combat with an actor escorted by npc: return 100<br />
<br />
fightTerm = npc.fight<br />
if actor.isWerewolf or (actor is player and player.isKnownWerewolf): fightTerm += iWerewolfFightMod<br />
dist = distanceAttack(npc, actor) # dist function that ignores vertical distance if actor is flying or swimming<br />
<br />
weight = iFightDistanceBase - fFightDistanceMultiplier * distance + fFightDispMult * (50 - disp)<br />
if weight < 100: return 0<br />
return weight<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="python"><br />
actionLookAtWeighting :: (npc, actor) -> weight<br />
if actor is incapacitated: return 0<br />
if actor is invisible or player.chameleon >= 75: return 0<br />
if npc current AI package prevents proximity check: return 0 # unclear conditions<br />
if distance(npc, actor) >= 640: return 0<br />
if actor is an npc escort: return 0<br />
if actor is being escorted by npc: return 0<br />
return 100<br />
</syntaxhighlight><br />
<br />
====Actor scan====<br />
For a single actor, labelled ''npc''<br />
<syntaxhighlight lang="python"><br />
actionWeight = 0<br />
selectedAction = none<br />
<br />
for each actor in environment: # player is examined first<br />
if actor is dead: continue<br />
if distance(npc, actor) > 7168: continue<br />
# 5-10 more conditions<br />
<br />
greetWeight = 0<br />
crimeWeight = 0<br />
if actor is player:<br />
if npc meets condition x: # under research<br />
greetWeight = actionGreetWeighting(npc, actor)<br />
if npc meets condition y: # under research<br />
crimeWeight = actionCrimeWeighting(npc, actor)<br />
fightWeight = actionFightWeighting(npc, actor)<br />
lookAtWeight = actionLookAtWeighting(npc, actor)<br />
<br />
action = none<br />
if lookAtWeight > actionWeight:<br />
npc.target = actor<br />
actionWeight = int(lookAtWeight)<br />
action = lookAt<br />
if greetWeight > actionWeight:<br />
npc.target = actor<br />
actionWeight = int(greetWeight)<br />
action = greet<br />
if fightWeight > actionWeight:<br />
npc.target = actor<br />
actionWeight = int(fightWeight)<br />
action = fight<br />
if crimeWeight > actionWeight:<br />
npc.target = actor<br />
actionWeight = int(crimeWeight)<br />
action = uphold the law<br />
<br />
if actionWeight != 0 and action != none and npc.target != none:<br />
if some 20 page function: # includes expensive functions like line of sight and sneak<br />
npc.target = 0<br />
actionWeight = 0<br />
action = none<br />
<br />
if action != none: selectedAction = action<br />
<br />
if action != none: npc switches to selectedAction<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
With the lookAt action, the NPC looks at its target's head. The anim controller blends the head pose over time.<br />
<br />
<br />
<br />
==Idle behaviour==<br />
<br />
===Shielding face from storm===<br />
{{Formula<br />
|Every frame.<br />
|Part of AI animation behaviour.<br />
|<br />
|{{StatusCol|green|Verified}}}}<br />
<br />
For a non-werewolf humanoid:<br />
<syntaxhighlight lang="python"><br />
facing = Y column of orientation matrix (forward facing vector)<br />
windVelocity = interpolated wind velocity (see Weather page)<br />
<br />
windSpeed = length(windVelocity)<br />
<br />
if windSpeed > fStromWindSpeed and not (actor.weaponDrawn or actor.spellReadied):<br />
f = normalize(facing)<br />
w = normalize(windVelocity)<br />
fAlt = (-f.x, f.y, f.z)<br />
<br />
if dot(fAlt, w) < -0.5:<br />
if upper body animation is not IdleStorm:<br />
immediately change upper body animation to IdleStorm, animation loops<br />
else:<br />
if upper body animation is IdleStorm:<br />
change IdleStorm loop mode to play once until end key<br />
set next upper body animation to standard idle for player state<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
The use of fAlt is inexplicable. The test should probably be <code>dot(f, w) > 0.5</code>. The storm idle applies to the upper body bone group, and has higher priority than movement animations, but lower priority than weapon animations.<br />
<br />
<br />
==Combat behaviour==<br />
<br />
===NPC awareness check===<br />
{{Formula<br />
|AI decision check, every 5.0 seconds<br />
|Part of the NPC perception state.<br />
|{{StatusCol|green|implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<br />
This check runs every 5 seconds for each NPC. It occurs whether you are sneaking or not, but isn't the same as the combat distance check.<br />
<br />
====Player side====<br />
<syntaxhighlight lang="python"><br />
if sneaking:<br />
sneakTerm = fSneakSkillMult * sneak + 0.2 * agility + 0.1 * luck + bootWeight * fSneakBootMult<br />
else:<br />
sneakTerm = 0<br />
<br />
fatigueTerm = fFatigueBase - fFatigueMult*(1 - normalisedFatigue)<br />
where normalisedFatigue is a function of fatigue. empty fatigue bar -> 0.0, full fatigue bar -> 1.0<br />
<br />
distTerm = fSneakDistanceBase + fSneakDistanceMultiplier*dist<br />
x = sneakTerm * distTerm * fatigueTerm + chameleon (+ 100 if invisible)<br />
</syntaxhighlight><br />
<br />
====NPC side====<br />
<syntaxhighlight lang="python"><br />
npcTerm = npcSneak + 0.2 * npcAgility + 0.1 * npcLuck - npcBlind<br />
npcFatigueTerm = fFatigueBase - fFatigueMult * (1 - normalisedFatigue)<br />
<br />
using NPC normalisedFatigue<br />
<br />
if PC is behind NPC (180 degrees):<br />
y = npcTerm * npcFatigueTerm * fSneakNoViewMult<br />
else:<br />
y = npcTerm * npcFatigueTerm * fSneakViewMult<br />
</syntaxhighlight><br />
<br />
====Final check====<br />
<syntaxhighlight lang="python"><br />
target = x - y<br />
roll 100, win if roll < target<br />
</syntaxhighlight><br />
<br />
<br />
====Comments====<br />
<br />
Appears straightforward and bug-free. NPCs can take up to five seconds to notice you even if you are not sneaking. This function precedes the combat distance check. I have not identified if there is a line of sight check occuring before or after.<br />
<br />
According to this formula, NPCs can still detect you when invisible? That seems wrong. [[User:Scrawl|Scrawl]] ([[User talk:Scrawl|talk]]) 00:25, 7 January 2014 (CET)<br />
<br />
<br />
===Attack frequency===<br />
{{Formula<br />
|Upon initiating combat, and after each swing/missile<br />
|The semi-random delay inserted between physical attacks.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Function contains other side effects}}}}<br />
<syntaxhighlight lang="python"><br />
if actor is an npc:<br />
baseDelay = fCombatDelayNPC<br />
else:<br />
baseDelay = fCombatDelayCreature<br />
<br />
delay = min(baseDelay + 0.01 * rand 100, baseDelay + 0.9)<br />
<br />
if actor is in range to attack with current weapon:<br />
actor will initiate a swing/fire a missile if time since end of last attack >= delay<br />
</syntaxhighlight><br />
<br />
==AI Tendencies==<br />
<br />
====Fight====<br />
Affected by calm and frenzy spells.<br />
<br />
====Flee====<br />
Affected by rally and demoralize spells.<br />
<br />
====Alarm====<br />
<br />
====Hello====<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Weather&diff=5102
Research:Weather
2019-05-24T11:08:02Z
<p>Hrnchamd: Added weather wind speed.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Sun glare==<br />
{{Formula<br />
|During day hours<br />
|Rendering the sun glare overlay<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Needs verification}}}}<br />
TitleCaps variables indicate values taken from the morrowind.ini section related to that object. <br />
<br />
<br />
''Glare magnitude calculation''<br />
<syntaxhighlight lang="python"><br />
theta = angleBetween(camera view vector, camera to sun vector) # in degrees<br />
peakHour = Weather.SunriseHour + (Weather.SunsetHour - Weather.SunriseHour) / 2<br />
<br />
<br />
# Angular proximity<br />
if theta <= Weather.SunGlareFaderAngleMax:<br />
a = 1 - theta / Weather.SunGlareFaderAngleMax<br />
else:<br />
a = 0<br />
<br />
# Time of day, prevents glare interfering at sunrise/sunset<br />
if gameHour < Weather.SunriseHour or gameHour > Weather.SunsetHour:<br />
b = 0<br />
elif gameHour < peakHour:<br />
b = 1 - (peakHour - gameHour) / (peakHour - Weather.SunriseHour)<br />
else:<br />
b = 1 - (gameHour - peakHour) / (Weather.SunsetHour - peakHour)<br />
<br />
b *= Weather.SunGlareFaderMax<br />
<br />
# Specific weather variables<br />
<br />
# transition is 0 at the start of a weather change and 1.0 at the end<br />
# note that CloudsMaximumPercent is not actually a percentage<br />
if weather is changing and transition < nextWeather.CloudsMaximumPercent:<br />
t = transition / nextWeather.CloudsMaximumPercent<br />
c = (1-t) * currentWeather.GlareView + t * nextWeather.GlareView<br />
else:<br />
c = currentWeather.GlareView<br />
<br />
# Occlusion<br />
d = time-averaged visibility of sun via raycast [range: 0-1]<br />
</syntaxhighlight><br />
<br />
''Rendering''<br />
<syntaxhighlight lang="python"><br />
Blend mode: src=SRC_ALPHA, dest=ONE<br />
<br />
Material colour = saturate(2 * Weather.SunGlareFaderColor) # design flaw<br />
Material alpha = a * b * c * d<br />
</syntaxhighlight><br />
<br />
<br />
====Comments====<br />
There is an issue with the colour specification. The default SunGlareFaderColor is sRGB [222,095,039], which is very red compared to the actual rendering. This is due to the game setting the ambient, diffuse and emissive materials to the SunGlareFaderColor, in combination with pure white ambient lighting for this effect (but no diffuse due to lack of normals). This essentially multiplies the colour by 2, which is then clamped by the fixed function pipeline, causing a final colour of light orange.<br />
<br />
<br />
<br />
==Wind speed==<br />
{{Formula<br />
|In all cells<br />
|Wind speed velocity vector<br />
|{{StatusCol|orange|Unknown condition}}<br />
|{{StatusCol|orange|Needs verification}}}}<br />
<br />
<br />
The game runs a simulation tick for weathers each frame. While transitioning between weathers, it simulates both the current and next weather. It stores wind velocity for both current and next weather, and interpolates between them after simulating the weathers. For interiors, wind speed is zero.<br />
<br />
<br />
''Common pre-calculation for all weathers''<br />
<br />
<syntaxhighlight lang="python"><br />
weatherState = weather persistent state<br />
weatherType = simulated weather type<br />
iniSpeed = morrowind.ini, Weather section, Wind Speed for this weather<br />
targetSpeed = min(8.0 * iniSpeed, 70);<br />
<br />
if currentWeather.type is weatherType:<br />
currentSpeed = length(weatherState.windVelocityCurrentWeather)<br />
elif nextWeather:<br />
currentSpeed = length(weatherState.windVelocityNextWeather)<br />
else<br />
currentSpeed = targetSpeed<br />
<br />
if (currentSpeed == 0)<br />
currentSpeed = targetSpeed<br />
</syntaxhighlight><br />
<br />
<br />
''Clear, Cloudy, Fog, Overcast, Snow, Blizzard''<br />
<br />
<syntaxhighlight lang="python"><br />
updatedSpeed = (randFloat() - 0.5) * targetSpeed + currentSpeed;<br />
<br />
if updatedSpeed > 0.5 * targetSpeed and updatedSpeed < 2 * targetSpeed:<br />
currentSpeed = updatedSpeed<br />
<br />
if currentWeather.type is weatherType:<br />
weatherState.windVelocityCurrentWeather = (0, currentSpeed, 0)<br />
else:<br />
weatherState.windVelocityNextWeather = (0, currentSpeed, 0)<br />
</syntaxhighlight><br />
<br />
<br />
''Rain, Storm''<br />
<br />
<syntaxhighlight lang="python"><br />
updatedSpeed = (randFloat() - 0.5) * 0.5 * targetSpeed + currentSpeed;<br />
<br />
if updatedSpeed > 0.5 * targetSpeed and updatedSpeed < 2 * targetSpeed:<br />
currentSpeed = updatedSpeed<br />
<br />
if currentWeather.type is weatherType:<br />
weatherState.windVelocityCurrentWeather = (0, currentSpeed, 0)<br />
else:<br />
weatherState.windVelocityNextWeather = (0, currentSpeed, 0)<br />
</syntaxhighlight><br />
<br />
<br />
''Ashstorm, Blight''<br />
<br />
<syntaxhighlight lang="python"><br />
stormCentre = (25000, 70000)<br />
updatedSpeed = (randFloat() - 0.5) * targetSpeed + currentSpeed;<br />
<br />
if updatedSpeed > 0.5 * targetSpeed and updatedSpeed < 2 * targetSpeed:<br />
currentSpeed = updatedSpeed<br />
<br />
if currentWeather.type is weatherType:<br />
direction = normalize(camera.position.xy - stormCentre.xy)<br />
weatherState.windVelocityCurrentWeather = (currentSpeed * direction.x, currentSpeed * direction.y, 0)<br />
else:<br />
weatherState.windVelocityNextWeather = (currentSpeed * direction.x, currentSpeed * direction.y, 0)<br />
</syntaxhighlight><br />
<br />
<br />
====Comments====<br />
Final wind velocity is interpolated between weatherState.windVelocityCurrentWeather and weatherState.windVelocityNextWeather, or is zero for interiors.<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Magic&diff=3059
Research:Magic
2017-03-15T14:33:31Z
<p>Hrnchamd: /* Item Charge */ Natural recharge section updated.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Spell Casting==<br />
<br />
<br />
====Chance of successful spell cast====<br />
{{Formula<br />
|On cast attempt, on AI spell evaluation, on UI update or in spellmaking<br />
|Uses common term [[Research:Common_Terms#fatigueTerm|fatigueTerm]].<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
if actor is silenced: return 0<br />
if <flag> and current magicka < magicka cost: return 0 # see comments<br />
if spell.castingType not (spell or power): return 100<br />
<br />
if castingType is power:<br />
check power timeout for this spell (24 hours from previous use)<br />
if power is available: return 100 else return 0<br />
<br />
if castingType is spell:<br />
if spell is flagged always succeeds: return 100<br />
<br />
y = FLOAT_MAX<br />
for each effect in spell:<br />
x = effect.duration<br />
if not effect.magicEffect.flags & UNCAPPED_DAMAGE: x = max(1, x)<br />
x *= 0.1 * effect.magicEffect.baseMagickaCost<br />
x *= 0.5 * (effect.magnitudeMin + effect.magnitudeMax)<br />
x += effect.radius * 0.05 * effect.magicEffect.baseMagickaCost<br />
if effect.rangeType & CAST_TARGET: x *= 1.5<br />
x *= fEffectCostMult<br />
<br />
s = 2 * actor.skill[effect.magicEffect.school.associatedSkillId]<br />
if (s - x) < y:<br />
y = s - x<br />
effectiveSchool = effect.magicEffect.school<br />
lowestSkill = s<br />
<br />
# castBonus is the stat modified by the Sound magic effect;<br />
# it behaves in the same way as other hidden stats, that is positive for a bonus, and negative for a penalty<br />
castChance = (lowestSkill - spellCost + actor.castBonus + 0.2 * actorWillpower + 0.1 * actorLuck) * fatigueTerm<br />
if godmode is on: castChance = 100<br />
return castChance, effectiveSchool<br />
</syntaxhighlight><br />
<br />
<br />
=====Comments=====<br />
<br />
The cast chance calculation is used in multiple places, some where magicka use may not be important, so there is a <flag>, which is normally true for casting/AI use and the inventory spell list, and false for all other UI uses of spell chance. The function returns the weakest school used out of all the effects, which is the skill that will gain progress when the spell is cast. Note that spells that are marked "always succeed" do not seem to contribute to skill progress.<br />
<br />
====Cast cost====<br />
{{Formula<br />
|On cast attempt<br />
|Magicka and fatigue costs of casting. Uses common term [[Research:Common_Terms#normalizedEncumbrance|normalizedEncumbrance]].<br />
|{{StatusCol|green|Implemented, bug corrected}}<br />
|{{StatusCol|green|Verified, but fatigue cost contains a bug}}}}<br />
Casting cost is an independent variable in the spell data. For spellmaker generated spells, refer to [[Research:Trading and Services#Spell merchant|Spell merchant]].<br />
<syntaxhighlight lang="python"><br />
magicka loss = spell.magickaCost<br />
</syntaxhighlight><br />
Failed casts still incur all costs.<br />
<br />
<br />
Casting incurs a fatigue hit.<br />
<syntaxhighlight lang="python"><br />
fatigue loss = magickaCost * (fFatigueSpellBase * normalizedEncumbrance * fFatigueSpellMult)<br />
</syntaxhighlight><br />
which is how Morrowind behaves but is clearly incorrect; a fixed formula is<br />
<syntaxhighlight lang="python"><br />
fatigue loss = magickaCost * (fFatigueSpellBase + normalizedEncumbrance * fFatigueSpellMult)<br />
</syntaxhighlight><br />
<br />
The GMST fFatigueSpellCostMult is unused.<br />
<br />
===Magic resistance===<br />
<br />
====Spell application type "Magic"====<br />
{{Formula<br />
|On magic effect hit, applies separately for each effect<br />
|Uses [[Research:Magic#Effect attributes|resistance effect attributes]].<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Surrounding mechanics still need evaluating}}}}<br />
<syntaxhighlight lang="python"><br />
i = look up corresponding resistance effect attribute for effect<br />
if effect is not linked to a resistance effect attribute: effect cannot be resisted<br />
<br />
resistance = get defending actor effect attribute i<br />
castChance = attackers chance of casting spell (uncapped)<br />
<br />
x = (willpower + 0.1 * luck) * fatigueTerm<br />
if castChance > 0: x *= 50 / castChance<br />
roll float [0..100]<br />
if effect.flags & NO_MAGNITUDE: roll -= resistance<br />
<br />
if x <= roll:<br />
x = 0<br />
else:<br />
if effect.flags & NO_MAGNITUDE:<br />
x = 100<br />
else:<br />
x = roll / min(x, 100)<br />
<br />
x = min(x + resistance, 100)<br />
<br />
if x > 100: effect is fully resisted, show message, remove effect<br />
else: effect is applied with resistance x%<br />
</syntaxhighlight><br />
<br />
=====Comments=====<br />
<br />
Note that this punishes casting difficult (low cast chance) spells versus high willpower enemies. The ''castChance'' scaling will go almost guarantee resists if ''castChance'' < 25%.<br />
<br />
Has an interesting situation, where spells with magnitude _do_ take resistance from willpower but at a very low rate (0.01x due to lack of rescaling) than would be expected, making willpower resistance almost useless for that class of spells.<br />
<br />
The way resistance affects the final attribute, is that magnitude is stored untouched, resistance is stored with the active effect, and resistance is applied every time the spell has an application tick. The outward effect is that spell effect tooltips list the original magnitude, without factoring resistance.<br />
<br />
<br />
====Spell application types "Disease" or "Blight"====<br />
{{Formula<br />
|On spell hit, applies once for entire spell<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Surrounding mechanics still need evaluating}}}}<br />
<syntaxhighlight lang="python"><br />
x = actor effect attribute "Resist Disease" or "Resist Blight"<br />
roll 100, if roll <= x then fully resist the disease<br />
</syntaxhighlight><br />
<br />
==Item Charge==<br />
<br />
====Using enchanted items====<br />
{{Formula<br />
|On enchanted item use<br />
|Charge consumed on use depends on skill.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified; but a poorly scaling mechanic}}}}<br />
<syntaxhighlight lang="python"><br />
x = 0.01 * (110 - pcEnchant)<br />
charge used = int(x * enchant base charge cost)<br />
</syntaxhighlight><br />
<br />
This makes items last 10 times longer at 100 enchant compared to 10 enchant, making it scale a little too well. MCP uses x = 0.025 * (400 - pcEnchant).<br />
<br />
<br />
====Natural recharge====<br />
{{Formula<br />
|On game tick<br />
|Enchanted items may gain charge over time.<br />
|{{StatusCol|orange|Changed since last implementation}}<br />
|{{StatusCol|green|Verified}}}}<br />
When an enchanted item is cast by any actor, both on-use or on-strike, the item is placed onto a list of items that need recharging. Every item in this list charges by tickTime * fMagicItemRechargePerSecond every frame, and items are removed when they are full. This list is not saved; instead, on loading a game, all non-fully charged items stored in the savegame are placed on the recharge list.<br />
<br />
There is a bug where on-use enchanted items used by an NPC do not get placed on the recharge list after they are cast, resulting in an item that does not appear to charge until the player uses it, or on load/save.<br />
<br />
<br />
====Soulgem charging====<br />
Refer to [[Research:Player Craft Skills#Enchanting|Player Craft Skills]].<br />
<br />
==Magic effects==<br />
<br />
Spells are combinations of one or more effects, which have associated code specific to the effect, and properties which cover cast ranges, resistances and other generalized behaviours that may be shared by a small set of effects.<br />
<br />
<br />
===Effect attributes===<br />
<br />
All actors have "hidden" attributes that effects apply to, to allow effects to stack, have resistance applied and counteract each other. These attributes are saved with actors, appearing in the actor data in the same order. All effect attributes are applied and stored as integers. Resists and weaknesses are unified under the Resist- attributes, with resistances being positive and weaknesses being negative. Non-magnitude spells have an effective attribute of 1 when active.<br />
<br />
Some attributes provide resistance values vs magic effects when calculating magic mitigation. These resistances only apply in certain cases, check [[Research:Magic#Magic resistance|magic resistance]].<br />
<br />
{| class="wikitable"<br />
! Index !! Name !! Provides resistance against magic effects<br />
|-<br />
| 0 || Fortify Attack<br />
|-<br />
| 1 || Sanctuary || Disintegrate *<br />
|-<br />
| 2 || Resist Magicka || Drain *, Damage *, Absorb *, Weakness to *, Burden, Charm, Silence, Blind, Sound, Calm, Frenzy, Demoralize, Rally, Turn Undead<br />
|-<br />
| 3 || Resist Fire || Fire<br />
|-<br />
| 4 || Resist Frost || Frost<br />
|-<br />
| 5 || Resist Shock || Shock<br />
|-<br />
| 6 || Resist Common Disease || Vampirism<br />
|-<br />
| 7 || Resist Blight Disease ||<br />
|-<br />
| 8 || Resist Corprus || Corprus<br />
|-<br />
| 9 || Resist Poison || Poison<br />
|-<br />
| 10 || Resist Paralysis || Paralysis<br />
|-<br />
| 11 || Chameleon ||<br />
|-<br />
| 12 || Resist Normal Weapons ||<br />
|-<br />
| 13 || Water Breathing ||<br />
|-<br />
| 14 || Water Walking ||<br />
|-<br />
| 15 || Swift Swim ||<br />
|-<br />
| 16 || Jump ||<br />
|-<br />
| 17 || Levitate ||<br />
|-<br />
| 18 || Shield ||<br />
|-<br />
| 19 || Sound ||<br />
|-<br />
| 20 || Silence ||<br />
|-<br />
| 21 || Blind ||<br />
|-<br />
| 22 || Paralyze ||<br />
|-<br />
| 23 || Invisibility ||<br />
|-<br />
| 24 || Fight ||<br />
|-<br />
| 25 || Flee ||<br />
|-<br />
| 26 || Hello ||<br />
|-<br />
| 27 || Alarm ||<br />
|}<br />
<br />
===Effect flags===<br />
<br />
These are fixed properties of magic effects. Obtained from the code, these are not affected by mods.<br />
<br />
{| class="wikitable"<br />
! Bit !! Enum name !! Status !! Description<br />
|-<br />
| 0x1 || TARGET_SKILL || <font color="green"> implemented </font> || Affects a specific skill, which is specified elsewhere in the effect structure.<br />
|-<br />
| 0x2 || TARGET_ATTR || <font color="green"> implemented </font> || Affects a specific attribute, which is specified elsewhere in the effect structure.<br />
|-<br />
| 0x4 || NO_DURATION || <font color="green"> implemented </font> || Has no duration. Only runs effect once on cast.<br />
|-<br />
| 0x8 || NO_MAGNITUDE || <font color="green"> implemented </font> || Has no magnitude.<br />
|-<br />
| 0x10 || HARMFUL || <font color="green"> implemented </font> || Counts as a harmful effect. Interpreted as useful effects for attack by the AI, and is treated as a bad effect in alchemy.<br />
|-<br />
| 0x20 || CONTINUOUS_VFX || <font color="green"> implemented </font> || The effect's hit particle VFX repeats for the full duration of the spell, rather than occurring once on hit.<br />
|-<br />
| 0x40 || CAST_SELF || <font color="green"> implemented </font> || Allows range - cast on self.<br />
|-<br />
| 0x80 || CAST_TOUCH || <font color="green"> implemented </font> || Allows range - cast on touch.<br />
|-<br />
| 0x100 || CAST_TARGET || <font color="green"> implemented </font> || Allows range - cast on target.<br />
|-<br />
| 0x200 - 0x800 || || <font color="red"> not started </font> || Unverified. Appears unused.<br />
|-<br />
| 0x1000 || APPLIED_ONCE || <font color="red"> not started </font> || An effect that is applied once it lands, instead of continuously. Allows an effect to reduce an attribute below zero; removes the normal minimum effect duration of 1 second.<br />
|-<br />
| 0x2000 || STEALTH || <font color="red"> not started </font> || Unverified. Used only by chameleon effect.<br />
|-<br />
| 0x4000 || NON_RECASTABLE || <font color="red"> not started </font> || Does not land if parent spell is already affecting target. Shows "you cannot re-cast" message for self target.<br />
|-<br />
| 0x8000 || ILLEGAL_DAEDRA || <font color="red"> not started </font> || Unverified. Appears to be flagged on summon daedra effects. Possibly for guards to detect summoning in towns.<br />
|-<br />
| 0x10000 || UNREFLECTABLE || <font color="green"> implemented </font> || Cannot be reflected, the effect always lands normally.<br />
|-<br />
| 0x20000 || CASTER_LINKED || <font color="green"> implemented </font> || Must quench if caster is dead, or not an NPC/creature. Not allowed in containter/door trap spells.<br />
|}<br />
<br />
<br />
Flags for all effects:<br />
<br />
int effectFlags[] = {<br />
0x11c8, 0x11c0, 0x11c8, 0x11e0, 0x11e0, 0x11e0, 0x11e0, 0x11d0,<br />
0x11c0, 0x11c0, 0x11e0, 0x11c0, 0x11184, 0x11184, 0x1f0, 0x1f0,<br />
0x1f0, 0x11d2, 0x11f0, 0x11d0, 0x11d0, 0x11d1, 0x1d2, 0x1f0,<br />
0x1d0, 0x1d0, 0x1d1, 0x1f0, 0x11d0, 0x11d0, 0x11d0, 0x11d0,<br />
0x11d0, 0x11d0, 0x11d0, 0x11d0, 0x11d0, 0x1d0, 0x1d0, 0x11c8,<br />
0x31c0, 0x11c0, 0x11c0, 0x11c0, 0x1180, 0x11d8, 0x11d8, 0x11d0,<br />
0x11d0, 0x11180, 0x11180, 0x11180, 0x11180, 0x11180, 0x11180, 0x11180,<br />
0x11180, 0x11c4, 0x111b8, 0x1040, 0x104c, 0x104c, 0x104c, 0x104c,<br />
0x1040, 0x1040, 0x1040, 0x11c0, 0x11c0, 0x1cc, 0x1cc, 0x1cc,<br />
0x1cc, 0x1cc, 0x1c2, 0x1c0, 0x1c0, 0x1c0, 0x1c1, 0x11c2,<br />
0x11c0, 0x11c0, 0x11c0, 0x11c1, 0x11c0, 0x21192, 0x20190, 0x20190,<br />
0x20190, 0x21191, 0x11c0, 0x11c0, 0x11c0, 0x11c0, 0x11c0, 0x11c0,<br />
0x11c0, 0x11c0, 0x11c0, 0x11c0, 0x1c0, 0x11190, 0x9048, 0x9048,<br />
0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x9048,<br />
0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x11c0, 0x1180, 0x1180,<br />
0x5048, 0x5048, 0x5048, 0x5048, 0x5048, 0x5048, 0x1188, 0x5048,<br />
0x5048, 0x5048, 0x5048, 0x5048, 0x1048, 0x104c, 0x1048, 0x40,<br />
0x11c8, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048<br />
};<br />
<br />
==Specific magic effects==<br />
<br />
While all magic effects have programmed behaviour, there are specific ones that may have complicated side effects. Any particular information for a single effect is documented here.<br />
<br />
<br />
===Corprus===<br />
{{Formula<br />
|On application, and every 24 hours<br />
|Spell effect "Corprus"<br />
|<br />
|{{StatusCol|orange|Under research}}}}<br />
The corprus effect is closely linked to the corprus spell. Every 24 hours after the contraction of corprus, all other effects on the same spell as corprus, that also have effect flag 0x1000 (APPLIED_ONCE) are re-applied in a special case. This increases the magnitude of the effect, while correctly recording the amount applied so it can be removed later. Without other effects on the spell, corprus does nothing.<br />
<br />
On removal, the drain spells are removed normally, while another special case interdicts any removal of positive attribute effects. Instead, a fortification is converted into a restore effect of the same magnitude.<br />
<br />
<br />
===Sun Damage===<br />
{{Formula<br />
|Continuously applied, triggering the hit fader to pulse<br />
|Spell effect "Sun Damage"<br />
|<br />
|{{StatusCol|green|Verified}}}}<br />
TitleCaps variables indicate values taken from the morrowind.ini section related to that object.<br />
<br />
<syntaxhighlight lang="python"><br />
if current cell is interior only: return 0<br />
<br />
if gamehour <= Weather.SunriseTime or gamehour >= Weather.SunsetTime + Weather.SunsetDuration:<br />
sunRisen = 0<br />
elif gamehour <= Weather.SunriseTime + Weather.SunriseDuration:<br />
sunRisen = (gamehour - Weather.SunriseTime) / Weather.SunriseDuration<br />
elif gamehour > Weather.SunsetTime:<br />
sunRisen = 1 - ((gamehour - Weather.SunsetTime) / Weather.SunsetDuration)<br />
else:<br />
sunRisen = 1<br />
<br />
# transition is 0 at the start of a weather change and 1.0 at the end<br />
# note that CloudsMaximumPercent is not actually a percentage<br />
if weather is changing and transition < nextWeather.CloudsMaximumPercent:<br />
t = transition / nextWeather.CloudsMaximumPercent<br />
sunVisibility = (1-t) * currentWeather.GlareView + t * nextWeather.GlareView<br />
else:<br />
sunVisibility = currentWeather.GlareView<br />
<br />
damageScale = max(sunVisibility * sunRisen, fMagicSunBlockedMult * sunRisen)<br />
damageScale = max(0, min(damage, 1))<br />
<br />
return damageScale * spelleffect.magnitude<br />
</syntaxhighlight><br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research&diff=2425
Research
2015-11-20T19:31:09Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
Morrowind's game mechanics in full detail and coverage.<br />
<br />
<br />
==Conventions==<br />
<br />
====Variables====<br />
* All attribute accesses are the modified (fortified/drained) value by default. Base attribute access is indicated by attributes starting with ''base''.<br />
* Attributes may be prefixed with ''pc'' or ''npc'' to indicate the owner of the attribute when opposing actors are involved.<br />
<br />
====Calculation====<br />
* All numeric operations occur in floating point unless indicated.<br />
* int(x) truncates.<br />
* round(x) uses the default FPU rounding mode. [IEEE 754 round-half-towards-even]<br />
* roll(n) returns an integer from 0 up to but not including n.<br />
<br />
<br />
==Categories==<br />
<br />
[[Research:Common Terms|Common Terms]]<br />
<br />
[[Research:Movement|Movement]]<br />
<br />
[[Research:Combat|Combat]]<br />
<br />
[[Research:Magic|Magic]]<br />
<br />
[[Research:NPC AI Behaviour|NPC AI Behaviour]]<br />
<br />
[[Research:Trading and Services|Trading and Services]]<br />
<br />
[[Research:Disposition and Persuasion|Disposition and Persuasion]]<br />
<br />
[[Research:Player Craft Skills|Player Craft Skills]]<br />
<br />
[[Research:Security and Crime|Security and Crime]]<br />
<br />
[[Research:Stats and Levelling|Stats and Levelling]]<br />
<br />
[[Research:Dialogue and Messages|Dialogue and Messages]]<br />
<br />
[[Research:Scripting|Scripting]]<br />
<br />
[[Research:Weather|Weather]]<br />
<br />
[[Research:World|World]]<br />
<br />
[[GMSTs_(status)|Game Settings]]<br />
<br />
<br />
==Contributing==<br />
<br />
Please submit only primary research, or sourced research with independent verification.<br />
<br />
==To-do list==<br />
<br />
[[Research:todo]]<br />
<br />
==Sources==<br />
<br />
* [http://forums.bethsoft.com/index.php?/topic/1097214-gameplay-mechanics-analysis/ bethsoft forum thread]<br />
* [http://www.uesp.net/wiki/Morrowind:Combat UESP Wiki: Combat section]</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbar&diff=2424
Template:Navbar
2015-11-20T19:27:15Z
<p>Hrnchamd: Revert to unedited navbar.</p>
<hr />
<div><includeonly><div class="noprint plainlinks hlist navbar {{#if:{{{mini|}}}|mini}}" style="{{{style|}}}"><!--<br />
<br />
-->{{#if:{{{mini|}}}{{{plain|}}}|<!--nothing-->|<!--else:<br />
--><span style="word-spacing:0;{{{fontstyle|}}}">{{{text|This box:}}} </span>}}<!--<br />
<br />
-->{{#if:{{{brackets|}}}|<span style="margin-right:-0.125em;{{{fontstyle|}}}">&#91;</span>}}<!--<br />
<br />
--><ul><!--<br />
--><li class="nv-view">[[{{transclude|{{{1}}}}}|<span title="View this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|v|view}}</span>]]</li><!--<br />
<br />
--><li class="nv-talk">[[{{TALKPAGENAME:{{transclude|{{{1}}}}}}}|<span title="Discuss this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|t|talk}}</span>]]</li><!--<br />
<br />
-->{{#if:{{{noedit|}}}|<!--nothing-->|<!--else:<br />
--><li class="nv-edit">[{{fullurl:{{transclude|{{{1}}}}}|action=edit}} <span title="Edit this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|e|edit}}</span>]</li>}}<!--<br />
--></ul><!--<br />
<br />
-->{{#if:{{{brackets|}}}|<span style="margin-left:-0.125em;{{{fontstyle|}}}">&#93;</span>}}<!--<br />
<br />
--></div></includeonly></div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbox&diff=2423
Template:Navbox
2015-11-20T19:25:12Z
<p>Hrnchamd: Add hlist class to all navbox lists.</p>
<hr />
<div>{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{{!}} class="navbox" cellspacing="0" style="{{{bodystyle|}}};{{{style|}}}"<br />
{{!}}-<br />
{{!}} style="padding:2px;" {{!}} }}<br />
{{{!}} cellspacing="0" class="nowraplinks {{#if:{{{title|}}}|{{#switch:{{{state|}}}|plain|off=|#default=collapsible {{#if:{{{state|}}}|{{{state|}}}|autocollapse}}}}}} {{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=navbox-subgroup" style="width:100%;{{{bodystyle|}}};{{{style|}}}|#default=" style="width:100%;background:transparent;color:inherit}};{{{innerstyle|}}};" <!--<br />
<br />
<br />
---Title and Navbar---<br />
-->{{#if:{{{title|}}}|<nowiki/><br />
{{!}}- {{#if:{{{titlegroup|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{titlegroupstyle|}}}" {{!}} {{{titlegroup|}}}<br />
! style="border-left:2px solid #fdfdfd;width:100%;|<nowiki/><br />
! style="}}{{{basestyle|}}};{{{titlestyle|}}}" colspan={{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}{{#if:{{{titlegroup|}}}|-1}}}} class="navbox-title" {{!}} {{#if:{{#switch:{{{navbar|}}}|plain|off=1}} {{#if:{{{name|}}}||{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=1}}}}| {{#ifeq:{{{navbar|}}}|off|{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}| {{#ifeq:{{{state|}}}|plain||<div style="float:left; width:6em;text-align:left;">&nbsp;</div>}}}}| <div style="float:left; width:6em;text-align:left;"> {{navbar|{{{name}}}|fontstyle={{{basestyle|}}};{{{titlestyle|}}};border:none;|mini=1}} </div>{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}}} <span style="font-size:{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=100|#default=110}}%;"> {{{title}}}</span> }}<!--<br />
<br />
<br />
---Above---<br />
-->{{#if:{{{above|}}}| {{#if:{{{title|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{abovestyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{above}}} }}<!--<br />
<br />
<br />
<br />
---Body---<br />
<br />
---First group/list and images---<br />
-->{{#if:{{{list1|}}}|{{#if:{{{title|}}}{{{above|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<!--<br />
<br />
-->{{#if:{{{imageleft|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 2px 0px 0px;{{{imageleftstyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{imageleft|}}} }}<!--<br />
<br />
-->{{#if:{{{group1|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group1style|}}}" {{!}} {{{group1}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{oddstyle|}}};{{{list1style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{list1padding|{{{listpadding|0em 0.25em}}}}}}"><br />
{{{list1|}}}</div><!--<br />
<br />
-->{{#if:{{{image|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 0px 0px 2px;{{{imagestyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{image|}}} }} }}<!--<br />
<br />
<br />
---Remaining groups/lists---<br />
<br />
-->{{#if:{{{list2|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list1|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group2|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group2style|}}}" {{!}} {{{group2}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list2style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list2|}}}</div>}}<!--<br />
<br />
-->{{#if:{{{list3|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list2|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group3|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group3style|}}}" {{!}} {{{group3}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list3style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list3|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list4|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group4|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group4style|}}}" {{!}} {{{group4}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list4style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list4|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list5|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list4|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group5|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group5style|}}}" {{!}} {{{group5}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list5style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list5|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list6|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list5|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group6|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group6style|}}}" {{!}} {{{group6}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list6style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list6|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list7|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list6|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group7|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group7style|}}}" {{!}} {{{group7}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list7style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list7|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list8|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list7|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group8|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group8style|}}}" {{!}} {{{group8}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list8style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list8|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list9|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list8|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group9|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group9style|}}}" {{!}} {{{group9}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list9style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list9|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list10|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list9|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group10|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group10style|}}}" {{!}} {{{group10}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list10style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list10|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list11|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list10|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group11|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group11style|}}}" {{!}} {{{group11}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list11style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list11|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list12|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list11|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group12|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group12style|}}}" {{!}} {{{group12}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list12style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list12|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list13|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list12|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group13|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group13style|}}}" {{!}} {{{group13}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list13style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list13|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list14|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list13|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group14|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group14style|}}}" {{!}} {{{group14}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list14style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list14|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list15|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list14|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group15|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group15style|}}}" {{!}} {{{group15}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list15style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list15|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list16|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list15|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group16|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group16style|}}}" {{!}} {{{group16}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list16style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list16|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list17|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list16|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group17|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group17style|}}}" {{!}} {{{group17}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list17style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list17|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list18|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list17|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group18|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group18style|}}}" {{!}} {{{group18}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list18style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list18|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list19|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list18|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group19|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group19style|}}}" {{!}} {{{group19}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list19style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list19|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list20|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list19|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group20|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group20style|}}}" {{!}} {{{group20}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list20style|}}}" class="hlist navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list20|}}}</div> }}<!--<br />
<br />
---Below---<br />
-->{{#if:{{{below|}}}|<!--<br />
-->{{#if:{{{title|}}}{{{above|}}}{{{list1|}}}{{{list2|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{belowstyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{below}}} }}<br />
{{!}}}{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{!}}} }}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbox&diff=2422
Template:Navbox
2015-11-20T19:21:09Z
<p>Hrnchamd: Undo revision 2395 by Hrnchamd (talk)</p>
<hr />
<div>{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{{!}} class="navbox" cellspacing="0" style="{{{bodystyle|}}};{{{style|}}}"<br />
{{!}}-<br />
{{!}} style="padding:2px;" {{!}} }}<br />
{{{!}} cellspacing="0" class="nowraplinks {{#if:{{{title|}}}|{{#switch:{{{state|}}}|plain|off=|#default=collapsible {{#if:{{{state|}}}|{{{state|}}}|autocollapse}}}}}} {{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=navbox-subgroup" style="width:100%;{{{bodystyle|}}};{{{style|}}}|#default=" style="width:100%;background:transparent;color:inherit}};{{{innerstyle|}}};" <!--<br />
<br />
<br />
---Title and Navbar---<br />
-->{{#if:{{{title|}}}|<nowiki/><br />
{{!}}- {{#if:{{{titlegroup|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{titlegroupstyle|}}}" {{!}} {{{titlegroup|}}}<br />
! style="border-left:2px solid #fdfdfd;width:100%;|<nowiki/><br />
! style="}}{{{basestyle|}}};{{{titlestyle|}}}" colspan={{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}{{#if:{{{titlegroup|}}}|-1}}}} class="navbox-title" {{!}} {{#if:{{#switch:{{{navbar|}}}|plain|off=1}} {{#if:{{{name|}}}||{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=1}}}}| {{#ifeq:{{{navbar|}}}|off|{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}| {{#ifeq:{{{state|}}}|plain||<div style="float:left; width:6em;text-align:left;">&nbsp;</div>}}}}| <div style="float:left; width:6em;text-align:left;"> {{navbar|{{{name}}}|fontstyle={{{basestyle|}}};{{{titlestyle|}}};border:none;|mini=1}} </div>{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}}} <span style="font-size:{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=100|#default=110}}%;"> {{{title}}}</span> }}<!--<br />
<br />
<br />
---Above---<br />
-->{{#if:{{{above|}}}| {{#if:{{{title|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{abovestyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{above}}} }}<!--<br />
<br />
<br />
<br />
---Body---<br />
<br />
---First group/list and images---<br />
-->{{#if:{{{list1|}}}|{{#if:{{{title|}}}{{{above|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<!--<br />
<br />
-->{{#if:{{{imageleft|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 2px 0px 0px;{{{imageleftstyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{imageleft|}}} }}<!--<br />
<br />
-->{{#if:{{{group1|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group1style|}}}" {{!}} {{{group1}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{oddstyle|}}};{{{list1style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{list1padding|{{{listpadding|0em 0.25em}}}}}}"><br />
{{{list1|}}}</div><!--<br />
<br />
-->{{#if:{{{image|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 0px 0px 2px;{{{imagestyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{image|}}} }} }}<!--<br />
<br />
<br />
---Remaining groups/lists---<br />
<br />
-->{{#if:{{{list2|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list1|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group2|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group2style|}}}" {{!}} {{{group2}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list2style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list2|}}}</div>}}<!--<br />
<br />
-->{{#if:{{{list3|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list2|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group3|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group3style|}}}" {{!}} {{{group3}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list3style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list3|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list4|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group4|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group4style|}}}" {{!}} {{{group4}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list4style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list4|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list5|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list4|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group5|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group5style|}}}" {{!}} {{{group5}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list5style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list5|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list6|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list5|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group6|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group6style|}}}" {{!}} {{{group6}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list6style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list6|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list7|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list6|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group7|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group7style|}}}" {{!}} {{{group7}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list7style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list7|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list8|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list7|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group8|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group8style|}}}" {{!}} {{{group8}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list8style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list8|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list9|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list8|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group9|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group9style|}}}" {{!}} {{{group9}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list9style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list9|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list10|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list9|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group10|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group10style|}}}" {{!}} {{{group10}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list10style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list10|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list11|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list10|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group11|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group11style|}}}" {{!}} {{{group11}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list11style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list11|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list12|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list11|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group12|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group12style|}}}" {{!}} {{{group12}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list12style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list12|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list13|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list12|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group13|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group13style|}}}" {{!}} {{{group13}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list13style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list13|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list14|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list13|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group14|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group14style|}}}" {{!}} {{{group14}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list14style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list14|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list15|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list14|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group15|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group15style|}}}" {{!}} {{{group15}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list15style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list15|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list16|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list15|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group16|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group16style|}}}" {{!}} {{{group16}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list16style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list16|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list17|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list16|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group17|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group17style|}}}" {{!}} {{{group17}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list17style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list17|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list18|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list17|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group18|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group18style|}}}" {{!}} {{{group18}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list18style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list18|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list19|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list18|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group19|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group19style|}}}" {{!}} {{{group19}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list19style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list19|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list20|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list19|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group20|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group20style|}}}" {{!}} {{{group20}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list20style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list20|}}}</div> }}<!--<br />
<br />
---Below---<br />
-->{{#if:{{{below|}}}|<!--<br />
-->{{#if:{{{title|}}}{{{above|}}}{{{list1|}}}{{{list2|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{belowstyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{below}}} }}<br />
{{!}}}{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{!}}} }}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbox&diff=2421
Template:Navbox
2015-11-20T19:20:52Z
<p>Hrnchamd: Undo revision 2396 by Hrnchamd (talk)</p>
<hr />
<div>{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{{!}} class="navbox" cellspacing="0" style="{{{bodystyle|}}};{{{style|}}}"<br />
{{!}}-<br />
{{!}} style="padding:2px;" {{!}} }}<br />
{{{!}} cellspacing="0" class="nowraplinks {{#if:{{{title|}}}|{{#switch:{{{state|}}}|plain|off=|#default=collapsible {{#if:{{{state|}}}|{{{state|}}}|autocollapse}}}}}} {{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=navbox-subgroup" style="background: #fdfdfd; width: 100%; vertical-align: middle;{{{bodystyle|}}};{{{style|}}}|#default=" style="width:100%;background:transparent;color:inherit}};{{{innerstyle|}}};" <!--<br />
<br />
<br />
---Title and Navbar---<br />
-->{{#if:{{{title|}}}|<nowiki/><br />
{{!}}- {{#if:{{{titlegroup|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{titlegroupstyle|}}}" {{!}} {{{titlegroup|}}}<br />
! style="border-left:2px solid #fdfdfd;width:100%;|<nowiki/><br />
! style="background: #ccccff; padding-left: 1em; padding-right: 1em; text-align: center;}}{{{basestyle|}}};{{{titlestyle|}}}" colspan={{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}{{#if:{{{titlegroup|}}}|-1}}}} class="navbox-title" {{!}} {{#if:{{#switch:{{{navbar|}}}|plain|off=1}} {{#if:{{{name|}}}||{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=1}}}}| {{#ifeq:{{{navbar|}}}|off|{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}| {{#ifeq:{{{state|}}}|plain||<div style="float:left; width:6em;text-align:left;">&nbsp;</div>}}}}| <div style="float:left; width:6em;text-align:left;"> {{navbar|{{{name}}}|fontstyle={{{basestyle|}}};{{{titlestyle|}}};border:none;|mini=1}} </div>{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}}} <span style="font-size:{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=100|#default=110}}%;"> {{{title}}}</span> }}<!--<br />
<br />
<br />
---Above---<br />
-->{{#if:{{{above|}}}| {{#if:{{{title|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{abovestyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{above}}} }}<!--<br />
<br />
<br />
<br />
---Body---<br />
<br />
---First group/list and images---<br />
-->{{#if:{{{list1|}}}|{{#if:{{{title|}}}{{{above|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<!--<br />
<br />
-->{{#if:{{{imageleft|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 2px 0px 0px;{{{imageleftstyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{imageleft|}}} }}<!--<br />
<br />
-->{{#if:{{{group1|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group1style|}}}" {{!}} {{{group1}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{oddstyle|}}};{{{list1style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{list1padding|{{{listpadding|0em 0.25em}}}}}}"><br />
{{{list1|}}}</div><!--<br />
<br />
-->{{#if:{{{image|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 0px 0px 2px;{{{imagestyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{image|}}} }} }}<!--<br />
<br />
<br />
---Remaining groups/lists---<br />
<br />
-->{{#if:{{{list2|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list1|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group2|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group2style|}}}" {{!}} {{{group2}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list2style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list2|}}}</div>}}<!--<br />
<br />
-->{{#if:{{{list3|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list2|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group3|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group3style|}}}" {{!}} {{{group3}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list3style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list3|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list4|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group4|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group4style|}}}" {{!}} {{{group4}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list4style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list4|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list5|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list4|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group5|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group5style|}}}" {{!}} {{{group5}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list5style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list5|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list6|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list5|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group6|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group6style|}}}" {{!}} {{{group6}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list6style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list6|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list7|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list6|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group7|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group7style|}}}" {{!}} {{{group7}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list7style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list7|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list8|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list7|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group8|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group8style|}}}" {{!}} {{{group8}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list8style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list8|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list9|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list8|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group9|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group9style|}}}" {{!}} {{{group9}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list9style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list9|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list10|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list9|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group10|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group10style|}}}" {{!}} {{{group10}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list10style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list10|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list11|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list10|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group11|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group11style|}}}" {{!}} {{{group11}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list11style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list11|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list12|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list11|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group12|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group12style|}}}" {{!}} {{{group12}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list12style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list12|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list13|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list12|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group13|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group13style|}}}" {{!}} {{{group13}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list13style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list13|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list14|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list13|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group14|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group14style|}}}" {{!}} {{{group14}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list14style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list14|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list15|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list14|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group15|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group15style|}}}" {{!}} {{{group15}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list15style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list15|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list16|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list15|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group16|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group16style|}}}" {{!}} {{{group16}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list16style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list16|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list17|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list16|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group17|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group17style|}}}" {{!}} {{{group17}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list17style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list17|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list18|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list17|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group18|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group18style|}}}" {{!}} {{{group18}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list18style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list18|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list19|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list18|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group19|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group19style|}}}" {{!}} {{{group19}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list19style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list19|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list20|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list19|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group20|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group20style|}}}" {{!}} {{{group20}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list20style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list20|}}}</div> }}<!--<br />
<br />
---Below---<br />
-->{{#if:{{{below|}}}|<!--<br />
-->{{#if:{{{title|}}}{{{above|}}}{{{list1|}}}{{{list2|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{belowstyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{below}}} }}<br />
{{!}}}{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{!}}} }}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Scripting&diff=2413
Research:Scripting
2015-11-19T19:37:44Z
<p>Hrnchamd: Added actor local variable bindings.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Script commands==<br />
<br />
See [[Scripting (status)]].<br />
<br />
<br />
<br />
==Script global variables==<br />
<br />
Engine data exposed to scripts through script global variables, rather than accessor functions.<br />
<br />
===List of exposed globals===<br />
<br />
{| class="wikitable"<br />
!ID<br />
!Default value<br />
!Used in<br />
!Implementation status<br />
|-<br />
|GameHour<br />
|12.0<br />
|rowspan="6"|Time system<br />
|<font color="green">implemented</font><br />
|-<br />
|Year<br />
|427.0<br />
|<font color="green">implemented</font><br />
|-<br />
|Month<br />
|7.0<br />
|<font color="green">implemented</font><br />
|-<br />
|Day<br />
|17.0<br />
|<font color="green">implemented</font><br />
|-<br />
|DaysPassed<br />
|1.0<br />
|<font color="green">implemented</font><br />
|-<br />
|TimeScale<br />
|30.0<br />
|<font color="green">implemented</font><br />
|-<br />
|CharGenState<br />
|0<br />
|Character creation<br />
|<font color="green">implemented</font><br />
|-<br />
|MonthsToRespawn<br />
|1.0<br />
|[[Research:World#Container_respawning|Container respawning]]<br />
|<font color="red">not started</font><br />
|-<br />
|PCKnownWerewolf<br />
|0<br />
|Werewolf transformation<br />
|<font color="red">not started, needs research</font><br />
|-<br />
|WerewolfClawMult<br />
|1.0<br />
|[[Research:Combat#Damage|Werewolf melee damage]]<br />
|<font color="green">implemented</font><br />
|-<br />
|CrimeGoldDiscount<br />
|0<br />
|rowspan="5"|[[Research:Dialogue_and_Messages#Dialogue_global_variables|Dialogue global variables]]<br />
|<font color="green">implemented</font><br />
|-<br />
|CrimeGoldTurnIn<br />
|0<br />
|<font color="green">implemented</font><br />
|-<br />
|PCHasCrimeGold<br />
|0<br />
|<font color="green">implemented</font><br />
|-<br />
|PCHasGoldDiscount<br />
|0<br />
|<font color="green">implemented</font><br />
|-<br />
|PCHasTurnIn<br />
|0<br />
|<font color="green">implemented</font><br />
|}<br />
These defaults are engine defaults that have a lower priority than values read from data files. This means a new game will have the values from the base game data rather than these values.<br />
<br />
<br />
<br />
==Actor local variables==<br />
<br />
The engine exposes actor events and additional actor information through local script variables.<br />
<br />
===List of named locals===<br />
<br />
{| class="wikitable"<br />
!ID<br />
!Type<br />
!Used in<br />
!Implementation status<br />
|-<br />
|Companion<br />
|short<br />
|rowspan="3"|Companions<br />
|{{StatusCol|orange|unknown}}<br />
|-<br />
|stayOutside<br />
|short<br />
|{{StatusCol|red|unimplemented}}<br />
|-<br />
|minimumProfit<br />
|float<br />
|{{StatusCol|orange|unknown}}<br />
|-<br />
|OnPCEquip<br />
|short<br />
|Set to 1 when an item is equipped<br />
|{{StatusCol|orange|unknown}}<br />
|-<br />
|OnPCAdd<br />
|short<br />
|Set to 1 when an item is added to the inventory<br />
|{{StatusCol|orange|unknown}}<br />
|-<br />
|OnPCHitMe<br />
|short<br />
|Set to 1 when the player attempts to damage an actor<br />
|{{StatusCol|orange|unknown}}<br />
|-<br />
|OnPCDrop<br />
|short<br />
|Set to 1 when an item is dropped<br />
|{{StatusCol|orange|unknown}}<br />
|-<br />
|OnPCRepair<br />
|short<br />
|Set to 1 when an item is repaired<br />
|{{StatusCol|orange|unknown}}<br />
|-<br />
|OnPCSoulGemUse<br />
|short<br />
|Set to 1 when a soul gem is used (non-functional)<br />
|{{StatusCol|orange|unimplementable}}<br />
|-<br />
|OnPCEquip<br />
|short<br />
|Set to 1 when an item is equipped<br />
|{{StatusCol|orange|unknown}}<br />
|-<br />
|PCSkipEquip<br />
|short<br />
|If set to 1, will prevent the equipping of an item<br />
|{{StatusCol|orange|unknown}}<br />
|}<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=GMSTs_(status)&diff=2412
GMSTs (status)
2015-11-19T19:03:59Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
===Notes===<br />
<br />
Removed due to implementation difference:<br />
- sKeyName_*<br />
<br />
Implemented, but unlisted:<br />
- sSkill* (skill names)<br />
- sEffect* (magic effect names)<br />
- sMagic*ID (summoned creature & bound item IDs)<br />
- fWerewolf* (implemented werewolf skill/stat/attribute values)<br />
<br />
<br />
===Legend===<br />
<br />
====Implementation====<br />
<br />
* ''Implemented'': This GMST is used by OpenMW.<br />
* ''Not started'': This GMST is not currently used by OpenMW.<br />
* ''Removed'': This GMST will not be used by OpenMW, because it was broken or not useful.<br />
<br />
====Specification====<br />
<br />
* ''Used'': This GMST is used by the original engine (''please add a link to the Research wiki page to clarify what the GMST is used for'').<br />
* ''Unused'': This GMST was never used by the original engine.<br />
* ''Reportedly missing in unpatched MW 1.0'': This GMST reportedly does not exist in unpatched versions of Morrowind's data files, so when implementing this GMST in OpenMW special care must be taken to add a reasonable default value to the code.<br />
<br />
===GMSTs===<br />
<br />
{| class="wikitable sortable" border="1"<br />
!GMST<br />
!Specification<br />
!Implementation<br />
!Default value<br />
|-<br />
| sMonthMorningstar<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Morning Star<br />
|-<br />
| sMonthSunsdawn<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Sun's Dawn<br />
|-<br />
| sMonthFirstseed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| First Seed<br />
|-<br />
| sMonthRainshand<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Rain's Hand<br />
|-<br />
| sMonthSecondseed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Second Seed<br />
|-<br />
| sMonthMidyear<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Mid Year<br />
|-<br />
| sMonthSunsheight<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Sun's Height<br />
|-<br />
| sMonthLastseed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Last Seed<br />
|-<br />
| sMonthHeartfire<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Heartfire<br />
|-<br />
| sMonthFrostfall<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Frost Fall<br />
|-<br />
| sMonthSunsdusk<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Sun's Dusk<br />
|-<br />
| sMonthEveningstar<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Evening Star<br />
|-<br />
| sSpecialization<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Specialization<br />
|-<br />
| sSpecializationCombat<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Combat<br />
|-<br />
| sSpecializationMagic<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic<br />
|-<br />
| sSpecializationStealth<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Stealth<br />
|-<br />
| sSkillClassMajor<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Major Skills<br />
|-<br />
| sSkillClassMinor<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Minor Skills<br />
|-<br />
| sSkillClassMisc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Misc Skills<br />
|-<br />
| sRacialTraits<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Racial Traits<br />
|-<br />
| sHealthPerHourOfRest<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Health per hour of rest<br />
|-<br />
| sHealthPerLevel<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Health per level<br />
|-<br />
| sGoverningAttribute<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Governing Attribute<br />
|-<br />
| sClass<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Class<br />
|-<br />
| sTraits<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Traits<br />
|-<br />
| sJournal<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Journal<br />
|-<br />
| sOK<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| OK<br />
|-<br />
| sClose<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Close<br />
|-<br />
| sPrev<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Prev<br />
|-<br />
| sNext<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Next<br />
|-<br />
| sTake<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Take<br />
|-<br />
| sWeaponTab<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Weapon<br />
|-<br />
| sApparelTab<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Apparel<br />
|-<br />
| sMagicTab<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic<br />
|-<br />
| sMiscTab<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Misc<br />
|-<br />
| sWornTab<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Worn<br />
|-<br />
| sAllTab<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| All<br />
|-<br />
| sAttack<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Attack<br />
|-<br />
| sUses<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Uses<br />
|-<br />
| sQuality<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quality<br />
|-<br />
| sCharges<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Charge:<br />
|-<br />
| sArmorRating<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Armor Rating<br />
|-<br />
| sSlash<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Slash<br />
|-<br />
| sThrust<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Thrust<br />
|-<br />
| sChop<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Chop<br />
|-<br />
| sEncumbrance<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Encumbrance<br />
|-<br />
| sCondition<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Condition<br />
|-<br />
| sWeight<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Weight<br />
|-<br />
| sValue<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Value<br />
|-<br />
| sLight<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Light<br />
|-<br />
| sMedium<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Medium<br />
|-<br />
| sHeavy<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Heavy<br />
|-<br />
| sCancel<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cancel<br />
|-<br />
| sTakeAll<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Take All<br />
|-<br />
| sUntilHealed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Until Healed<br />
|-<br />
| sRest<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Rest<br />
|-<br />
| sWait<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Wait<br />
|-<br />
| sRestIllegal<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Resting here is illegal. You'll need to find a bed.<br />
|-<br />
| sGold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Gold<br />
|-<br />
| sMove<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Move<br />
|-<br />
| sTo<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| to<br />
|-<br />
| sActorInCombat<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| This character is in combat.<br />
|-<br />
| sArmor<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Armor<br />
|-<br />
| sTopics<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Topics<br />
|-<br />
| sService<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Service<br />
|-<br />
| sPersuasion<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Persuasion<br />
|-<br />
| sBye<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Bye<br />
|-<br />
| sGoodbye<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Goodbye<br />
|-<br />
| sYes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Yes<br />
|-<br />
| sNo<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| No<br />
|-<br />
| sOn<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| On<br />
|-<br />
| sOff<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Off<br />
|-<br />
| sFull<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Full<br />
|-<br />
| sWorld<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| World<br />
|-<br />
| sExpelled<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| EXPELLED<br />
|-<br />
| sExpelledMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have been expelled from <br />
|-<br />
| sFavoriteSkills<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Favorite Skills<br />
|-<br />
| sGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Game<br />
|-<br />
| sVideo<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Video<br />
|-<br />
| sAudio<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Audio<br />
|-<br />
| sControls<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Controls<br />
|-<br />
| sPrefs<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Prefs<br />
|-<br />
| sPreferences<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Preferences<br />
|-<br />
| sNewGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| New Game<br />
|-<br />
| sExitGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Exit Game<br />
|-<br />
| sOptions<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Options Menu<br />
|-<br />
| sSaveGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Save Game<br />
|-<br />
| sLoadGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Load Game<br />
|-<br />
| sDeleteGame<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Delete Game<br />
|-<br />
| sSaveGameDenied<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot save your game right now.<br />
|-<br />
| sSaveGameFailed<br />
|<br />
| {{StatusCol|red|not started}}<br />
| An error was encountered while saving the game.<br />
|-<br />
| sSaveGameTooBig<br />
|<br />
| {{StatusCol|red|not started}}<br />
| There is not enough space to save this game. Free up at least %i blocks and try again.<br />
|-<br />
| sSaveGameNoMemory<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Unable to create Save Game. Free up 100 blocks and try again.<br />
|-<br />
| sMaximumSaveGameMessage<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|blue|removed}}<br />
| You have reached the limit of Morrowind saved games. Please delete a Morrowind saved game and try again.<br />
|-<br />
| sRender_Distance<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| View Distance<br />
|-<br />
| sNear<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Near<br />
|-<br />
| sFar<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Far<br />
|-<br />
| sGamma_Correction<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Gamma Correction<br />
|-<br />
| sLight_Gamma<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Light<br />
|-<br />
| sDark_Gamma<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Dark<br />
|-<br />
| sSeldom<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Seldom<br />
|-<br />
| sAlways<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Always<br />
|-<br />
| sWaterTerrainReflect<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Reflect Terrain<br />
|-<br />
| sWaterReflectUpdate<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Reflection Updating<br />
|-<br />
| fWaterReflectUpdateAlways<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0<br />
|-<br />
| fWaterReflectUpdateSeldom<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 10<br />
|-<br />
| sMaster<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Master<br />
|-<br />
| sVoice<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Voice<br />
|-<br />
| sEffects<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Effects<br />
|-<br />
| sFootsteps<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Footsteps<br />
|-<br />
| sMusic<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Music<br />
|-<br />
| sTransparency_Menu<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Menu Transparency<br />
|-<br />
| sMenu_Help_Delay<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Menu Help Delay<br />
|-<br />
| sAIDistance<br />
|<br />
| {{StatusCol|red|not started}}<br />
| AI Distance<br />
|-<br />
| sHigh<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| High<br />
|-<br />
| sLow<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Low<br />
|-<br />
| sDetail_Level<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Detail Level<br />
|-<br />
| sMenus<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Menus<br />
|-<br />
| sStrip<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Strip<br />
|-<br />
| sReturnToGame<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Return To Game<br />
|-<br />
| sForward<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Forward<br />
|-<br />
| sBack<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Back<br />
|-<br />
| sLeft<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Left<br />
|-<br />
| sRight<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Right<br />
|-<br />
| sUse<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Use<br />
|-<br />
| sActivate<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Activate<br />
|-<br />
| sReady_Weapon<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Ready Weapon<br />
|-<br />
| sReady_Magic<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Ready Magic<br />
|-<br />
| sCrouch_Sneak<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Sneak<br />
|-<br />
| sRun<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Run<br />
|-<br />
| sAlways_Run<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Always Run<br />
|-<br />
| sAuto_Run<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Auto Run<br />
|-<br />
| sJump<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Jump<br />
|-<br />
| sNextWeapon<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Next Weapon<br />
|-<br />
| sPrevWeapon<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Previous Weapon<br />
|-<br />
| sNextSpell<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Next Spell<br />
|-<br />
| sPrevSpell<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Previous Spell<br />
|-<br />
| sTogglePOVCmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Toggle POV<br />
|-<br />
| sMenu_Mode<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Menu Mode<br />
|-<br />
| sJournalCmd<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Journal<br />
|-<br />
| sRestKey<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Rest<br />
|-<br />
| sQuickMenu<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick Menu<br />
|-<br />
| sQuick1Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 1<br />
|-<br />
| sQuick2Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 2<br />
|-<br />
| sQuick3Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 3<br />
|-<br />
| sQuick4Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 4<br />
|-<br />
| sQuick5Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 5<br />
|-<br />
| sQuick6Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 6<br />
|-<br />
| sQuick7Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 7<br />
|-<br />
| sQuick8Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 8<br />
|-<br />
| sQuick9Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 9<br />
|-<br />
| sQuick10Cmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick 10<br />
|-<br />
| sQuickSaveCmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick Save<br />
|-<br />
| sQuickLoadCmd<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick Load<br />
|-<br />
| sForwardXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Move Forward<br />
|-<br />
| sBackXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Move Backward<br />
|-<br />
| sSlideLeftXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Slide Left<br />
|-<br />
| sSlideRightXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Slide Right<br />
|-<br />
| sMenuModeXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Menu Mode<br />
|-<br />
| sActivateXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Activate<br />
|-<br />
| sUseXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Use<br />
|-<br />
| sReadyItemXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Ready Item<br />
|-<br />
| sReadyMagicXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Ready Magic<br />
|-<br />
| sCrouchXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Sneak<br />
|-<br />
| sRunXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Run<br />
|-<br />
| sToggleRunXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Toggle Run<br />
|-<br />
| sJumpXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Jump<br />
|-<br />
| sTogglePOVXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Toggle View<br />
|-<br />
| sMenuNextXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Next Menu<br />
|-<br />
| sMenuPrevXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Previous Menu<br />
|-<br />
| sJournalXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Journal<br />
|-<br />
| sQuick4Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick4Xbox<br />
|-<br />
| sQuick5Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick5Xbox<br />
|-<br />
| sQuick6Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick6Xbox<br />
|-<br />
| sQuick7Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick7Xbox<br />
|-<br />
| sQuick8Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick8Xbox<br />
|-<br />
| sQuick9Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick9Xbox<br />
|-<br />
| sQuick0Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| sQuick0Xbox<br />
|-<br />
| sOptionsMenuXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Options Menu<br />
|-<br />
| sSystemMenuXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| System Menu<br />
|-<br />
| sRestMenuXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Rest/Wait<br />
|-<br />
| sQuickSaveXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Quick Save<br />
|-<br />
| sQuickLoadXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Quick Load<br />
|-<br />
| sMoveUpXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Move Up<br />
|-<br />
| sMoveDownXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Move Down<br />
|-<br />
| sLookUpXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Look Up<br />
|-<br />
| sLookDownXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Look Down<br />
|-<br />
| sTurnLeftXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Turn Left<br />
|-<br />
| sTurnRightXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Turn Right<br />
|-<br />
| sNextWeaponXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Next Weapon<br />
|-<br />
| sPrevWeaponXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Previous Weapon<br />
|-<br />
| sNextSpellXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Next Spell<br />
|-<br />
| sPrevSpellXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Previous Spell<br />
|-<br />
| sDialogText1Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| PUSH<br />
|-<br />
| sDialogText2Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| TO GO BACK<br />
|-<br />
| sDialogText3Xbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| TO READ MORE<br />
|-<br />
| sQuick_Save<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Auto-Save when Rest<br />
|-<br />
| sShadowText<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Real-time Shadows<br />
|-<br />
| sLockSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Lock pick success!<br />
|-<br />
| sLockFail<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Lock pick failed.<br />
|-<br />
| sLockImpossible<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Lock too complex.<br />
|-<br />
| sTrapSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Trap disarmed!<br />
|-<br />
| sTrapFail<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Disarm trap failed.<br />
|-<br />
| sTrapImpossible<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Trap too complex, your chance to disarm it is zero<br />
|-<br />
| sTrapped<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Trapped<br />
|-<br />
| sLockLevel<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Lock Level<br />
|-<br />
| sKeyUsed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| used to open lock<br />
|-<br />
| sUnlocked<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Unlocked<br />
|-<br />
| fRepairMult<br />
| [[Research:Trading_and_Services#Merchant_repair|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fRepairAmountMult<br />
| [[Research:Player_Craft_Skills#Armorer|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fSpellValueMult<br />
| [[Research:Trading_and_Services#Spell_merchant|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| fSpellMakingValueMult<br />
| [[Research:Trading_and_Services#Spell_merchant|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 7<br />
|-<br />
| fEnchantmentValueMult<br />
| [[Research:Trading_and_Services#Enchanting_merchant|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1000<br />
|-<br />
| fTravelMult<br />
| [[Research:Trading_and_Services#Physical_travel|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4000<br />
|-<br />
| fTravelTimeMult<br />
| [[Research:Trading_and_Services#Physical_travel|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 16000<br />
|-<br />
| fMagesGuildTravel<br />
| [[Research:Trading_and_Services#Guild_guide|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| sBarter<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Barter<br />
|-<br />
| sRepair<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Repair<br />
|-<br />
| sSpells<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spells<br />
|-<br />
| sTraining<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Training<br />
|-<br />
| sTravel<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Travel<br />
|-<br />
| sSpellmaking<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spellmaking<br />
|-<br />
| sEnchanting<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Enchanting<br />
|-<br />
| sJoystickNotFound<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Joystick not found.<br />
|-<br />
| sJournalEntry<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your journal has been updated.<br />
|-<br />
| sDay<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Day<br />
|-<br />
| sCreate<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Create<br />
|-<br />
| sIngredients<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Ingredients<br />
|-<br />
| sApparatus<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Apparatus<br />
|-<br />
| sCreatedEffects<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Created Effects<br />
|-<br />
| sOnetypeEffectMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| This effect has already been added.<br />
|-<br />
| sName<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Name<br />
|-<br />
| sNameTitle<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Name<br />
|-<br />
| sSelect<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Select<br />
|-<br />
| sBuy<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Buy<br />
|-<br />
| sInfo<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Info<br />
|-<br />
| sMagicEffects<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic Effects<br />
|-<br />
| sOnce<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Once<br />
|-<br />
| sCostCharge<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cost/Charge<br />
|-<br />
| sCostChance<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cost/Chance<br />
|-<br />
| sAttributesMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Choose an Attribute <br />
|-<br />
| sBirthsignmenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Abilities:<br />
|-<br />
| sBirthsignmenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spells:<br />
|-<br />
| sChooseClassMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Specialization:<br />
|-<br />
| sChooseClassMenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Favorite Attributes:<br />
|-<br />
| sChooseClassMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Major Skills:<br />
|-<br />
| sChooseClassMenu4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Minor Skills:<br />
|-<br />
| sCreateClassMenuWarning<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Reselect your class?<br />
|-<br />
| sClassChoiceMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Answer his questions (Generates Class)<br />
|-<br />
| sClassChoiceMenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Give him the info (Pick from Class List)<br />
|-<br />
| sClassChoiceMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Fill out forms yourself (Create Custom Class)<br />
|-<br />
| sNotifyMessage1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can only rest on solid ground.<br />
|-<br />
| sNotifyMessage2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can't rest here enemies are nearby.<br />
|-<br />
| sNotifyMessage3<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You cannot sleep when dreaming.<br />
|-<br />
| sNotifyMessage4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Saving...<br />
|-<br />
| sNotifyMessage4XBOX<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Saving. Please don't turn off your Xbox console.<br />
|-<br />
| sNotifyMessage5<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| You must place the object you are holding into a container before exiting menus.<br />
|-<br />
| sNotifyMessage6<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Only one of each ingredient can be used to make a potion.<br />
|-<br />
| sNotifyMessage6a<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| At least two ingredients are needed to make a potion.<br />
|-<br />
| sNotifyMessage7<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Only four ingredients can be used in a potion.<br />
|-<br />
| sNotifyMessage8<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your potion failed.<br />
|-<br />
| sNotifyMessage9<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your offer is refused.<br />
|-<br />
| sNotifyMessage10<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have to name the spell before buying it.<br />
|-<br />
| sNotifyMessage11<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have to have an item to enchant.<br />
|-<br />
| sNotifyMessage12<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You don't have enough gold to buy this spell.<br />
|-<br />
| sNotifyMessage13<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Beast races cannot wear full helmets.<br />
|-<br />
| sNotifyMessage14<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Beast races cannot wear boots.<br />
|-<br />
| sNotifyMessage15<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Beast races cannot wear shoes.<br />
|-<br />
| sNotifyMessage16<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You can only wear one clothing item at a time.<br />
|-<br />
| sNotifyMessage16_a<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You can only equip one item of that type at a time.<br />
|-<br />
| sNotifyMessage17<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot train a skill above its governing attribute.<br />
|-<br />
| sNotifyMessage18<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You don't have enough gold to buy this spell.<br />
|-<br />
| sNotifyMessage19<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Only one apparatus can be placed in each slot of the alchemy menu.<br />
|-<br />
| sNotifyMessage20<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please remove the object already in the mortar and pestle slot.<br />
|-<br />
| sNotifyMessage21<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please remove the object already in the alembic slot.<br />
|-<br />
| sNotifyMessage22<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please remove the object already in the calcinator slot.<br />
|-<br />
| sNotifyMessage23<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please remove the object already in the retort slot.<br />
|-<br />
| sNotifyMessage24<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need to assign all the major and minor skill slots.<br />
|-<br />
| sNotifyMessage25<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need to pick two favorite attributes.<br />
|-<br />
| sNotifyMessage26<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need to pick a specialization.<br />
|-<br />
| sNotifyMessage27<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need to assign all the major and minor skill slots.<br />
|-<br />
| sNotifyMessage28<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can only add eight effects to a spell.<br />
|-<br />
| sNotifyMessage29<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot add more enchantment to an object then it can hold.<br />
|-<br />
| sNotifyMessage30<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have to add at least one effect to a spell.<br />
|-<br />
| sNotifyMessage31<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Items already enchanted cannot have another enchantment added.<br />
|-<br />
| sNotifyMessage32<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Only soul gems with a soul can be put in the soul gem slot.<br />
|-<br />
| sNotifyMessage33<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Only soul gems put in the soul gem slot.<br />
|-<br />
| sNotifyMessage34<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The enchantment failed and your gem is destroyed.<br />
|-<br />
| sNotifyMessage35<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Only one apparatus item can be equipped at a time.<br />
|-<br />
| sNotifyMessage36<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have to distribute all you points before exiting.<br />
|-<br />
| sNotifyMessage37<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You need to type in your name.<br />
|-<br />
| sNotifyMessage38<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Skill Increase:<br />
|-<br />
| sNotifyMessage39<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your %s skill increased to %d.<br />
|-<br />
| sNotifyMessage40<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Skill Maximum Reached.<br />
|-<br />
| sNotifyMessage41<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Your %s skill has reached the limit of your %s.<br />
|-<br />
| sNotifyMessage42<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have been released after %d day.<br />
A skill has been affected by your time in prison.<br />
|-<br />
| sNotifyMessage43<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have been released after %d days.<br />
Your skills have been affected by your time in prison.<br />
|-<br />
| sNotifyMessage44<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your %s skill decreased to %d.<br />
|-<br />
| sNotifyMessage45<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You need a Mortar and Pestle to use<br />
|-<br />
| sNotifyMessage46<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need a Alembic to use<br />
|-<br />
| sNotifyMessage47<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need a Calcinator to use<br />
|-<br />
| sNotifyMessage48<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You need a Retort to use<br />
|-<br />
| sNotifyMessage49<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| That %s is mine.<br />
|-<br />
| sNotifyMessage50<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %s has no effect on you.<br />
|-<br />
| sNotifyMessage51<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The %s has been used up.<br />
|-<br />
| sNotifyMessage52<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You must have a soul gem with a soul to make an Enchanted Item<br />
|-<br />
| sNotifyMessage53<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Your menu sizes and positions have been saved for exploring mode.<br />
|-<br />
| sNotifyMessage54<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Do you want to start a new game and lose your current game?<br />
|-<br />
| sNotifyMessage55<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please reconnect the controller and press START to continue.<br />
|-<br />
| sNotifyMessage56<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| There's a problem with the disc you're using. It may be dirty or damaged. <br />
Press A to continue.<br />
|-<br />
| sNotifyMessage57<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Please press START to begin.<br />
|-<br />
| sNotifyMessage58<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Your Xbox Hard Disk doesn't have enough free blocks to save games. <br />
Press A to continue without saving <br />
or B to free more blocks.<br />
|-<br />
| sNotifyMessage59<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You are over-encumbered.<br />
|-<br />
| sNotifyMessage60<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %s has been added to your inventory.<br />
|-<br />
| sNotifyMessage61<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %d %s has been added to your inventory.<br />
|-<br />
| sNotifyMessage62<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %s has been removed from your inventory.<br />
|-<br />
| sNotifyMessage63<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %d %s has been removed from your inventory.<br />
|-<br />
| sNotifyMessage64<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can't sleep in someone else's bed!<br />
|-<br />
| sNotifyMessage65<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can't save a game with no name!<br />
|-<br />
| sNotifyMessage66<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| This will reset all controls to the default settings. Do you wish to continue?<br />
|-<br />
| sNotifyMessage67<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| This will immediately change your resolution. Do you want to continue?<br />
|-<br />
| sInPrisonTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Serving time...<br />
|-<br />
| sInfoRefusal<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Info Refusal<br />
|-<br />
| sAdmireSuccess<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Admire Success<br />
|-<br />
| sAdmireFail<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Admire Fail<br />
|-<br />
| sIntimidateSuccess<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Intimidate Success<br />
|-<br />
| sIntimidateFail<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Intimidate Fail<br />
|-<br />
| sTauntSuccess<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Taunt Success<br />
|-<br />
| sTauntFail<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Taunt Fail<br />
|-<br />
| sServiceRefusal<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Service Refusal<br />
|-<br />
| sBribeSuccess<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Bribe Success<br />
|-<br />
| sBribeFail<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Bribe Fail<br />
|-<br />
| sBookSkillMessage<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You have gained knowledge from this book. <br />
|-<br />
| sLoadingMessage1<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Loading Master/Plugin Files<br />
|-<br />
| sLoadingMessage2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Loading Interior<br />
|-<br />
| sLoadingMessage3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Loading Exterior<br />
|-<br />
| sLoadingMessage4<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Initializing Data...<br />
|-<br />
| sLoadingMessage5<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Parsing Quests...<br />
|-<br />
| sLoadingMessage9<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Clearing Data...<br />
|-<br />
| sLoadingMessage14<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Loading Save Game<br />
|-<br />
| sLoadingMessage15<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Loading (%s)<br />
|-<br />
| sInvalidSaveGameMsg<br />
|<br />
| {{StatusCol|red|not started}}<br />
| This file is an invalid Save Game.<br />
|-<br />
| sInvalidSaveGameMsgXBOX<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Unable to load saved game. Press A to continue.<br />
|-<br />
| sLoadingErrorsMsg<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Errors were encountered loading from file '%s'.<br />
|-<br />
| sMissingMastersMsg<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The currently selected master files and plugins do not match the ones used by this save game. Errors may occur during load or game play.<br />
Do you wish to continue?<br />
|-<br />
| sChangedMastersMsg<br />
|<br />
| {{StatusCol|red|not started}}<br />
| The selected master files and plugins may have changed since this save game was created. Errors may occur during load or game play.<br />
Do you wish to continue?<br />
|-<br />
| sMastPlugMismatchMsg<br />
|<br />
| {{StatusCol|red|not started}}<br />
| One of the files that "%s" is dependent on has changed since the last save.<br />
This may result in errors. Saving again will clear this message<br />
but not necessarily fix any errors.<br />
<br />
|-<br />
| sGeneralMastPlugMismatchMsg<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| One or more plugins could not find the correct versions of the master files they depend on. Errors may occur during load or game play. Check the "Warnings.txt" file for more information.<br />
|-<br />
| sLoadLastSaveMsg<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The most recent Save Game is '%s'. <br />
Would you like to load it?<br />
|-<br />
| sMessage1<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Do you want to Load a save game and lose your current game?<br />
|-<br />
| sMessage2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quit Morrowind?<br />
|-<br />
| sMessage3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Are you sure you want to delete this Save Game?<br />
|-<br />
| sMessage4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Are you sure you want to overwrite this Save Game?<br />
|-<br />
| sMessage5<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Do you wish to quit your current game? <br />
All unsaved progress will be lost.<br />
|-<br />
| sMessageQuestionAnswer1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your personality and past reflect a:<br />
|-<br />
| sMessageQuestionAnswer2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Accept this Class<br />
|-<br />
| sMessageQuestionAnswer3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Choose Another Class<br />
|-<br />
| sBarterDialog1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot afford this transaction.<br />
|-<br />
| sBarterDialog2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| I cannot afford this transaction.<br />
|-<br />
| sBarterDialog3<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| This is to heavy for you to carry.<br />
|-<br />
| sBarterDialog4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| I don't buy that item.<br />
|-<br />
| sBarterDialog5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Thank you, Please Come Again.<br />
|-<br />
| sBarterDialog6<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| You need to place the bartered item before existing Barter Menu!<br />
|-<br />
| sBarterDialog7<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Price<br />
|-<br />
| sBarterDialog8<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Offer<br />
|-<br />
| sBarterDialog9<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot sell summoned items!<br />
|-<br />
| sBarterDialog10<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| You cannot buy summoned items!<br />
|-<br />
| sBarterDialog11<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You need to trade items before making an offer.<br />
|-<br />
| sBarterDialog12<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot drop summoned items!<br />
|-<br />
| sInventoryMessage1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| This object is broken and cannot be equipped until fixed.<br />
|-<br />
| sInventoryMessage2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot repair items during battle.<br />
|-<br />
| sInventoryMessage3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot make potions during battle.<br />
|-<br />
| sInventoryMessage4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot read during battle.<br />
|-<br />
| sInventoryMessage5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot use soul gems during battle.<br />
|-<br />
| sContentsMessage1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot remove summoned items from their container.<br />
|-<br />
| sContentsMessage2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot place items in this container.<br />
|-<br />
| sContentsMessage3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The item will not fit.<br />
|-<br />
| sAttributeListTitle<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Attribute List<br />
|-<br />
| sConsoleTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Console<br />
|-<br />
| sCreateClassMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Class Description<br />
|-<br />
| sCreateClassMenu2<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Close the Description menu before leaving Class Creation<br />
|-<br />
| sCreateClassMenu3<br />
|<br />
| {{StatusCol|red|not started}}<br />
| The class needs a description.<br />
|-<br />
| sCreateClassMenuHelp1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You'll get +5 to all skills of your specialization. They'll also be easier to increase.<br />
|-<br />
| sCreateClassMenuHelp2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You'll get +10 to each of your favored attributes.<br />
|-<br />
| sControlsMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Reset Controls<br />
|-<br />
| sControlsMenu2<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Mouse Sensitivity<br />
|-<br />
| sControlsMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Press a key or push a button to set this command.<br />
|-<br />
| sControlsMenu4<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Vertical Sensitivity<br />
|-<br />
| sControlsMenu5<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Horizontal Sensitivity<br />
|-<br />
| sControlsMenu6<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Push a button to set this command.<br />
|-<br />
| sGameWithoutLauncherXbox<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| The game was started without the launcher. Press START to continue.<br />
|-<br />
| sDialogMenu1<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Final Disposition: <br />
|-<br />
| sEnchantmentMenu1<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Enchantment Menu<br />
|-<br />
| sEnchantmentMenu2<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Enchantment Name<br />
|-<br />
| sEnchantmentMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Enchantment<br />
|-<br />
| sEnchantmentMenu4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Point Cost<br />
|-<br />
| sEnchantmentMenu5<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Buy<br />
|-<br />
| sEnchantmentMenu6<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Chance<br />
|-<br />
| sEnchantmentMenu7<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Please remove the current soul gem before placing a different soul gem.<br />
|-<br />
| sEnchantmentMenu8<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot buy a spell that has a zero point cost.<br />
|-<br />
| sEnchantmentMenu9<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| You cannot enchant more then one item of that type at a time.<br />
|-<br />
| sEnchantmentMenu10<br />
|<br />
| {{StatusCol|red|not started}}<br />
| The cast cost cannot exceed the charge amount put into the time<br />
|-<br />
| sEnchantmentMenu11<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You must add at least one effect to an enchantment<br />
|-<br />
| sEnchantmentMenu12<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have successfully created an enchanted item<br />
|-<br />
| sEnchantmentHelp1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Slot for item to enchant. Only weapons, armor, scrolls and clothing that are not already enchanted can be enchanted.<br />
|-<br />
| sEnchantmentHelp2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Slot for the soul gem used to enchant an item. Only soul gems filled with a soul can be used. The soul amount is the total charge placed into the item.<br />
|-<br />
| sEnchantmentHelp3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The first number is the total amount the enchantment would cost to cast. The second number is the total enchantment cost that can be placed on this type of item.<br />
|-<br />
| sEnchantmentHelp4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The amount of charge points needed each time this enchantment is cast. This number is modified by your enchant skill.<br />
|-<br />
| sEnchantmentHelp5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The amount of soul in the soul gem in the soul gem slot<br />
|-<br />
| sEnchantmentHelp6<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Amount of gold to buy this enchantment<br />
|-<br />
| sEnchantmentHelp7<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Type of cast for the enchantment.<br />
|-<br />
| sEnchantmentHelp8<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Name you give the spell.<br />
|-<br />
| sEnchantmentHelp9<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic effects you know that you can add to an item<br />
|-<br />
| sEnchantmentHelp10<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Current effects on the item<br />
|-<br />
| sInputMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Enter<br />
|-<br />
| sInventoryMenu1<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| You cannot equip items being bartered.<br />
|-<br />
| sLevelUpMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have ascended to Level <br />
|-<br />
| sLevelUpMenu2<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| It's all suddenly obvious to you. You just have to concentrate. All the energy and time you've wasted is a sin, but without the experience you've gained, taking risks, taking responsibility for failure how could you have understood?<br />
|-<br />
| sLevelUpMenu3<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| x2<br />
|-<br />
| sLevelUpMenu4<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| x3<br />
|-<br />
| sLevelUpMsg<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You should rest and meditate on what you've learned.<br />
|-<br />
| sLevelUp<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Level Up<br />
|-<br />
| sRange<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Range<br />
|-<br />
| sArea<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Area<br />
|-<br />
| sMagnitude<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magnitude<br />
|-<br />
| sDuration<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Duration<br />
|-<br />
| sDrain<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Drain<br />
|-<br />
| sAbsorb<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Absorb<br />
|-<br />
| sFortify<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Fortify<br />
|-<br />
| sRestore<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Restore<br />
|-<br />
| sDamage<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Damage<br />
|-<br />
| spoint<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| pt<br />
|-<br />
| spoints<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| pts<br />
|-<br />
| spercent<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| %<br />
|-<br />
| sfor<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| for<br />
|-<br />
| ssecond<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| sec<br />
|-<br />
| sseconds<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| secs<br />
|-<br />
| sin<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| in<br />
|-<br />
| sfootarea<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| ft<br />
|-<br />
| sfeet<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| ft<br />
|-<br />
| sXTimes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| x<br />
|-<br />
| sXTimesINT<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| x INT<br />
|-<br />
| sonword<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| on<br />
|-<br />
| sNone<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| None<br />
|-<br />
| sDone<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Done<br />
|-<br />
| sStartCell<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Cavern of the Incarnate<br />
|-<br />
| sStartError<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Cannot start in an empty interior cell!<br />
|-<br />
| sStartCellError<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Starting interior cell "Cavern of the Incarnate" not found!<br />
|-<br />
| sAdmire<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Admire<br />
|-<br />
| sIntimidate<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Intimidate<br />
|-<br />
| sTaunt<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Taunt<br />
|-<br />
| sBribe 10 Gold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Bribe 10 Gold<br />
|-<br />
| sBribe 100 Gold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Bribe 100 Gold<br />
|-<br />
| sBribe 1000 Gold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Bribe 1000 Gold<br />
|-<br />
| sPersuasionMenuTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Persuasion<br />
|-<br />
| sFast<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Fast<br />
|-<br />
| sSlow<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Slow<br />
|-<br />
| sBestAttack<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Always Use Best Attack<br />
|-<br />
| sSubtitles<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Subtitles<br />
|-<br />
| sMouseFlip<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Invert Y Axis<br />
|-<br />
| sCursorOff<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Crosshair<br />
|-<br />
| sEnableJoystick<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Enable Joystick<br />
|-<br />
| sXStrafe<br />
|<br />
| {{StatusCol|red|not started}}<br />
| X-Axis Movement<br />
|-<br />
| sStrafe<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Strafe<br />
|-<br />
| sTurn<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Turn<br />
|-<br />
| sMouseWheelUpShort<br />
|<br />
| {{StatusCol|red|not started}}<br />
| MWheel Up<br />
|-<br />
| sMouseWheelDownShort<br />
|<br />
| {{StatusCol|red|not started}}<br />
| MWheel Down<br />
|-<br />
| sMouse<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Mouse<br />
|-<br />
| sJoystickShort<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Joy<br />
|-<br />
| sJoystickHatShort<br />
|<br />
| {{StatusCol|red|not started}}<br />
| JHat<br />
|-<br />
| sPickUp<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Take<br />
|-<br />
| sItemName<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Item Name<br />
|-<br />
| sNoName<br />
|<br />
| {{StatusCol|red|not started}}<br />
| NO NAME GIVEN!<br />
|-<br />
| sItem<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Item<br />
|-<br />
| sRaceMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Appearance<br />
|-<br />
| sRaceMenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Change Sex<br />
|-<br />
| sRaceMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Change Face<br />
|-<br />
| sRaceMenu4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Change Hair<br />
|-<br />
| sRaceMenu5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Race<br />
|-<br />
| sRaceMenu6<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Race Description<br />
|-<br />
| sRaceMenu7<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Specials<br />
|-<br />
| sRestMenu1<br />
|<br />
| {{StatusCol|red|not started}}<br />
| How many hours?<br />
|-<br />
| sRestMenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Hours<br />
|-<br />
| sRestMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| REST<br />
|-<br />
| sRestMenu4<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You can't rest right now.<br />
|-<br />
| fRestMagicMult<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.15<br />
|-<br />
| sSaveMenu1<br />
|<br />
| {{StatusCol|red|not started}}<br />
| New Save Game<br />
|-<br />
| sServiceRepairTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Repair Service Menu<br />
|-<br />
| sServiceTravelTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Travel<br />
|-<br />
| sServiceTrainingTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Training<br />
|-<br />
| sServiceTrainingWords<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| I can teach nothing more about that skill<br />
|-<br />
| sServiceSpellsTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spells<br />
|-<br />
| sSkillsMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Choose a Skill<br />
|-<br />
| sBonusSkillTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Skill Bonus<br />
|-<br />
| sSpecializationMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Choose a Specialization<br />
|-<br />
| sSpellmakingMenuTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spellmaking<br />
|-<br />
| sSpellmakingMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Spell Chance<br />
|-<br />
| sSpellmakingHelp1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Name you give the spell.<br />
|-<br />
| sSpellmakingHelp2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Amount of Magika one cast of the spell will cost<br />
|-<br />
| sSpellmakingHelp3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The chance you have to cast the spell at your current skill level<br />
|-<br />
| sSpellmakingHelp4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| How much gold the spell will cost you.<br />
|-<br />
| sSpellmakingHelp5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic effects you know that you can add to a spell<br />
|-<br />
| sSpellmakingHelp6<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Current effects on the spell<br />
|-<br />
| sKilledEssential<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| With this character's death, the thread of prophecy is severed. Restore a saved game to restore the weave of fate, or persist in the doomed world you have created.<br />
|-<br />
| sCrimeMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your crime has been reported!<br />
|-<br />
| sPotionSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You created a potion<br />
|-<br />
| sMagicItem<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic Items<br />
|-<br />
| sMagnitudeDes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The range of a spells power<br />
|-<br />
| sAreaDes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The radius the spell attempt to affect<br />
|-<br />
| sDurationDes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The length a spell lasts<br />
|-<br />
| sRangeDes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| What the spell is directed at such as yourself, a target or who you touch<br />
|-<br />
| sCrimeHelp<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The penalty you must pay for your crimes, if caught.<br />
|-<br />
| sSoulGem<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Soul<br />
|-<br />
| sCastCost<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cast Cost<br />
|-<br />
| sTravelServiceTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Select destination<br />
|-<br />
| sSpellServiceTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Select spell to buy<br />
|-<br />
| sRepairServiceTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Select item to repair<br />
|-<br />
| sTrainingServiceTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Select skill to train<br />
|-<br />
| sMortar<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Mortar<br />
|-<br />
| sCalcinator<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Calcinator<br />
|-<br />
| sAlembic<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Alembic<br />
|-<br />
| sRetort<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Retort<br />
|-<br />
| sQuestionMark<br />
|<br />
| {{StatusCol|red|not started}}<br />
| ?<br />
|-<br />
| s3dAudio<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 3D Audio<br />
|-<br />
| s3dHardware<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Hardware Accelerated<br />
|-<br />
| s3dSoftware<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|red|not started}}<br />
| Software Mode<br />
|-<br />
| sYourGold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| YOUR GOLD<br />
|-<br />
| sSellerGold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| SELLER GOLD<br />
|-<br />
| sTotalCost<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| TOTAL COST<br />
|-<br />
| sTotalSold<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| TOTAL SOLD<br />
|-<br />
| sOffer<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Offer<br />
|-<br />
| sLess<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Less<br />
|-<br />
| sMore<br />
|<br />
| {{StatusCol|red|not started}}<br />
| More<br />
|-<br />
| sInventory<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Inventory<br />
|-<br />
| sBookPageOne<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| 1<br />
|-<br />
| sBookPageTwo<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| 2<br />
|-<br />
| sDisposeofCorpse<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Dispose of Corpse<br />
|-<br />
| sCaughtStealingMessage<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Hey he's stealing my stuff!<br />
|-<br />
| sUserDefinedClass<br />
|<br />
| {{StatusCol|red|not started}}<br />
| User Defined Class<br />
|-<br />
| sAsk<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Ask<br />
|-<br />
| sEnchantItems<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Items to Enchant<br />
|-<br />
| sSoulGemsWithSouls<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Soul Gems with Souls<br />
|-<br />
| sDoYouWantTo<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Do you want to <br />
|-<br />
| sRechargeEnchantment<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Recharge Enchanted Item <br />
|-<br />
| sMake Enchantment<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Make an Enchanted Item <br />
|-<br />
| sSell<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Sell<br />
|-<br />
| sEquip<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Equip<br />
|-<br />
| sDrop<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Drop<br />
|-<br />
| sContainer<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Container <br />
|-<br />
| sStats<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Stats <br />
|-<br />
| sMap<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Map <br />
|-<br />
| sCenter<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Center <br />
|-<br />
| sSaveMenuHelp01<br />
|<br />
| {{StatusCol|red|not started}}<br />
| th of<br />
|-<br />
| sSaveMenuHelp02<br />
|<br />
| {{StatusCol|red|not started}}<br />
| month<br />
|-<br />
| sSaveMenuHelp03<br />
|<br />
| {{StatusCol|red|not started}}<br />
| day<br />
|-<br />
| sSaveMenuHelp04<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| a.m.<br />
|-<br />
| sSaveMenuHelp05<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| p.m.<br />
|-<br />
| sSaveMenuHelp06<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Delete Game?<br />
|-<br />
| sBlocks<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Blocks<br />
|-<br />
| sFileSize<br />
|<br />
| {{StatusCol|red|not started}}<br />
| File Size<br />
|-<br />
| sSave<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Save<br />
|-<br />
| sDeleteSpell<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Delete Spell<br />
|-<br />
| sQuestionDeleteSpell<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Are you sure you wish to delete %s?<br />
|-<br />
| sDeleteSpellError<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot delete this item from the Magic Menu<br />
|-<br />
| sLocal<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Local<br />
|-<br />
| sLoadFailedMessage<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Your last load failed. You must load another game or start a new game.<br />
|-<br />
| sShadows<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Shadows<br />
|-<br />
| sControlerVibration<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Controller Vibration<br />
|-<br />
| sQuanityMenuMessage01<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Amount to Sell<br />
|-<br />
| sQuanityMenuMessage02<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Amount to Buy<br />
|-<br />
| sSex<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Sex<br />
|-<br />
| sHair<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Hair<br />
|-<br />
| sFace<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Face<br />
|-<br />
| sRepairFailed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your repair failed!<br />
|-<br />
| sRepairSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your repair succeeded!<br />
|-<br />
| sHeal<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Heal<br />
|-<br />
| sgp<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| gp<br />
|-<br />
| sSetValueMessage01<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| The maximum magnitude cannot be less then the minimum magnitude!<br />
|-<br />
| sDelete<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Delete<br />
|-<br />
| sVideoWarning<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Warning: Video Resolution does not allow shadows.<br />
|-<br />
| sResChangeWarning<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Desired resolution not supported by video card.<br />
|-<br />
| sShift<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Shift<br />
|-<br />
| sBackspace<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Backspace<br />
|-<br />
| sCustomClassName<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Adventurer<br />
|-<br />
| sSpace<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Space<br />
|-<br />
| sInventorySelectNoItems<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You have no items to fill this slot.<br />
|-<br />
| sInventorySelectNoSoul<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have no filled Soul Gems<br />
|-<br />
| sInventorySelectNoIngredients<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You have no ingredients<br />
|-<br />
| sDisposeCorpseFail<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You can not remove this corpse<br />
|-<br />
| sQuickMenuTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Quick Keys<br />
|-<br />
| sQuickMenuInstruc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Click on quick key slot to add a spell, magic item or inventory item<br />
|-<br />
| sQuickMenu1<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Item to QuickKey<br />
|-<br />
| sQuickMenu2<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Inventory Menu Item<br />
|-<br />
| sQuickMenu3<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magic Menu Item<br />
|-<br />
| sQuickMenu4<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Delete QuickKey Item<br />
|-<br />
| sQuickMenu5<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You no longer have<br />
|-<br />
| sQuickMenu6<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Inventory Items to Quick key<br />
|-<br />
| sMagicSelectTitle<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Select a magic to Quick key.<br />
|-<br />
| sNextRank<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Next Rank:<br />
|-<br />
| sNeedOneSkill<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Need one skill at<br />
|-<br />
| sNeedTwoSkills<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Need two skills at<br />
|-<br />
| sand<br />
|<br />
| {{StatusCol|red|not started}}<br />
| and<br />
|-<br />
| sOneHanded<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| One Handed<br />
|-<br />
| sTwoHanded<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Two Handed<br />
|-<br />
| sType<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Type:<br />
|-<br />
| sAt<br />
|<br />
| {{StatusCol|red|not started}}<br />
| At<br />
|-<br />
| sUnequip<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Unequip<br />
|-<br />
| sScrolldown<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Scroll Down<br />
|-<br />
| sScrollup<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Scroll Up<br />
|-<br />
| sSleepInterrupt<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your rest has been interrupted.<br />
|-<br />
| sSoultrapSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your have trapped a soul<br />
|-<br />
| sCantEquipWeapWarning<br />
|<br />
| {{StatusCol|blue|removed, no longer a limitation}}<br />
| Finish your current attack before equipping a new weapon<br />
|-<br />
| sOfferMenuTitle<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Offer Menu<br />
|-<br />
| sPowers<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Powers<br />
|-<br />
| sBreath<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Breath<br />
|-<br />
| sDifficulty<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Difficulty<br />
|-<br />
| sEasy<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Easy<br />
|-<br />
| sHard<br />
| {{StatusCol|orange|reportedly missing in unpatched Morrowind 1.0}}<br />
| {{StatusCol|green|implemented}}<br />
| Hard<br />
|-<br />
| sAttributeStrength<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Strength<br />
|-<br />
| sAttributeIntelligence<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Intelligence<br />
|-<br />
| sAttributeWillpower<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Willpower<br />
|-<br />
| sAttributeAgility<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Agility<br />
|-<br />
| sAttributeSpeed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Speed<br />
|-<br />
| sAttributeEndurance<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Endurance<br />
|-<br />
| sAttributePersonality<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Personality<br />
|-<br />
| sAttributeLuck<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Luck<br />
|-<br />
| sHealth<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Health<br />
|-<br />
| sRace<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Race<br />
|-<br />
| sLevel<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Level<br />
|-<br />
| sLevels<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Levels<br />
|-<br />
| sFaction<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Faction<br />
|-<br />
| sBirthSign<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Sign<br />
|-<br />
| sBounty<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Bounty<br />
|-<br />
| sReputation<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Reputation<br />
|-<br />
| sSchool<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| School<br />
|-<br />
| sSkill<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Skill<br />
|-<br />
| sSkillProgress<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Progress towards skill increase<br />
|-<br />
| sSkillMaxReached<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Maximum proficiency has been reached.<br />
|-<br />
| sLevelProgress<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Progress towards level increase<br />
|-<br />
| sMagic<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Magicka<br />
|-<br />
| sMagicMenu<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Magic<br />
|-<br />
| sFatigue<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Fatigue<br />
|-<br />
| sSkillsMenuReputationHelp<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your fame rating in the world of Morrowind.<br />
|-<br />
| sStrDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects your starting Health, how much you can carry, your maximum Fatigue, and how much damage you do in melee.<br />
|-<br />
| sIntDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Determines your maximum amount of Magicka.<br />
|-<br />
| sWilDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects your ability to resist magic, and your maximum Fatigue.<br />
|-<br />
| sAgiDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects your ability to dodge and hit targets in melee as well as your maximum Fatigue.<br />
|-<br />
| sSpdDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Determines how fast you can move.<br />
|-<br />
| sEndDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects your starting Health, your Health gain per level, and your maximum Fatigue.<br />
|-<br />
| sPerDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects your ability to deal with other characters and how much they like you.<br />
|-<br />
| sLucDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Affects every action you do in a small way.<br />
|-<br />
| sFatDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| How tired you are. Low fatigue makes it harder to successfully perform actions.<br />
|-<br />
| sHealthDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| The amount of damage you can take before you die. Increases every time you gain a level.<br />
|-<br />
| sMagDesc<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Used to cast spells. Magicka is naturally restored by resting.<br />
|-<br />
| fWortChanceValue<br />
| [[Research:Player_Craft_Skills#Wortcraft|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 15<br />
|-<br />
| sDefaultCellname<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Wilderness<br />
|-<br />
| fMinWalkSpeed<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| fMaxWalkSpeed<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 200<br />
|-<br />
| fMinWalkSpeedCreature<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fMaxWalkSpeedCreature<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 300<br />
|-<br />
| fEncumberedMoveEffect<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.3<br />
|-<br />
| fBaseRunMultiplier<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.75<br />
|-<br />
| fAthleticsRunBonus<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fJumpAcrobaticsBase<br />
| [[Research:Movement#On_jumping|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 128<br />
|-<br />
| fJumpAcroMultiplier<br />
| [[Research:Movement#On_jumping|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| fJumpEncumbranceBase<br />
| [[Research:Movement#On_jumping|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fJumpEncumbranceMultiplier<br />
| [[Research:Movement#On_jumping|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fJumpRunMultiplier<br />
| [[Research:Movement#On_jumping|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fJumpMoveBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fJumpMoveMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fSwimWalkBase<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0.5<br />
|-<br />
| fSwimRunBase<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fSwimWalkAthleticsMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0.02<br />
|-<br />
| fSwimRunAthleticsMult<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fSwimHeightScale<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.9<br />
|-<br />
| fHoldBreathTime<br />
| used; numerous use cases<br />
| {{StatusCol|green|implemented}}<br />
| 20<br />
|-<br />
| fHoldBreathEndMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0.5<br />
|-<br />
| fSuffocationDamage<br />
| used<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fMinFlySpeed<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fMaxFlySpeed<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 300<br />
|-<br />
| fStromWindSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.7<br />
|-<br />
| fStromWalkMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.25<br />
|-<br />
| fFallDamageDistanceMin<br />
| [[Research:Movement#On_landing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 400<br />
|-<br />
| fFallDistanceBase<br />
| [[Research:Movement#On_landing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFallDistanceMult<br />
| [[Research:Movement#On_landing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.07<br />
|-<br />
| fFallAcroBase<br />
| [[Research:Movement#On_landing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.25<br />
|-<br />
| fFallAcroMult<br />
| [[Research:Movement#On_landing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.01<br />
|-<br />
| iMaxActivateDist<br />
| used with all raycasts for player actions<br />
| {{StatusCol|green|implemented}}<br />
| 192<br />
|-<br />
| iMaxInfoDist<br />
| used; maximum distance for entity info popup<br />
| {{StatusCol|red|not started}}<br />
| 192<br />
|-<br />
| fVanityDelay<br />
| used; camera controller<br />
| {{StatusCol|green|implemented}}<br />
| 30<br />
|-<br />
| fMaxHeadTrackDistance<br />
| used; actor controller<br />
| {{StatusCol|green|implemented}}<br />
| 400<br />
|-<br />
| fInteriorHeadTrackMult<br />
| used; actor controller<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| iHelmWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iPauldronWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iCuirassWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 30<br />
|-<br />
| iGauntletWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iGreavesWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 15<br />
|-<br />
| iBootsWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 20<br />
|-<br />
| iShieldWeight<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 15<br />
|-<br />
| fLightMaxMod<br />
| [[Research:Combat#Determining_armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.6<br />
|-<br />
| fMedMaxMod<br />
| [[Research:Combat#Determining_armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.9<br />
|-<br />
| fUnarmoredBase1<br />
| [[Research:Combat#Armor_rating|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fUnarmoredBase2<br />
| [[Research:Combat#Armor_rating|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.065<br />
|-<br />
| iBaseArmorSkill<br />
| [[Research:Combat#Armor_rating_and_Armor_class|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 30<br />
|-<br />
| fBlockStillBonus<br />
| unused; [[Research:Combat#Blocking_with_a_shield|resolution possible]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.25<br />
|-<br />
| fDamageStrengthBase<br />
| [[Research:Combat#Damage|unused, resolution possible]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fDamageStrengthMult<br />
| [[Research:Combat#Damage|unused, resolution possible]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fSwingBlockBase<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fSwingBlockMult<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fFatigueBase<br />
| used; used in calculating fatigueTerm<br />
| {{StatusCol|green|implemented}}<br />
| 1.25<br />
|-<br />
| fFatigueMult<br />
| used; used in calculating fatigueTerm<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fFatigueReturnBase<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2.5<br />
|-<br />
| fFatigueReturnMult<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.02<br />
|-<br />
| fEndFatigueMult<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.04<br />
|-<br />
| fFatigueAttackBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| fFatigueAttackMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fWeaponFatigueMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.25<br />
|-<br />
| fFatigueBlockBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| fFatigueBlockMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fWeaponFatigueBlockMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fFatigueRunBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fFatigueRunMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| fFatigueJumpBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fFatigueJumpMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFatigueSwimWalkBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 2.5<br />
|-<br />
| fFatigueSwimRunBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 7<br />
|-<br />
| fFatigueSwimWalkMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFatigueSwimRunMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFatigueSneakBase<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fFatigueSneakMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fMinHandToHandMult<br />
| [[Research:Combat#Damage|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fMaxHandToHandMult<br />
| [[Research:Combat#Damage|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fHandtoHandHealthPer<br />
| [[Research:Combat#Physical_contact|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fCombatInvisoMult<br />
| [[Research:Combat#Hit_Chance|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.2<br />
|-<br />
| fCombatKODamageMult<br />
| [[Research:Combat#Physical_contact|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fCombatCriticalStrikeMult<br />
| [[Research:Combat#Physical_contact|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| iBlockMinChance<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iBlockMaxChance<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| fLevelUpHealthEndMult<br />
| [[Research:Stats_and_Levelling#HP|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fSoulGemMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fEffectCostMult<br />
| used; numerous use cases<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fSpellPriceMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 2<br />
|-<br />
| fFatigueSpellBase<br />
| [[Research:Magic#Cast_cost|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFatigueSpellMult<br />
| [[Research:Magic#Cast_cost|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fFatigueSpellCostMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|blue|removed}}<br />
| 0<br />
|-<br />
| fPotionStrengthMult<br />
| [[Research:Player_Craft_Skills#Potions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fPotionT1MagMult<br />
| [[Research:Player_Craft_Skills#Potions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fPotionT1DurMult<br />
| [[Research:Player_Craft_Skills#Potions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fPotionMinUsefulDuration<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 20<br />
|-<br />
| fPotionT4BaseStrengthMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 20<br />
|-<br />
| fPotionT4EquipStrengthMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 12<br />
|-<br />
| fIngredientMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemCostMult<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemPriceMult<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemOnceMult<br />
| unused, resolution possible<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemUsedMult<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemStrikeMult<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fMagicItemConstantMult<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fEnchantmentMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fEnchantmentChanceMult<br />
| [[Research:Trading_and_Services#Enchanting_merchant|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fPCbaseMagickaMult<br />
| [[Research:Stats_and_Levelling#Magicka_multiplier|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fNPCbaseMagickaMult<br />
| [[Research:Stats_and_Levelling#Magicka_multiplier|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| fAutoSpellChance<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 80<br />
|-<br />
| fAutoPCSpellChance<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| iAutoSpellTimesCanCast<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| iAutoSpellAttSkillMin<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 70<br />
|-<br />
| iAutoSpellAlterationMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iAutoSpellConjurationMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iAutoSpellDestructionMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iAutoSpellIllusionMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iAutoSpellMysticismMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iAutoSpellRestorationMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iAutoPCSpellMax<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Spells|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| iAutoRepFacMod<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Stats|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iAutoRepLevMod<br />
| [[Research:Stats_and_Levelling#NPC_Auto-calculate_Stats|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| iMagicItemChargeOnce<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| iMagicItemChargeConst<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 10<br />
|-<br />
| iMagicItemChargeUse<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 5<br />
|-<br />
| iMagicItemChargeStrike<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 10<br />
|-<br />
| iMonthsToRespawn<br />
| [[Research:World#Container_respawning|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| fCorpseClearDelay<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 72<br />
|-<br />
| fCorpseRespawnDelay<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 72<br />
|-<br />
| fBarterGoldResetDelay<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 24<br />
|-<br />
| fEncumbranceStrMult<br />
| [[Research:Stats_and_Levelling#Encumbrance|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fPickLockMult<br />
| [[Research:Security_and_Crime#Security|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -1<br />
|-<br />
| fTrapCostMult<br />
| [[Research:Security_and_Crime#Security|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fMessageTimePerChar<br />
| used; pop-up message UI<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fMagicItemRechargePerSecond<br />
| [[Research:Magic#Natural_recharge|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.05<br />
|-<br />
| i1stPersonSneakDelta<br />
| used; camera height difference while sneaking<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iBarterSuccessDisposition<br />
| [[Research:Trading_and_Services#Bartering|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iBarterFailDisposition<br />
| [[Research:Trading_and_Services#Bartering|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -1<br />
|-<br />
| iLevelupTotal<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iLevelupMajorMult<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iLevelupMinorMult<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iLevelupMajorMultAttribute<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iLevelupMinorMultAttribute<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iLevelupMiscMultAttriubte<br />
| [[Research:Stats_and_Levelling#Player_level_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iLevelupSpecialization<br />
| {{StatusCol|orange|used; may not have any gameplay effect}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| iLevelUp01Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iLevelUp02Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iLevelUp03Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iLevelUp04Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| iLevelUp05Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| iLevelUp06Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| iLevelUp07Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| iLevelUp08Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| iLevelUp09Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 4<br />
|-<br />
| iLevelUp10Mult<br />
| [[Research:Stats_and_Levelling#Levelling_up|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iSoulAmountForConstantEffect<br />
| {{StatusCol|orange|used, un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 400<br />
|-<br />
| fConstantEffectMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 15<br />
|-<br />
| fEnchantmentConstantDurationMult<br />
| [[Research:Trading_and_Services#Enchanting_merchant|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| fEnchantmentConstantChanceMult<br />
| [[Research:Player_Craft_Skills#Self-enchanting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fWeaponDamageMult<br />
| [[Research:Combat#Weapon_wear|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fSeriousWoundMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0<br />
|-<br />
| fKnockDownMult<br />
| [[Research:Combat#Knockdowns|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| iKnockDownOddsBase<br />
| [[Research:Combat#Knockdowns|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| iKnockDownOddsMult<br />
| [[Research:Combat#Knockdowns|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| fCombatArmorMinMult<br />
| [[Research:Combat#Armor_mitigation|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.25<br />
|-<br />
| fHandToHandReach<br />
| used; combat system<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fVoiceIdleOdds<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iVoiceAttackOdds<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 10<br />
|-<br />
| iVoiceHitOdds<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 30<br />
|-<br />
| fProjectileMinSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 400<br />
|-<br />
| fProjectileMaxSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 3000<br />
|-<br />
| fThrownWeaponMinSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 300<br />
|-<br />
| fThrownWeaponMaxSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|Implemented}}<br />
| 1000<br />
|-<br />
| fTargetSpellMaxSpeed<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 1000<br />
|-<br />
| fProjectileThrownStoreChance<br />
| used; % chance of recovery<br />
| {{StatusCol|green|Implemented}}<br />
| 25<br />
|-<br />
| iPickMinChance<br />
| [[Research:Security_and_Crime#Pickpocketing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iPickMaxChance<br />
| [[Research:Security_and_Crime#Pickpocketing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 75<br />
|-<br />
| fDispRaceMod<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fDispPersonalityMult<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fDispPersonalityBase<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| fDispFactionMod<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fDispFactionRankBase<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fDispFactionRankMult<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fDispCrimeMod<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0<br />
|-<br />
| fDispDiseaseMod<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -10<br />
|-<br />
| iDispAttackMod<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -50<br />
|-<br />
| fDispWeaponDrawn<br />
| [[Research:Disposition_and_Persuasion#Disposition|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -5<br />
|-<br />
| fDispBargainSuccessMod<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fDispBargainFailMod<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| -1<br />
|-<br />
| fDispPickPocketMod<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -25<br />
|-<br />
| iDaysinPrisonMod<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| fDispAttacking<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -10<br />
|-<br />
| fDispStealing<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -0.5<br />
|-<br />
| iDispTresspass<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -20<br />
|-<br />
| iDispKilling<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|Implemented}}<br />
| -50<br />
|-<br />
| iTrainingMod<br />
| [[Research:Trading_and_Services#Trainers|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| iAlchemyMod<br />
| [[Research:Player_Craft_Skills#Potions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2<br />
|-<br />
| fBargainOfferBase<br />
| [[Research:Trading_and_Services#Bartering|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| fBargainOfferMulti<br />
| [[Research:Trading_and_Services#Bartering|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -4<br />
|-<br />
| fDispositionMod<br />
| [[Research:Trading_and_Services#Bartering|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fPersonalityMod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fLuckMod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| fReputationMod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fLevelMod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fBribe10Mod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 35<br />
|-<br />
| fBribe100Mod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 75<br />
|-<br />
| fBribe1000Mod<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 150<br />
|-<br />
| fPerDieRollMult<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.3<br />
|-<br />
| fPerTempMult<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iPerMinChance<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iPerMinChange<br />
| [[Research:Disposition_and_Persuasion#Persuasion|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| fSpecialSkillBonus<br />
| [[Research:Stats_and_Levelling#Skill_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.8<br />
|-<br />
| fMajorSkillBonus<br />
| [[Research:Stats_and_Levelling#Skill_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.75<br />
|-<br />
| fMinorSkillBonus<br />
| [[Research:Stats_and_Levelling#Skill_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fMiscSkillBonus<br />
| [[Research:Stats_and_Levelling#Skill_progress|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.25<br />
|-<br />
| iAlarmKilling<br />
| {{StatusCol|red|unused}}<br />
| <br />
| 90<br />
|-<br />
| iAlarmAttack<br />
| {{StatusCol|red|unused}}<br />
| <br />
| 50<br />
|-<br />
| iAlarmStealing<br />
| {{StatusCol|red|unused}}<br />
| <br />
| 1<br />
|-<br />
| iAlarmPickPocket<br />
| {{StatusCol|red|unused}}<br />
| <br />
| 20<br />
|-<br />
| iAlarmTresspass<br />
| {{StatusCol|red|unused}}<br />
| <br />
| 5<br />
|-<br />
| fAlarmRadius<br />
| used; AI controller<br />
| {{StatusCol|green|implemented}}<br />
| 2000<br />
|-<br />
| iCrimeKilling<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1000<br />
|-<br />
| iCrimeAttack<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 40<br />
|-<br />
| fCrimeStealing<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| iCrimePickPocket<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 25<br />
|-<br />
| iCrimeTresspass<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| iCrimeThreshold<br />
| [[Research:Security_and_Crime#Guard_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1000<br />
|-<br />
| iCrimeThresholdMultiplier<br />
| [[Research:Security_and_Crime#Guard_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| fCrimeGoldDiscountMult<br />
| [[Research:Security_and_Crime#Thieves_Guild_reductions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fCrimeGoldTurnInMult<br />
| [[Research:Security_and_Crime#Thieves_Guild_reductions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.9<br />
|-<br />
| iFightAttack<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| iFightAttacking<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| iFightDistanceBase<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 20<br />
|-<br />
| fFightDistanceMultiplier<br />
| [[Research:NPC_AI_Behaviour#Decision_scan|use 1]], [[Research:Security_and_Crime#NPC_reactions|use 2]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.005<br />
|-<br />
| iFightAlarmMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fFightDispMult<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.2<br />
|-<br />
| fFightStealing<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| iFightPickpocket<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 25<br />
|-<br />
| iFightTrespass<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 25<br />
|-<br />
| iFightKilling<br />
| [[Research:Security_and_Crime#NPC_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| iFlee<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0<br />
|-<br />
| iGreetDistanceMultiplier<br />
| [[Research:NPC_AI_Behaviour#General_behaviour|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 6<br />
|-<br />
| iGreetDuration<br />
| used; AI dialog system<br />
| {{StatusCol|red|not started}}<br />
| 4<br />
|-<br />
| fGreetDistanceReset<br />
| used; NPC controller<br />
| {{StatusCol|red|not started}}<br />
| 512<br />
|-<br />
| fIdleChanceMultiplier<br />
| used; multiplies AIWander idle parameters<br />
| {{StatusCol|green|implemented}}<br />
| 0.75<br />
|-<br />
| fSneakUseDist<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 500<br />
|-<br />
| fSneakUseDelay<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fSneakDistanceBase<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fSneakDistanceMultiplier<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.002<br />
|-<br />
| fSneakSpeedMultiplier<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.75<br />
|-<br />
| fSneakViewMult<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fSneakNoViewMult<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fSneakSkillMult<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fSneakBootMult<br />
| [[Research:NPC_AI_Behaviour#NPC_awareness_check|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -1<br />
|-<br />
| fCombatDistance<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 128<br />
|-<br />
| fCombatAngleXY<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 60<br />
|-<br />
| fCombatAngleZ<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 60<br />
|-<br />
| fCombatForceSideAngle<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 30<br />
|-<br />
| fCombatTorsoSideAngle<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 45<br />
|-<br />
| fCombatTorsoStartPercent<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0.3<br />
|-<br />
| fCombatTorsoStopPercent<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 0.8<br />
|-<br />
| fCombatBlockLeftAngle<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| -90<br />
|-<br />
| fCombatBlockRightAngle<br />
| [[Research:Combat#Blocking_with_a_shield|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 30<br />
|-<br />
| fCombatDelayCreature<br />
| [[Research:NPC_AI_Behaviour#Attack_frequency|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| fCombatDelayNPC<br />
| [[Research:NPC_AI_Behaviour#Attack_frequency|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| sTargetCriticalStrike<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Critical Damage!<br />
|-<br />
| fAIMeleeWeaponMult<br />
| used<br />
| {{StatusCol|red|not started}}<br />
| 2<br />
|-<br />
| fAIRangeMeleeWeaponMult<br />
| used<br />
| {{StatusCol|red|not started}}<br />
| 5<br />
|-<br />
| fAIMagicSpellMult<br />
| used<br />
| {{StatusCol|red|not started}}<br />
| 3<br />
|-<br />
| fAIRangeMagicSpellMult<br />
| used<br />
| {{StatusCol|red|not started}}<br />
| 5<br />
|-<br />
| fAIMeleeArmorMult<br />
| used<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fAIMeleeSummWeaponMult<br />
| {{StatusCol|red|unused}}<br />
| {{StatusCol|red|not started}}<br />
| 1<br />
|-<br />
| fAIFleeHealthMult<br />
| used<br />
| {{StatusCol|red|not started}}<br />
| 7<br />
|-<br />
| fAIFleeFleeMult<br />
| used<br />
| {{StatusCol|red|not started}}<br />
| 0.3<br />
|-<br />
| fPickPocketMod<br />
| [[Research:Security_and_Crime#Pickpocketing|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.3<br />
|-<br />
| fSleepRandMod<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.25<br />
|-<br />
| fSleepRestMod<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.3<br />
|-<br />
| iNumberCreatures<br />
| [[Research:Stats_and_Levelling#Resting|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1<br />
|-<br />
| fAudioDefaultMinDistance<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| fAudioDefaultMaxDistance<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 40<br />
|-<br />
| fAudioVoiceDefaultMinDistance<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 10<br />
|-<br />
| fAudioVoiceDefaultMaxDistance<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 60<br />
|-<br />
| fAudioMinDistanceMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 20<br />
|-<br />
| fAudioMaxDistanceMult<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|green|implemented}}<br />
| 50<br />
|-<br />
| fNPCHealthBarTime<br />
| used; target health UI. reportedly missing in unpatched Morrowind 1.0<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fNPCHealthBarFade<br />
| used; target health UI. reportedly missing in unpatched Morrowind 1.0<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| fDifficultyMult<br />
| [[Research:Combat#Difficulty_multiplier|used]]. reportedly missing in unpatched Morrowind 1.0<br />
| {{StatusCol|green|implemented}}<br />
| 5<br />
|-<br />
| sSchoolAlteration<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Alteration<br />
|-<br />
| sSchoolConjuration<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Conjuration<br />
|-<br />
| sSchoolDestruction<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Destruction<br />
|-<br />
| sSchoolIllusion<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Illusion<br />
|-<br />
| sSchoolMysticism<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Mysticism<br />
|-<br />
| sSchoolRestoration<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Restoration<br />
|-<br />
| sTypeSpell<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Spells<br />
|-<br />
| sTypeAbility<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Abilities<br />
|-<br />
| sTypeBlightDisease<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Blight Disease<br />
|-<br />
| sTypeDisease<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Disease<br />
|-<br />
| sTypeCurse<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Curse<br />
|-<br />
| sTypePower<br />
|<br />
| {{StatusCol|red|not started}}<br />
| Powers<br />
|-<br />
| sItemCastOnce<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cast Once<br />
|-<br />
| sItemCastWhenStrikes<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cast When Strikes<br />
|-<br />
| sItemCastWhenUsed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Cast When Used<br />
|-<br />
| sItemCastConstant<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Constant Effect<br />
|-<br />
| sRangeSelf<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Self<br />
|-<br />
| sRangeTouch<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Touch<br />
|-<br />
| sRangeTarget<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Target<br />
|-<br />
| sMagicSkillFail<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You failed casting the spell.<br />
|-<br />
| sMagicInsufficientSP<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You do not have enough Magicka to cast the spell.<br />
|-<br />
| sMagicInsufficientCharge<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Item does not have enough charge.<br />
|-<br />
| sPowerAlreadyUsed<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You already used that power today.<br />
|-<br />
| sMagicInvalidTarget<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your spell did not get a target.<br />
|-<br />
| sMagicLockSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your spell has locked its target.<br />
|-<br />
| sMagicOpenSuccess<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your spell has unlocked its target.<br />
|-<br />
| sMagicTargetResistsWeapons<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your weapon has no effect.<br />
|-<br />
| sMagicContractDisease<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have contracted %s<br />
|-<br />
| fMagicDetectRefreshRate<br />
| used; detect spells<br />
| {{StatusCol|red|not started}}<br />
| 0.016667<br />
|-<br />
| fMagicStartIconBlink<br />
| used; spell effect UI elements<br />
| {{StatusCol|green|implemented}}<br />
| 3<br />
|-<br />
| fMagicCreatureCastDelay<br />
|<br />
| {{StatusCol|red|not started}}<br />
| 1.5<br />
|-<br />
| fDiseaseXferChance<br />
| [[Research:Combat#Disease_transfer|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 2.5<br />
|-<br />
| fElementalShieldMult<br />
| [[Research:Combat#Hit_reactions|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.1<br />
|-<br />
| sMagicCorprusWorsens<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your case of Corprus has worsened.<br />
|-<br />
| sMagicCannotRecast<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You cannot re-cast this spell while it is still in effect.<br />
|-<br />
| fMagicSunBlockedMult<br />
| [[Research:Magic#Sun_Damage|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 0.5<br />
|-<br />
| sMagicPCResisted<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You resisted magic.<br />
|-<br />
| sMagicTargetResisted<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Target resisted magic.<br />
|-<br />
| sMagicInvalidEffect<br />
|<br />
| {{StatusCol|red|not started}}<br />
| You cannot cast this effect right now.<br />
|-<br />
| sAcrobat<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Acrobat<br />
|-<br />
| sAgent<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Agent<br />
|-<br />
| sArcher<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Archer<br />
|-<br />
| sAssassin<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Assassin<br />
|-<br />
| sBarbarian<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Barbarian<br />
|-<br />
| sBard<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Bard<br />
|-<br />
| sBattlemage<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Battlemage<br />
|-<br />
| sCrusader<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Crusader<br />
|-<br />
| sCustom<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Custom<br />
|-<br />
| sHealer<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Healer<br />
|-<br />
| sKnight<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Knight<br />
|-<br />
| sMage<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Mage<br />
|-<br />
| sMonk<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Monk<br />
|-<br />
| sNightblade<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Nightblade<br />
|-<br />
| sPilgrim<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Pilgrim<br />
|-<br />
| sRogue<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Rogue<br />
|-<br />
| sScout<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Scout<br />
|-<br />
| sSorceror<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Sorcerer<br />
|-<br />
| sSpellsword<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Spellsword<br />
|-<br />
| sThief<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Thief<br />
|-<br />
| sWarrior<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Warrior<br />
|-<br />
| sWitchhunter<br />
|<br />
| {{StatusCol|blue|removed}}<br />
| Witchhunter<br />
|-<br />
| fFleeDistance<br />
| used; AI controller. reportedly missing in unpatched Morrowind 1.0<br />
| {{StatusCol|red|not started}}<br />
| 3000<br />
|-<br />
| fCombatDistanceWerewolfMod<br />
| {{StatusCol|orange|used; un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 0.3<br />
|-<br />
| iWereWolfBounty<br />
| [[Research:Security_and_Crime#Bounties|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 10000<br />
|-<br />
| fWereWolfSilverWeaponDamageMult<br />
| [[Research:Combat#Physical_contact|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| fWereWolfRunMult<br />
| [[Research:Movement#Actor_target_speeds|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 1.5<br />
|-<br />
| sProfitValue<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Profit:<br />
|-<br />
| sCompanionShare<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Share<br />
|-<br />
| sCompanionWarningMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Your mercenary is poorer now than when he contracted with you. Your mercenary will quit if you do not give him gold or goods to bring his Profit to a positive value.<br />
|-<br />
| sCompanionWarningButtonOne<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Let the mercenary quit.<br />
|-<br />
| sCompanionWarningButtonTwo<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Return to Companion Share display.<br />
|-<br />
| sDeleteNote<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Delete Note?<br />
|-<br />
| sEditNote<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Edit Note<br />
|-<br />
| sWerewolfRefusal<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot do this as a werewolf.<br />
|-<br />
| sWerewolfPopup<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Werewolf<br />
|-<br />
| sWerewolfRestMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You cannot rest in werewolf form.<br />
|-<br />
| sWerewolfAlarmMessage<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| You have been detected changing from a werewolf state.<br />
|-<br />
| sTeleportDisabled<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Teleportation magic does not work here.<br />
|-<br />
| sLevitateDisabled<br />
|<br />
| {{StatusCol|green|implemented}}<br />
| Levitation magic does not work here.<br />
|-<br />
| iWereWolfLevelToAttack<br />
| {{StatusCol|orange|used, un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 20<br />
|-<br />
| iWereWolfFightMod<br />
| [[Research:NPC_AI_Behaviour#General_behaviour|used]]<br />
| {{StatusCol|green|implemented}}<br />
| 100<br />
|-<br />
| iWereWolfFleeMod<br />
| {{StatusCol|orange|used, un-researched}}<br />
| {{StatusCol|red|not started}}<br />
| 100<br />
|}<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:World&diff=2411
Research:World
2015-11-19T19:03:34Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
===Container respawning===<br />
<br />
Respawn-flagged containers respawn on a global schedule. The global script variable, MonthsToRespawn is decremented at the end of each month. When it reaches zero, it is reset to iMonthsToRespawn and all respawning containers are refilled.<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Weather&diff=2410
Research:Weather
2015-11-19T19:03:08Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Sun glare==<br />
{{Formula<br />
|During day hours<br />
|Rendering the sun glare overlay<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Needs verification}}}}<br />
TitleCaps variables indicate values taken from the morrowind.ini section related to that object. <br />
<br />
<br />
''Glare magnitude calculation''<br />
<syntaxhighlight lang="python"><br />
theta = angleBetween(camera view vector, camera to sun vector) # in degrees<br />
peakHour = Weather.SunriseHour + (Weather.SunsetHour - Weather.SunriseHour) / 2<br />
<br />
<br />
# Angular proximity<br />
if theta <= Weather.SunGlareFaderAngleMax:<br />
a = 1 - theta / Weather.SunGlareFaderAngleMax<br />
else:<br />
a = 0<br />
<br />
# Time of day, prevents glare interfering at sunrise/sunset<br />
if gameHour < Weather.SunriseHour or gameHour > Weather.SunsetHour:<br />
b = 0<br />
elif gameHour < peakHour:<br />
b = 1 - (peakHour - gameHour) / (peakHour - Weather.SunriseHour)<br />
else:<br />
b = 1 - (gameHour - peakHour) / (Weather.SunsetHour - peakHour)<br />
<br />
b *= Weather.SunGlareFaderMax<br />
<br />
# Specific weather variables<br />
<br />
# transition is 0 at the start of a weather change and 1.0 at the end<br />
# note that CloudsMaximumPercent is not actually a percentage<br />
if weather is changing and transition < nextWeather.CloudsMaximumPercent:<br />
t = transition / nextWeather.CloudsMaximumPercent<br />
c = (1-t) * currentWeather.GlareView + t * nextWeather.GlareView<br />
else:<br />
c = currentWeather.GlareView<br />
<br />
# Occlusion<br />
d = time-averaged visibility of sun via raycast [range: 0-1]<br />
</syntaxhighlight><br />
<br />
''Rendering''<br />
<syntaxhighlight lang="python"><br />
Blend mode: src=SRC_ALPHA, dest=ONE<br />
<br />
Material colour = saturate(2 * Weather.SunGlareFaderColor) # design flaw<br />
Material alpha = a * b * c * d<br />
</syntaxhighlight><br />
<br />
<br />
====Comments====<br />
There is an issue with the colour specification. The default SunGlareFaderColor is sRGB [222,095,039], which is very red compared to the actual rendering. This is due to the game setting the ambient, diffuse and emissive materials to the SunGlareFaderColor, in combination with pure white ambient lighting for this effect (but no diffuse due to lack of normals). This essentially multiplies the colour by 2, which is then clamped by the fixed function pipeline, causing a final colour of light orange.<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Scripting&diff=2409
Research:Scripting
2015-11-19T19:02:51Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Script commands==<br />
<br />
See [[Scripting (status)]].<br />
<br />
<br />
<br />
==Script global variables==<br />
<br />
Engine data exposed to scripts through script global variables, rather than accessor functions.<br />
<br />
===List of exposed globals===<br />
<br />
{| class="wikitable"<br />
!ID<br />
!Default value<br />
!Used in<br />
!Implementation status<br />
|-<br />
|GameHour<br />
|12.0<br />
|rowspan="6"|Time system<br />
|<font color="green">implemented</font><br />
|-<br />
|Year<br />
|427.0<br />
|<font color="green">implemented</font><br />
|-<br />
|Month<br />
|7.0<br />
|<font color="green">implemented</font><br />
|-<br />
|Day<br />
|17.0<br />
|<font color="green">implemented</font><br />
|-<br />
|DaysPassed<br />
|1.0<br />
|<font color="green">implemented</font><br />
|-<br />
|TimeScale<br />
|30.0<br />
|<font color="green">implemented</font><br />
|-<br />
|CharGenState<br />
|0<br />
|Character creation<br />
|<font color="green">implemented</font><br />
|-<br />
|MonthsToRespawn<br />
|1.0<br />
|[[Research:World#Container_respawning|Container respawning]]<br />
|<font color="red">not started</font><br />
|-<br />
|PCKnownWerewolf<br />
|0<br />
|Werewolf transformation<br />
|<font color="red">not started, needs research</font><br />
|-<br />
|WerewolfClawMult<br />
|1.0<br />
|[[Research:Combat#Damage|Werewolf melee damage]]<br />
|<font color="green">implemented</font><br />
|-<br />
|CrimeGoldDiscount<br />
|0<br />
|rowspan="5"|[[Research:Dialogue_and_Messages#Dialogue_global_variables|Dialogue global variables]]<br />
|<font color="green">implemented</font><br />
|-<br />
|CrimeGoldTurnIn<br />
|0<br />
|<font color="green">implemented</font><br />
|-<br />
|PCHasCrimeGold<br />
|0<br />
|<font color="green">implemented</font><br />
|-<br />
|PCHasGoldDiscount<br />
|0<br />
|<font color="green">implemented</font><br />
|-<br />
|PCHasTurnIn<br />
|0<br />
|<font color="green">implemented</font><br />
|}<br />
These defaults are engine defaults that have a lower priority than values read from data files. This means a new game will have the values from the base game data rather than these values.<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Dialogue_and_Messages&diff=2408
Research:Dialogue and Messages
2015-11-19T19:02:36Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Voice==<br />
<br />
Voiceovers are special case dialogue entries with fixed topic names that trigger on specific events. Each active voiceover will prevent further triggers on the same topic (and associated result scripts) until the sound file has stopped playing.<br />
<br />
===Idle===<br />
{{Formula<br />
|Every frame, for each NPC, but not creatures<br />
|Idle voiceover trigger<br />
|{{StatusCol|green|Implemented, design problem fixed}}<br />
|{{StatusCol|orange|Under research, has design problems.}}}}<br />
<syntaxhighlight lang="python"><br />
if npc.hello > 0 and npc is not underwater and distance(player, npc) < 3000 and npc.AIpackage is not {Follow, Escort, Combat}:<br />
x = fVoiceIdleOdds * frameTime<br />
roll 10000, if roll < x trigger Idle voiceover<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
There is a problem with the design of the probability roll. The fVoiceIdleOdds default (10), together with an FPS of 60 will give x = 0.166... but the roll itself is an integer. The only possible trigger is when roll == 0, and this is still true for all values of fVoiceIdleOdds less than the current FPS. This makes idles effectively dependent on frame rate, and changing the GMST a small amount actually produces no change in behaviour.<br />
<br />
Instead it should be done in a framerate independent manner, with an adjusted floating point roll calibrated on the quantized behaviour of vanilla at a standard fps (60 fps).<br />
<br />
==Text defines==<br />
'''Text defines''' in Morrowind are special strings within dialogue and message boxes, that are replaced at run time.<br/><br />
For dialogue, they begin with %, and for message boxes, they start with ^.<br/><br />
Any character can follow a sequence, so if "%pcrace" is "Redguard", "%pcraces" is "Redguards".<br/><br />
% (or ^ in messageboxes) followed by any global variable will be replaced with the value of that variable.<br/><br />
All sequences are case insensitive.<br/><br />
Built in defines are evaluated before global variables, so if there is a global variable pcnamea = 50, "^pcnamea" will be the name of the character followed by a, not 50.<br/><br />
Global variables with a % or ^ in them do not behave sensibly (as might be expected).<br/><br />
Global variables with names that are partially contained in other global names (eg. testglobal and testglobala) work correctly (i.e "^testglobala" does not give the value of testglobal followed by a).<br />
<br />
=== List of defines ===<br />
{| class="wikitable"<br />
|-<br />
|actionactivate <br />
|Button for activate<br />
|-<br />
|actionback <br />
|Button for Back<br />
|-<br />
|actionforward <br />
|Button for Forwards<br />
|-<br />
|actionjournal <br />
|Button for open journal<br />
|-<br />
|actionreadyitem <br />
|Button for draw weapon<br />
|-<br />
|actionreadymagic <br />
|Button for ready Magic<br />
|-<br />
|actionrestmenu <br />
|Button for rest<br />
|-<br />
|actionslideleft <br />
|Button for left strafe<br />
|-<br />
|actionslideright <br />
|button for right strafe<br />
|-<br />
|actionmenumode <br />
|Button to open inventory<br />
|-<br />
|actionuse <br />
|Button to use current (magic / weapon)<br />
|-<br />
|actioncrouch <br />
|Button for crouch / sneak<br />
|-<br />
|actionrun <br />
|button to run<br />
|-<br />
|actiontogglerun <br />
|button to toggle running<br />
|-<br />
|actionjump <br />
|button to jump<br />
|-<br />
|actionnextweapon <br />
|button for next weapon<br />
|-<br />
|actionprevweapon <br />
|button for previous weapon<br />
|-<br />
|actionnextspell <br />
|button for next spell<br />
|-<br />
|actionprevspell <br />
|button for previous spell<br />
|-<br />
|class <br />
|speakers class (players in messagebox) <br />
|-<br />
|crimegoldturnin<br />
|amount of gold needed to pay a guard when catched<br />
|-<br />
|name <br />
|speakers name (players in messagebox)<br />
|-<br />
|pcclass <br />
|players class<br />
|-<br />
|pccrimelevel <br />
|players current bounty<br />
|-<br />
|pcname <br />
|players name<br />
|-<br />
|pcrace <br />
|players race (this one is strange, as there is a global (short) variable of the same name, but it gives a string when used)<br />
|-<br />
|race <br />
|speakers race (players in messagebox)<br />
|-<br />
|cell <br />
|The cell the player is currently in<br />
|}<br />
<br />
<br />
The following only work in dialogue (empty in messageboxes):<br />
{| class="wikitable"<br />
|-<br />
|faction <br />
|speakers faction<br />
|-<br />
|nextpcrank <br />
|players next rank in the speakers faction<br />
|-<br />
|pcnextrank <br />
|probably the same as above<br />
|-<br />
|pcrank <br />
|players rank in current faction<br />
|-<br />
|rank <br />
|speakers rank in their faction<br />
|}<br />
<br />
<br />
<br />
== Dialogue global variables ==<br />
<br />
Crime-related global script variables are set every time the player enters dialogue with an NPC:<br />
<br />
Variables ''CrimeGoldDiscount, CrimeGoldTurnIn, PCHasCrimeGold, PCHasGoldDiscount, PCHasTurnIn'': see [[Research:Security and Crime#Thieves Guild reductions]]<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Stats_and_Levelling&diff=2407
Research:Stats and Levelling
2015-11-19T19:02:10Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Actor dynamic stats==<br />
<br />
{{Formula<br />
|Recalculated when base attributes are modified<br />
|Health points, magicka, fatigue, and encumbrance<br />
|{{StatusCol|orange|partially done (magicka needs adjustment, changed to current values not implemented yet)}}<br />
|{{StatusCol|orange|Requires verification}}}}<br />
<br />
===HP===<br />
<br />
Initial HP<br />
<syntaxhighlight lang="python"><br />
health = int(0.5 * (baseStrength + baseEndurance))<br />
</syntaxhighlight><br />
<br />
At every level-up<br />
<syntaxhighlight lang="python"><br />
occurs after attributes have been increased by the level-up<br />
bonusHP = fLevelUpHealthEndMult * baseEndurance<br />
</syntaxhighlight><br />
<br />
<br />
===Magicka multiplier===<br />
The non-visible stat used to stack magicka modifiers. Affected by NPC type and the Fortify Magicka Multiplier effect.<br />
<br />
On actor creation<br />
<syntaxhighlight lang="python"><br />
if actor is the player:<br />
magickaMultiplier = fPCbaseMagickaMult<br />
else:<br />
magickaMultiplier = fNPCbaseMagickaMult<br />
</syntaxhighlight><br />
<br />
When a Fortify Magicka Multiplier effect is applied<br />
<syntaxhighlight lang="python"><br />
magickaMultiplier is adjusted by 0.1 * effect.magnitude<br />
</syntaxhighlight><br />
<br />
<br />
===Magicka points===<br />
Every time intelligence or magicka multiplier is modified<br />
<syntaxhighlight lang="python"><br />
maxMagicka = magickaMultiplier * intelligence<br />
currentMagicka is rescaled to preserve % left<br />
</syntaxhighlight><br />
<br />
<br />
===Fatigue===<br />
Recovery every frame<br />
<syntaxhighlight lang="python"><br />
if currentFatigue < maxFatigue:<br />
x = fFatigueReturnBase + fFatigueReturnMult * endurance<br />
recover (frameTime * x) fatigue<br />
</syntaxhighlight><br />
<br />
Every time a base stat is modified<br />
<syntaxhighlight lang="python"><br />
maxFatigue = strength + willpower + agility + endurance<br />
currentFatigue is rescaled to preserve % left<br />
</syntaxhighlight><br />
<br />
<br />
===Encumbrance===<br />
Every time strength is modified<br />
<syntaxhighlight lang="python"><br />
maxEncumbrance = fEncumbranceStrMult * strength<br />
</syntaxhighlight><br />
<br />
==Resting==<br />
{{Formula<br />
|On resting/waiting<br />
|Waiting also applies to time passed after training. Resting also applies to time passed during travel. Uses common term [[Research:Common_Terms#normalizedEncumbrance|normalizedEncumbrance]].<br />
|{{StatusCol|green|Implemented, interruptingCreatures bug fixed, interruptAtHoursRemaining bug left in for compatibility}}<br />
|{{StatusCol|green|Verified, but sleep interruption has bugs}}}}<br />
<syntaxhighlight lang="python"><br />
if resting in an exterior cell and the region has a sleep creature leveled list:<br />
x = roll hoursRested<br />
y = fSleepRandMod * hoursRested<br />
if x < y:<br />
interruptAtHoursRemaining = int(fSleepRestMod * hoursRested)<br />
interruptingCreatures = max(1, roll iNumberCreatures)<br />
sleep will only last (hoursRested - interruptAtHoursRemaining) hours<br />
unless interruptAtHoursRemaining == 0, then no interruption occurs # contains bug<br />
sleep will be interrupted with 1 creature from the region leveled list # contains bug<br />
<br />
<br />
<br />
for each hour:<br />
for every actor in the entire world:<br />
if resting, not waiting:<br />
health += 0.1 * endurance<br />
if actor does not have magic effect Stunted Magicka:<br />
magicka += fRestMagicMult * intelligence<br />
<br />
x = fFatigueReturnBase + fFatigueReturnMult * (1 - normalizedEncumbrance)<br />
x *= fEndFatigueMult * endurance<br />
fatigue += 3600 * x<br />
</syntaxhighlight><br />
<br />
<br />
=====Comments=====<br />
Resting allows all actors in the game to recover, not just the player. There are multiple problems with interrupted rest.<br />
<br />
If the value of interruptAtHoursRemaining is 0, which occurs when hoursRested <= 3 with default GMSTs, then the game fails to execute the interruption encounter as the rest ends, in effect making short rests completely safe.<br />
<br />
The code only spawns the first creature it finds in the leveled list, as well as calculating the number of creatures incorrectly. interruptingCreatures should be ''1 + roll iNumberCreatures'', and that number of creatures should be spawned.<br />
<br />
Finally, the design of the interruption test has hoursRested on both sides of the test. This makes the probability of being interrupted independent of the number of hours slept, except for quantization effects.<br />
<br />
==Player levelling==<br />
<br />
===Skill progress===<br />
{{Formula<br />
|On exercising a skill<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<br />
Skills have a progression metric that is increased by player actions. Each action has an associated skill gain factor present in the skill record from the ESM. The progression is usually, but not always increased by that gain factor each time an action is performed. Players in werewolf form do not gain progress at all.<br />
<br />
<br />
''On successful barter''<br />
<syntaxhighlight lang="python"><br />
skillGain = skill.gainFactor[0] # "Successful Bargain"<br />
<br />
if player is selling and (finalPrice > initialOffer):<br />
skillGain *= int(100 * (finalPrice - initialOffer) / finalPrice)<br />
elif player is buying and (finalPrice < initialOffer):<br />
skillGain *= int(100 * (initialOffer - finalPrice) / initialOffer)<br />
else:<br />
skillGain = 0<br />
</syntaxhighlight><br />
<br />
''All other actions''<br />
<syntaxhighlight lang="python"><br />
skillGain = skill.gainFactor[action]<br />
</syntaxhighlight><br />
<br />
''Testing for skill increase''<br />
<syntaxhighlight lang="python"><br />
progress[skill] += skillGain<br />
progressRequirement = 1 + playerSkills[skill]<br />
<br />
if skill in player.majorSkills:<br />
progressRequirement *= fMajorSkillBonus<br />
elif skill in player.minorSkills:<br />
progressRequirement *= fMinorSkillBonus<br />
elif skill in player.miscSkills:<br />
progressRequirement *= fMiscSkillBonus<br />
<br />
if skill in player.class.specialization.skills:<br />
progressRequirement *= fSpecialSkillBonus<br />
<br />
if int(progress[skill]) >= int(progressRequirement):<br />
progress[skill] = 0<br />
playerSkills[skill] increased by 1, triggering further functions<br />
</syntaxhighlight><br />
<br />
<br />
====Comments====<br />
The progress is preserved, but not the progressRequirement, when the skill is modified by a script function. The skill tooltip always shows the skill progression as a bar labelled with x/100.<br />
<br />
===Player level progress===<br />
{{Formula<br />
|On skill level-up<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<br />
''On new game''<br />
<syntaxhighlight lang="python"><br />
totalIncreases = 0 # global counter of skill increases<br />
attribCounter[8] = [0,0,0,0,0,0,0,0] # counter of attribute bonuses<br />
</syntaxhighlight><br />
<br />
''On skill level-up''<br />
<syntaxhighlight lang="python"><br />
if skill in player.majorSkills:<br />
totalIncreases += iLevelUpMajorMult<br />
attribCounter[skill->basicAttribute] += iLevelUpMajorMultAttribute<br />
elif skill in player.minorSkills:<br />
totalIncreases += iLevelUpMinorMult<br />
attribCounter[skill->basicAttribute] += iLevelUpMinorMultAttribute<br />
elif skill in player.miscSkills:<br />
attribCounter[skill->basicAttribute] += iLevelupMiscMultAttriubte # note game setting name has a typo<br />
<br />
if totalIncreases >= iLevelUpTotal:<br />
level up becomes available<br />
totalIncreases -= iLevelUpTotal # note rollover mechanic<br />
attribCounter[8] = [0,0,0,0,0,0,0,0]<br />
</syntaxhighlight><br />
<br />
=== Levelling up ===<br />
{{Formula<br />
|On resting when a level up is available<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
On level up, the player can select up to 3 attributes to improve. Less than 3 may be offered if there are less than 3 attributes that can be improved (attribute < 100). Attributes already >= 100 cannot be selected.<br />
<br />
<syntaxhighlight lang="python"><br />
for each attribute:<br />
count = attribCounter[attribute]<br />
if count == 0:<br />
bonus = 1<br />
elif count <= 9:<br />
bonus = {iLevelUp01Mult, .. iLevelUp09Mult} selected by count<br />
else: # count >= 10<br />
bonus = iLevelUp10Mult<br />
<br />
bonus = min(bonus, 100 - player.attribute[selectedAttribute])<br />
</syntaxhighlight><br />
<br />
==NPC Auto-calculate Stats==<br />
{{Formula<br />
|On creating an NPC flagged with auto-calculate<br />
|NPCs' auto-calculated stats. Affected by race, class, faction and rank.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<br />
<br />
===Attributes===<br />
<br />
<syntaxhighlight lang="python"><br />
for each attribute:<br />
base = race base attribute (+ 10 if a class primary attribute)<br />
<br />
k = 0<br />
for each skill with this governing attribute:<br />
if skill is class major: k += 1<br />
if skill is class minor: k += 0.5<br />
if skill is miscellaneous: k += 0.2<br />
<br />
final attribute = base + k * (level - 1)<br />
round attribute to nearest, half to nearest even (standard IEEE 754 rounding mode)<br />
</syntaxhighlight><br />
<br />
<br />
===Health===<br />
<syntaxhighlight lang="python"><br />
mult = 3<br />
+ 2 if class specialization is combat<br />
+ 1 if class specialization is stealth<br />
+ 1 if endurance is a primary attribute<br />
<br />
health = floor(0.5 * (strength + endurance) + mult * (level - 1))<br />
</syntaxhighlight><br />
<br />
<br />
===Skills===<br />
<syntaxhighlight lang="python"><br />
for each skill:<br />
<br />
if skill is class major: base = 30, k = 1<br />
if skill is class minor: base = 15, k = 1<br />
if skill is miscellaneous: base = 5, k = 0.1<br />
<br />
if skill is in class specialization: base += 5, k += 0.5<br />
if skill has race bonus: base += racebonus<br />
<br />
final skill = base + k * (level - 1)<br />
round skill to nearest, half to nearest even (standard IEEE 754 rounding mode)<br />
</syntaxhighlight><br />
<br />
<br />
===Reputation===<br />
<syntaxhighlight lang="python"><br />
if not in a faction:<br />
reputation = 0<br />
else:<br />
reputation = iAutoRepFacMod * rank + iAutoRepLevMod * (level - 1)<br />
where the entry level rank in the faction means rank = 1<br />
</syntaxhighlight><br />
<br />
<br />
====Comments====<br />
The correct rounding mode is critical for accurate skills, which affect important gameplay like spell auto-selection and training.<br />
<br />
Note that there are level 0 NPCs in the game, so the (level - 1) term will become -1; use a signed representation of level in calculations.<br />
<br />
==NPC Auto-calculate Spells==<br />
{{Formula<br />
|On creating an NPC flagged with auto-calculate<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<br />
===Common functions===<br />
<syntaxhighlight lang="python"><br />
function calcWeakestSchool :: (spell, actor) -> (effectiveSchool, skillTerm)<br />
<br />
minChance = FLOAT_MAX<br />
for each effect in spell:<br />
x = effect.duration<br />
if not effect.magicEffect.flags & UNCAPPED_DAMAGE: x = max(1, x)<br />
x *= 0.1 * effect.magicEffect.baseMagickaCost<br />
x *= 0.5 * (effect.magnitudeMin + effect.magnitudeMax)<br />
x += effect.radius * 0.05 * effect.magicEffect.baseMagickaCost<br />
if effect.rangeType & CAST_TARGET: x *= 1.5<br />
x *= fEffectCostMult<br />
<br />
s = 2 * actor.skill[effect.magicEffect.school.associatedSkillId]<br />
if (s - x) < minChance:<br />
minChance = s - x<br />
effectiveSchool = effect.magicEffect.school<br />
skillTerm = s<br />
<br />
return effectiveSchool, skillTerm<br />
</syntaxhighlight><br />
<syntaxhighlight lang="python"><br />
function calcAutoCastChance :: (spell, actor, effectiveSchool) -> castChance<br />
<br />
if spell.castingType != spell: return 100<br />
if spell is flagged always succeeds: return 100<br />
<br />
if effectiveSchool != none:<br />
skillTerm = 2 * actor.skill[effectiveSchool.associatedSkillId]<br />
else:<br />
_, skillTerm = calcWeakestSchool(spell, actor)<br />
<br />
castChance = skillTerm - spell.cost + 0.2 * actor.willpower + 0.1 * actor.luck<br />
return castChance<br />
</syntaxhighlight><br />
<br />
===NPC spells===<br />
<syntaxhighlight lang="python"><br />
baseActor.spells = vector()<br />
baseMagicka = fNPCbaseMagickaMult * baseActor.intelligence<br />
<br />
spellSchools = { Alteration, Conjuration, Destruction, Illusion, Mysticism, Restoration }<br />
schoolCaps = {} # could be an array indexed by school enum<br />
<br />
for each school in spellSchools:<br />
schoolCaps[school] = { count : 0,<br />
limit : iAutoSpell{school}Max,<br />
reachedLimit : iAutoSpell{school}Max <= 0,<br />
minCost : INT_MAX,<br />
weakestSpell : none }<br />
<br />
for each spell in the game: # note: iteration order is important, see comments<br />
if spell.isMarkedDeleted: continue<br />
if spell.castingType != spell: continue<br />
if not spell.isAutoCalculate: continue<br />
<br />
if baseMagicka < iAutoSpellTimesCanCast * spell.cost: continue<br />
if spell is in baseActor.race.racialSpells: continue<br />
<br />
failedAttrSkillCheck = false<br />
for each effect in spell:<br />
if (effect.baseEffect.flags & TARGET_SKILL) and baseActor.skills[effect.targetSkill] < iAutoSpellAttSkillMin:<br />
failedAttrSkillCheck = true<br />
break<br />
if (effect.baseEffect.flags & TARGET_ATTR) and baseActor.attribute[effect.targetAttr] < iAutoSpellAttSkillMin:<br />
failedAttrSkillCheck = true<br />
break<br />
if failedAttrSkillCheck: continue<br />
<br />
school, _ = calcWeakestSchool(spell, actor)<br />
cap = schoolCaps[school]<br />
<br />
if cap.reachedLimit and spell.cost <= cap.minCost: continue<br />
if calcBaseCastChance(baseActor, spell, school) < fAutoSpellChance: continue<br />
<br />
baseActor.spells.add(spell)<br />
<br />
if cap.reachedLimit:<br />
baseActor.spells.remove(cap.weakestSpell)<br />
cap.weakestSpell = baseActor.spells.findMinCostSpell() # note: not school specific<br />
cap.minCost = cap.weakestSpell.cost<br />
else:<br />
cap.count += 1<br />
if cap.count == cap.limit:<br />
cap.reachedLimit = true<br />
<br />
if spell.cost < cap.minCost:<br />
cap.weakestSpell = spell<br />
cap.minCost = spell.cost<br />
</syntaxhighlight><br />
<br />
<br />
====Comments====<br />
Auto-calculated spells are selected at initial loading time. baseActor refers to the actor with attributes as loaded or auto-calculated, without any kind of spell effects (i.e. abilities) applied.<br />
<br />
Due to poor design, iteration order is critical to the algorithm's behaviour. The list of all spells in the game must be in the same order as loaded from the files. NPC spells are held in a vector, which the ''findMinCostSpell'' function scans linearly; during the scan, if there is another spell that matches the lowest cost, it keeps the first one found.<br />
<br />
Note that when a spell school is past its limit, the weakest spell is removed, and a new weakest spell is selected. This may not be a spell from the same school as the limit. While this is undesired behaviour, fixing it is likely to cause a major difference from vanilla spell selection, which will not have been play tested. It's not recommend to fix this part at the moment.<br />
<br />
==PC Starting Spells==<br />
{{Formula<br />
|On reviewing player stats, after race, class and sign are selected<br />
|Uses common functions from NPC auto-calc spells. baseActor is the player.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
baseMagicka = fPCbaseMagickaMult * baseActor.intelligence<br />
reachedLimit = false<br />
weakestSpell = none<br />
minCost = INT_MAX<br />
<br />
baseActor.spells = vector()<br />
<br />
for each spell in the game: # note: iteration order is important, see comments<br />
if spell.isMarkedDeleted: continue<br />
if spell.castingType != spell: continue<br />
if not spell.isPCStartSpell: continue<br />
<br />
if reachedLimit and spell.cost <= minCost: continue<br />
if spell is in baseActor.spells: continue<br />
if spell is in baseActor.race.racialSpells: continue<br />
if baseMagicka < spell.cost: continue<br />
if calcAutoCastChance(spell, baseActor, none) < fAutoPCSpellChance: continue<br />
<br />
failedAttrSkillCheck = false<br />
for each effect in spell:<br />
if (effect.baseEffect.flags & TARGET_SKILL) and baseActor.skills[effect.targetSkill] < iAutoSpellAttSkillMin:<br />
failedAttrSkillCheck = true<br />
break<br />
if (effect.baseEffect.flags & TARGET_ATTR) and baseActor.attribute[effect.targetAttr] < iAutoSpellAttSkillMin:<br />
failedAttrSkillCheck = true<br />
break<br />
if failedAttrSkillCheck: continue<br />
<br />
baseActor.spells.add(spell)<br />
<br />
if reachedLimit:<br />
baseActor.spells.remove(weakestSpell)<br />
weakestSpell = baseActor.spells.findMinCostSpell()<br />
minCost = weakestSpell.cost<br />
else:<br />
if spell.cost < minCost:<br />
weakestSpell = spell<br />
minCost = spell.cost<br />
if baseActor.spells.size() == iAutoPCSpellMax:<br />
reachedLimit = true<br />
</syntaxhighlight><br />
<br />
<br />
====Comments====<br />
This is first executed once the stat review menu appear, and then executed every time the player modifies their character. The spell list must therefore be cleared before selecting new spells.<br />
<br />
See [[#NPC spells|NPC auto-calculated spells]] for additional comments.<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Security_and_Crime&diff=2406
Research:Security and Crime
2015-11-19T19:01:52Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Security==<br />
<br />
{{Formula<br />
|On lockpicking and probing<br />
|Affects doors and containers.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<br />
====On picking a lock====<br />
<syntaxhighlight lang="python"><br />
x = 0.2 * pcAgility + 0.1 * pcLuck + securitySkill<br />
x *= pickQuality * fatigueTerm<br />
x += fPickLockMult * lockStrength<br />
<br />
if x <= 0: fail and report impossible<br />
roll 100, if roll <= x then open lock else report failure<br />
</syntaxhighlight><br />
<br />
<br />
====On probing a trap====<br />
<syntaxhighlight lang="python"><br />
x = 0.2 * pcAgility + 0.1 * pcLuck + securitySkill<br />
x += fTrapCostMult * trapSpellPoints<br />
x *= probeQuality * fatigueTerm<br />
<br />
if x <= 0: fail and report impossible<br />
roll 100, if roll <= x then untrap else report failure<br />
</syntaxhighlight><br />
<br />
==Pickpocketing==<br />
{{Formula<br />
|On pickpocket (activate while sneaking)<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Mechanic is broken and shouldn't be used as it is, but verified}}}}<br />
Pickpocketing is a multi-stage process. Not all items in the NPC's inventory are available, depending on the initial rolls. There are checks on a steal attempt, and when the window is closed.<br />
<br />
<br />
===On initiating===<br />
<syntaxhighlight lang="python"><br />
for each item stack:<br />
roll 100, stack is visible if roll <= pcSneak<br />
</syntaxhighlight><br />
<br />
<br />
===On picking an item===<br />
<syntaxhighlight lang="python"><br />
fatigueTerm = fFatigueBase - fFatigueMult*(1 - normalisedFatigue)<br />
#where normalisedFatigue is a function of fatigue. empty fatigue bar -> 0.0, full fatigue bar -> 1.0<br />
#note fatigueTerm is normally 1.25 at full fatigue.<br />
<br />
#checks the whole stack no matter how many you try to take<br />
#note: filled soulgems have the value of an empty soulgem due to a missing calculation<br />
stackValue = itemValue * itemsInStack<br />
valueTerm = 10 * fPickPocketMod * stackValue<br />
<br />
x = (0.2 * pcAgility + 0.1 * pcLuck + pcSneak) * fatigueTerm<br />
y = (valueTerm + npcSneak + 0.2 * npcAgilityTerm + 0.1 * npcLuckTerm) * npcFatigueTerm<br />
t = x - y + x # yes, that is what it does<br />
<br />
if t < pcSneak / iPickMinChance:<br />
roll 100, win if roll <= int(pcSneak / iPickMinChance)<br />
else:<br />
t = min(iPickMaxChance, t)<br />
roll 100, win if roll <= int(t)<br />
</syntaxhighlight><br />
<br />
<br />
===On closing the pickpocket window===<br />
<br />
Same calculation as taking an item, but with valueTerm = 0.<br />
<br />
<br />
===Comments===<br />
<br />
The stealing process is highly broken for most items; any item or stack of items worth over 100 septims has such a negative result that it is picked at minimum chance, and this is at maximum all stats. A player with stats around 50 is picking at minimum for anything valuable. The available items window is not reset after every successful steal, only when you close the window and retry the pickpocket.<br />
<br />
==Bounties and Reporting==<br />
<br />
===Bounties===<br />
{{Formula<br />
|On being observed committing crimes<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Being researched}}}}<br />
<syntaxhighlight lang="python"><br />
killing: iCrimeKilling<br />
assault: iCrimeAttack<br />
pickpocket: iCrimePickpocket<br />
trespass: iCrimeTrespass<br />
theft: fCrimeStealing * stack value<br />
werewolf transformation: iWerewolfBounty<br />
</syntaxhighlight><br />
<br />
Trespass includes activating, picking, and using Open magic on an owned door. Normal faction ownership rules apply.<br />
<br />
<br />
===NPC reactions===<br />
{{Formula<br />
|On being observed committing crimes<br />
|<br />
|{{StatusCol|orange|Implemented with several differences}}<br />
|{{StatusCol|orange|Being researched.}}}}<br />
<syntaxhighlight lang="python"><br />
for each observer in the cell: # NPCs only, range unknown<br />
alarmTerm = 0.01 * observer.alarm<br />
<br />
if crime is killing:<br />
fightTerm, dispTerm = iFightKilling, iDispKilling<br />
if crime is assault, observed:<br />
fightTerm, dispTerm = iFightAttacking, iDispAttackMod<br />
if crime is assault, victim:<br />
fightTerm, dispTerm = iFightAttack, fDispAttacking<br />
if crime is theft:<br />
fightTerm, dispTerm = fFightStealing * stack value, fDispStealing * stack value<br />
if crime is pickpocket, observed:<br />
fightTerm, dispTerm = iFightPickpocket, fDispPickpocketMod<br />
if crime is pickpocket, victim:<br />
fightTerm, dispTerm = 4 * iFightPickpocket, fDispPickpocketMod<br />
if alarmTerm <= 0: alarmTerm = 1.0<br />
if crime is trespass:<br />
fightTerm, dispTerm = iFightTrespass, iDispTresspass<br />
<br />
if observer is not victim or observer.isGuard:<br />
dispTerm *= alarmTerm<br />
<br />
fightTerm += fFightDispMult * (50 - dispTerm)<br />
x = iFightDistanceBase - fFightDistanceMultiplier * distance(player, observer)<br />
fightTerm = alarmTerm * (fightTerm + x)<br />
<br />
if observer.fight + fightTerm > 100:<br />
fightTerm = 100 - observer.fight<br />
fightTerm = max(0, fightTerm)<br />
<br />
observer.fight += int(fightTerm)<br />
observer.disposition += int(dispTerm)<br />
<br />
- lots more crime system stuff occurs here -<br />
<br />
if (observer.alarm < 100 or not observer.isGuard) and observer.fight < 100:<br />
observer.fight is reset to the original value<br />
if observer is not victim: observer.disposition is reset to the original value<br />
</syntaxhighlight><br />
<br />
===Guard reactions===<br />
{{Formula<br />
|Checked by "Guard" class NPCs every 1.0 seconds<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Being researched}}}}<br />
<syntaxhighlight lang="python"><br />
if bounty >= iCrimeThreshold:<br />
if bounty >= iCrimeThreshold * iCrimeThresholdMultiplier:<br />
guards will immediately initiate combat and cannot be engaged in dialogue<br />
else:<br />
guards in range will run to the player and initiate dialogue<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
<br />
Note that the crime level that prompts the "death warrant" dialogue from the guards (5000 gold) is coded through dialogue conditions, not here.<br />
<br />
===Thieves Guild reductions===<br />
{{Formula<br />
|On initiating any dialogue<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<br />
Interacts with dialogue through global script variables, which are set every time the player enters dialogue with an NPC.<br />
<br />
<br />
'''CrimeGoldDiscount'''<br />
<syntaxhighlight lang="python"><br />
if bounty == 0: CrimeGoldDiscount = 0<br />
else: CrimeGoldDiscount = max(1, fCrimeGoldDiscountMult * bounty)<br />
</syntaxhighlight><br />
<br />
'''CrimeGoldTurnIn'''<br />
<syntaxhighlight lang="python"><br />
if bounty == 0: CrimeGoldTurnIn = 0<br />
else: CrimeGoldTurnIn = max(1, fCrimeGoldTurnInMult * bounty)<br />
</syntaxhighlight><br />
<br />
'''PCHasCrimeGold'''<br />
<syntaxhighlight lang="python"><br />
PCHasCrimeGold = 1 if player can afford bounty (before any discount), 0 if not<br />
</syntaxhighlight><br />
<br />
'''PCHasGoldDiscount'''<br />
<syntaxhighlight lang="python"><br />
PCHasGoldDiscount = 1 if player can afford bounty (with thief discount), 0 if not<br />
</syntaxhighlight><br />
<br />
'''PCHasTurnIn'''<br />
<syntaxhighlight lang="python"><br />
PCHasTurnIn = 1 if player can afford bounty (with turn-in discount), 0 if not<br />
</syntaxhighlight><br />
<br />
==Prison==<br />
Prison time is proportional to the bounty. Skills can be lost during time spent in prison, except Security which can improve.<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Player_Craft_Skills&diff=2405
Research:Player Craft Skills
2015-11-19T19:01:31Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Enchanting==<br />
<br />
====Self-enchanting====<br />
{{Formula<br />
|On PC enchant attempt<br />
|<br />
|{{StatusCol|orange|Changes since last implementation}}<br />
|{{StatusCol|green|Verified, contains bugs}}}}<br />
''Original behaviour''<br />
<br />
This uses the variable z from [[Research:Trading_and_Services#Enchanting_merchant|Enchanting service]].<br />
<syntaxhighlight lang="python"><br />
for each effect in the enchantment:<br />
x = z[effect.order] - int(-0.2 * pcIntelligence) + int(0.1 * pcLuck)<br />
x = int(x * fatigueTerm)<br />
if enchantment is constant effect:<br />
x = int(x * fEnchantmentConstantChanceMult)<br />
roll 100, success if roll < x, else fail and destroy gem<br />
</syntaxhighlight><br />
<br />
''Suggested implementation''<br />
<syntaxhighlight lang="python"><br />
z = enchantSkill - y * fEnchantmentChanceMult<br />
x = (z + 0.2 * pcIntelligence + 0.1 * pcLuck) * fatigueTerm<br />
if enchantment is constant effect:<br />
x *= fEnchantmentConstantChanceMult<br />
x = int(x)<br />
<br />
roll 100, success if roll < x, else fail and destroy gem<br />
</syntaxhighlight><br />
<br />
=====Comments=====<br />
There is a serious bug where failure is checked for every effect instead of once for the whole attempt, while still using the cumulative cost. This makes multiple effect self-enchants near impossible, but doesn't affect single effect self-enchanting. There is also an excessive use of rounding and a double negation, which seem to indicate this function had a rushed implementation.<br />
<br />
A better implementation should not have the effect loop, and may omit the excessive integer conversions. One implementation is suggested here.<br />
<br />
<br />
====Enchanted item recharge====<br />
{{Formula<br />
|On soulgem use<br />
|Recharging with a filled soulgem. Uses common term [[Research:Common_Terms#fatigueTerm|fatigueTerm]].<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
luckTerm = 0.1 * luck<br />
if luckTerm < 1 or luckTerm > 10: luckTerm = 1<br />
<br />
intelligenceTerm = 0.2 * intelligence<br />
if intelligenceTerm > 20: intelligenceTerm = 20<br />
if intelligenceTerm < 1: intelligenceTerm = 1<br />
<br />
x = (pcEnchant + intelligenceTerm + luckTerm) * fatigueTerm<br />
roll 100, success if roll < x<br />
on success restore charge: soulgem charge * (roll / x)<br />
</syntaxhighlight><br />
<br />
<br />
=====Comments=====<br />
Recharging for most characters has a good chance of wasting a soul gem, as the enchant skill is the dominant term used for success. You would require enchant skill of over 65 with average stats to have a 100% success rate. The amount restored is a uniform random percentage of the soul gem, except if you have over a 100% success rate, in which case you will never get the full charge range out of a gem. The missing range increases as your skill does, but the lost charge is no more than 25% at the natural stat limit. Finally, note the strange luck term capping behaviour.<br />
<br />
==Armorer==<br />
{{Formula<br />
|On using a repair item<br />
|<br />
|{{StatusCol|green|Implemented, bug corrected}}<br />
|{{StatusCol|orange|Verified, but original contains bugs}}}}<br />
<syntaxhighlight lang="python"><br />
fatigueTerm = fFatigueBase - fFatigueMult*(1 - normalisedFatigue)<br />
where normalisedFatigue is a function of fatigue. empty fatigue bar -> 0.0, full fatigue bar -> 1.0<br />
<br />
x = (0.1 * pcStrength + 0.1 * pcLuck + armorerSkill) / fatigueTerm<br />
roll 100, if roll <= x then repair continues<br />
<br />
y = int(fRepairAmountMult * hammerQuality * roll)<br />
y = max(1, y)<br />
repair item by y points<br />
</syntaxhighlight><br />
<br />
<br />
=====Comments=====<br />
Bug in original game: Being more tired makes it easier to repair an item. The game should have multiplied by fatigueTerm instead of dividing by it.<br />
<br />
==Alchemy==<br />
<br />
===Ingredients===<br />
{{Formula<br />
|On viewing ingredient tooltip<br />
|Effect visibility.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
Effects are not immediately apparent without alchemy skill. Ingredient effects are hidden, appearing as '?' unless the player has sufficient alchemy skill.<br />
<br />
<syntaxhighlight lang="python"><br />
First effect visible: pcAlchemy >= fWortChanceValue<br />
Second effect visible: pcAlchemy >= 2 * fWortChanceValue<br />
Third effect visible: pcAlchemy >= 3 * fWortChanceValue<br />
Fourth effect visible: pcAlchemy >= 4 * fWortChanceValue<br />
</syntaxhighlight><br />
<br />
<br />
Potions can still be made with the hidden effects, and the resulting effects appear normally in the potion result window.<br />
<br />
===Potions===<br />
{{Formula<br />
|On potion creation<br />
|Uses [[Research:Magic#Magic effects|magic effect flags]].<br />
|{{StatusCol|green|implemented}}<br />
|{{StatusCol|orange|Requires regression testing}}}}<br />
<br />
<syntaxhighlight lang="python"><br />
consume ingredients on both success and failure<br />
<br />
x = pcAlchemy + 0.1 * pcIntelligence + 0.1 * pcLuck<br />
roll 100 vs x, succeed if roll <= x<br />
x *= mortarQuality * fPotionStrengthMult<br />
<br />
for each ingredient:<br />
for each effect in ingredient:<br />
if effect.id == -1: continue<br />
magicEffect = lookupEffect(effect.id)<br />
<br />
check magicEffect for match with effects in all other ingredients:<br />
effect.id should match<br />
if magicEffect.flags & TARGET_SKILL: effect.targetSkill should match<br />
if magicEffect.flags & TARGET_ATTR: effect.targetAttribute should match<br />
<br />
if effect is matched:<br />
if magicEffect is not in effectList, add it<br />
<br />
if effectList is empty: return with failure<br />
<br />
for each magicEffect in effectList:<br />
if not magicEffect.flags & NO_MAGNITUDE:<br />
if not magicEffect.flags & NO_DURATION:<br />
magnitude = (x / fPotionT1MagMult) / magicEffect.baseMagickaCost<br />
duration = (x / fPotionT1DurMult) / magicEffect.baseMagickaCost<br />
if not magicEffect.flags & NEGATIVE:<br />
if retort and calcinator: (magnitude, duration) += 2*retort + calcinator<br />
if only retort: (magnitude, duration) += retort<br />
if only calcinator: (magnitude, duration) += calcincator<br />
else:<br />
if alembic and calcinator: (magnitude, duration) /= 2*alembic + 3*calcinator<br />
if only alembic: (magnitude, duration) /= 1 + alembic<br />
if only calcinator: (magnitude, duration) += calcinator<br />
<br />
else:<br />
magnitude = (x / fPotionT1MagMult) / magicEffect.baseMagickaCost<br />
duration = 1<br />
if not magicEffect.flags & NEGATIVE:<br />
if retort and calcinator: magnitude += 2/3 * (retort + calcinator) + 0.5<br />
if only retort: magnitude *= retort + 0.5<br />
if only calcinator: magnitude *= calcincator + 0.5<br />
else:<br />
if alembic and calcinator: magnitude /= 2*alembic + 3*calcinator<br />
if only alembic: magnitude /= 1 + alembic<br />
if only calcinator: magnitude *= calcinator + 0.5<br />
<br />
else:<br />
if not magicEffect.flags & NO_DURATION:<br />
magnitude = 1<br />
duration = (x / fPotionT1DurMult) / magicEffect.baseMagickaCost<br />
if not magicEffect.flags & NEGATIVE:<br />
if retort and calcinator: duration += 2/3 * (retort + calcinator) + 0.5<br />
if only retort: duration *= retort + 0.5<br />
if only calcinator: duration *= calcincator + 0.5<br />
else:<br />
if alembic and calcinator: duration /= 2*alembic + 3*calcinator<br />
if only alembic: duration /= 1 + alembic<br />
if only calcinator: duration *= calcinator + 0.5<br />
else:<br />
magnitude = 1<br />
duration = 1<br />
<br />
magnitude = floor(magnitude + 0.5)<br />
duration = floor(duration + 0.5);<br />
if magnitude > 0 and duration > 0: add potionEffect(magicEffect, magnitude, duration) else nullify effect<br />
<br />
if all effects are nullified: return with failure<br />
<br />
price = int(iAlchemyMod * x)<br />
weight = sum of ingredient weights / total ingredients added<br />
visual = roll { 'Bargain', 'Cheap', 'Exclusive', 'Fresh', 'Quality', 'Standard' }<br />
pick model and icon { 'm/misc_potion_{visual}_01.nif', 'm/tx_potion_{visual}_01.tga' }<br />
exercise alchemy skill (potion creation)<br />
</syntaxhighlight><br />
<br />
<br />
====Comments====<br />
<br />
It is notable how effective a calcinator becomes when combined with a retort or alembic. One of the few mechanics unaffected by fatigue. Each code path is slightly different; the most common (effects with magnitude and duration) acts differently enough with only a calcinator that it may be considered a bug. GMSTs fPotionMinUsefulDuration, fPotionT4BaseStrengthMult, fPotionT4EquipStrengthMult are unused.<br />
<br />
===Wortcraft===<br />
{{Formula<br />
|On eating a raw ingredient<br />
|Uses [[Research:Magic#Magic effects|magic effect flags]]. Uses common term [[Research:Common_Terms#fatigueTerm|fatigueTerm]].<br />
|{{StatusCol|green|implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<br />
<syntaxhighlight lang="python"><br />
magicEffect is the first effect of ingredient eaten<br />
x = (pcAlchemy + 0.2 * pcIntelligence + 0.1 * pcLuck) * fatigueTerm<br />
roll 100, succeed if roll <= x<br />
<br />
y = roll / min(x, 100)<br />
y *= 0.25 * x<br />
if not magicEffect.flags & NO_DURATION:<br />
duration = int(y)<br />
else:<br />
duration = 1<br />
if not magicEffect.flags & NO_MAGNITUDE:<br />
if not magicEffect.flags & NO_DURATION:<br />
magnitude = int((0.05 * y) / (0.1 * magicEffect.baseMagickaCost));<br />
else:<br />
magnitude = int(y / (0.1 * baseCost))<br />
magnitude = max(1, magnitude)<br />
else:<br />
magnitude = 1<br />
<br />
apply effect(magicEffect, magnitude, duration) to player<br />
exercise alchemy skill (ingredient use)<br />
</syntaxhighlight><br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Disposition_and_Persuasion&diff=2404
Research:Disposition and Persuasion
2015-11-19T19:01:15Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Disposition==<br />
{{Formula<br />
|All disposition using functions<br />
|Recalculated every time effective disposition is required. Setting disposition assumes you are specifying the effective disposition, so the base disposition is adjust by the delta between the current and desired effective disposition.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
x = baseDisposition (from npc reference)<br />
if pc and npc are the same race: x += fDispRaceMod<br />
x += fDispPersonalityMult * (pcPersonality - fDispPersonalityBase)<br />
<br />
if pc and npc are the same faction and pc is not expelled:<br />
reaction = faction reaction for same faction<br />
rank = rank in shared faction, range [0..9]<br />
else if npc has a faction:<br />
reaction = min(faction reactions for all pc factions) (most hated faction) (0 if no faction)<br />
rank = 0<br />
else:<br />
reaction = 0, rank = 0<br />
<br />
x += (fDispFactionRankMult * rank + fDispFactionRankBase) * fDispFactionMod * reaction<br />
x -= fDispCrimeMod * pcBounty<br />
if pc has a disease: x += fDispDiseaseMod<br />
if pc has weapon drawn: x += fDispWeaponDrawn<br />
<br />
effective disposition = int(x), normally clamped to [0..100] when used<br />
</syntaxhighlight><br />
<br />
==Persuasion==<br />
{{Formula<br />
|On persuade dialogue action<br />
|Persuasion options in the NPC dialogue menu.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
===Note===<br />
Successfully performing a Bribe, Admire, Taunt or Intimidate will raise your Speechcraft skill.<br />
===Shared terms===<br />
Per-actor terms:<br />
<syntaxhighlight lang="python"><br />
persTerm = personality / fPersonalityMod<br />
luckTerm = luck / fLuckMod<br />
repTerm = reputation * fReputationMod<br />
levelTerm = level * fLevelMod<br />
fatigueTerm = fFatigueBase - fFatigueMult*(1 - normalisedFatigue)<br />
# where normalisedFatigue is a function of fatigue. empty fatigue bar -> 0.0, full fatigue bar -> 1.0<br />
# note fatigueTerm is normally 1.25 at full fatigue.<br />
</syntaxhighlight><br />
Using player stats:<br />
<syntaxhighlight lang="python"><br />
playerRating1 = (repTerm + luckTerm + persTerm + speechcraft) * fatigueTerm<br />
playerRating2 = playerRating1 + levelTerm<br />
playerRating3 = (mercantile + luckTerm + persTerm) * fatigueTerm<br />
</syntaxhighlight><br />
Using NPC stats (note structural differences; ''all terms are calculated from NPC stats''):<br />
<syntaxhighlight lang="python"><br />
npcRating1 = (repTerm + luckTerm + persTerm + speechcraft) * fatigueTerm<br />
npcRating2 = (levelTerm + repTerm + luckTerm + persTerm + speechcraft) * fatigueTerm<br />
npcRating3 = (mercantile + repTerm + luckTerm + persTerm) * fatigueTerm<br />
</syntaxhighlight><br />
Opposing roll targets:<br />
<syntaxhighlight lang="python"><br />
d = 1 - 0.02 * abs(npcDisposition - 50)<br />
target1 = d * (playerRating1 - npcRating1 + 50)<br />
target2 = d * (playerRating2 - npcRating2 + 50)<br />
target3 = d * (playerRating3 - npcRating3 + 50) + bribeMod<br />
where bribeMod is fBribe10Mod, fBribe100Mod or fBribe1000Mod<br />
</syntaxhighlight><br />
<br />
<br />
===Admire===<br />
<syntaxhighlight lang="python"><br />
target1 = max(iPerMinChance, target1)<br />
roll 100, win if roll <= target1<br />
c = int(fPerDieRollMult * (target1 - roll))<br />
x = max(iPerMinChange, c) on success, c on fail<br />
</syntaxhighlight><br />
<br />
===Intimidate===<br />
<syntaxhighlight lang="python"><br />
target2 = max(iPerMinChance, target2)<br />
roll 100, win if roll <= target2<br />
<br />
if roll != target2:<br />
r = int(target2 - roll)<br />
else:<br />
r = 1<br />
<br />
if roll <= target2:<br />
s = int(r * fPerDieRollMult * fPerTempMult)<br />
flee = max(iPerMinChange, s)<br />
fight = min(-iPerMinChange, -s)<br />
<br />
c = -abs(int(r * fPerDieRollMult))<br />
if success:<br />
if abs(c) < iPerMinChange:<br />
x = 0, y = -iPerMinChange # bug, see comments<br />
else:<br />
x = -int(c * fPerTempMult), y = c<br />
else fail:<br />
x = int(c * fPerTempMult), y = c<br />
</syntaxhighlight><br />
<br />
===Taunt===<br />
<syntaxhighlight lang="python"><br />
target1 = max(iPerMinChance, target1)<br />
roll 100, win if roll <= target1<br />
<br />
c = abs(int(target1 - roll))<br />
<br />
if roll <= target1:<br />
s = c * fPerDieRollMult * fPerTempMult<br />
flee = min(-iPerMinChange, int(-s))<br />
fight = max(iPerMinChange, int(s))<br />
<br />
x = int(-c * fPerDieRollMult)<br />
<br />
if success and abs(x) < iPerMinChange:<br />
x = -iPerMinChange<br />
</syntaxhighlight><br />
<br />
===Bribe===<br />
<syntaxhighlight lang="python"><br />
target3 = max(iPerMinChance, target3)<br />
roll 100, win if roll <= target3<br />
c = int((target3 - roll) * fPerDieRollMult)<br />
<br />
x = max(iPerMinChange, c) on success, c on fail<br />
</syntaxhighlight><br />
<br />
<br />
===Disposition Change===<br />
<br />
For all persuasion actions there is a temporary and a permanent disposition change. The temporary one applies to the disposition meter you see in the dialogue window.<br />
The permanent one is applied when you say goodbye to the NPC; the NPC's disposition is reset to the disposition they had when you initiated the conversation, then the permanent disposition change is applied. You can see these values in the console by using ToggleDialogStats before persuading.<br />
<br />
For all methods:<br />
<syntaxhighlight lang="python"><br />
temporary disposition change = int(x * fPerTempMult)<br />
</syntaxhighlight><br />
<br />
except for Intimidate:<br />
<syntaxhighlight lang="python"><br />
change = x<br />
</syntaxhighlight><br />
<br />
This may attempt to change actual disposition below/above 0/100. Disposition changes are clamped so as not to go past the caps, and the actual amount the disposition moved is used in the next function.<br />
<syntaxhighlight lang="python"><br />
permanent disposition change = int(cappedDispositionchange / fPerTempMult)<br />
</syntaxhighlight><br />
<br />
except for Intimidate<br />
<syntaxhighlight lang="python"><br />
change = -int(cappedDispositionchange/ fPerTempMult) on success<br />
y on fail<br />
</syntaxhighlight><br />
<br />
There may also be modifications to the NPC's flee and fight ratings. The flee and fight variables hold the amount those ratings are changed. They are also capped at 0 and 100.<br />
<br />
<br />
===Comments===<br />
<br />
The function is long and highly redundant, much of the same formulas are repeatedly calculated many times for no reason. <br />
It's just another poorly coded part of Morrowind. There is at least one bug with Intimidate, where if the calculated <br />
change is less than iPerMinChange, it fails to set x correctly (it should have the value y does). This is responsible for the disposition meter not moving on some Intimidate Success results.<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Trading_and_Services&diff=2403
Research:Trading and Services
2015-11-19T19:00:59Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Trading and services==<br />
<br />
<br />
===Common mechanics===<br />
<br />
<br />
====Barter function====<br />
All bartering and services use a common function to evaluate costs. Uses common formula [[Research:Common_Terms#fatigueTerm|fatigueTerm]] for each side of a transaction.<br />
<br />
<syntaxhighlight lang="python"><br />
defining a function barterOffer :: (Actor npc, int basePrice, bool buyingSelling) -> int offerPrice<br />
<br />
if npc is a creature: return basePrice<br />
<br />
clampedDisposition = clamp int(npcDisposition) to [0..100]<br />
a = min(pcMercantile, 100)<br />
b = min(0.1 * pcLuck, 10)<br />
c = min(0.2 * pcPersonality, 10)<br />
d = min(npcMercantile, 100)<br />
e = min(0.1 * npcLuck, 10)<br />
f = min(0.2 * npcPersonality, 10)<br />
<br />
pcTerm = (clampedDisposition - 50 + a + b + c) * pcFatigueTerm<br />
npcTerm = (d + e + f) * npcFatigueTerm<br />
buyTerm = 0.01 * (100 - 0.5 * (pcTerm - npcTerm))<br />
sellTerm = 0.01 * (50 - 0.5 * (npcTerm - pcTerm))<br />
<br />
if buying: x = buyTerm<br />
if selling: x = min(buyTerm, sellTerm)<br />
<br />
if x < 1: offerPrice = int(x * basePrice)<br />
if x >= 1: offerPrice = basePrice + int((x - 1) * basePrice)<br />
offerPrice = max(1, offerPrice)<br />
</syntaxhighlight><br />
<br />
<br />
===Bartering===<br />
<br />
{{Formula<br />
|On choosing/offering an item to buy/sell<br />
|Determining item/stack base prices and adjusted prices.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
basePrice = price of prototype item of the same kind, enchanted items have prices set at enchant time and saved with the object<br />
stackSize = number of items in selected stack<br />
<br />
if item is a weapon or armor: x = basePrice * (remainingDurability / maxDurability)<br />
if item is lockpick, probe or repair hammer: x = basePrice * (remainingUses / maxUses)<br />
if item is a filled soul gem: basePrice = soul points contained * empty soul gem price<br />
otherwise: x = basePrice<br />
<br />
if buying: merchant offer is adjusted by -barterOffer(merchant, x * stackSize, buying)<br />
if selling: merchant offer is adjusted by +barterOffer(merchant, x * stackSize, selling)<br />
</syntaxhighlight><br />
<br />
{{Formula<br />
|On finalizing a transaction.<br />
|Includes haggling mechanic. Uses common formula [[Research:Common_Terms#fatigueTerm|fatigueTerm]].<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
all prices are negative when player is buying, positive when player is selling<br />
<br />
accept if playerOffer <= merchantOffer (same for buy and sell)<br />
if npc is a creature: reject (no haggle)<br />
<br />
a = abs(merchantOffer)<br />
b = abs(playerOffer)<br />
if buying: d = int(100 * (a - b) / a)<br />
if selling: d = int(100 * (b - a) / a)<br />
<br />
clampedDisposition = clamp int(npcDisposition) to [0..100]<br />
dispositionTerm = fDispositionMod * (clampedDisposition - 50)<br />
pcTerm = (dispositionTerm + pcMercantile + 0.1 * pcLuck + 0.2 * pcPersonality) * pcFatigueTerm<br />
npcTerm = (npcMercantile + 0.1 * npcLuck + 0.2 * npcPersonality) * npcFatigueTerm<br />
x = fBargainOfferMulti * d + fBargainOfferBase<br />
if buying: x += abs(int(pcTerm - npcTerm))<br />
if selling: x += abs(int(npcTerm - pcTerm))<br />
<br />
roll 100, if roll <= x then trade is accepted<br />
adjust npc temporary disposition by iBarterSuccessDisposition or iBarterFailDisposition<br />
</syntaxhighlight><br />
<br />
===Merchant repair===<br />
{{Formula<br />
|On opening the repair service window<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
p = max(1, basePrice)<br />
r = max(1, int(maxDurability / p))<br />
<br />
x = int((maxDurability - durability) / r)<br />
x = int(fRepairMult * x)<br />
cost = barterOffer(npc, x, buying)<br />
</syntaxhighlight><br />
<br />
===Trainers===<br />
{{Formula<br />
|On purchasing training<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified, but buggy. See notes for solution.}}}}<br />
<syntaxhighlight lang="python"><br />
cost of training a skill = barterOffer(npc, pcSkill * iTrainingMod, buying)<br />
</syntaxhighlight><br />
Standard Morrowind uses the current skill value, including fortifies and drains, which allows cheap training exploits with drain spells. A new implementation should use the skill's base value.<br />
<br />
===Spell merchant===<br />
{{Formula<br />
|On purchasing a spell<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
cost of purchasing existing spell = barterOffer(npc, spell.magickaCost * fSpellValueMult, buying)<br />
</syntaxhighlight><br />
<br />
{{Formula<br />
|On purchasing from a spellmaking service<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Needs testing}}}}<br />
<syntaxhighlight lang="python"><br />
y = 0<br />
for each effect in spell:<br />
x = 0.5 * (max(1, effect.magnitudeMin) + max(1, effect.magnitudeMax))<br />
x *= 0.1 * effect.magicEffect.baseMagickaCost<br />
x *= 1 + effect.duration<br />
x += 0.05 * max(1, spell.radius) * effect.magicEffect.baseMagickaCost<br />
<br />
y += x * fEffectCostMult<br />
y = max(1, y)<br />
if effect.rangeType & CAST_TARGET: y *= 1.5<br />
<br />
magickaCost = int(y)<br />
cost of spellmaking = barterOffer(npc, magickaCost * fSpellMakingValueMult, buying)<br />
</syntaxhighlight><br />
<br />
===Enchanting merchant===<br />
{{Formula<br />
|On purchasing an enchantment<br />
|<br />
|{{StatusCol|orange|Changes since last implementation}}<br />
|{{StatusCol|orange|Requires verification}}}}<br />
<syntaxhighlight lang="python"><br />
y = 0<br />
z = []<br />
enchantPoints = 0<br />
<br />
for each effect in enchantment:<br />
if enchantment is constant effect:<br />
if effect.magnitudeMin > 1 or effect.magnitudeMax > 1 or effect.radius > 1:<br />
effect.duration = int(fEnchantmentConstantDurationMult)<br />
else:<br />
effect.duration = 100<br />
<br />
x = 0.5 * (max(1, effect.magnitudeMin) + max(1, effect.magnitudeMax))<br />
x *= 0.1 * effect.magicEffect.baseMagickaCost<br />
x *= effect.duration # note difference from spellmaking<br />
x += 0.05 * max(1, spell.radius) * effect.magicEffect.baseMagickaCost<br />
<br />
y += x * fEffectCostMult<br />
y = max(1, y)<br />
if effect.rangeType & CAST_TARGET: y *= 1.5<br />
<br />
enchantPoints += int(y)<br />
z[effect.order] = int(pcEnchantSkill - y * fEnchantmentChanceMult)<br />
<br />
# note enchantPoints not used for cost<br />
cost of enchanting service = barterOffer(npc, y * fEnchantmentValueMult, buying)<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
Multiple enchantments stack in a expensive manner, as both variables y and enchantPoints are accumulators. Strangely, the price is based on the equivalent to the spellmaking accumulator rather than the enchantment points used. Constant effect enchantments override the duration in an over-complicated manner. As fEnchantmentConstantDurationMult is 100 by default, it would be much cleaner to use that for duration in both cases.<br />
<br />
<br />
===Travel costs===<br />
<br />
<br />
====Physical travel====<br />
{{Formula<br />
|On travelling via silt strider, boat or similar travel service AI<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Requires independent testing}}}}<br />
<syntaxhighlight lang="python"><br />
dist = distance from player to destination<br />
cost = barterOffer(npc, int(dist / fTravelMult), buying)<br />
time = int(dist / fTravelTimeMult)<br />
</syntaxhighlight><br />
<br />
====Guild guide====<br />
{{Formula<br />
|On travelling via Mages' Guild teleport service<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
cost = barterOffer(npc, fMagesGuildTravel, buying)<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
NPCs currently following the player and currently in range when the player selects the Travel option will come with. Travel costs are actually scaled (multiplied) according to the number of passengers taken, however, there seems to be a bug where the first follower is ignored (or free): the price will only increase if the player has more than one follower. So if the player has 4 followers in range, he will pay quadruple the price he would pay alone (or with a single follower), rather than 5x the price (for 5 passengers total).<br />
The same likely applies to creatures that are following, but that needs confirmation.<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:NPC_AI_Behaviour&diff=2402
Research:NPC AI Behaviour
2015-11-19T19:00:42Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==General behaviour==<br />
<br />
===Decision scan===<br />
{{Formula<br />
|AI decision check, every 5.0 seconds<br />
|The main point for actor behaviour selection<br />
|<br />
|{{StatusCol|orange|Early, incomplete research}}}}<br />
====Weight functions====<br />
<syntaxhighlight lang="python"><br />
actionGreetWeighting :: (npc, actor) -> weight<br />
if npc is creature: return 0<br />
if actor is not player: return 0<br />
if player is incapacitated: return 0<br />
if player is invisible or player.chameleon >= 75: return 0<br />
if npc.hello == 0: return 0<br />
if npc.currentAIPackage not in { AIWander, AITravel, AIPursue }: return 0<br />
<br />
x = iGreetDistanceMultiplier * npc.hello<br />
dist = distance(npc, actor)<br />
if npc has already greeted and dist > 2 * x:<br />
npc resets greeting flag<br />
npc.target = none<br />
elif npc has not greeted and dist < x:<br />
npc.target = actor<br />
return 100<br />
else:<br />
return 0<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="python"><br />
actionCrimeWeighting :: (npc, actor) -> weight<br />
if npc is creature: return 0<br />
if npc is incapacitated: return 0<br />
if npc.alarm == 0: return 0<br />
if not npc.isGuard: return 0<br />
if actor is not player: return 0<br />
if player is incapacitated: return 0<br />
if player is invisible or player.chameleon >= 75: return 0<br />
if player is resisting arrest: return 0<br />
if bounty < iCrimeThreshold: return 0<br />
<br />
weight = npc.alarm + 0.1 * bounty<br />
if weight < 100: return 0<br />
return weight<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="python"><br />
actionFightWeighting :: (npc, actor) -> weight<br />
if actor is in combat with an npc escort: return 100<br />
if actor is in combat with an actor escorted by npc: return 100<br />
<br />
fightTerm = npc.fight<br />
if actor.isWerewolf or (actor is player and player.isKnownWerewolf): fightTerm += iWerewolfFightMod<br />
dist = distanceAttack(npc, actor) # dist function that ignores vertical distance if actor is flying or swimming<br />
<br />
weight = iFightDistanceBase - fFightDistanceMultiplier * distance + fFightDispMult * (50 - disp)<br />
if weight < 100: return 0<br />
return weight<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="python"><br />
actionLookAtWeighting :: (npc, actor) -> weight<br />
if actor is incapacitated: return 0<br />
if actor is invisible or player.chameleon >= 75: return 0<br />
if npc current AI package prevents proximity check: return 0 # unclear conditions<br />
if distance(npc, actor) >= 640: return 0<br />
if actor is an npc escort: return 0<br />
if actor is being escorted by npc: return 0<br />
return 100<br />
</syntaxhighlight><br />
<br />
====Actor scan====<br />
For a single actor, labelled ''npc''<br />
<syntaxhighlight lang="python"><br />
actionWeight = 0<br />
selectedAction = none<br />
<br />
for each actor in environment: # player is examined first<br />
if actor is dead: continue<br />
if distance(npc, actor) > 7168: continue<br />
# 5-10 more conditions<br />
<br />
greetWeight = 0<br />
crimeWeight = 0<br />
if actor is player:<br />
if npc meets condition x: # under research<br />
greetWeight = actionGreetWeighting(npc, actor)<br />
if npc meets condition y: # under research<br />
crimeWeight = actionCrimeWeighting(npc, actor)<br />
fightWeight = actionFightWeighting(npc, actor)<br />
lookAtWeight = actionLookAtWeighting(npc, actor)<br />
<br />
action = none<br />
if lookAtWeight > actionWeight:<br />
npc.target = actor<br />
actionWeight = int(lookAtWeight)<br />
action = lookAt<br />
if greetWeight > actionWeight:<br />
npc.target = actor<br />
actionWeight = int(greetWeight)<br />
action = greet<br />
if fightWeight > actionWeight:<br />
npc.target = actor<br />
actionWeight = int(fightWeight)<br />
action = fight<br />
if crimeWeight > actionWeight:<br />
npc.target = actor<br />
actionWeight = int(crimeWeight)<br />
action = uphold the law<br />
<br />
if actionWeight != 0 and action != none and npc.target != none:<br />
if some 20 page function: # includes expensive functions like line of sight and sneak<br />
npc.target = 0<br />
actionWeight = 0<br />
action = none<br />
<br />
if action != none: selectedAction = action<br />
<br />
if action != none: npc switches to selectedAction<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
With the lookAt action, the NPC looks at its target's head. The anim controller blends the head pose over time.<br />
<br />
<br />
<br />
==Combat behaviour==<br />
<br />
===NPC awareness check===<br />
{{Formula<br />
|AI decision check, every 5.0 seconds<br />
|Part of the NPC perception state.<br />
|{{StatusCol|green|implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<br />
This check runs every 5 seconds for each NPC. It occurs whether you are sneaking or not, but isn't the same as the combat distance check.<br />
<br />
====Player side====<br />
<syntaxhighlight lang="python"><br />
if sneaking:<br />
sneakTerm = fSneakSkillMult * sneak + 0.2 * agility + 0.1 * luck + bootWeight * fSneakBootMult<br />
else:<br />
sneakTerm = 0<br />
<br />
fatigueTerm = fFatigueBase - fFatigueMult*(1 - normalisedFatigue)<br />
where normalisedFatigue is a function of fatigue. empty fatigue bar -> 0.0, full fatigue bar -> 1.0<br />
<br />
distTerm = fSneakDistanceBase + fSneakDistanceMultiplier*dist<br />
x = sneakTerm * distTerm * fatigueTerm + chameleon (+ 100 if invisible)<br />
</syntaxhighlight><br />
<br />
====NPC side====<br />
<syntaxhighlight lang="python"><br />
npcTerm = npcSneak + 0.2 * npcAgility + 0.1 * npcLuck - npcBlind<br />
npcFatigueTerm = fFatigueBase - fFatigueMult * (1 - normalisedFatigue)<br />
<br />
using NPC normalisedFatigue<br />
<br />
if PC is behind NPC (180 degrees):<br />
y = npcTerm * npcFatigueTerm * fSneakNoViewMult<br />
else:<br />
y = npcTerm * npcFatigueTerm * fSneakViewMult<br />
</syntaxhighlight><br />
<br />
====Final check====<br />
<syntaxhighlight lang="python"><br />
target = x - y<br />
roll 100, win if roll < target<br />
</syntaxhighlight><br />
<br />
<br />
====Comments====<br />
<br />
Appears straightforward and bug-free. NPCs can take up to five seconds to notice you even if you are not sneaking. This function precedes the combat distance check. I have not identified if there is a line of sight check occuring before or after.<br />
<br />
According to this formula, NPCs can still detect you when invisible? That seems wrong. [[User:Scrawl|Scrawl]] ([[User talk:Scrawl|talk]]) 00:25, 7 January 2014 (CET)<br />
<br />
<br />
===Attack frequency===<br />
{{Formula<br />
|Upon initiating combat, and after each swing/missile<br />
|The semi-random delay inserted between physical attacks.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Function contains other side effects}}}}<br />
<syntaxhighlight lang="python"><br />
if actor is an npc:<br />
baseDelay = fCombatDelayNPC<br />
else:<br />
baseDelay = fCombatDelayCreature<br />
<br />
delay = min(baseDelay + 0.01 * rand 100, baseDelay + 0.9)<br />
<br />
if actor is in range to attack with current weapon:<br />
actor will initiate a swing/fire a missile if time since end of last attack >= delay<br />
</syntaxhighlight><br />
<br />
==AI Tendencies==<br />
<br />
====Fight====<br />
Affected by calm and frenzy spells.<br />
<br />
====Flee====<br />
Affected by rally and demoralize spells.<br />
<br />
====Alarm====<br />
<br />
====Hello====<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Magic&diff=2401
Research:Magic
2015-11-19T19:00:17Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Spell Casting==<br />
<br />
<br />
====Chance of successful spell cast====<br />
{{Formula<br />
|On cast attempt, on AI spell evaluation, on UI update or in spellmaking<br />
|Uses common term [[Research:Common_Terms#fatigueTerm|fatigueTerm]].<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
if actor is silenced: return 0<br />
if <flag> and current magicka < magicka cost: return 0 # see comments<br />
if spell.castingType not (spell or power): return 100<br />
<br />
if castingType is power:<br />
check power timeout for this spell (24 hours from previous use)<br />
if power is available: return 100 else return 0<br />
<br />
if castingType is spell:<br />
if spell is flagged always succeeds: return 100<br />
<br />
y = FLOAT_MAX<br />
for each effect in spell:<br />
x = effect.duration<br />
if not effect.magicEffect.flags & UNCAPPED_DAMAGE: x = max(1, x)<br />
x *= 0.1 * effect.magicEffect.baseMagickaCost<br />
x *= 0.5 * (effect.magnitudeMin + effect.magnitudeMax)<br />
x += effect.radius * 0.05 * effect.magicEffect.baseMagickaCost<br />
if effect.rangeType & CAST_TARGET: x *= 1.5<br />
x *= fEffectCostMult<br />
<br />
s = 2 * actor.skill[effect.magicEffect.school.associatedSkillId]<br />
if (s - x) < y:<br />
y = s - x<br />
effectiveSchool = effect.magicEffect.school<br />
lowestSkill = s<br />
<br />
# castBonus is the stat modified by the Sound magic effect;<br />
# it behaves in the same way as other hidden stats, that is positive for a bonus, and negative for a penalty<br />
castChance = (lowestSkill - spellCost + actor.castBonus + 0.2 * actorWillpower + 0.1 * actorLuck) * fatigueTerm<br />
if godmode is on: castChance = 100<br />
return castChance, effectiveSchool<br />
</syntaxhighlight><br />
<br />
<br />
=====Comments=====<br />
<br />
The cast chance calculation is used in multiple places, some where magicka use may not be important, so there is a <flag>, which is normally true for casting/AI use and the inventory spell list, and false for all other UI uses of spell chance. The function returns the weakest school used out of all the effects, which is the skill that will gain progress when the spell is cast. Note that spells that are marked "always succeed" do not seem to contribute to skill progress.<br />
<br />
====Cast cost====<br />
{{Formula<br />
|On cast attempt<br />
|Magicka and fatigue costs of casting. Uses common term [[Research:Common_Terms#normalizedEncumbrance|normalizedEncumbrance]].<br />
|{{StatusCol|green|Implemented, bug corrected}}<br />
|{{StatusCol|green|Verified, but fatigue cost contains a bug}}}}<br />
Casting cost is an independent variable in the spell data. For spellmaker generated spells, refer to [[Research:Trading and Services#Spell merchant|Spell merchant]].<br />
<syntaxhighlight lang="python"><br />
magicka loss = spell.magickaCost<br />
</syntaxhighlight><br />
Failed casts still incur all costs.<br />
<br />
<br />
Casting incurs a fatigue hit.<br />
<syntaxhighlight lang="python"><br />
fatigue loss = magickaCost * (fFatigueSpellBase * normalizedEncumbrance * fFatigueSpellMult)<br />
</syntaxhighlight><br />
which is how Morrowind behaves but is clearly incorrect; a fixed formula is<br />
<syntaxhighlight lang="python"><br />
fatigue loss = magickaCost * (fFatigueSpellBase + normalizedEncumbrance * fFatigueSpellMult)<br />
</syntaxhighlight><br />
<br />
The GMST fFatigueSpellCostMult is unused.<br />
<br />
===Magic resistance===<br />
<br />
====Spell application type "Magic"====<br />
{{Formula<br />
|On magic effect hit, applies separately for each effect<br />
|Uses [[Research:Magic#Effect attributes|resistance effect attributes]].<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Surrounding mechanics still need evaluating}}}}<br />
<syntaxhighlight lang="python"><br />
i = look up corresponding resistance effect attribute for effect<br />
if effect is not linked to a resistance effect attribute: effect cannot be resisted<br />
<br />
resistance = get defending actor effect attribute i<br />
castChance = attackers chance of casting spell (uncapped)<br />
<br />
x = (willpower + 0.1 * luck) * fatigueTerm<br />
if castChance > 0: x *= 50 / castChance<br />
roll float [0..100]<br />
if effect.flags & NO_MAGNITUDE: roll -= resistance<br />
<br />
if x <= roll:<br />
x = 0<br />
else:<br />
if effect.flags & NO_MAGNITUDE:<br />
x = 100<br />
else:<br />
x = roll / min(x, 100)<br />
<br />
x = min(x + resistance, 100)<br />
<br />
if x > 100: effect is fully resisted, show message, remove effect<br />
else: effect is applied with resistance x%<br />
</syntaxhighlight><br />
<br />
=====Comments=====<br />
<br />
Note that this punishes casting difficult (low cast chance) spells versus high willpower enemies. The ''castChance'' scaling will go almost guarantee resists if ''castChance'' < 25%.<br />
<br />
Has an interesting situation, where spells with magnitude _do_ take resistance from willpower but at a very low rate (0.01x due to lack of rescaling) than would be expected, making willpower resistance almost useless for that class of spells.<br />
<br />
The way resistance affects the final attribute, is that magnitude is stored untouched, resistance is stored with the active effect, and resistance is applied every time the spell has an application tick. The outward effect is that spell effect tooltips list the original magnitude, without factoring resistance.<br />
<br />
<br />
====Spell application types "Disease" or "Blight"====<br />
{{Formula<br />
|On spell hit, applies once for entire spell<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Surrounding mechanics still need evaluating}}}}<br />
<syntaxhighlight lang="python"><br />
x = actor effect attribute "Resist Disease" or "Resist Blight"<br />
roll 100, if roll <= x then fully resist the disease<br />
</syntaxhighlight><br />
<br />
==Item Charge==<br />
<br />
====Using enchanted items====<br />
{{Formula<br />
|On enchanted item use<br />
|Charge consumed on use depends on skill.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified; but a poorly scaling mechanic}}}}<br />
<syntaxhighlight lang="python"><br />
x = 0.01 * (110 - pcEnchant)<br />
charge used = int(x * enchant base charge cost)<br />
</syntaxhighlight><br />
<br />
This makes items last 10 times longer at 100 enchant compared to 10 enchant, making it scale a little too well. MCP uses x = 0.025 * (400 - pcEnchant).<br />
<br />
<br />
====Natural recharge====<br />
{{Formula<br />
|On game tick<br />
|Enchanted items may gain charge over time.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
Every item in the player's inventory charges by tickTime * fMagicItemRechargePerSecond. Items anywhere else do not charge.<br />
<br />
====Soulgem charging====<br />
Refer to [[Research:Player Craft Skills#Enchanting|Player Craft Skills]].<br />
<br />
<br />
==Magic effects==<br />
<br />
Spells are combinations of one or more effects, which have associated code specific to the effect, and properties which cover cast ranges, resistances and other generalized behaviours that may be shared by a small set of effects.<br />
<br />
<br />
===Effect attributes===<br />
<br />
All actors have "hidden" attributes that effects apply to, to allow effects to stack, have resistance applied and counteract each other. These attributes are saved with actors, appearing in the actor data in the same order. All effect attributes are applied and stored as integers. Resists and weaknesses are unified under the Resist- attributes, with resistances being positive and weaknesses being negative. Non-magnitude spells have an effective attribute of 1 when active.<br />
<br />
Some attributes provide resistance values vs magic effects when calculating magic mitigation. These resistances only apply in certain cases, check [[Research:Magic#Magic resistance|magic resistance]].<br />
<br />
{| class="wikitable"<br />
! Index !! Name !! Provides resistance against magic effects<br />
|-<br />
| 0 || Fortify Attack<br />
|-<br />
| 1 || Sanctuary || Disintegrate *<br />
|-<br />
| 2 || Resist Magicka || Drain *, Damage *, Absorb *, Weakness to *, Burden, Charm, Silence, Blind, Sound, Calm, Frenzy, Demoralize, Rally, Turn Undead<br />
|-<br />
| 3 || Resist Fire || Fire<br />
|-<br />
| 4 || Resist Frost || Frost<br />
|-<br />
| 5 || Resist Shock || Shock<br />
|-<br />
| 6 || Resist Common Disease || Vampirism<br />
|-<br />
| 7 || Resist Blight Disease ||<br />
|-<br />
| 8 || Resist Corprus || Corprus<br />
|-<br />
| 9 || Resist Poison || Poison<br />
|-<br />
| 10 || Resist Paralysis || Paralysis<br />
|-<br />
| 11 || Chameleon ||<br />
|-<br />
| 12 || Resist Normal Weapons ||<br />
|-<br />
| 13 || Water Breathing ||<br />
|-<br />
| 14 || Water Walking ||<br />
|-<br />
| 15 || Swift Swim ||<br />
|-<br />
| 16 || Jump ||<br />
|-<br />
| 17 || Levitate ||<br />
|-<br />
| 18 || Shield ||<br />
|-<br />
| 19 || Sound ||<br />
|-<br />
| 20 || Silence ||<br />
|-<br />
| 21 || Blind ||<br />
|-<br />
| 22 || Paralyze ||<br />
|-<br />
| 23 || Invisibility ||<br />
|-<br />
| 24 || Fight ||<br />
|-<br />
| 25 || Flee ||<br />
|-<br />
| 26 || Hello ||<br />
|-<br />
| 27 || Alarm ||<br />
|}<br />
<br />
===Effect flags===<br />
<br />
These are fixed properties of magic effects. Obtained from the code, these are not affected by mods.<br />
<br />
{| class="wikitable"<br />
! Bit !! Enum name !! Status !! Description<br />
|-<br />
| 0x1 || TARGET_SKILL || <font color="green"> implemented </font> || Affects a specific skill, which is specified elsewhere in the effect structure.<br />
|-<br />
| 0x2 || TARGET_ATTR || <font color="green"> implemented </font> || Affects a specific attribute, which is specified elsewhere in the effect structure.<br />
|-<br />
| 0x4 || NO_DURATION || <font color="green"> implemented </font> || Has no duration. Only runs effect once on cast.<br />
|-<br />
| 0x8 || NO_MAGNITUDE || <font color="green"> implemented </font> || Has no magnitude.<br />
|-<br />
| 0x10 || HARMFUL || <font color="green"> implemented </font> || Counts as a harmful effect. Interpreted as useful effects for attack by the AI, and is treated as a bad effect in alchemy.<br />
|-<br />
| 0x20 || CONTINUOUS_VFX || <font color="green"> implemented </font> || The effect's hit particle VFX repeats for the full duration of the spell, rather than occurring once on hit.<br />
|-<br />
| 0x40 || CAST_SELF || <font color="green"> implemented </font> || Allows range - cast on self.<br />
|-<br />
| 0x80 || CAST_TOUCH || <font color="green"> implemented </font> || Allows range - cast on touch.<br />
|-<br />
| 0x100 || CAST_TARGET || <font color="green"> implemented </font> || Allows range - cast on target.<br />
|-<br />
| 0x200 - 0x800 || || <font color="red"> not started </font> || Unverified. Appears unused.<br />
|-<br />
| 0x1000 || APPLIED_ONCE || <font color="red"> not started </font> || An effect that is applied once it lands, instead of continuously. Allows an effect to reduce an attribute below zero; removes the normal minimum effect duration of 1 second.<br />
|-<br />
| 0x2000 || STEALTH || <font color="red"> not started </font> || Unverified. Used only by chameleon effect.<br />
|-<br />
| 0x4000 || NON_RECASTABLE || <font color="red"> not started </font> || Does not land if parent spell is already affecting target. Shows "you cannot re-cast" message for self target.<br />
|-<br />
| 0x8000 || ILLEGAL_DAEDRA || <font color="red"> not started </font> || Unverified. Appears to be flagged on summon daedra effects. Possibly for guards to detect summoning in towns.<br />
|-<br />
| 0x10000 || UNREFLECTABLE || <font color="green"> implemented </font> || Cannot be reflected, the effect always lands normally.<br />
|-<br />
| 0x20000 || CASTER_LINKED || <font color="green"> implemented </font> || Must quench if caster is dead, or not an NPC/creature. Not allowed in containter/door trap spells.<br />
|}<br />
<br />
<br />
Flags for all effects:<br />
<br />
int effectFlags[] = {<br />
0x11c8, 0x11c0, 0x11c8, 0x11e0, 0x11e0, 0x11e0, 0x11e0, 0x11d0,<br />
0x11c0, 0x11c0, 0x11e0, 0x11c0, 0x11184, 0x11184, 0x1f0, 0x1f0,<br />
0x1f0, 0x11d2, 0x11f0, 0x11d0, 0x11d0, 0x11d1, 0x1d2, 0x1f0,<br />
0x1d0, 0x1d0, 0x1d1, 0x1f0, 0x11d0, 0x11d0, 0x11d0, 0x11d0,<br />
0x11d0, 0x11d0, 0x11d0, 0x11d0, 0x11d0, 0x1d0, 0x1d0, 0x11c8,<br />
0x31c0, 0x11c0, 0x11c0, 0x11c0, 0x1180, 0x11d8, 0x11d8, 0x11d0,<br />
0x11d0, 0x11180, 0x11180, 0x11180, 0x11180, 0x11180, 0x11180, 0x11180,<br />
0x11180, 0x11c4, 0x111b8, 0x1040, 0x104c, 0x104c, 0x104c, 0x104c,<br />
0x1040, 0x1040, 0x1040, 0x11c0, 0x11c0, 0x1cc, 0x1cc, 0x1cc,<br />
0x1cc, 0x1cc, 0x1c2, 0x1c0, 0x1c0, 0x1c0, 0x1c1, 0x11c2,<br />
0x11c0, 0x11c0, 0x11c0, 0x11c1, 0x11c0, 0x21192, 0x20190, 0x20190,<br />
0x20190, 0x21191, 0x11c0, 0x11c0, 0x11c0, 0x11c0, 0x11c0, 0x11c0,<br />
0x11c0, 0x11c0, 0x11c0, 0x11c0, 0x1c0, 0x11190, 0x9048, 0x9048,<br />
0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x9048,<br />
0x9048, 0x9048, 0x9048, 0x9048, 0x9048, 0x11c0, 0x1180, 0x1180,<br />
0x5048, 0x5048, 0x5048, 0x5048, 0x5048, 0x5048, 0x1188, 0x5048,<br />
0x5048, 0x5048, 0x5048, 0x5048, 0x1048, 0x104c, 0x1048, 0x40,<br />
0x11c8, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048<br />
};<br />
<br />
==Specific magic effects==<br />
<br />
While all magic effects have programmed behaviour, there are specific ones that may have complicated side effects. Any particular information for a single effect is documented here.<br />
<br />
<br />
===Corprus===<br />
{{Formula<br />
|On application, and every 24 hours<br />
|Spell effect "Corprus"<br />
|<br />
|{{StatusCol|orange|Under research}}}}<br />
The corprus effect is closely linked to the corprus spell. Every 24 hours after the contraction of corprus, all other effects on the same spell as corprus, that also have effect flag 0x1000 (APPLIED_ONCE) are re-applied in a special case. This increases the magnitude of the effect, while correctly recording the amount applied so it can be removed later. Without other effects on the spell, corprus does nothing.<br />
<br />
On removal, the drain spells are removed normally, while another special case interdicts any removal of positive attribute effects. Instead, a fortification is converted into a restore effect of the same magnitude.<br />
<br />
<br />
===Sun Damage===<br />
{{Formula<br />
|Continuously applied, triggering the hit fader to pulse<br />
|Spell effect "Sun Damage"<br />
|<br />
|{{StatusCol|green|Verified}}}}<br />
TitleCaps variables indicate values taken from the morrowind.ini section related to that object.<br />
<br />
<syntaxhighlight lang="python"><br />
if current cell is interior only: return 0<br />
<br />
if gamehour <= Weather.SunriseTime or gamehour >= Weather.SunsetTime + Weather.SunsetDuration:<br />
sunRisen = 0<br />
elif gamehour <= Weather.SunriseTime + Weather.SunriseDuration:<br />
sunRisen = (gamehour - Weather.SunriseTime) / Weather.SunriseDuration<br />
elif gamehour > Weather.SunsetTime:<br />
sunRisen = 1 - ((gamehour - Weather.SunsetTime) / Weather.SunsetDuration)<br />
else:<br />
sunRisen = 1<br />
<br />
# transition is 0 at the start of a weather change and 1.0 at the end<br />
# note that CloudsMaximumPercent is not actually a percentage<br />
if weather is changing and transition < nextWeather.CloudsMaximumPercent:<br />
t = transition / nextWeather.CloudsMaximumPercent<br />
sunVisibility = (1-t) * currentWeather.GlareView + t * nextWeather.GlareView<br />
else:<br />
sunVisibility = currentWeather.GlareView<br />
<br />
damageScale = max(sunVisibility * sunRisen, fMagicSunBlockedMult * sunRisen)<br />
damageScale = max(0, min(damage, 1))<br />
<br />
return damageScale * spelleffect.magnitude<br />
</syntaxhighlight><br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Combat&diff=2400
Research:Combat
2015-11-19T18:59:45Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Physical combat==<br />
<br />
===Attack swing===<br />
{{Formula<br />
|On melee swing and on projectile launch<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<br />
Swing is the amount of time the weapon is held back for attack. The damage range of a weapon is directly related to how long the attack key is held. An instant click will result in minimum stated damage, while waiting until the attack wind-up animation is fully complete will result in maximum stated damage.<br />
<br />
For the player:<br />
<syntaxhighlight lang="python"><br />
attackSwing = attack key time held / full attack wind-up animation length<br />
</syntaxhighlight><br />
<br />
For NPCs and creatures:<br />
<syntaxhighlight lang="python"><br />
attackSwing = min(1, 0.1 + 0.01 * (roll 100))<br />
</syntaxhighlight><br />
<br />
<br />
===Damage===<br />
{{Formula<br />
|On melee swing and on projectile launch<br />
|Potential damage output from an attack.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
attackType is one of {chop, slash, thrust}, or equivalent for creatures<br />
<br />
if attack is from a creature (non-biped):<br />
damageMin = creature.attack[attackType].damageMin<br />
damageMax = creature.attack[attackType].damageMax<br />
elif attack is from a melee or ranged weapon:<br />
damageMin = weapon.attack[attackType].damageMin<br />
damageMax = weapon.attack[attackType].damageMax<br />
<br />
# note for thrown weapons: weapon and ammo are the same object which match, causing 2x base damage<br />
if weapon.isMarksman and ammo that matches the weapon type is available:<br />
damageMin += ammo.damageMin<br />
damageMax += ammo.damageMax<br />
elif attack is hand-to-hand:<br />
if actor.isWerewolf:<br />
claw = script global float "WerewolfClawMult"<br />
damageMin = int(fMinHandToHandMult * actor.handToHandSkill * claw)<br />
damageMax = int(fMaxHandToHandMult * actor.handToHandSkill * claw)<br />
else:<br />
damageMin = int(fMinHandToHandMult * actor.handToHandSkill)<br />
damageMax = int(fMaxHandToHandMult * actor.handToHandSkill)<br />
<br />
damageMax = max(damageMin, damageMax)<br />
rawDamage = damageMin + actor.attackSwing * (damageMax - damageMin)<br />
<br />
if attack is from a melee or ranged weapon: # see comments<br />
rawDamage *= 0.5 + 0.01 * actor.strength<br />
rawDamage *= weapon.condition / weapon.maxCondition<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
Weapon strength scaling does not use existing scaling GMSTs, and hand-to-hand does not exhibit any strength scaling. MCP uses fDamageStrengthBase + 0.1 * fDamageStrengthMult * actor.strength for weapon scaling.<br />
<br />
===Hit Chance===<br />
{{Formula<br />
|On melee and ranged contact<br />
|Check applies to melee and projectile hits. isAware is the awareness check from [[Research:NPC_AI_Behaviour#NPC_Awareness_Check|NPC AI Behaviour]].<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
hitTest :: (isProjectile, attacker, defender) -> hit<br />
<br />
fatigueTerm = fFatigueBase - fFatigueMult*(1 - normalisedFatigue)<br />
where normalisedFatigue is a function of fatigue. empty fatigue bar -> 0.0, full fatigue bar -> 1.0<br />
<br />
# the attacker may switch weapons while a projectile is in flight<br />
skill = isProjectile ? attacker.marksmanSkill : attacker.skill[attacker.weapon.relatedSkill]<br />
attackTerm = (skill + 0.2 * attacker.agility + 0.1 * attacker.luck) * atttacker.fatigueTerm<br />
attackTerm += attacker.attackBonus - attacker.blind<br />
<br />
defenseTerm = 0<br />
<br />
if defender.fatigue >= 0:<br />
unaware = (not defender.inCombat) and attacker is player and (not defender.isAware(player)) # see comments<br />
if not (defender.isKnockedDown or defender.isParalyzed or unaware):<br />
defenseTerm = (0.2 * defender.agility + 0.1 * defender.luck) * defender.fatigueTerm<br />
defenseTerm += min(100, defender.sanctuary)<br />
<br />
defenseTerm += min(100, fCombatInvisoMult * defender.chameleon)<br />
defenseTerm += min(100, fCombatInvisoMult * defender.invisibility)<br />
<br />
x = round(attackTerm - defenseTerm)<br />
<br />
if x > 0 and roll 100 < x: return hit<br />
else: return miss<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
<br />
The unaware check is only calculated correctly for projectile attacks. Due to either a design decision or bug, it doesn't apply to melee attacks, but it seems likely to be an design bug. It is recommended to implement it for all cases.<br />
<br />
===Hit reactions===<br />
{{Formula<br />
|After a successful hit, before standard damage or blocking is applied<br />
|Reactionary effects of a hit; effects are applied in order.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|orange|Includes confirmed mechanics, but there may be further undocumented effects.}}}}<br />
<br />
====Weapon enchantment====<br />
<syntaxhighlight lang="python"><br />
if exists weapon.enchantment and weapon.enchantment is cast on strike:<br />
apply weapon.enchantment<br />
</syntaxhighlight><br />
<br />
====Elemental shield====<br />
Elemental shields are similar to a thorns effect, causing damage to the attacker.<br />
<syntaxhighlight lang="python"><br />
saveTerm = attacker.destruction + 0.2 * attacker.willpower + 0.1 * attacker.luck<br />
saveTerm *= 1.25 * attacker.normalisedFatigue<br />
<br />
for each elementalShield in defender.activeEffects:<br />
x = max(0, saveTerm - roll float 100)<br />
x = min(100, x + attacker.elementalResist[elementalShield.element])<br />
x = fElementalShieldMult * elementalShield.magnitude * (1 - 0.01 * x)<br />
attacker takes x damage<br />
</syntaxhighlight><br />
<br />
Elemental shields do not stack, each effect instance is rolled separately.<br />
<br />
====Disease transfer====<br />
<syntaxhighlight lang="python"><br />
if defender is not player: return<br />
<br />
for each disease in attacker.activeSpells:<br />
if any of the disease.effects is corprus:<br />
resist = 1 - 0.01 * defender.resistCorprus<br />
elif spell.castType == disease:<br />
resist = 1 - 0.01 * defender.resistDisease<br />
elif spell.castType == blight:<br />
resist = 1 - 0.01 * defender.resistBlight<br />
else:<br />
continue<br />
<br />
if player already has the disease:<br />
continue<br />
<br />
x = int(fDiseaseXferChance * 100 * resist)<br />
if roll 10000 < x:<br />
defender acquires disease<br />
display message sMagicContractDisease with disease name<br />
</syntaxhighlight><br />
<br />
<br />
===Blocking with a shield===<br />
{{Formula<br />
|On melee contact<br />
|With a shield equipped, blocking has a chance to negate all damage. Uses attacker's [[Research:Combat#Attack_swing|attackSwing]].<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
''On enemy hit''<br />
<syntaxhighlight lang="python"><br />
if player is knocked down, knocked out, paralyzed, hitstunned, in cast stance or is casting: no block<br />
<br />
theta = angle from player to enemy, negative is enemy left of centreline, positive is enemy right of centreline<br />
<br />
if theta < fCombatBlockLeftAngle: no block<br />
if theta > fCombatBlockRightAngle: no block<br />
<br />
#Note that the above tests are inaccurate, as each comparison is calculated using a dot product<br />
#which is converted to an angle improperly. The effective value of fCombatBlock*Angle ends up<br />
#slightly different than specified.<br />
<br />
blockTerm = pcBlockSkill + 0.2 * pcAgility + 0.1 * pcLuck<br />
swingTerm = attackSwing * fSwingBlockMult + fSwingBlockBase<br />
<br />
fatigueTerm = fFatigueBase - fFatigueMult*(1 - normalisedFatigue)<br />
where normalisedFatigue is a function of fatigue. empty fatigue bar -> 0.0, full fatigue bar -> 1.0<br />
Note fatigueTerm is normally 1.25 at full fatigue.<br />
<br />
playerTerm = blockTerm * swingTerm<br />
if player is not moving forward at any speed: playerTerm = playerTerm * 1.25 (note this is not fBlockStillBonus)<br />
playerTerm = playerTerm * fatigueTerm<br />
<br />
if npc is a creature: npcSkill = creature combat stat<br />
otherwise: npcSkill = npc skill with wielded weapon<br />
<br />
npcTerm = npcSkill + 0.2 * npcAgility + 0.1 * npcLuck<br />
npcFatigueTerm = fFatigueBase - fFatigueMult*(1 - normalisedFatigue)<br />
using NPC normalisedFatigue<br />
npcTerm = npcTerm * npcFatigueTerm<br />
<br />
x = int(playerTerm - npcTerm)<br />
if x < iBlockMinChance: x = iBlockMinChance<br />
if x > iBlockMaxChance: x = iBlockMaxChance<br />
roll 100, block if roll < x<br />
<br />
if a hit is blocked, the shield durability is reduced by incoming damage, no damage mitigation is applied<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
The enemySwing variable is effectively how much the enemy has charged their attack. It seems to be uniform random and is not based on weapon damage. The other thing of note is the playerTerm bonus. The fBlockStillBonus GMST is not used at all; the multiplier is hard-coded. Unexpectedly, this bonus is still given if the player is moving backwards or strafing, only moving forward will negate it.<br />
<br />
===Bodypart hit chance===<br />
{{Formula<br />
|On melee or ranged hit<br />
|Damage is directed towards a single random body part. Occurs once a hit is confirmed.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
{| class="wikitable"<br />
| Chest/Cuirass || 30%<br />
|-<br />
| Head/Helm || 10%<br />
|-<br />
| Legs/Greaves || 10%<br />
|-<br />
| Feet/Boots || 10%<br />
|-<br />
| L Shoulder/L Pauldron || 10%<br />
|-<br />
| R Shoulder/R Pauldron || 10%<br />
|-<br />
| Shield arm/Shield || 10%<br />
|-<br />
| L Hand/L Gauntlet || 5%<br />
|-<br />
| R Hand/R Gauntlet || 5%<br />
|}<br />
<br />
Note that you still take unarmored class hits to the shield arm if you don't have a shield equipped. This includes when the actor is holding a 2-handed weapon.<br />
<br />
<br />
===Physical contact===<br />
{{Formula<br />
|On melee or ranged hit, before mitigation<br />
|Damage is directed towards a single random body part. Occurs once a hit is confirmed.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
damage = rawDamage<br />
unaware = (not defender.inCombat) and attacker is player and (not defender.isAware(player))<br />
<br />
if defender is knocked down or knocked out:<br />
damage *= fCombatKODamageMult<br />
if unaware and attack is not projectile damage:<br />
damage *= fCombatCriticalStrikeMult<br />
display message sTargetCriticalStrike<br />
if unaware:<br />
use critical strike hit audio<br />
<br />
if attack is hand-to-hand:<br />
if attacker.isWerewolf or defender is knocked down, knocked out or paralyzed:<br />
damage *= fHandtoHandHealthPer<br />
damage is applied to health as normal<br />
else:<br />
damage is applied to fatigue, ignoring all mitigation and difficulty scaling<br />
<br />
if attack uses a weapon:<br />
if weapon is (not enchanted and does not ignore normal resistance):<br />
damage *= (1 - 0.01 * actor.resistNormalWeapons)<br />
if actor.resistNormalWeapons == 100:<br />
display sMagicTargetResistsWeapons<br />
<br />
if actor is a werewolf:<br />
if (projectile and projectile.isSilver) or (melee and weapon.isSilver):<br />
damage *= fWerewolfSilverWeaponDamageMult<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
Note that projectile attacks cannot crit, but they do make the critical hit sound, as the sound code is separated.<br />
<br />
===Armor mitigation===<br />
{{Formula<br />
|On melee or ranged hit<br />
|Occurs once a hit is confirmed.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
Physical damage applied to a target actor<br />
<br />
if damage < 0.001: skip rest of mitigation, set damage to 0<br />
<br />
unmitigatedDamage = damage<br />
<br />
x = damage / (damage + actor.effectiveArmorRating)<br />
damage *= max(fCombatArmorMinMult, x)<br />
z = int(unmitigatedDamage - damage)<br />
if damage < 1: damage = 1<br />
<br />
armour = weighted selection from actor armour slots<br />
if armour is equipped there, armour loses z condition<br />
if actor is player: player exercises relevant armour skill for armour<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
It appears that the volume of the armour hit sound is proportional to the enemy attackSwing.<br />
<br />
===Knockdowns===<br />
{{Formula<br />
|On melee or ranged hit<br />
|Occurs after damage is taken.<br />
|{{StatusCol|green|implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
damage = incoming damage before armour reduction (unmitigatedDamage)<br />
agilityTerm = agility * fKnockDownMult<br />
knockdownTerm = agility * iKnockDownOddsMult * 0.01 + iKnockDownOddsBase<br />
<br />
roll 100, knockdown occurs if agilityTerm <= damage and knockdownTerm <= roll<br />
</syntaxhighlight><br />
<br />
<br />
===Hitstun===<br />
{{Formula<br />
|On physical contact<br />
|Occurs after damage is taken.<br />
|{{StatusCol|red|not started}}<br />
|{{StatusCol|orange|Verified, but there may be further interactions}}}}<br />
<syntaxhighlight lang="python"><br />
if actor is creature and its animation is attacking, casting, or lockpicking/probing: no stun<br />
# players or NPCs always take hitstun<br />
<br />
apply hitstun if not already in hitstun<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
Hitstun is the actor state, with accompanying animations (Hit1-5 or SwimHit1-3) and movement restriction that occurs when the actor is hit. Hitstun prevents movement during its animation, while still allowing turning, crouching and jumping. It also prevents initiating new attacks or casting, but allows attacks (including releasing the attack button to strike) or casting to complete.<br />
<br />
===Weapon wear===<br />
{{Formula<br />
|On weapon contact, both on hits and on missed hit roll<br />
|Weapon condition loss from combat<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
if attack missed: rawDamage = 0<br />
x = max(1, fWeaponDamageMult * rawDamage)<br />
weapon loses x condition<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
This occurs on the same conditions that cause the weapon "miss" sound, as well as hits. Uses rawDamage, not mitigated damage. Should be evaluated after the attack is complete, as it may break the weapon.<br />
<br />
==Armor rating and Armor class==<br />
<br />
===Determining armor class===<br />
{{Formula<br />
|On evaluating AR<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
Item armor class:<br />
<syntaxhighlight lang="python"><br />
epsilon = 5e-4<br />
referenceWeight = iHelmWeight, iPauldronWeight, iCuirassWeight, iGauntletWeight, iGreavesWeight, iBootsWeight or iShieldWeight depending on slot<br />
<br />
if itemWeight == 0: return NONE<br />
if itemWeight <= referenceWeight * fLightMaxMod + epsilon: return LIGHT<br />
if itemWeight <= referenceWeight * fMedMaxMod + epsilon: return MEDIUM<br />
else: return HEAVY<br />
</syntaxhighlight><br />
<br />
===Armor rating===<br />
{{Formula<br />
|When evaluating effective armor rating<br />
|<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
For NPCs or the player:<br />
<syntaxhighlight lang="python"><br />
armorSkill is either npc lightArmorSkill, mediumArmorSkill or heavyArmorSkill dependent on item class<br />
<br />
if the actor has no armor at all: effectiveRating = 0 # obvious bug<br />
<br />
if there is armor in a slot:<br />
if itemWeight == 0: rating = armorBaseRating<br />
else: rating = armorBaseRating * armorSkill / iBaseArmorSkill<br />
<br />
otherwise unarmored skill is used instead:<br />
rating = (fUnarmoredBase1 * unarmoredSkill) * (fUnarmoredBase2 * unarmoredSkill)<br />
<br />
effectiveRating is a weighted combination of slot ratings:<br />
effectiveRating = Cuirass * 0.3 + (Shield + Helm + Greaves + Boots + LPauldron + RPauldron) * 0.1<br />
+ (LGauntlet + RGauntlet) * 0.05 + Shield spell effect magnitude<br />
</syntaxhighlight><br />
<br />
For creatures:<br />
<syntaxhighlight lang="python"><br />
effectiveRating = 0 # also a bug<br />
<br />
should be:<br />
<br />
effectiveRating = Shield spell effect magnitude<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
Without fixes, if an actor has no armour equipped at all the game would return an armour rating of 0, ignoring any unarmored skill. Similarly, creatures would always have zero rating, even ones that have active shield spells. Note that elemental shield spells do not contribute towards armor.<br />
<br />
==Difficulty multiplier==<br />
{{Formula<br />
|On application of health damage after all other mechanics.<br />
|Difficulty scaling of physical combat damage (including elemental shield damage). Fatigue damage or spell effects do not scale.<br />
|{{StatusCol|green|Implemented}}<br />
|{{StatusCol|green|Verified}}}}<br />
<syntaxhighlight lang="python"><br />
difficulty : int [-100..100]<br />
difficultyTerm = 0.01 * difficulty<br />
<br />
if defender is player:<br />
if difficultyTerm > 0:<br />
x = fDifficultyMult * difficultyTerm<br />
else:<br />
x = difficultyTerm / fDifficultyMult<br />
elif attacker is player:<br />
if difficultyTerm > 0:<br />
x = -difficultyTerm / fDifficultyMult<br />
else:<br />
x = fDifficultyMult * -difficultyTerm<br />
else:<br />
x = 0<br />
<br />
damage *= 1 + x<br />
</syntaxhighlight><br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Movement&diff=2399
Research:Movement
2015-11-19T18:59:15Z
<p>Hrnchamd: Added research navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
==Movement==<br />
{{Formula<br />
|Movement<br />
|Describes an actor's movement speed for each mode of movement. Uses common term [[Research:Common_Terms#normalizedEncumbrance|normalizedEncumbrance]].<br />
|{{StatusCol|orange|changed since last implementation}}<br />
|{{StatusCol|orange|Still has further interactions with physics}}}}<br />
====Actor target speeds====<br />
Passed to the animation system, as well as used for AI target leading.<br />
<syntaxhighlight lang="python"><br />
if actor is a npc:<br />
walkSpeed = fMinWalkSpeed + 0.01 * speedAttribute * (fMaxWalkSpeed - fMinWalkSpeed)<br />
walkSpeed *= 1 - fEncumberedMoveEffect * normalizedEncumbrance<br />
walkSpeed = max(0, walkSpeed)<br />
if sneaking: walkSpeed *= fSneakSpeedMultiplier<br />
elif actor is a creature:<br />
walkSpeed = fMinWalkSpeedCreature + 0.01 * speedAttribute * (fMaxWalkSpeedCreature - fMinWalkSpeedCreature)<br />
<br />
runSpeed = walkSpeed * (0.01 * athleticsSkill * fAthleticsRunBonus + fBaseRunMultiplier)<br />
<br />
if encumbrance > maxEncumbrance:<br />
moveSpeed = 0<br />
elif flying or levitating:<br />
flySpeed = 0.01 * (speedAttribute + levitationBonus)<br />
flySpeed = fMinFlySpeed + flySpeed * (fMaxFlySpeed - fMinFlySpeed)<br />
flySpeed *= 1 - fEncumberedMoveEffect * normalizedEncumbrance<br />
flySpeed = max(0, flySpeed)<br />
moveSpeed = flySpeed<br />
elif swimming:<br />
if running mode is on:<br />
swimSpeed = runSpeed<br />
else:<br />
swimSpeed = walkSpeed<br />
swimSpeed *= 1 + 0.01 * swiftSwimBonus<br />
swimSpeed *= 0.01 * athleticsSkill * fSwimRunAthleticsMult + fSwimRunBase<br />
moveSpeed = swimSpeed<br />
elif walking or sneaking:<br />
moveSpeed = walkSpeed<br />
elif running:<br />
moveSpeed = runSpeed<br />
else:<br />
moveSpeed = 0<br />
<br />
if strafing (not including diagonally): moveSpeed *= 0.75<br />
if actor is a werewolf and running and has no weapon ready: moveSpeed *= fWereWolfRunMult<br />
<br />
moveSpeed is stored for later use.<br />
</syntaxhighlight><br />
<br />
====Animation system====<br />
Determines movement of the model root bone which feeds back to the physics system.<br />
<syntaxhighlight lang="python"><br />
anim = the relevant movement mode animation: # diagonal strafe uses the forward/back animations<br />
Walk, Fly -> Walk<direction>[+weapon]<br />
Run<direction>[+weapon]<br />
Sneak<direction>[+weapon]<br />
SwimWalk<direction><br />
SwimRun<direction><br />
<br />
if actor is a creature:<br />
moveSpeed is re-calculated as if the creature was not running (as walking)<br />
referenceAnim = choose the walking equivalent of the current movement mode:<br />
Walk, Fly, Run -> Walk<direction><br />
SwimWalk, SwimRun -> SwimWalk<direction><br />
<br />
if actor is an NPC:<br />
referenceAnim = anim<br />
<br />
dist, dt = distance and time between the root bone positions at the "Loop Start" (or "Start" if it doesnt exist)<br />
and "Loop Stop" (or "Stop" if it doesnt exist) animation notes for 'referenceAnim'<br />
<br />
# note: if there are multiple matching animation notes, the last occurring one is used<br />
# note: if the "Loop Stop" key occurs after the "Stop" key, the "Stop" key is used<br />
<br />
animBaseSpeed = int(dist / dt)<br />
animationScale = moveSpeed / animBaseSpeed<br />
animationScale = min(animationScale, 10)<br />
<br />
The animation system plays 'anim' with a rate multiplier animationScale. The root bone movement is passed to the physics system.<br />
</syntaxhighlight><br />
<br />
====Physics movement====<br />
Provides three-dimensional movement like jumps, falls, navigating stairs, levitation.<br />
<syntaxhighlight lang="python"><br />
The actor reference is updated with the root bone movement from the current frame.<br />
<br />
fStromWindSpeed and fStromWalkMult both affect movement, slowing movement into the wind and faster with the wind.<br />
fStromWindSpeed is used with the current wind speed in all weathers. fStromWalkMult is used with storms.<br />
These are not applied when NPCs are underwater, but do seem to apply to slaughterfish.<br />
</syntaxhighlight><br />
<br />
====Comments====<br />
Creatures have generalized combat, magic and stealth stats which substitute for the specific skills (in the same way as specializations). Creatures do not suffer slow down from encumbrance (fEncumberedMoveEffect). They will only completely stop dead, once they exceed their encumbrance limit.<br />
<br />
Note the 10x cap on the animation scaling. This causes an upper limit on the movement rate of actors, which will be at a speed attribute of approximately 1030.<br />
<br />
==Acrobatics==<br />
{{Formula<br />
|On jumping and landing<br />
|Uses common terms [[Research:Common_Terms#fatigueTerm|fatigueTerm]], [[Research:Common_Terms#normalizedEncumbrance|normalizedEncumbrance]].<br />
|{{StatusCol|green|implemented}}<br />
|{{StatusCol|orange|Initial velocity verified; requires testing in combination with physics system}}}}<br />
<br />
====On jumping====<br />
<syntaxhighlight lang="python"><br />
encumbranceTerm = fJumpEncumbranceBase + fJumpEncumbranceMultiplier * (1 - normalizedEncumbrance)<br />
<br />
if acrobaticsSkill <= 50:<br />
a = acrobaticsSkill, b = 0<br />
else:<br />
a = 50, b = acrobaticsSkill - 50<br />
<br />
x = fJumpAcrobaticsBase + pow(a / 15.0, fJumpAcroMultiplier)<br />
x += 3 * b * fJumpAcroMultiplier<br />
x += jumpSpellBonus * 64<br />
x *= encumbranceTerm<br />
if actor is running: x *= fJumpRunMultiplier<br />
x *= fatigueTerm<br />
x -= gravityAcceleration [constant; -627.2 exactly]<br />
x /= 3<br />
<br />
if actor is standing still:<br />
set kinematic velocity to {0, 0, x}<br />
<br />
if actor is moving:<br />
groundVelocity = normalize({actorVelocity.x, actorVelocity.y})<br />
set kinematic velocity to 0.707 * x * {groundVelocity.x, groundVelocity.y, 1.0}<br />
<br />
decrease fatigue by fFatigueJumpBase + (1 - normalizedEncumbrance) * fFatigueJumpMult<br />
</syntaxhighlight><br />
<br />
====On landing====<br />
<syntaxhighlight lang="python"><br />
fallingDist = distance from peak height<br />
<br />
if fallingDist <= fFallDamageDistanceMin: soft landing; skip the rest of the function<br />
<br />
x = fallingDist - fFallDamageDistanceMin<br />
x -= 1.5 * acrobaticsSkill + jumpSpellBonus<br />
x = max(0, x)<br />
<br />
a = fFallAcroBase + fFallAcroMult * (100 - acrobaticsSkill)<br />
x = fFallDistanceBase + fFallDistanceMult * x<br />
x *= a<br />
<br />
if x > 0: damage health by x * (1 - 0.25 * fatigueTerm)<br />
<br />
if acrobaticsSkill * fatigueTerm < x: actor falls over<br />
<br />
if actor is not incapacitated: acrobatics skill exercised (skill gain from fall damage)<br />
</syntaxhighlight><br />
<br />
<br />
====Comments====<br />
Note that initial actor velocity is taken into account. Animation-driven kinematics mean the jump direction can be offset from the player facing if there is root bone movement. Agility does not appear to be involved in this calculation.<br />
<br />
<br />
<br />
<br />
{{Template:Research Navbox}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Common_Terms&diff=2398
Research:Common Terms
2015-11-19T18:51:00Z
<p>Hrnchamd: </p>
<hr />
<div>{{Template:Research Navbox}}<br />
<br />
<br />
Formulae commonly used across multiple mechanics. It may be a good idea to factor these into their own functions to avoid code duplication.<br />
<br />
<br />
===fatigueTerm===<br />
<syntaxhighlight lang="python"><br />
with respect to an actor:<br />
<br />
fatigueTerm = fFatigueBase - fFatigueMult * (1 - normalizedFatigue)<br />
# where normalizedFatigue is a function of actor fatigue. empty fatigue bar -> 0.0, full fatigue bar -> 1.0<br />
if maxFatigue == 0: normalizedFatigue = 1<br />
else: normalizedFatigue = max(0, currentFatigue / maxFatigue)<br />
# it is possible for normalizedFatigue to go over 1.0 when fatigue is fortified, it is not capped from above.<br />
<br />
Note: fatigueTerm is normally 1.25 at full fatigue with default GMSTs.<br />
</syntaxhighlight><br />
<br />
<br />
===normalizedEncumbrance===<br />
<syntaxhighlight lang="python"><br />
with respect to an actor:<br />
<br />
if maxEncumbrance == 0:<br />
normalizedEncumbrance = 1<br />
else:<br />
normalizedEncumbrance = currentEncumbrance / maxEncumbrance<br />
</syntaxhighlight></div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Research_Navbox&diff=2397
Template:Research Navbox
2015-11-19T18:49:42Z
<p>Hrnchamd: </p>
<hr />
<div>{{Navbox<br />
| name = Research Navbox<br />
| title = [[Research|Research]]<br />
| listclass = hlist<br />
<br />
| list1 =<br />
* [[Research:Common Terms|Common Terms]]<br />
* [[Research:Movement|Movement]]<br />
* [[Research:Combat|Combat]]<br />
* [[Research:Magic|Magic]]<br />
* [[Research:NPC AI Behaviour|NPC AI Behaviour]]<br />
* [[Research:Trading and Services|Trading and Services]]<br />
* [[Research:Disposition and Persuasion|Disposition and Persuasion]]<br />
* [[Research:Player Craft Skills|Player Craft Skills]]<br />
* [[Research:Security and Crime|Security and Crime]]<br />
* [[Research:Stats and Levelling|Stats and Levelling]]<br />
* [[Research:Dialogue and Messages|Dialogue and Messages]]<br />
* [[Research:Scripting|Scripting]]<br />
* [[Research:Weather|Weather]]<br />
* [[Research:World|World]]<br />
* [[GMSTs_(status)|Game Settings]]<br />
}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbox&diff=2396
Template:Navbox
2015-11-19T18:47:42Z
<p>Hrnchamd: </p>
<hr />
<div>{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{{!}} class="navbox" cellspacing="0" style="{{{bodystyle|}}};{{{style|}}}"<br />
{{!}}-<br />
{{!}} style="padding:2px;" {{!}} }}<br />
{{{!}} cellspacing="0" class="nowraplinks {{#if:{{{title|}}}|{{#switch:{{{state|}}}|plain|off=|#default=collapsible {{#if:{{{state|}}}|{{{state|}}}|autocollapse}}}}}} {{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=navbox-subgroup" style="background: #fdfdfd; width: 100%; vertical-align: middle;{{{bodystyle|}}};{{{style|}}}|#default=" style="background: #fdfdfd; width: 100%; vertical-align: middle;{{{innerstyle|}}};" <!--<br />
<br />
<br />
---Title and Navbar---<br />
-->{{#if:{{{title|}}}|<nowiki/><br />
{{!}}- {{#if:{{{titlegroup|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{titlegroupstyle|}}}" {{!}} {{{titlegroup|}}}<br />
! style="border-left:2px solid #fdfdfd;width:100%;|<nowiki/><br />
! style="background: #ccccff; padding-left: 1em; padding-right: 1em; text-align: center;}}{{{basestyle|}}};{{{titlestyle|}}}" colspan={{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}{{#if:{{{titlegroup|}}}|-1}}}} class="navbox-title" {{!}} {{#if:{{#switch:{{{navbar|}}}|plain|off=1}} {{#if:{{{name|}}}||{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=1}}}}| {{#ifeq:{{{navbar|}}}|off|{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}| {{#ifeq:{{{state|}}}|plain||<div style="float:left; width:6em;text-align:left;">&nbsp;</div>}}}}| <div style="float:left; width:6em;text-align:left;"> {{navbar|{{{name}}}|fontstyle={{{basestyle|}}};{{{titlestyle|}}};border:none;|mini=1}} </div>{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}}} <span style="font-size:{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=100|#default=110}}%;"> {{{title}}}</span> }}<!--<br />
<br />
<br />
---Above---<br />
-->{{#if:{{{above|}}}| {{#if:{{{title|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{abovestyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{above}}} }}<!--<br />
<br />
<br />
<br />
---Body---<br />
<br />
---First group/list and images---<br />
-->{{#if:{{{list1|}}}|{{#if:{{{title|}}}{{{above|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<!--<br />
<br />
-->{{#if:{{{imageleft|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 2px 0px 0px;{{{imageleftstyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{imageleft|}}} }}<!--<br />
<br />
-->{{#if:{{{group1|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group1style|}}}" {{!}} {{{group1}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{oddstyle|}}};{{{list1style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{list1padding|{{{listpadding|0em 0.25em}}}}}}"><br />
{{{list1|}}}</div><!--<br />
<br />
-->{{#if:{{{image|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 0px 0px 2px;{{{imagestyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{image|}}} }} }}<!--<br />
<br />
<br />
---Remaining groups/lists---<br />
<br />
-->{{#if:{{{list2|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list1|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group2|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group2style|}}}" {{!}} {{{group2}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list2style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list2|}}}</div>}}<!--<br />
<br />
-->{{#if:{{{list3|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list2|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group3|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group3style|}}}" {{!}} {{{group3}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list3style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list3|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list4|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group4|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group4style|}}}" {{!}} {{{group4}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list4style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list4|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list5|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list4|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group5|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group5style|}}}" {{!}} {{{group5}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list5style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list5|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list6|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list5|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group6|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group6style|}}}" {{!}} {{{group6}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list6style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list6|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list7|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list6|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group7|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group7style|}}}" {{!}} {{{group7}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list7style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list7|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list8|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list7|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group8|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group8style|}}}" {{!}} {{{group8}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list8style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list8|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list9|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list8|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group9|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group9style|}}}" {{!}} {{{group9}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list9style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list9|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list10|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list9|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group10|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group10style|}}}" {{!}} {{{group10}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list10style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list10|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list11|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list10|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group11|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group11style|}}}" {{!}} {{{group11}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list11style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list11|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list12|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list11|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group12|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group12style|}}}" {{!}} {{{group12}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list12style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list12|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list13|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list12|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group13|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group13style|}}}" {{!}} {{{group13}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list13style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list13|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list14|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list13|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group14|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group14style|}}}" {{!}} {{{group14}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list14style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list14|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list15|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list14|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group15|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group15style|}}}" {{!}} {{{group15}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list15style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list15|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list16|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list15|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group16|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group16style|}}}" {{!}} {{{group16}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list16style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list16|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list17|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list16|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group17|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group17style|}}}" {{!}} {{{group17}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list17style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list17|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list18|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list17|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group18|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group18style|}}}" {{!}} {{{group18}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list18style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list18|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list19|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list18|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group19|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group19style|}}}" {{!}} {{{group19}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list19style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list19|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list20|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list19|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group20|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group20style|}}}" {{!}} {{{group20}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list20style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list20|}}}</div> }}<!--<br />
<br />
---Below---<br />
-->{{#if:{{{below|}}}|<!--<br />
-->{{#if:{{{title|}}}{{{above|}}}{{{list1|}}}{{{list2|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{belowstyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{below}}} }}<br />
{{!}}}{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{!}}} }}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbox&diff=2395
Template:Navbox
2015-11-19T18:46:12Z
<p>Hrnchamd: </p>
<hr />
<div>{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{{!}} class="navbox" cellspacing="0" style="{{{bodystyle|}}};{{{style|}}}"<br />
{{!}}-<br />
{{!}} style="padding:2px;" {{!}} }}<br />
{{{!}} cellspacing="0" class="nowraplinks {{#if:{{{title|}}}|{{#switch:{{{state|}}}|plain|off=|#default=collapsible {{#if:{{{state|}}}|{{{state|}}}|autocollapse}}}}}} {{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=navbox-subgroup" style="background: #fdfdfd; width: 100%; vertical-align: middle;{{{bodystyle|}}};{{{style|}}}|#default=" style="width:100%;background:transparent;color:inherit}};{{{innerstyle|}}};" <!--<br />
<br />
<br />
---Title and Navbar---<br />
-->{{#if:{{{title|}}}|<nowiki/><br />
{{!}}- {{#if:{{{titlegroup|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{titlegroupstyle|}}}" {{!}} {{{titlegroup|}}}<br />
! style="border-left:2px solid #fdfdfd;width:100%;|<nowiki/><br />
! style="background: #ccccff; padding-left: 1em; padding-right: 1em; text-align: center;}}{{{basestyle|}}};{{{titlestyle|}}}" colspan={{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}{{#if:{{{titlegroup|}}}|-1}}}} class="navbox-title" {{!}} {{#if:{{#switch:{{{navbar|}}}|plain|off=1}} {{#if:{{{name|}}}||{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=1}}}}| {{#ifeq:{{{navbar|}}}|off|{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}| {{#ifeq:{{{state|}}}|plain||<div style="float:left; width:6em;text-align:left;">&nbsp;</div>}}}}| <div style="float:left; width:6em;text-align:left;"> {{navbar|{{{name}}}|fontstyle={{{basestyle|}}};{{{titlestyle|}}};border:none;|mini=1}} </div>{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}}} <span style="font-size:{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=100|#default=110}}%;"> {{{title}}}</span> }}<!--<br />
<br />
<br />
---Above---<br />
-->{{#if:{{{above|}}}| {{#if:{{{title|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{abovestyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{above}}} }}<!--<br />
<br />
<br />
<br />
---Body---<br />
<br />
---First group/list and images---<br />
-->{{#if:{{{list1|}}}|{{#if:{{{title|}}}{{{above|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<!--<br />
<br />
-->{{#if:{{{imageleft|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 2px 0px 0px;{{{imageleftstyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{imageleft|}}} }}<!--<br />
<br />
-->{{#if:{{{group1|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group1style|}}}" {{!}} {{{group1}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{oddstyle|}}};{{{list1style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{list1padding|{{{listpadding|0em 0.25em}}}}}}"><br />
{{{list1|}}}</div><!--<br />
<br />
-->{{#if:{{{image|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 0px 0px 2px;{{{imagestyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{image|}}} }} }}<!--<br />
<br />
<br />
---Remaining groups/lists---<br />
<br />
-->{{#if:{{{list2|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list1|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group2|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group2style|}}}" {{!}} {{{group2}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list2style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list2|}}}</div>}}<!--<br />
<br />
-->{{#if:{{{list3|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list2|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group3|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group3style|}}}" {{!}} {{{group3}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list3style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list3|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list4|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group4|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group4style|}}}" {{!}} {{{group4}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list4style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list4|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list5|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list4|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group5|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group5style|}}}" {{!}} {{{group5}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list5style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list5|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list6|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list5|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group6|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group6style|}}}" {{!}} {{{group6}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list6style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list6|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list7|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list6|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group7|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group7style|}}}" {{!}} {{{group7}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list7style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list7|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list8|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list7|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group8|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group8style|}}}" {{!}} {{{group8}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list8style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list8|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list9|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list8|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group9|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group9style|}}}" {{!}} {{{group9}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list9style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list9|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list10|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list9|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group10|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group10style|}}}" {{!}} {{{group10}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list10style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list10|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list11|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list10|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group11|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group11style|}}}" {{!}} {{{group11}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list11style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list11|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list12|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list11|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group12|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group12style|}}}" {{!}} {{{group12}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list12style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list12|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list13|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list12|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group13|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group13style|}}}" {{!}} {{{group13}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list13style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list13|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list14|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list13|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group14|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group14style|}}}" {{!}} {{{group14}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list14style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list14|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list15|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list14|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group15|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group15style|}}}" {{!}} {{{group15}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list15style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list15|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list16|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list15|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group16|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group16style|}}}" {{!}} {{{group16}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list16style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list16|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list17|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list16|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group17|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group17style|}}}" {{!}} {{{group17}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list17style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list17|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list18|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list17|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group18|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group18style|}}}" {{!}} {{{group18}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list18style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list18|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list19|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list18|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group19|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group19style|}}}" {{!}} {{{group19}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list19style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list19|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list20|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list19|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group20|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group20style|}}}" {{!}} {{{group20}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list20style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list20|}}}</div> }}<!--<br />
<br />
---Below---<br />
-->{{#if:{{{below|}}}|<!--<br />
-->{{#if:{{{title|}}}{{{above|}}}{{{list1|}}}{{{list2|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{belowstyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{below}}} }}<br />
{{!}}}{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{!}}} }}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Research_Navbox&diff=2394
Template:Research Navbox
2015-11-19T18:38:22Z
<p>Hrnchamd: Updated to new Navbox template.</p>
<hr />
<div>{{Navbox<br />
| name = Research Navbox<br />
| title = [[Research|Research]]<br />
| titlestyle = background: #e8d5ad<br />
| listclass = hlist<br />
<br />
| list1 =<br />
* [[Research:Common Terms|Common Terms]]<br />
* [[Research:Movement|Movement]]<br />
* [[Research:Combat|Combat]]<br />
* [[Research:Magic|Magic]]<br />
* [[Research:NPC AI Behaviour|NPC AI Behaviour]]<br />
* [[Research:Trading and Services|Trading and Services]]<br />
* [[Research:Disposition and Persuasion|Disposition and Persuasion]]<br />
* [[Research:Player Craft Skills|Player Craft Skills]]<br />
* [[Research:Security and Crime|Security and Crime]]<br />
* [[Research:Stats and Levelling|Stats and Levelling]]<br />
* [[Research:Dialogue and Messages|Dialogue and Messages]]<br />
* [[Research:Scripting|Scripting]]<br />
* [[Research:Weather|Weather]]<br />
* [[Research:World|World]]<br />
* [[GMSTs_(status)|Game Settings]]<br />
}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbox&diff=2393
Template:Navbox
2015-11-19T18:32:28Z
<p>Hrnchamd: Replaced with a WikiProject TransWiki Navbox due to formatting issues.</p>
<hr />
<div>{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{{!}} class="navbox" cellspacing="0" style="{{{bodystyle|}}};{{{style|}}}"<br />
{{!}}-<br />
{{!}} style="padding:2px;" {{!}} }}<br />
{{{!}} cellspacing="0" class="nowraplinks {{#if:{{{title|}}}|{{#switch:{{{state|}}}|plain|off=|#default=collapsible {{#if:{{{state|}}}|{{{state|}}}|autocollapse}}}}}} {{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=navbox-subgroup" style="width:100%;{{{bodystyle|}}};{{{style|}}}|#default=" style="width:100%;background:transparent;color:inherit}};{{{innerstyle|}}};" <!--<br />
<br />
<br />
---Title and Navbar---<br />
-->{{#if:{{{title|}}}|<nowiki/><br />
{{!}}- {{#if:{{{titlegroup|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{titlegroupstyle|}}}" {{!}} {{{titlegroup|}}}<br />
! style="border-left:2px solid #fdfdfd;width:100%;|<nowiki/><br />
! style="}}{{{basestyle|}}};{{{titlestyle|}}}" colspan={{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}{{#if:{{{titlegroup|}}}|-1}}}} class="navbox-title" {{!}} {{#if:{{#switch:{{{navbar|}}}|plain|off=1}} {{#if:{{{name|}}}||{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=1}}}}| {{#ifeq:{{{navbar|}}}|off|{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}| {{#ifeq:{{{state|}}}|plain||<div style="float:left; width:6em;text-align:left;">&nbsp;</div>}}}}| <div style="float:left; width:6em;text-align:left;"> {{navbar|{{{name}}}|fontstyle={{{basestyle|}}};{{{titlestyle|}}};border:none;|mini=1}} </div>{{#ifeq:{{{state|}}}|plain|<div style="float:right;width:6em;">&nbsp;</div>}}}} <span style="font-size:{{#switch:{{{border|{{{1|}}}}}}|subgroup|child|none=100|#default=110}}%;"> {{{title}}}</span> }}<!--<br />
<br />
<br />
---Above---<br />
-->{{#if:{{{above|}}}| {{#if:{{{title|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{abovestyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{above}}} }}<!--<br />
<br />
<br />
<br />
---Body---<br />
<br />
---First group/list and images---<br />
-->{{#if:{{{list1|}}}|{{#if:{{{title|}}}{{{above|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<!--<br />
<br />
-->{{#if:{{{imageleft|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 2px 0px 0px;{{{imageleftstyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{imageleft|}}} }}<!--<br />
<br />
-->{{#if:{{{group1|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group1style|}}}" {{!}} {{{group1}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{oddstyle|}}};{{{list1style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{list1padding|{{{listpadding|0em 0.25em}}}}}}"><br />
{{{list1|}}}</div><!--<br />
<br />
-->{{#if:{{{image|}}}|<nowiki/><br />
{{!}} style="width:0%;padding:0px 0px 0px 2px;{{{imagestyle|}}}" rowspan={{#expr:1{{#if:{{{list2|}}}|+2}}{{#if:{{{list3|}}}|+2}}{{#if:{{{list4|}}}|+2}}{{#if:{{{list5|}}}|+2}}{{#if:{{{list6|}}}|+2}}{{#if:{{{list7|}}}|+2}}{{#if:{{{list8|}}}|+2}}{{#if:{{{list9|}}}|+2}}{{#if:{{{list10|}}}|+2}}{{#if:{{{list11|}}}|+2}}{{#if:{{{list12|}}}|+2}}{{#if:{{{list13|}}}|+2}}{{#if:{{{list14|}}}|+2}}{{#if:{{{list15|}}}|+2}}{{#if:{{{list16|}}}|+2}}{{#if:{{{list17|}}}|+2}}{{#if:{{{list18|}}}|+2}}{{#if:{{{list19|}}}|+2}}{{#if:{{{list20|}}}|+2}}}} {{!}} {{{image|}}} }} }}<!--<br />
<br />
<br />
---Remaining groups/lists---<br />
<br />
-->{{#if:{{{list2|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list1|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group2|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group2style|}}}" {{!}} {{{group2}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list2style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list2|}}}</div>}}<!--<br />
<br />
-->{{#if:{{{list3|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list2|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group3|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group3style|}}}" {{!}} {{{group3}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list3style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list3|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list4|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group4|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group4style|}}}" {{!}} {{{group4}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list4style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list4|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list5|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list4|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group5|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group5style|}}}" {{!}} {{{group5}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list5style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list5|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list6|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list5|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group6|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group6style|}}}" {{!}} {{{group6}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list6style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list6|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list7|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list6|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group7|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group7style|}}}" {{!}} {{{group7}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list7style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list7|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list8|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list7|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group8|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group8style|}}}" {{!}} {{{group8}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list8style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list8|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list9|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list8|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group9|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group9style|}}}" {{!}} {{{group9}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list9style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list9|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list10|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list9|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group10|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group10style|}}}" {{!}} {{{group10}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list10style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list10|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list11|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list10|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group11|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group11style|}}}" {{!}} {{{group11}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list11style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list11|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list12|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list11|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group12|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group12style|}}}" {{!}} {{{group12}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list12style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list12|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list13|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list12|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group13|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group13style|}}}" {{!}} {{{group13}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list13style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list13|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list14|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list13|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group14|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group14style|}}}" {{!}} {{{group14}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list14style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list14|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list15|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list14|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group15|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group15style|}}}" {{!}} {{{group15}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list15style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list15|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list16|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list15|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group16|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group16style|}}}" {{!}} {{{group16}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list16style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list16|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list17|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list16|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group17|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group17style|}}}" {{!}} {{{group17}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list17style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list17|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list18|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list17|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group18|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group18style|}}}" {{!}} {{{group18}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list18style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list18|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list19|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list18|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group19|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group19style|}}}" {{!}} {{{group19}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list19style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|even|{{{evenodd|odd}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list19|}}}</div> }}<!--<br />
<br />
-->{{#if:{{{list20|}}}| {{#if:{{{title|}}}{{{above|}}}{{{list19|}}}|<nowiki/><br />
{{!}}- style="height:2px"<br />
{{!}} }}<br />
{{!}}- {{#if:{{{group20|}}}|<nowiki/><br />
{{!}} class="navbox-group" style="{{{basestyle|}}};{{{groupstyle|}}};{{{group20style|}}}" {{!}} {{{group20}}}<br />
{{!}} style="text-align:left;border-left:2px solid #fdfdfd;|<nowiki/><br />
{{!}} colspan=2 style="}} width:100%;padding:0px;{{{liststyle|}}};{{{evenstyle|}}};{{{list20style|}}}" class="navbox-list navbox-{{#ifeq:{{{evenodd|}}}|swap|odd|{{{evenodd|even}}}}}" {{!}} <div style="padding:{{{listpadding|0em 0.25em}}}"><br />
{{{list20|}}}</div> }}<!--<br />
<br />
---Below---<br />
-->{{#if:{{{below|}}}|<!--<br />
-->{{#if:{{{title|}}}{{{above|}}}{{{list1|}}}{{{list2|}}}{{{list3|}}}|<nowiki/><br />
{{!}}- style="height:2px;"<br />
{{!}} }}<br />
{{!}}-<br />
{{!}} class="navbox-abovebelow" style="{{{basestyle|}}};{{{belowstyle|}}}" colspan="{{#expr:2{{#if:{{{imageleft|}}}|+1}}{{#if:{{{image|}}}|+1}}}}" {{!}} {{{below}}} }}<br />
{{!}}}{{#switch:{{{border|{{{1|}}}}}}|subgroup|child=|none=|#default=<nowiki/><br />
{{!}}} }}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Research:Common_Terms&diff=2392
Research:Common Terms
2015-11-19T18:23:50Z
<p>Hrnchamd: Added navbox.</p>
<hr />
<div>{{Template:Research Navbox}}<br />
Formulae commonly used across multiple mechanics. It may be a good idea to factor these into their own functions to avoid code duplication.<br />
<!-- Space added to avoid navbox clipping with code --><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
===fatigueTerm===<br />
<syntaxhighlight lang="python"><br />
with respect to an actor:<br />
<br />
fatigueTerm = fFatigueBase - fFatigueMult * (1 - normalizedFatigue)<br />
# where normalizedFatigue is a function of actor fatigue. empty fatigue bar -> 0.0, full fatigue bar -> 1.0<br />
if maxFatigue == 0: normalizedFatigue = 1<br />
else: normalizedFatigue = max(0, currentFatigue / maxFatigue)<br />
# it is possible for normalizedFatigue to go over 1.0 when fatigue is fortified, it is not capped from above.<br />
<br />
Note: fatigueTerm is normally 1.25 at full fatigue with default GMSTs.<br />
</syntaxhighlight><br />
<br />
<br />
===normalizedEncumbrance===<br />
<syntaxhighlight lang="python"><br />
with respect to an actor:<br />
<br />
if maxEncumbrance == 0:<br />
normalizedEncumbrance = 1<br />
else:<br />
normalizedEncumbrance = currentEncumbrance / maxEncumbrance<br />
</syntaxhighlight></div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbar&diff=2391
Template:Navbar
2015-11-19T17:29:28Z
<p>Hrnchamd: </p>
<hr />
<div><!--includeonly--><div class="noprint plainlinks hlist navbar {{#if:{{{mini|}}}|mini}}" style="{{{style|}}}"><!--<br />
<br />
-->{{#if:{{{brackets|}}}|<span style="margin-right:-0.125em;{{{fontstyle|}}}">&#91;</span>}}<!--<br />
<br />
--><ul style="display: inline; list-style-type: disc;"><!--<br />
--><li class="nv-view" style="display: inline;">[[{{transclude|{{{1}}}}}|<span title="View this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|v|view}}</span>]]</li>·<!--<br />
<br />
--><li class="nv-talk" style="display: inline;">[[{{TALKPAGENAME:{{transclude|{{{1}}}}}}}|<span title="Discuss this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|t|talk}}</span>]]</li>·<!--<br />
<br />
-->{{#if:{{{noedit|}}}|<!--nothing-->|<!--else:<br />
--><li class="nv-edit" style="display: inline;">[{{fullurl:{{transclude|{{{1}}}}}|action=edit}} <span title="Edit this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|e|edit}}</span>]</li>}}<!--<br />
--></ul><!--<br />
<br />
-->{{#if:{{{brackets|}}}|<span style="margin-left:-0.125em;{{{fontstyle|}}}">&#93;</span>}}<!--<br />
<br />
--></div><!--/includeonly--></div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbox&diff=2390
Template:Navbox
2015-11-19T17:28:43Z
<p>Hrnchamd: </p>
<hr />
<div>{{#ifeq:{{{child|}}}|yes||<table class="vertical-navbox {{#ifeq:{{{wraplinks|}}}|true||nowraplinks}} {{{bodyclass|{{{class|}}}}}}" <!--<br />
-->cellspacing="{{#if:{{{cellspacing|}}} |{{{cellspacing}}} |5}}" <!--<br />
-->cellpadding="{{#if:{{{cellpadding|}}} |{{{cellpadding}}} |0}}" <!--<br />
-->style="float:{{#if:{{{float|}}} |{{{float}}} |right}};<!--<br />
-->clear:{{#ifeq:{{{float|}}}|none |both |{{#if:{{{float|}}} |{{{float}}} |right}}}};<!--<br />
-->width:{{#if:{{{width|}}} |{{{width}}} |22.0em}};<!--<br />
(margins:)-->{{#switch:{{{float|}}} |left=margin:0 1.0em 1.0em 0; |none|right|#default=margin:0 0 1.0em 1.0em;}}<!--<br />
-->background:#f9f9f9;border:1px solid #aaa;padding:0.2em;border-spacing:0.4em 0;text-align:center;line-height:1.4em;font-size:88%;{{{bodystyle|{{{style|}}}}}}">}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{outertitle|}}}<br />
|<caption class="{{{outertitleclass|}}}" style="padding-bottom:0.2em;font-size:125%;line-height:1.2em;font-weight:bold;{{{outertitlestyle|}}}">{{{outertitle}}}</caption><!--<br />
-->}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{topimage|}}}<br />
|<tr><td class="{{{topimageclass|}}}" style="padding:0.4em 0;{{{topimagestyle|}}}">{{{topimage}}}<!--<br />
-->{{#if:{{{topcaption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{topcaptionstyle|}}}">{{{topcaption}}}</div>}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{pretitle|}}}<br />
|<tr><td class="{{{pretitleclass|}}}" style="{{{basestyle|}}};{{#if:{{{topimage|}}} |padding-top:0.2em |padding-top:0.4em}};line-height:1.2em;{{{pretitlestyle|}}}">{{{pretitle}}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#if:{{{title|}}}<br />
|{{#ifeq:{{{child|}}}|yes||<tr><th class="{{{titleclass|}}}" style="{{{basestyle|}}};padding:0.2em 0.4em 0.2em;{{#if:{{{pretitle|}}} |padding-top:0}};font-size:145%;line-height:1.2em;{{{titlestyle|}}}">}}{{{title}}}</th><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{image|}}}<br />
|<tr><td class="{{{imageclass|}}}" style="padding:0.2em 0 0.4em;{{{imagestyle|}}}">{{{image}}}<!--<br />
-->{{#if:{{{caption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{captionstyle|}}}">{{{caption}}}</div>}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{above|}}}<br />
|<tr><td class="{{{aboveclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{abovestyle|}}}"><!--newline required for bullet-points to work:--><br />
{{{above}}}</td><br />
</tr><br />
}}<!--<br />
<br />
heading#/content# starts here:<br />
<br />
-->{{#if: {{{heading1|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading1style|}}}"><br />
{{{heading1}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content1|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content1style|}}}"><!-- newline required before contents# for bullets to work --><br />
{{{content1}}}</td><br />
</tr><br />
}}{{#if: {{{heading2|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading2style|}}}"><br />
{{{heading2}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content2|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content2style|}}}"><br />
{{{content2}}}</td><br />
</tr><br />
}}{{#if: {{{heading3|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading3style|}}}"><br />
{{{heading3}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content3|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content3style|}}}"><br />
{{{content3}}}</td><br />
</tr><br />
}}{{#if: {{{heading4|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading4style|}}}"><br />
{{{heading4}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content4|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content4style|}}}"><br />
{{{content4|}}}</td><br />
</tr><br />
}}{{#if: {{{heading5|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading5style|}}}"><br />
{{{heading5}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content5|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content5style|}}}"><br />
{{{content5}}}</td><br />
</tr><br />
}}{{#if: {{{heading6|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading6style|}}}"><br />
{{{heading6}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content6|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content6style|}}}"><br />
{{{content6}}}</td><br />
</tr><br />
}}{{#if: {{{heading7|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading7style|}}}"><br />
{{{heading7}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content7|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content7style|}}}"><br />
{{{content7}}}</td><br />
</tr><br />
}}{{#if: {{{heading8|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading8style|}}}"><br />
{{{heading8}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content8|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content8style|}}}"><br />
{{{content8}}}</td><br />
</tr><br />
}}{{#if: {{{heading9|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading9style|}}}"><br />
{{{heading9}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content9|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content9style|}}}"><br />
{{{content9}}}</td><br />
</tr><br />
}}{{#if: {{{heading10|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading10style|}}}"><br />
{{{heading10}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content10|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content10style|}}}"><br />
{{{content10}}}</td><br />
</tr><br />
}}{{#if: {{{heading11|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading11style|}}}"><br />
{{{heading11}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content11|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content11style|}}}"><br />
{{{content11}}}</td><br />
</tr><br />
}}{{#if: {{{heading12|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading12style|}}}"><br />
{{{heading12}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content12|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content12style|}}}"><br />
{{{content12}}}</td><br />
</tr><br />
}}{{#if: {{{heading13|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading13style|}}}"><br />
{{{heading13}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content13|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content13style|}}}"><br />
{{{content13}}}</td><br />
</tr><br />
}}{{#if: {{{heading14|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading14style|}}}"><br />
{{{heading14}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content14|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content14style|}}}"><br />
{{{content14}}}</td><br />
</tr><br />
}}{{#if: {{{heading15|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading15style|}}}"><br />
{{{heading15}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content15|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content15style|}}}"><br />
{{{content15}}}</td><br />
</tr><br />
}}{{#if: {{{heading16|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading16style|}}}"><br />
{{{heading16}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content16|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content16style|}}}"><br />
{{{content16}}}</td><br />
</tr><br />
}}{{#if: {{{heading17|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading17style|}}}"><br />
{{{heading17}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content17|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content17style|}}}"><br />
{{{content17}}}</td><br />
</tr><br />
}}{{#if: {{{heading18|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading18style|}}}"><br />
{{{heading18}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content18|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content18style|}}}"><br />
{{{content18}}}</td><br />
</tr><br />
}}{{#if: {{{heading19|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading19style|}}}"><br />
{{{heading19}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content19|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content19style|}}}"><br />
{{{content19}}}</td><br />
</tr><br />
}}{{#if: {{{heading20|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading20style|}}}"><br />
{{{heading20}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content20|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content20style|}}}"><br />
{{{content20}}}</td><br />
</tr><br />
}}{{#if: {{{heading21|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading21style|}}}"><br />
{{{heading21}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content21|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content21style|}}}"><br />
{{{content21}}}</td><br />
</tr><br />
}}{{#if: {{{heading22|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading22style|}}}"><br />
{{{heading22}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content22|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content22style|}}}"><br />
{{{content22}}}</td><br />
</tr><br />
}}{{#if: {{{heading23|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading23style|}}}"><br />
{{{heading23}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content23|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content23style|}}}"><br />
{{{content23}}}</td><br />
</tr><br />
}}{{#if: {{{heading24|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading24style|}}}"><br />
{{{heading24}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content24|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content24style|}}}"><br />
{{{content24}}}</td><br />
</tr><br />
}}{{#if: {{{heading25|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading25style|}}}"><br />
{{{heading25}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content25|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content25style|}}}"><br />
{{{content25}}}</td><br />
</tr><br />
}}{{#if: {{{heading26|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading26style|}}}"><br />
{{{heading26}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content26|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content26style|}}}"><br />
{{{content26}}}</td><br />
</tr><br />
}}{{#if: {{{heading27|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading27style|}}}"><br />
{{{heading27}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content27|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content27style|}}}"><br />
{{{content27}}}</td><br />
</tr><br />
}}{{#if: {{{heading28|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading28style|}}}"><br />
{{{heading28}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content28|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content28style|}}}"><br />
{{{content28}}}</td><br />
</tr><br />
}}{{#if: {{{heading29|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading29style|}}}"><br />
{{{heading29}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content29|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content29style|}}}"><br />
{{{content29}}}</td><br />
</tr><br />
}}{{#if: {{{heading30|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading30style|}}}"><br />
{{{heading30}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content30|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content30style|}}}"><br />
{{{content30}}}</td><br />
</tr><br />
}}{{#if: {{{heading31|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading31style|}}}"><br />
{{{heading31}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content31|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content31style|}}}"><br />
{{{content31}}}</td><br />
</tr><br />
}}{{#if: {{{heading32|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading32style|}}}"><br />
{{{heading32}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content32|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content32style|}}}"><br />
{{{content32}}}</td><br />
</tr><br />
}}{{#if: {{{heading33|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading33style|}}}"><br />
{{{heading33}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content33|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content33style|}}}"><br />
{{{content33}}}</td><br />
</tr><br />
}}{{#if: {{{heading34|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading34style|}}}"><br />
{{{heading34}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content34|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content34style|}}}"><br />
{{{content34}}}</td><br />
</tr><br />
}}{{#if: {{{heading35|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading35style|}}}"><br />
{{{heading35}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content35|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content35style|}}}"><br />
{{{content35}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if: {{{below|}}}<br />
|<tr><td class="{{{belowclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{belowstyle|}}}"><br />
{{{below}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#switch:{{{navbar|{{{tnavbar|<noinclude>off</noinclude>}}}}}}<br />
|none |off=<br />
|#default=<tr><td style="text-align:right;font-size:90%;{{{navbarstyle|{{{tnavbarstyle|}}}}}}">{{navbar|{{{name|{{PAGENAME}}}}}|fontstyle={{{navbarfontstyle|{{{tnavbarfontstyle|}}}}}}}}</td></tr><!--<br />
-->}}<br />
</table>}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbox&diff=2389
Template:Navbox
2015-11-19T17:28:27Z
<p>Hrnchamd: </p>
<hr />
<div>{{#ifeq:{{{child|}}}|yes||<table class="vertical-navbox {{#ifeq:{{{wraplinks|}}}|true||nowraplinks}} {{{bodyclass|{{{class|}}}}}}" <!--<br />
-->cellspacing="{{#if:{{{cellspacing|}}} |{{{cellspacing}}} |5}}" <!--<br />
-->cellpadding="{{#if:{{{cellpadding|}}} |{{{cellpadding}}} |0}}" <!--<br />
-->style="float:{{#if:{{{float|}}} |{{{float}}} |right}};<!--<br />
-->clear:{{#ifeq:{{{float|}}}|none |both |{{#if:{{{float|}}} |{{{float}}} |right}}}};<!--<br />
-->width:{{#if:{{{width|}}} |{{{width}}} |22.0em}};<!--<br />
(margins:)-->{{#switch:{{{float|}}} |left=margin:0 1.0em 1.0em 0; |none|right|#default=margin:0 0 1.0em 1.0em;}}<!--<br />
-->background:#f9f9f9;border:1px solid #aaa;padding:0.2em;border-spacing:0.4em 0;text-align:center;line-height:1.4em;font-size:88%;{{{bodystyle|{{{style|}}}}}}">}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{outertitle|}}}<br />
|<caption class="{{{outertitleclass|}}}" style="padding-bottom:0.2em;font-size:125%;line-height:1.2em;font-weight:bold;{{{outertitlestyle|}}}">{{{outertitle}}}</caption><!--<br />
-->}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{topimage|}}}<br />
|<tr><td class="{{{topimageclass|}}}" style="padding:0.4em 0;{{{topimagestyle|}}}">{{{topimage}}}<!--<br />
-->{{#if:{{{topcaption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{topcaptionstyle|}}}">{{{topcaption}}}</div>}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{pretitle|}}}<br />
|<tr><td class="{{{pretitleclass|}}}" style="{{{basestyle|}}};{{#if:{{{topimage|}}} |padding-top:0.2em |padding-top:0.4em}};line-height:1.2em;{{{pretitlestyle|}}}">{{{pretitle}}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#if:{{{title|}}}<br />
|{{#ifeq:{{{child|}}}|yes||<tr><th class="{{{titleclass|}}}" style="{{{basestyle|}}};padding:0.2em 0.4em 0.2em;{{#if:{{{pretitle|}}} |padding-top:0}};font-size:145%;line-height:1.2em;{{{titlestyle|}}}">}}{{{title}}}</th><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{image|}}}<br />
|<tr><td class="{{{imageclass|}}}" style="padding:0.2em 0 0.4em;{{{imagestyle|}}}">{{{image}}}<!--<br />
-->{{#if:{{{caption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{captionstyle|}}}">{{{caption}}}</div>}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{above|}}}<br />
|<tr><td class="{{{aboveclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{abovestyle|}}}"><!--newline required for bullet-points to work:--><br />
{{{above}}}</td><br />
</tr><br />
}}<!--<br />
<br />
heading#/content# starts here:<br />
<br />
-->{{#if: {{{heading1|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading1style|}}}"><br />
{{{heading1}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content1|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content1style|}}}"><!-- newline required before contents# for bullets to work --><br />
{{{content1}}}</td><br />
</tr><br />
}}{{#if: {{{heading2|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading2style|}}}"><br />
{{{heading2}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content2|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content2style|}}}"><br />
{{{content2}}}</td><br />
</tr><br />
}}{{#if: {{{heading3|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading3style|}}}"><br />
{{{heading3}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content3|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content3style|}}}"><br />
{{{content3}}}</td><br />
</tr><br />
}}{{#if: {{{heading4|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading4style|}}}"><br />
{{{heading4}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content4|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content4style|}}}"><br />
{{{content4|}}}</td><br />
</tr><br />
}}{{#if: {{{heading5|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading5style|}}}"><br />
{{{heading5}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content5|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content5style|}}}"><br />
{{{content5}}}</td><br />
</tr><br />
}}{{#if: {{{heading6|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading6style|}}}"><br />
{{{heading6}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content6|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content6style|}}}"><br />
{{{content6}}}</td><br />
</tr><br />
}}{{#if: {{{heading7|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading7style|}}}"><br />
{{{heading7}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content7|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content7style|}}}"><br />
{{{content7}}}</td><br />
</tr><br />
}}{{#if: {{{heading8|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading8style|}}}"><br />
{{{heading8}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content8|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content8style|}}}"><br />
{{{content8}}}</td><br />
</tr><br />
}}{{#if: {{{heading9|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading9style|}}}"><br />
{{{heading9}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content9|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content9style|}}}"><br />
{{{content9}}}</td><br />
</tr><br />
}}{{#if: {{{heading10|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading10style|}}}"><br />
{{{heading10}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content10|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content10style|}}}"><br />
{{{content10}}}</td><br />
</tr><br />
}}{{#if: {{{heading11|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading11style|}}}"><br />
{{{heading11}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content11|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content11style|}}}"><br />
{{{content11}}}</td><br />
</tr><br />
}}{{#if: {{{heading12|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading12style|}}}"><br />
{{{heading12}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content12|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content12style|}}}"><br />
{{{content12}}}</td><br />
</tr><br />
}}{{#if: {{{heading13|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading13style|}}}"><br />
{{{heading13}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content13|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content13style|}}}"><br />
{{{content13}}}</td><br />
</tr><br />
}}{{#if: {{{heading14|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading14style|}}}"><br />
{{{heading14}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content14|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content14style|}}}"><br />
{{{content14}}}</td><br />
</tr><br />
}}{{#if: {{{heading15|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading15style|}}}"><br />
{{{heading15}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content15|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content15style|}}}"><br />
{{{content15}}}</td><br />
</tr><br />
}}{{#if: {{{heading16|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading16style|}}}"><br />
{{{heading16}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content16|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content16style|}}}"><br />
{{{content16}}}</td><br />
</tr><br />
}}{{#if: {{{heading17|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading17style|}}}"><br />
{{{heading17}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content17|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content17style|}}}"><br />
{{{content17}}}</td><br />
</tr><br />
}}{{#if: {{{heading18|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading18style|}}}"><br />
{{{heading18}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content18|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content18style|}}}"><br />
{{{content18}}}</td><br />
</tr><br />
}}{{#if: {{{heading19|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading19style|}}}"><br />
{{{heading19}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content19|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content19style|}}}"><br />
{{{content19}}}</td><br />
</tr><br />
}}{{#if: {{{heading20|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading20style|}}}"><br />
{{{heading20}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content20|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content20style|}}}"><br />
{{{content20}}}</td><br />
</tr><br />
}}{{#if: {{{heading21|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading21style|}}}"><br />
{{{heading21}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content21|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content21style|}}}"><br />
{{{content21}}}</td><br />
</tr><br />
}}{{#if: {{{heading22|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading22style|}}}"><br />
{{{heading22}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content22|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content22style|}}}"><br />
{{{content22}}}</td><br />
</tr><br />
}}{{#if: {{{heading23|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading23style|}}}"><br />
{{{heading23}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content23|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content23style|}}}"><br />
{{{content23}}}</td><br />
</tr><br />
}}{{#if: {{{heading24|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading24style|}}}"><br />
{{{heading24}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content24|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content24style|}}}"><br />
{{{content24}}}</td><br />
</tr><br />
}}{{#if: {{{heading25|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading25style|}}}"><br />
{{{heading25}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content25|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content25style|}}}"><br />
{{{content25}}}</td><br />
</tr><br />
}}{{#if: {{{heading26|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading26style|}}}"><br />
{{{heading26}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content26|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content26style|}}}"><br />
{{{content26}}}</td><br />
</tr><br />
}}{{#if: {{{heading27|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading27style|}}}"><br />
{{{heading27}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content27|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content27style|}}}"><br />
{{{content27}}}</td><br />
</tr><br />
}}{{#if: {{{heading28|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading28style|}}}"><br />
{{{heading28}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content28|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content28style|}}}"><br />
{{{content28}}}</td><br />
</tr><br />
}}{{#if: {{{heading29|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading29style|}}}"><br />
{{{heading29}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content29|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content29style|}}}"><br />
{{{content29}}}</td><br />
</tr><br />
}}{{#if: {{{heading30|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading30style|}}}"><br />
{{{heading30}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content30|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content30style|}}}"><br />
{{{content30}}}</td><br />
</tr><br />
}}{{#if: {{{heading31|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading31style|}}}"><br />
{{{heading31}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content31|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content31style|}}}"><br />
{{{content31}}}</td><br />
</tr><br />
}}{{#if: {{{heading32|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading32style|}}}"><br />
{{{heading32}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content32|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content32style|}}}"><br />
{{{content32}}}</td><br />
</tr><br />
}}{{#if: {{{heading33|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading33style|}}}"><br />
{{{heading33}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content33|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content33style|}}}"><br />
{{{content33}}}</td><br />
</tr><br />
}}{{#if: {{{heading34|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading34style|}}}"><br />
{{{heading34}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content34|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content34style|}}}"><br />
{{{content34}}}</td><br />
</tr><br />
}}{{#if: {{{heading35|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading35style|}}}"><br />
{{{heading35}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content35|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content35style|}}}"><br />
{{{content35}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if: {{{below|}}}<br />
|<tr><td class="{{{belowclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{belowstyle|}}}"><br />
{{{below}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#switch:{{{navbar|{{{tnavbar|<noinclude>off</noinclude>}}}}}}<br />
|none |off=<br />
|#default=<tr><td style="text-align:right;font-size:75%;{{{navbarstyle|{{{tnavbarstyle|}}}}}}">{{navbar|{{{name|{{PAGENAME}}}}}|fontstyle={{{navbarfontstyle|{{{tnavbarfontstyle|}}}}}}}}</td></tr><!--<br />
-->}}<br />
</table>}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbar&diff=2388
Template:Navbar
2015-11-19T17:26:26Z
<p>Hrnchamd: </p>
<hr />
<div><!--includeonly--><div class="noprint plainlinks hlist navbar {{#if:{{{mini|}}}|mini}}" style="{{{style|}}}"><!--<br />
<br />
-->{{#if:{{{mini|}}}{{{plain|}}}|<!--nothing-->|<!--else:<br />
--><span style="word-spacing:0;{{{fontstyle|}}}">{{{text|This box:}}} </span>}}<!--<br />
<br />
-->{{#if:{{{brackets|}}}|<span style="margin-right:-0.125em;{{{fontstyle|}}}">&#91;</span>}}<!--<br />
<br />
--><ul style="display: inline; list-style-type: disc;"><!--<br />
--><li class="nv-view" style="display: inline;">[[{{transclude|{{{1}}}}}|<span title="View this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|v|view}}</span>]]</li>·<!--<br />
<br />
--><li class="nv-talk" style="display: inline;">[[{{TALKPAGENAME:{{transclude|{{{1}}}}}}}|<span title="Discuss this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|t|talk}}</span>]]</li>·<!--<br />
<br />
-->{{#if:{{{noedit|}}}|<!--nothing-->|<!--else:<br />
--><li class="nv-edit" style="display: inline;">[{{fullurl:{{transclude|{{{1}}}}}|action=edit}} <span title="Edit this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|e|edit}}</span>]</li>}}<!--<br />
--></ul><!--<br />
<br />
-->{{#if:{{{brackets|}}}|<span style="margin-left:-0.125em;{{{fontstyle|}}}">&#93;</span>}}<!--<br />
<br />
--></div><!--/includeonly--></div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbox&diff=2387
Template:Navbox
2015-11-19T17:25:29Z
<p>Hrnchamd: </p>
<hr />
<div>{{#ifeq:{{{child|}}}|yes||<table class="vertical-navbox {{#ifeq:{{{wraplinks|}}}|true||nowraplinks}} {{{bodyclass|{{{class|}}}}}}" <!--<br />
-->cellspacing="{{#if:{{{cellspacing|}}} |{{{cellspacing}}} |5}}" <!--<br />
-->cellpadding="{{#if:{{{cellpadding|}}} |{{{cellpadding}}} |0}}" <!--<br />
-->style="float:{{#if:{{{float|}}} |{{{float}}} |right}};<!--<br />
-->clear:{{#ifeq:{{{float|}}}|none |both |{{#if:{{{float|}}} |{{{float}}} |right}}}};<!--<br />
-->width:{{#if:{{{width|}}} |{{{width}}} |22.0em}};<!--<br />
(margins:)-->{{#switch:{{{float|}}} |left=margin:0 1.0em 1.0em 0; |none|right|#default=margin:0 0 1.0em 1.0em;}}<!--<br />
-->background:#f9f9f9;border:1px solid #aaa;padding:0.2em;border-spacing:0.4em 0;text-align:center;line-height:1.4em;font-size:88%;{{{bodystyle|{{{style|}}}}}}">}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{outertitle|}}}<br />
|<caption class="{{{outertitleclass|}}}" style="padding-bottom:0.2em;font-size:125%;line-height:1.2em;font-weight:bold;{{{outertitlestyle|}}}">{{{outertitle}}}</caption><!--<br />
-->}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{topimage|}}}<br />
|<tr><td class="{{{topimageclass|}}}" style="padding:0.4em 0;{{{topimagestyle|}}}">{{{topimage}}}<!--<br />
-->{{#if:{{{topcaption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{topcaptionstyle|}}}">{{{topcaption}}}</div>}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{pretitle|}}}<br />
|<tr><td class="{{{pretitleclass|}}}" style="{{{basestyle|}}};{{#if:{{{topimage|}}} |padding-top:0.2em |padding-top:0.4em}};line-height:1.2em;{{{pretitlestyle|}}}">{{{pretitle}}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#if:{{{title|}}}<br />
|{{#ifeq:{{{child|}}}|yes||<tr><th class="{{{titleclass|}}}" style="{{{basestyle|}}};padding:0.2em 0.4em 0.2em;{{#if:{{{pretitle|}}} |padding-top:0}};font-size:145%;line-height:1.2em;{{{titlestyle|}}}">}}{{{title}}}</th><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{image|}}}<br />
|<tr><td class="{{{imageclass|}}}" style="padding:0.2em 0 0.4em;{{{imagestyle|}}}">{{{image}}}<!--<br />
-->{{#if:{{{caption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{captionstyle|}}}">{{{caption}}}</div>}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{above|}}}<br />
|<tr><td class="{{{aboveclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{abovestyle|}}}"><!--newline required for bullet-points to work:--><br />
{{{above}}}</td><br />
</tr><br />
}}<!--<br />
<br />
heading#/content# starts here:<br />
<br />
-->{{#if: {{{heading1|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading1style|}}}"><br />
{{{heading1}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content1|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content1style|}}}"><!-- newline required before contents# for bullets to work --><br />
{{{content1}}}</td><br />
</tr><br />
}}{{#if: {{{heading2|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading2style|}}}"><br />
{{{heading2}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content2|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content2style|}}}"><br />
{{{content2}}}</td><br />
</tr><br />
}}{{#if: {{{heading3|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading3style|}}}"><br />
{{{heading3}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content3|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content3style|}}}"><br />
{{{content3}}}</td><br />
</tr><br />
}}{{#if: {{{heading4|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading4style|}}}"><br />
{{{heading4}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content4|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content4style|}}}"><br />
{{{content4|}}}</td><br />
</tr><br />
}}{{#if: {{{heading5|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading5style|}}}"><br />
{{{heading5}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content5|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content5style|}}}"><br />
{{{content5}}}</td><br />
</tr><br />
}}{{#if: {{{heading6|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading6style|}}}"><br />
{{{heading6}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content6|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content6style|}}}"><br />
{{{content6}}}</td><br />
</tr><br />
}}{{#if: {{{heading7|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading7style|}}}"><br />
{{{heading7}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content7|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content7style|}}}"><br />
{{{content7}}}</td><br />
</tr><br />
}}{{#if: {{{heading8|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading8style|}}}"><br />
{{{heading8}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content8|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content8style|}}}"><br />
{{{content8}}}</td><br />
</tr><br />
}}{{#if: {{{heading9|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading9style|}}}"><br />
{{{heading9}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content9|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content9style|}}}"><br />
{{{content9}}}</td><br />
</tr><br />
}}{{#if: {{{heading10|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading10style|}}}"><br />
{{{heading10}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content10|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content10style|}}}"><br />
{{{content10}}}</td><br />
</tr><br />
}}{{#if: {{{heading11|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading11style|}}}"><br />
{{{heading11}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content11|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content11style|}}}"><br />
{{{content11}}}</td><br />
</tr><br />
}}{{#if: {{{heading12|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading12style|}}}"><br />
{{{heading12}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content12|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content12style|}}}"><br />
{{{content12}}}</td><br />
</tr><br />
}}{{#if: {{{heading13|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading13style|}}}"><br />
{{{heading13}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content13|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content13style|}}}"><br />
{{{content13}}}</td><br />
</tr><br />
}}{{#if: {{{heading14|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading14style|}}}"><br />
{{{heading14}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content14|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content14style|}}}"><br />
{{{content14}}}</td><br />
</tr><br />
}}{{#if: {{{heading15|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading15style|}}}"><br />
{{{heading15}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content15|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content15style|}}}"><br />
{{{content15}}}</td><br />
</tr><br />
}}{{#if: {{{heading16|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading16style|}}}"><br />
{{{heading16}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content16|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content16style|}}}"><br />
{{{content16}}}</td><br />
</tr><br />
}}{{#if: {{{heading17|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading17style|}}}"><br />
{{{heading17}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content17|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content17style|}}}"><br />
{{{content17}}}</td><br />
</tr><br />
}}{{#if: {{{heading18|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading18style|}}}"><br />
{{{heading18}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content18|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content18style|}}}"><br />
{{{content18}}}</td><br />
</tr><br />
}}{{#if: {{{heading19|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading19style|}}}"><br />
{{{heading19}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content19|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content19style|}}}"><br />
{{{content19}}}</td><br />
</tr><br />
}}{{#if: {{{heading20|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading20style|}}}"><br />
{{{heading20}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content20|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content20style|}}}"><br />
{{{content20}}}</td><br />
</tr><br />
}}{{#if: {{{heading21|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading21style|}}}"><br />
{{{heading21}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content21|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content21style|}}}"><br />
{{{content21}}}</td><br />
</tr><br />
}}{{#if: {{{heading22|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading22style|}}}"><br />
{{{heading22}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content22|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content22style|}}}"><br />
{{{content22}}}</td><br />
</tr><br />
}}{{#if: {{{heading23|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading23style|}}}"><br />
{{{heading23}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content23|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content23style|}}}"><br />
{{{content23}}}</td><br />
</tr><br />
}}{{#if: {{{heading24|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading24style|}}}"><br />
{{{heading24}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content24|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content24style|}}}"><br />
{{{content24}}}</td><br />
</tr><br />
}}{{#if: {{{heading25|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading25style|}}}"><br />
{{{heading25}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content25|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content25style|}}}"><br />
{{{content25}}}</td><br />
</tr><br />
}}{{#if: {{{heading26|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading26style|}}}"><br />
{{{heading26}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content26|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content26style|}}}"><br />
{{{content26}}}</td><br />
</tr><br />
}}{{#if: {{{heading27|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading27style|}}}"><br />
{{{heading27}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content27|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content27style|}}}"><br />
{{{content27}}}</td><br />
</tr><br />
}}{{#if: {{{heading28|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading28style|}}}"><br />
{{{heading28}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content28|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content28style|}}}"><br />
{{{content28}}}</td><br />
</tr><br />
}}{{#if: {{{heading29|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading29style|}}}"><br />
{{{heading29}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content29|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content29style|}}}"><br />
{{{content29}}}</td><br />
</tr><br />
}}{{#if: {{{heading30|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading30style|}}}"><br />
{{{heading30}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content30|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content30style|}}}"><br />
{{{content30}}}</td><br />
</tr><br />
}}{{#if: {{{heading31|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading31style|}}}"><br />
{{{heading31}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content31|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content31style|}}}"><br />
{{{content31}}}</td><br />
</tr><br />
}}{{#if: {{{heading32|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading32style|}}}"><br />
{{{heading32}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content32|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content32style|}}}"><br />
{{{content32}}}</td><br />
</tr><br />
}}{{#if: {{{heading33|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading33style|}}}"><br />
{{{heading33}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content33|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content33style|}}}"><br />
{{{content33}}}</td><br />
</tr><br />
}}{{#if: {{{heading34|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading34style|}}}"><br />
{{{heading34}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content34|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content34style|}}}"><br />
{{{content34}}}</td><br />
</tr><br />
}}{{#if: {{{heading35|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading35style|}}}"><br />
{{{heading35}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content35|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content35style|}}}"><br />
{{{content35}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if: {{{below|}}}<br />
|<tr><td class="{{{belowclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{belowstyle|}}}"><br />
{{{below}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#switch:{{{navbar|{{{tnavbar|<noinclude>off</noinclude>}}}}}}<br />
|none |off=<br />
|#default=<tr><td style="text-align:right;font-size:115%;{{{navbarstyle|{{{tnavbarstyle|}}}}}}">{{navbar|{{{name|{{PAGENAME}}}}}|fontstyle={{{navbarfontstyle|{{{tnavbarfontstyle|}}}}}}}}</td></tr><!--<br />
-->}}<br />
</table>}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbar&diff=2386
Template:Navbar
2015-11-19T17:10:49Z
<p>Hrnchamd: Fix missing CSS layout.</p>
<hr />
<div><!--includeonly--><div class="noprint plainlinks hlist navbar {{#if:{{{mini|}}}|mini}}" style="{{{style|}}}"><!--<br />
<br />
-->{{#if:{{{mini|}}}{{{plain|}}}|<!--nothing-->|<!--else:<br />
--><span style="word-spacing:0;{{{fontstyle|}}}">{{{text|This box:}}} </span>}}<!--<br />
<br />
-->{{#if:{{{brackets|}}}|<span style="margin-right:-0.125em;{{{fontstyle|}}}">&#91;</span>}}<!--<br />
<br />
--><ul style="list-style-type: disc;"><!--<br />
--><li class="nv-view" style="display: inline;">[[{{transclude|{{{1}}}}}|<span title="View this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|v|view}}</span>]]</li>·<!--<br />
<br />
--><li class="nv-talk" style="display: inline;">[[{{TALKPAGENAME:{{transclude|{{{1}}}}}}}|<span title="Discuss this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|t|talk}}</span>]]</li>·<!--<br />
<br />
-->{{#if:{{{noedit|}}}|<!--nothing-->|<!--else:<br />
--><li class="nv-edit" style="display: inline;">[{{fullurl:{{transclude|{{{1}}}}}|action=edit}} <span title="Edit this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|e|edit}}</span>]</li>}}<!--<br />
--></ul><!--<br />
<br />
-->{{#if:{{{brackets|}}}|<span style="margin-left:-0.125em;{{{fontstyle|}}}">&#93;</span>}}<!--<br />
<br />
--></div><!--/includeonly--></div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Transclude&diff=2385
Template:Transclude
2015-11-19T16:56:07Z
<p>Hrnchamd: Transclude helper template, sourced from Wikipedia.</p>
<hr />
<div>{{#switch: {{NAMESPACE: {{{1}}} }}<br />
|#default = {{FULLPAGENAME: {{{1}}} }} <!-- eg "User:Foo" --><br />
|{{ns:0}} = <br />
{{#ifeq: {{NAMESPACE: {{{1}}} }} | {{NAMESPACE: Template{{{1}}} }}<br />
| Template:{{{1}}} <!-- no leading colon, eg "Foo" --><br />
| {{PAGENAME: {{{1}}} }} <!-- leading colon, eg ":Foo", so we want the article --><br />
}}<br />
}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbar&diff=2384
Template:Navbar
2015-11-19T16:54:13Z
<p>Hrnchamd: </p>
<hr />
<div><includeonly><div class="noprint plainlinks hlist navbar {{#if:{{{mini|}}}|mini}}" style="{{{style|}}}"><!--<br />
<br />
-->{{#if:{{{mini|}}}{{{plain|}}}|<!--nothing-->|<!--else:<br />
--><span style="word-spacing:0;{{{fontstyle|}}}">{{{text|This box:}}} </span>}}<!--<br />
<br />
-->{{#if:{{{brackets|}}}|<span style="margin-right:-0.125em;{{{fontstyle|}}}">&#91;</span>}}<!--<br />
<br />
--><ul><!--<br />
--><li class="nv-view">[[{{transclude|{{{1}}}}}|<span title="View this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|v|view}}</span>]]</li><!--<br />
<br />
--><li class="nv-talk">[[{{TALKPAGENAME:{{transclude|{{{1}}}}}}}|<span title="Discuss this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|t|talk}}</span>]]</li><!--<br />
<br />
-->{{#if:{{{noedit|}}}|<!--nothing-->|<!--else:<br />
--><li class="nv-edit">[{{fullurl:{{transclude|{{{1}}}}}|action=edit}} <span title="Edit this template" <!--<br />
-->style="{{{fontstyle|}}}">{{#if:{{{mini|}}}|e|edit}}</span>]</li>}}<!--<br />
--></ul><!--<br />
<br />
-->{{#if:{{{brackets|}}}|<span style="margin-left:-0.125em;{{{fontstyle|}}}">&#93;</span>}}<!--<br />
<br />
--></div></includeonly></div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbar&diff=2383
Template:Navbar
2015-11-19T16:49:46Z
<p>Hrnchamd: </p>
<hr />
<div>{{#ifeq:{{{child|}}}|yes||<table class="vertical-navbox {{#ifeq:{{{wraplinks|}}}|true||nowraplinks}} {{{bodyclass|{{{class|}}}}}}" <!--<br />
-->cellspacing="{{#if:{{{cellspacing|}}} |{{{cellspacing}}} |5}}" <!--<br />
-->cellpadding="{{#if:{{{cellpadding|}}} |{{{cellpadding}}} |0}}" <!--<br />
-->style="float:{{#if:{{{float|}}} |{{{float}}} |right}};<!--<br />
-->clear:{{#ifeq:{{{float|}}}|none |both |{{#if:{{{float|}}} |{{{float}}} |right}}}};<!--<br />
-->width:{{#if:{{{width|}}} |{{{width}}} |22.0em}};<!--<br />
(margins:)-->{{#switch:{{{float|}}} |left=margin:0 1.0em 1.0em 0; |none|right|#default=margin:0 0 1.0em 1.0em;}}<!--<br />
-->background:#f9f9f9;border:1px solid #aaa;padding:0.2em;border-spacing:0.4em 0;text-align:center;line-height:1.4em;font-size:88%;{{{bodystyle|{{{style|}}}}}}">}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{outertitle|}}}<br />
|<caption class="{{{outertitleclass|}}}" style="padding-bottom:0.2em;font-size:125%;line-height:1.2em;font-weight:bold;{{{outertitlestyle|}}}">{{{outertitle}}}</caption><!--<br />
-->}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{topimage|}}}<br />
|<tr><td class="{{{topimageclass|}}}" style="padding:0.4em 0;{{{topimagestyle|}}}">{{{topimage}}}<!--<br />
-->{{#if:{{{topcaption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{topcaptionstyle|}}}">{{{topcaption}}}</div>}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{pretitle|}}}<br />
|<tr><td class="{{{pretitleclass|}}}" style="{{{basestyle|}}};{{#if:{{{topimage|}}} |padding-top:0.2em |padding-top:0.4em}};line-height:1.2em;{{{pretitlestyle|}}}">{{{pretitle}}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#if:{{{title|}}}<br />
|{{#ifeq:{{{child|}}}|yes||<tr><th class="{{{titleclass|}}}" style="{{{basestyle|}}};padding:0.2em 0.4em 0.2em;{{#if:{{{pretitle|}}} |padding-top:0}};font-size:145%;line-height:1.2em;{{{titlestyle|}}}">}}{{{title}}}</th><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{image|}}}<br />
|<tr><td class="{{{imageclass|}}}" style="padding:0.2em 0 0.4em;{{{imagestyle|}}}">{{{image}}}<!--<br />
-->{{#if:{{{caption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{captionstyle|}}}">{{{caption}}}</div>}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{above|}}}<br />
|<tr><td class="{{{aboveclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{abovestyle|}}}"><!--newline required for bullet-points to work:--><br />
{{{above}}}</td><br />
</tr><br />
}}<!--<br />
<br />
heading#/content# starts here:<br />
<br />
-->{{#if: {{{heading1|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading1style|}}}"><br />
{{{heading1}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content1|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content1style|}}}"><!-- newline required before contents# for bullets to work --><br />
{{{content1}}}</td><br />
</tr><br />
}}{{#if: {{{heading2|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading2style|}}}"><br />
{{{heading2}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content2|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content2style|}}}"><br />
{{{content2}}}</td><br />
</tr><br />
}}{{#if: {{{heading3|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading3style|}}}"><br />
{{{heading3}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content3|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content3style|}}}"><br />
{{{content3}}}</td><br />
</tr><br />
}}{{#if: {{{heading4|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading4style|}}}"><br />
{{{heading4}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content4|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content4style|}}}"><br />
{{{content4|}}}</td><br />
</tr><br />
}}{{#if: {{{heading5|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading5style|}}}"><br />
{{{heading5}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content5|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content5style|}}}"><br />
{{{content5}}}</td><br />
</tr><br />
}}{{#if: {{{heading6|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading6style|}}}"><br />
{{{heading6}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content6|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content6style|}}}"><br />
{{{content6}}}</td><br />
</tr><br />
}}{{#if: {{{heading7|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading7style|}}}"><br />
{{{heading7}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content7|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content7style|}}}"><br />
{{{content7}}}</td><br />
</tr><br />
}}{{#if: {{{heading8|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading8style|}}}"><br />
{{{heading8}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content8|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content8style|}}}"><br />
{{{content8}}}</td><br />
</tr><br />
}}{{#if: {{{heading9|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading9style|}}}"><br />
{{{heading9}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content9|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content9style|}}}"><br />
{{{content9}}}</td><br />
</tr><br />
}}{{#if: {{{heading10|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading10style|}}}"><br />
{{{heading10}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content10|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content10style|}}}"><br />
{{{content10}}}</td><br />
</tr><br />
}}{{#if: {{{heading11|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading11style|}}}"><br />
{{{heading11}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content11|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content11style|}}}"><br />
{{{content11}}}</td><br />
</tr><br />
}}{{#if: {{{heading12|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading12style|}}}"><br />
{{{heading12}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content12|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content12style|}}}"><br />
{{{content12}}}</td><br />
</tr><br />
}}{{#if: {{{heading13|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading13style|}}}"><br />
{{{heading13}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content13|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content13style|}}}"><br />
{{{content13}}}</td><br />
</tr><br />
}}{{#if: {{{heading14|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading14style|}}}"><br />
{{{heading14}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content14|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content14style|}}}"><br />
{{{content14}}}</td><br />
</tr><br />
}}{{#if: {{{heading15|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading15style|}}}"><br />
{{{heading15}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content15|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content15style|}}}"><br />
{{{content15}}}</td><br />
</tr><br />
}}{{#if: {{{heading16|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading16style|}}}"><br />
{{{heading16}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content16|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content16style|}}}"><br />
{{{content16}}}</td><br />
</tr><br />
}}{{#if: {{{heading17|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading17style|}}}"><br />
{{{heading17}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content17|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content17style|}}}"><br />
{{{content17}}}</td><br />
</tr><br />
}}{{#if: {{{heading18|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading18style|}}}"><br />
{{{heading18}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content18|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content18style|}}}"><br />
{{{content18}}}</td><br />
</tr><br />
}}{{#if: {{{heading19|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading19style|}}}"><br />
{{{heading19}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content19|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content19style|}}}"><br />
{{{content19}}}</td><br />
</tr><br />
}}{{#if: {{{heading20|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading20style|}}}"><br />
{{{heading20}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content20|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content20style|}}}"><br />
{{{content20}}}</td><br />
</tr><br />
}}{{#if: {{{heading21|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading21style|}}}"><br />
{{{heading21}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content21|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content21style|}}}"><br />
{{{content21}}}</td><br />
</tr><br />
}}{{#if: {{{heading22|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading22style|}}}"><br />
{{{heading22}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content22|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content22style|}}}"><br />
{{{content22}}}</td><br />
</tr><br />
}}{{#if: {{{heading23|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading23style|}}}"><br />
{{{heading23}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content23|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content23style|}}}"><br />
{{{content23}}}</td><br />
</tr><br />
}}{{#if: {{{heading24|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading24style|}}}"><br />
{{{heading24}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content24|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content24style|}}}"><br />
{{{content24}}}</td><br />
</tr><br />
}}{{#if: {{{heading25|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading25style|}}}"><br />
{{{heading25}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content25|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content25style|}}}"><br />
{{{content25}}}</td><br />
</tr><br />
}}{{#if: {{{heading26|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading26style|}}}"><br />
{{{heading26}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content26|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content26style|}}}"><br />
{{{content26}}}</td><br />
</tr><br />
}}{{#if: {{{heading27|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading27style|}}}"><br />
{{{heading27}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content27|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content27style|}}}"><br />
{{{content27}}}</td><br />
</tr><br />
}}{{#if: {{{heading28|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading28style|}}}"><br />
{{{heading28}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content28|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content28style|}}}"><br />
{{{content28}}}</td><br />
</tr><br />
}}{{#if: {{{heading29|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading29style|}}}"><br />
{{{heading29}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content29|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content29style|}}}"><br />
{{{content29}}}</td><br />
</tr><br />
}}{{#if: {{{heading30|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading30style|}}}"><br />
{{{heading30}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content30|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content30style|}}}"><br />
{{{content30}}}</td><br />
</tr><br />
}}{{#if: {{{heading31|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading31style|}}}"><br />
{{{heading31}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content31|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content31style|}}}"><br />
{{{content31}}}</td><br />
</tr><br />
}}{{#if: {{{heading32|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading32style|}}}"><br />
{{{heading32}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content32|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content32style|}}}"><br />
{{{content32}}}</td><br />
</tr><br />
}}{{#if: {{{heading33|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading33style|}}}"><br />
{{{heading33}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content33|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content33style|}}}"><br />
{{{content33}}}</td><br />
</tr><br />
}}{{#if: {{{heading34|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading34style|}}}"><br />
{{{heading34}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content34|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content34style|}}}"><br />
{{{content34}}}</td><br />
</tr><br />
}}{{#if: {{{heading35|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading35style|}}}"><br />
{{{heading35}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content35|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content35style|}}}"><br />
{{{content35}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if: {{{below|}}}<br />
|<tr><td class="{{{belowclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{belowstyle|}}}"><br />
{{{below}}}</td><br />
</tr><br />
}}<!--<br />
<br />
</table>}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Research_Navbox&diff=2382
Template:Research Navbox
2015-11-19T16:45:43Z
<p>Hrnchamd: Research navbox, mirroring categories on the main Research page.</p>
<hr />
<div>{{Navbox<br />
| name = Research Navbox<br />
| title = [[Research|Research]]<br />
| titlestyle = background: #e8d5ad<br />
<br />
| heading1 = Categories<br />
| content1 =<br />
[[Research:Common Terms|Common Terms]]<br /><br />
[[Research:Movement|Movement]]<br /><br />
[[Research:Combat|Combat]]<br /><br />
[[Research:Magic|Magic]]<br /><br />
[[Research:NPC AI Behaviour|NPC AI Behaviour]]<br /><br />
[[Research:Trading and Services|Trading and Services]]<br /><br />
[[Research:Disposition and Persuasion|Disposition and Persuasion]]<br /><br />
[[Research:Player Craft Skills|Player Craft Skills]]<br /><br />
[[Research:Security and Crime|Security and Crime]]<br /><br />
[[Research:Stats and Levelling|Stats and Levelling]]<br /><br />
[[Research:Dialogue and Messages|Dialogue and Messages]]<br /><br />
[[Research:Scripting|Scripting]]<br /><br />
[[Research:Weather|Weather]]<br /><br />
[[Research:World|World]]<br /><br />
[[GMSTs_(status)|Game Settings]]<br /><br />
<br /><br />
}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbox&diff=2381
Template:Navbox
2015-11-19T16:39:30Z
<p>Hrnchamd: Undo revision 2380 by Hrnchamd (talk)</p>
<hr />
<div>{{#ifeq:{{{child|}}}|yes||<table class="vertical-navbox {{#ifeq:{{{wraplinks|}}}|true||nowraplinks}} {{{bodyclass|{{{class|}}}}}}" <!--<br />
-->cellspacing="{{#if:{{{cellspacing|}}} |{{{cellspacing}}} |5}}" <!--<br />
-->cellpadding="{{#if:{{{cellpadding|}}} |{{{cellpadding}}} |0}}" <!--<br />
-->style="float:{{#if:{{{float|}}} |{{{float}}} |right}};<!--<br />
-->clear:{{#ifeq:{{{float|}}}|none |both |{{#if:{{{float|}}} |{{{float}}} |right}}}};<!--<br />
-->width:{{#if:{{{width|}}} |{{{width}}} |22.0em}};<!--<br />
(margins:)-->{{#switch:{{{float|}}} |left=margin:0 1.0em 1.0em 0; |none|right|#default=margin:0 0 1.0em 1.0em;}}<!--<br />
-->background:#f9f9f9;border:1px solid #aaa;padding:0.2em;border-spacing:0.4em 0;text-align:center;line-height:1.4em;font-size:88%;{{{bodystyle|{{{style|}}}}}}">}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{outertitle|}}}<br />
|<caption class="{{{outertitleclass|}}}" style="padding-bottom:0.2em;font-size:125%;line-height:1.2em;font-weight:bold;{{{outertitlestyle|}}}">{{{outertitle}}}</caption><!--<br />
-->}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{topimage|}}}<br />
|<tr><td class="{{{topimageclass|}}}" style="padding:0.4em 0;{{{topimagestyle|}}}">{{{topimage}}}<!--<br />
-->{{#if:{{{topcaption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{topcaptionstyle|}}}">{{{topcaption}}}</div>}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{pretitle|}}}<br />
|<tr><td class="{{{pretitleclass|}}}" style="{{{basestyle|}}};{{#if:{{{topimage|}}} |padding-top:0.2em |padding-top:0.4em}};line-height:1.2em;{{{pretitlestyle|}}}">{{{pretitle}}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#if:{{{title|}}}<br />
|{{#ifeq:{{{child|}}}|yes||<tr><th class="{{{titleclass|}}}" style="{{{basestyle|}}};padding:0.2em 0.4em 0.2em;{{#if:{{{pretitle|}}} |padding-top:0}};font-size:145%;line-height:1.2em;{{{titlestyle|}}}">}}{{{title}}}</th><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{image|}}}<br />
|<tr><td class="{{{imageclass|}}}" style="padding:0.2em 0 0.4em;{{{imagestyle|}}}">{{{image}}}<!--<br />
-->{{#if:{{{caption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{captionstyle|}}}">{{{caption}}}</div>}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{above|}}}<br />
|<tr><td class="{{{aboveclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{abovestyle|}}}"><!--newline required for bullet-points to work:--><br />
{{{above}}}</td><br />
</tr><br />
}}<!--<br />
<br />
heading#/content# starts here:<br />
<br />
-->{{#if: {{{heading1|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading1style|}}}"><br />
{{{heading1}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content1|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content1style|}}}"><!-- newline required before contents# for bullets to work --><br />
{{{content1}}}</td><br />
</tr><br />
}}{{#if: {{{heading2|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading2style|}}}"><br />
{{{heading2}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content2|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content2style|}}}"><br />
{{{content2}}}</td><br />
</tr><br />
}}{{#if: {{{heading3|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading3style|}}}"><br />
{{{heading3}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content3|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content3style|}}}"><br />
{{{content3}}}</td><br />
</tr><br />
}}{{#if: {{{heading4|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading4style|}}}"><br />
{{{heading4}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content4|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content4style|}}}"><br />
{{{content4|}}}</td><br />
</tr><br />
}}{{#if: {{{heading5|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading5style|}}}"><br />
{{{heading5}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content5|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content5style|}}}"><br />
{{{content5}}}</td><br />
</tr><br />
}}{{#if: {{{heading6|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading6style|}}}"><br />
{{{heading6}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content6|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content6style|}}}"><br />
{{{content6}}}</td><br />
</tr><br />
}}{{#if: {{{heading7|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading7style|}}}"><br />
{{{heading7}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content7|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content7style|}}}"><br />
{{{content7}}}</td><br />
</tr><br />
}}{{#if: {{{heading8|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading8style|}}}"><br />
{{{heading8}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content8|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content8style|}}}"><br />
{{{content8}}}</td><br />
</tr><br />
}}{{#if: {{{heading9|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading9style|}}}"><br />
{{{heading9}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content9|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content9style|}}}"><br />
{{{content9}}}</td><br />
</tr><br />
}}{{#if: {{{heading10|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading10style|}}}"><br />
{{{heading10}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content10|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content10style|}}}"><br />
{{{content10}}}</td><br />
</tr><br />
}}{{#if: {{{heading11|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading11style|}}}"><br />
{{{heading11}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content11|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content11style|}}}"><br />
{{{content11}}}</td><br />
</tr><br />
}}{{#if: {{{heading12|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading12style|}}}"><br />
{{{heading12}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content12|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content12style|}}}"><br />
{{{content12}}}</td><br />
</tr><br />
}}{{#if: {{{heading13|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading13style|}}}"><br />
{{{heading13}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content13|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content13style|}}}"><br />
{{{content13}}}</td><br />
</tr><br />
}}{{#if: {{{heading14|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading14style|}}}"><br />
{{{heading14}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content14|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content14style|}}}"><br />
{{{content14}}}</td><br />
</tr><br />
}}{{#if: {{{heading15|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading15style|}}}"><br />
{{{heading15}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content15|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content15style|}}}"><br />
{{{content15}}}</td><br />
</tr><br />
}}{{#if: {{{heading16|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading16style|}}}"><br />
{{{heading16}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content16|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content16style|}}}"><br />
{{{content16}}}</td><br />
</tr><br />
}}{{#if: {{{heading17|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading17style|}}}"><br />
{{{heading17}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content17|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content17style|}}}"><br />
{{{content17}}}</td><br />
</tr><br />
}}{{#if: {{{heading18|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading18style|}}}"><br />
{{{heading18}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content18|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content18style|}}}"><br />
{{{content18}}}</td><br />
</tr><br />
}}{{#if: {{{heading19|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading19style|}}}"><br />
{{{heading19}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content19|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content19style|}}}"><br />
{{{content19}}}</td><br />
</tr><br />
}}{{#if: {{{heading20|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading20style|}}}"><br />
{{{heading20}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content20|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content20style|}}}"><br />
{{{content20}}}</td><br />
</tr><br />
}}{{#if: {{{heading21|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading21style|}}}"><br />
{{{heading21}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content21|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content21style|}}}"><br />
{{{content21}}}</td><br />
</tr><br />
}}{{#if: {{{heading22|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading22style|}}}"><br />
{{{heading22}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content22|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content22style|}}}"><br />
{{{content22}}}</td><br />
</tr><br />
}}{{#if: {{{heading23|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading23style|}}}"><br />
{{{heading23}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content23|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content23style|}}}"><br />
{{{content23}}}</td><br />
</tr><br />
}}{{#if: {{{heading24|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading24style|}}}"><br />
{{{heading24}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content24|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content24style|}}}"><br />
{{{content24}}}</td><br />
</tr><br />
}}{{#if: {{{heading25|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading25style|}}}"><br />
{{{heading25}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content25|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content25style|}}}"><br />
{{{content25}}}</td><br />
</tr><br />
}}{{#if: {{{heading26|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading26style|}}}"><br />
{{{heading26}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content26|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content26style|}}}"><br />
{{{content26}}}</td><br />
</tr><br />
}}{{#if: {{{heading27|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading27style|}}}"><br />
{{{heading27}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content27|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content27style|}}}"><br />
{{{content27}}}</td><br />
</tr><br />
}}{{#if: {{{heading28|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading28style|}}}"><br />
{{{heading28}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content28|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content28style|}}}"><br />
{{{content28}}}</td><br />
</tr><br />
}}{{#if: {{{heading29|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading29style|}}}"><br />
{{{heading29}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content29|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content29style|}}}"><br />
{{{content29}}}</td><br />
</tr><br />
}}{{#if: {{{heading30|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading30style|}}}"><br />
{{{heading30}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content30|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content30style|}}}"><br />
{{{content30}}}</td><br />
</tr><br />
}}{{#if: {{{heading31|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading31style|}}}"><br />
{{{heading31}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content31|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content31style|}}}"><br />
{{{content31}}}</td><br />
</tr><br />
}}{{#if: {{{heading32|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading32style|}}}"><br />
{{{heading32}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content32|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content32style|}}}"><br />
{{{content32}}}</td><br />
</tr><br />
}}{{#if: {{{heading33|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading33style|}}}"><br />
{{{heading33}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content33|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content33style|}}}"><br />
{{{content33}}}</td><br />
</tr><br />
}}{{#if: {{{heading34|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading34style|}}}"><br />
{{{heading34}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content34|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content34style|}}}"><br />
{{{content34}}}</td><br />
</tr><br />
}}{{#if: {{{heading35|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading35style|}}}"><br />
{{{heading35}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content35|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content35style|}}}"><br />
{{{content35}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if: {{{below|}}}<br />
|<tr><td class="{{{belowclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{belowstyle|}}}"><br />
{{{below}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#switch:{{{navbar|{{{tnavbar|<noinclude>off</noinclude>}}}}}}<br />
|none |off=<br />
|#default=<tr><td style="text-align:right;font-size:115%;{{{navbarstyle|{{{tnavbarstyle|}}}}}}">{{navbar|{{{name|{{PAGENAME}}}}}|mini=1|fontstyle={{{navbarfontstyle|{{{tnavbarfontstyle|}}}}}}}}</td></tr><!--<br />
-->}}<br />
</table>}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbox&diff=2380
Template:Navbox
2015-11-19T16:23:52Z
<p>Hrnchamd: </p>
<hr />
<div>{{#ifeq:{{{child|}}}|yes||<table class="vertical-navbox {{#ifeq:{{{wraplinks|}}}|true||nowraplinks}} {{{bodyclass|{{{class|}}}}}}" <!--<br />
-->cellspacing="{{#if:{{{cellspacing|}}} |{{{cellspacing}}} |5}}" <!--<br />
-->cellpadding="{{#if:{{{cellpadding|}}} |{{{cellpadding}}} |0}}" <!--<br />
-->style="float:{{#if:{{{float|}}} |{{{float}}} |right}};<!--<br />
-->clear:{{#ifeq:{{{float|}}}|none |both |{{#if:{{{float|}}} |{{{float}}} |right}}}};<!--<br />
-->width:{{#if:{{{width|}}} |{{{width}}} |22.0em}};<!--<br />
(margins:)-->{{#switch:{{{float|}}} |left=margin:0 1.0em 1.0em 0; |none|right|#default=margin:0 0 1.0em 1.0em;}}<!--<br />
-->background:#f9f9f9;border:1px solid #aaa;padding:0.2em;border-spacing:0.4em 0;text-align:center;line-height:1.4em;font-size:88%;{{{bodystyle|{{{style|}}}}}}">}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{outertitle|}}}<br />
|<caption class="{{{outertitleclass|}}}" style="padding-bottom:0.2em;font-size:125%;line-height:1.2em;font-weight:bold;{{{outertitlestyle|}}}">{{{outertitle}}}</caption><!--<br />
-->}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{topimage|}}}<br />
|<tr><td class="{{{topimageclass|}}}" style="padding:0.4em 0;{{{topimagestyle|}}}">{{{topimage}}}<!--<br />
-->{{#if:{{{topcaption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{topcaptionstyle|}}}">{{{topcaption}}}</div>}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{pretitle|}}}<br />
|<tr><td class="{{{pretitleclass|}}}" style="{{{basestyle|}}};{{#if:{{{topimage|}}} |padding-top:0.2em |padding-top:0.4em}};line-height:1.2em;{{{pretitlestyle|}}}">{{{pretitle}}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#if:{{{title|}}}<br />
|{{#ifeq:{{{child|}}}|yes||<tr><th class="{{{titleclass|}}}" style="{{{basestyle|}}};padding:0.2em 0.4em 0.2em;{{#if:{{{pretitle|}}} |padding-top:0}};font-size:145%;line-height:1.2em;{{{titlestyle|}}}">}}{{{title}}}</th><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{image|}}}<br />
|<tr><td class="{{{imageclass|}}}" style="padding:0.2em 0 0.4em;{{{imagestyle|}}}">{{{image}}}<!--<br />
-->{{#if:{{{caption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{captionstyle|}}}">{{{caption}}}</div>}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{above|}}}<br />
|<tr><td class="{{{aboveclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{abovestyle|}}}"><!--newline required for bullet-points to work:--><br />
{{{above}}}</td><br />
</tr><br />
}}<!--<br />
<br />
heading#/content# starts here:<br />
<br />
-->{{#if: {{{heading1|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading1style|}}}"><br />
{{{heading1}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content1|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content1style|}}}"><!-- newline required before contents# for bullets to work --><br />
{{{content1}}}</td><br />
</tr><br />
}}{{#if: {{{heading2|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading2style|}}}"><br />
{{{heading2}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content2|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content2style|}}}"><br />
{{{content2}}}</td><br />
</tr><br />
}}{{#if: {{{heading3|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading3style|}}}"><br />
{{{heading3}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content3|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content3style|}}}"><br />
{{{content3}}}</td><br />
</tr><br />
}}{{#if: {{{heading4|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading4style|}}}"><br />
{{{heading4}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content4|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content4style|}}}"><br />
{{{content4|}}}</td><br />
</tr><br />
}}{{#if: {{{heading5|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading5style|}}}"><br />
{{{heading5}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content5|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content5style|}}}"><br />
{{{content5}}}</td><br />
</tr><br />
}}{{#if: {{{heading6|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading6style|}}}"><br />
{{{heading6}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content6|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content6style|}}}"><br />
{{{content6}}}</td><br />
</tr><br />
}}{{#if: {{{heading7|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading7style|}}}"><br />
{{{heading7}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content7|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content7style|}}}"><br />
{{{content7}}}</td><br />
</tr><br />
}}{{#if: {{{heading8|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading8style|}}}"><br />
{{{heading8}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content8|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content8style|}}}"><br />
{{{content8}}}</td><br />
</tr><br />
}}{{#if: {{{heading9|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading9style|}}}"><br />
{{{heading9}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content9|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content9style|}}}"><br />
{{{content9}}}</td><br />
</tr><br />
}}{{#if: {{{heading10|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading10style|}}}"><br />
{{{heading10}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content10|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content10style|}}}"><br />
{{{content10}}}</td><br />
</tr><br />
}}{{#if: {{{heading11|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading11style|}}}"><br />
{{{heading11}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content11|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content11style|}}}"><br />
{{{content11}}}</td><br />
</tr><br />
}}{{#if: {{{heading12|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading12style|}}}"><br />
{{{heading12}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content12|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content12style|}}}"><br />
{{{content12}}}</td><br />
</tr><br />
}}{{#if: {{{heading13|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading13style|}}}"><br />
{{{heading13}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content13|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content13style|}}}"><br />
{{{content13}}}</td><br />
</tr><br />
}}{{#if: {{{heading14|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading14style|}}}"><br />
{{{heading14}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content14|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content14style|}}}"><br />
{{{content14}}}</td><br />
</tr><br />
}}{{#if: {{{heading15|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading15style|}}}"><br />
{{{heading15}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content15|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content15style|}}}"><br />
{{{content15}}}</td><br />
</tr><br />
}}{{#if: {{{heading16|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading16style|}}}"><br />
{{{heading16}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content16|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content16style|}}}"><br />
{{{content16}}}</td><br />
</tr><br />
}}{{#if: {{{heading17|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading17style|}}}"><br />
{{{heading17}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content17|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content17style|}}}"><br />
{{{content17}}}</td><br />
</tr><br />
}}{{#if: {{{heading18|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading18style|}}}"><br />
{{{heading18}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content18|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content18style|}}}"><br />
{{{content18}}}</td><br />
</tr><br />
}}{{#if: {{{heading19|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading19style|}}}"><br />
{{{heading19}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content19|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content19style|}}}"><br />
{{{content19}}}</td><br />
</tr><br />
}}{{#if: {{{heading20|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading20style|}}}"><br />
{{{heading20}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content20|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content20style|}}}"><br />
{{{content20}}}</td><br />
</tr><br />
}}{{#if: {{{heading21|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading21style|}}}"><br />
{{{heading21}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content21|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content21style|}}}"><br />
{{{content21}}}</td><br />
</tr><br />
}}{{#if: {{{heading22|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading22style|}}}"><br />
{{{heading22}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content22|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content22style|}}}"><br />
{{{content22}}}</td><br />
</tr><br />
}}{{#if: {{{heading23|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading23style|}}}"><br />
{{{heading23}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content23|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content23style|}}}"><br />
{{{content23}}}</td><br />
</tr><br />
}}{{#if: {{{heading24|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading24style|}}}"><br />
{{{heading24}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content24|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content24style|}}}"><br />
{{{content24}}}</td><br />
</tr><br />
}}{{#if: {{{heading25|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading25style|}}}"><br />
{{{heading25}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content25|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content25style|}}}"><br />
{{{content25}}}</td><br />
</tr><br />
}}{{#if: {{{heading26|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading26style|}}}"><br />
{{{heading26}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content26|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content26style|}}}"><br />
{{{content26}}}</td><br />
</tr><br />
}}{{#if: {{{heading27|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading27style|}}}"><br />
{{{heading27}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content27|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content27style|}}}"><br />
{{{content27}}}</td><br />
</tr><br />
}}{{#if: {{{heading28|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading28style|}}}"><br />
{{{heading28}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content28|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content28style|}}}"><br />
{{{content28}}}</td><br />
</tr><br />
}}{{#if: {{{heading29|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading29style|}}}"><br />
{{{heading29}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content29|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content29style|}}}"><br />
{{{content29}}}</td><br />
</tr><br />
}}{{#if: {{{heading30|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading30style|}}}"><br />
{{{heading30}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content30|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content30style|}}}"><br />
{{{content30}}}</td><br />
</tr><br />
}}{{#if: {{{heading31|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading31style|}}}"><br />
{{{heading31}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content31|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content31style|}}}"><br />
{{{content31}}}</td><br />
</tr><br />
}}{{#if: {{{heading32|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading32style|}}}"><br />
{{{heading32}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content32|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content32style|}}}"><br />
{{{content32}}}</td><br />
</tr><br />
}}{{#if: {{{heading33|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading33style|}}}"><br />
{{{heading33}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content33|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content33style|}}}"><br />
{{{content33}}}</td><br />
</tr><br />
}}{{#if: {{{heading34|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading34style|}}}"><br />
{{{heading34}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content34|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content34style|}}}"><br />
{{{content34}}}</td><br />
</tr><br />
}}{{#if: {{{heading35|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading35style|}}}"><br />
{{{heading35}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content35|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content35style|}}}"><br />
{{{content35}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if: {{{below|}}}<br />
|<tr><td class="{{{belowclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{belowstyle|}}}"><br />
{{{below}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#switch:{{{navbar|{{{tnavbar|off}}}}}}<br />
|none |off=<br />
|#default=<tr><td style="text-align:right;font-size:115%;{{{navbarstyle|{{{tnavbarstyle|}}}}}}">{{navbar|{{{name|{{PAGENAME}}}}}|mini=1|fontstyle={{{navbarfontstyle|{{{tnavbarfontstyle|}}}}}}}}</td></tr><!--<br />
-->}}<br />
</table>}}</div>
Hrnchamd
https://wiki.openmw.org/index.php?title=Template:Navbar&diff=2379
Template:Navbar
2015-11-19T16:21:29Z
<p>Hrnchamd: </p>
<hr />
<div>{{#ifeq:{{{child|}}}|yes||<table class="vertical-navbox {{#ifeq:{{{wraplinks|}}}|true||nowraplinks}} {{{bodyclass|{{{class|}}}}}}" <!--<br />
-->cellspacing="{{#if:{{{cellspacing|}}} |{{{cellspacing}}} |5}}" <!--<br />
-->cellpadding="{{#if:{{{cellpadding|}}} |{{{cellpadding}}} |0}}" <!--<br />
-->style="float:{{#if:{{{float|}}} |{{{float}}} |right}};<!--<br />
-->clear:{{#ifeq:{{{float|}}}|none |both |{{#if:{{{float|}}} |{{{float}}} |right}}}};<!--<br />
-->width:{{#if:{{{width|}}} |{{{width}}} |22.0em}};<!--<br />
(margins:)-->{{#switch:{{{float|}}} |left=margin:0 1.0em 1.0em 0; |none|right|#default=margin:0 0 1.0em 1.0em;}}<!--<br />
-->background:#f9f9f9;border:1px solid #aaa;padding:0.2em;border-spacing:0.4em 0;text-align:center;line-height:1.4em;font-size:88%;{{{bodystyle|{{{style|}}}}}}">}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{outertitle|}}}<br />
|<caption class="{{{outertitleclass|}}}" style="padding-bottom:0.2em;font-size:125%;line-height:1.2em;font-weight:bold;{{{outertitlestyle|}}}">{{{outertitle}}}</caption><!--<br />
-->}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{topimage|}}}<br />
|<tr><td class="{{{topimageclass|}}}" style="padding:0.4em 0;{{{topimagestyle|}}}">{{{topimage}}}<!--<br />
-->{{#if:{{{topcaption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{topcaptionstyle|}}}">{{{topcaption}}}</div>}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#if:{{{pretitle|}}}<br />
|<tr><td class="{{{pretitleclass|}}}" style="{{{basestyle|}}};{{#if:{{{topimage|}}} |padding-top:0.2em |padding-top:0.4em}};line-height:1.2em;{{{pretitlestyle|}}}">{{{pretitle}}}</td><br />
</tr><br />
}}}}<!--<br />
<br />
-->{{#if:{{{title|}}}<br />
|{{#ifeq:{{{child|}}}|yes||<tr><th class="{{{titleclass|}}}" style="{{{basestyle|}}};padding:0.2em 0.4em 0.2em;{{#if:{{{pretitle|}}} |padding-top:0}};font-size:145%;line-height:1.2em;{{{titlestyle|}}}">}}{{{title}}}</th><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{image|}}}<br />
|<tr><td class="{{{imageclass|}}}" style="padding:0.2em 0 0.4em;{{{imagestyle|}}}">{{{image}}}<!--<br />
-->{{#if:{{{caption|}}} |<div style="padding-top:0.2em;line-height:1.2em;{{{captionstyle|}}}">{{{caption}}}</div>}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if:{{{above|}}}<br />
|<tr><td class="{{{aboveclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{abovestyle|}}}"><!--newline required for bullet-points to work:--><br />
{{{above}}}</td><br />
</tr><br />
}}<!--<br />
<br />
heading#/content# starts here:<br />
<br />
-->{{#if: {{{heading1|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading1style|}}}"><br />
{{{heading1}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content1|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content1style|}}}"><!-- newline required before contents# for bullets to work --><br />
{{{content1}}}</td><br />
</tr><br />
}}{{#if: {{{heading2|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading2style|}}}"><br />
{{{heading2}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content2|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content2style|}}}"><br />
{{{content2}}}</td><br />
</tr><br />
}}{{#if: {{{heading3|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading3style|}}}"><br />
{{{heading3}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content3|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content3style|}}}"><br />
{{{content3}}}</td><br />
</tr><br />
}}{{#if: {{{heading4|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading4style|}}}"><br />
{{{heading4}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content4|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content4style|}}}"><br />
{{{content4|}}}</td><br />
</tr><br />
}}{{#if: {{{heading5|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading5style|}}}"><br />
{{{heading5}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content5|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content5style|}}}"><br />
{{{content5}}}</td><br />
</tr><br />
}}{{#if: {{{heading6|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading6style|}}}"><br />
{{{heading6}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content6|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content6style|}}}"><br />
{{{content6}}}</td><br />
</tr><br />
}}{{#if: {{{heading7|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading7style|}}}"><br />
{{{heading7}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content7|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content7style|}}}"><br />
{{{content7}}}</td><br />
</tr><br />
}}{{#if: {{{heading8|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading8style|}}}"><br />
{{{heading8}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content8|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content8style|}}}"><br />
{{{content8}}}</td><br />
</tr><br />
}}{{#if: {{{heading9|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading9style|}}}"><br />
{{{heading9}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content9|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content9style|}}}"><br />
{{{content9}}}</td><br />
</tr><br />
}}{{#if: {{{heading10|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading10style|}}}"><br />
{{{heading10}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content10|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content10style|}}}"><br />
{{{content10}}}</td><br />
</tr><br />
}}{{#if: {{{heading11|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading11style|}}}"><br />
{{{heading11}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content11|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content11style|}}}"><br />
{{{content11}}}</td><br />
</tr><br />
}}{{#if: {{{heading12|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading12style|}}}"><br />
{{{heading12}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content12|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content12style|}}}"><br />
{{{content12}}}</td><br />
</tr><br />
}}{{#if: {{{heading13|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading13style|}}}"><br />
{{{heading13}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content13|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content13style|}}}"><br />
{{{content13}}}</td><br />
</tr><br />
}}{{#if: {{{heading14|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading14style|}}}"><br />
{{{heading14}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content14|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content14style|}}}"><br />
{{{content14}}}</td><br />
</tr><br />
}}{{#if: {{{heading15|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading15style|}}}"><br />
{{{heading15}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content15|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content15style|}}}"><br />
{{{content15}}}</td><br />
</tr><br />
}}{{#if: {{{heading16|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading16style|}}}"><br />
{{{heading16}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content16|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content16style|}}}"><br />
{{{content16}}}</td><br />
</tr><br />
}}{{#if: {{{heading17|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading17style|}}}"><br />
{{{heading17}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content17|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content17style|}}}"><br />
{{{content17}}}</td><br />
</tr><br />
}}{{#if: {{{heading18|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading18style|}}}"><br />
{{{heading18}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content18|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content18style|}}}"><br />
{{{content18}}}</td><br />
</tr><br />
}}{{#if: {{{heading19|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading19style|}}}"><br />
{{{heading19}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content19|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content19style|}}}"><br />
{{{content19}}}</td><br />
</tr><br />
}}{{#if: {{{heading20|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading20style|}}}"><br />
{{{heading20}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content20|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content20style|}}}"><br />
{{{content20}}}</td><br />
</tr><br />
}}{{#if: {{{heading21|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading21style|}}}"><br />
{{{heading21}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content21|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content21style|}}}"><br />
{{{content21}}}</td><br />
</tr><br />
}}{{#if: {{{heading22|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading22style|}}}"><br />
{{{heading22}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content22|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content22style|}}}"><br />
{{{content22}}}</td><br />
</tr><br />
}}{{#if: {{{heading23|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading23style|}}}"><br />
{{{heading23}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content23|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content23style|}}}"><br />
{{{content23}}}</td><br />
</tr><br />
}}{{#if: {{{heading24|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading24style|}}}"><br />
{{{heading24}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content24|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content24style|}}}"><br />
{{{content24}}}</td><br />
</tr><br />
}}{{#if: {{{heading25|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading25style|}}}"><br />
{{{heading25}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content25|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content25style|}}}"><br />
{{{content25}}}</td><br />
</tr><br />
}}{{#if: {{{heading26|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading26style|}}}"><br />
{{{heading26}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content26|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content26style|}}}"><br />
{{{content26}}}</td><br />
</tr><br />
}}{{#if: {{{heading27|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading27style|}}}"><br />
{{{heading27}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content27|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content27style|}}}"><br />
{{{content27}}}</td><br />
</tr><br />
}}{{#if: {{{heading28|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading28style|}}}"><br />
{{{heading28}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content28|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content28style|}}}"><br />
{{{content28}}}</td><br />
</tr><br />
}}{{#if: {{{heading29|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading29style|}}}"><br />
{{{heading29}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content29|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content29style|}}}"><br />
{{{content29}}}</td><br />
</tr><br />
}}{{#if: {{{heading30|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading30style|}}}"><br />
{{{heading30}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content30|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content30style|}}}"><br />
{{{content30}}}</td><br />
</tr><br />
}}{{#if: {{{heading31|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading31style|}}}"><br />
{{{heading31}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content31|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content31style|}}}"><br />
{{{content31}}}</td><br />
</tr><br />
}}{{#if: {{{heading32|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading32style|}}}"><br />
{{{heading32}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content32|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content32style|}}}"><br />
{{{content32}}}</td><br />
</tr><br />
}}{{#if: {{{heading33|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading33style|}}}"><br />
{{{heading33}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content33|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content33style|}}}"><br />
{{{content33}}}</td><br />
</tr><br />
}}{{#if: {{{heading34|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading34style|}}}"><br />
{{{heading34}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content34|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content34style|}}}"><br />
{{{content34}}}</td><br />
</tr><br />
}}{{#if: {{{heading35|}}}|<br />
<tr><br />
<th class="{{{headingclass|}}}" style="padding:0.1em;{{{basestyle|}}};{{{headingstyle|}}};{{{heading35style|}}}"><br />
{{{heading35}}}</th><br />
</tr><br />
}}{{#if:<br />
{{{content35|}}}|<br />
<tr><br />
<td class="{{{contentclass|}}}" style="padding:0 0.1em 0.4em;{{{contentstyle|}}};{{{content35style|}}}"><br />
{{{content35}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#if: {{{below|}}}<br />
|<tr><td class="{{{belowclass|}}}" style="padding:0.3em 0.4em 0.3em;font-weight:bold;{{{belowstyle|}}}"><br />
{{{below}}}</td><br />
</tr><br />
}}<!--<br />
<br />
-->{{#ifeq:{{{child|}}}|yes||{{#switch:{{{navbar|{{{tnavbar|off}}}}}}<br />
|none |off=<br />
|#default=<tr><td style="text-align:right;font-size:115%;{{{navbarstyle|{{{tnavbarstyle|}}}}}}">{{navbar|{{{name|{{PAGENAME}}}}}|mini=1|fontstyle={{{navbarfontstyle|{{{tnavbarfontstyle|}}}}}}}}</td></tr><!--<br />
-->}}<br />
</table>}}</div>
Hrnchamd