Die nun folgende Zusammenstellung ist eher lose. Bei Gelegenheit sortiere ich die Notizen evt. noch einmal und füge ein Inhaltsverzeichnis bei, sofern das Thema zu unübersichtlich werden sollte. Eine Garantie auf Vollständigkeit und Richtigkeit gibt es natürlich nicht, daher dürfen gerne Korrekturen und Fehler angemerkt werden.
#1 - Templates und Klassen
- Die Templates werden nur vom Art Manager benötigt, um dbr-Dateien für das Bearbeiten im Art Manager (AM) korrekt dazustellen. Das Spiel selbst benutzt die Templates nicht. Man kann ein Template modifizieren, um die betreffenden dbr-Dateien bequemer im AM ändern zu können. Beim Builden werden dann nur die Werte gespeichert, die durch das Template gefordert sind - alle anderen gehen verloren.
Die unveränderten Namen der Templates entsprechen den Bezeichnungen der Klassen. Die Klasse einer dbr-Datei legt fest, wie das Spiel diese dbr-Datei verarbeitet.
Man kann eine dbr-Datei direkt mit einem Texteditor oder mit einem modifizierten Template im AM seinen Wünschen anpassen. Ob das Spiel diese Modifizierungen übernimmt, steht allerdings auf einem anderen Blatt.
Siehe dazu auch: Custom Skills - Templates, Projectiles & Effects
- Skill_AttackProjectile (Volcanic Orb)
Skill_AttackRadius (Flash Powder)
Skill_AttackRadiusLightning (Lightning Bolt)
Skill_AttackSpell (Enslave Spirit)
Skill_AttackWave (Distortion Wave)
Skill_AttackWeapon
Skill_AttackWeaponCharge (Warwind, Takedown)
Skill_AttackWeaponRangedSpread (Ternion)
Skill_AttackWeaponBlink (Phantom Strike)
Skill_AttackChain (Sands of Sleep)
Skill_AttackProjectileDebuf (Ensnare)
Skill_WeaponPool_Basic (Marksmanship)
Skill_WeaponPool_ChargedFinale (Psionic Touch, Calculated Strike)
Skill_WeaponPool_ChargedLinear (Onslaught)
Skill_AttackProjectileSpawnPet (Sylvan Nymph, Lay Trap)
- a) Skill Modifiers, erweitert die Grundfähigkeit
b) Secondary Skills, fügt sekundäre Fähigkeiten hinzu
c) Projectile Modifiers, erweitert die Grundfähigkeit
Skill Modifier und Secondary Skills funktionieren auf den Grundskill, der im <mastery>skilltree.dbr unmittelbar davor eingetragen ist.
Mehrere Skill Modifier nach einem Grundskill wirken alle auf den Grundskill und nicht auf vorhergehende Skill Modifier.
Skill Modifier nach einem Secondary Skill im Skilltree wirken auf den SkillSecondary und nicht auf den Grundskill. Um den Grundskill zu modifizieren, müssen ein oder mehrere Skill Modifier direkt dahinter im <mastery>skilltree.dbr eingetragen sein.
d.h.: skill -> modifiers -> secondary skill -> secondary skill modifiers
- 1 Kriegsführung, 2 Verteidigung, 3 Erde, 4 Sturm, 5 Gaunerei,
6 Jagd, 7 Geist, 8 Natur, 9 Traum
- Nicht jede Fähigkeit kann Secondary Skills auslösen
- "ChargedLinear"-Angriffe lösen keine Secondary Skills aus
- „ChargedFinal“ oder „AttackWeaponRangedSpread“-Waffenangriffe können es
SkillSecondary_AttackRadius:
Der Angriff geht vom getroffenen Ziel aus, d.h. auch bei Verwendung einer Fernkampfwaffe (Bogen, Stab) wird der Angriff am Ziel aktiv und nicht am Spieler, wie bei normalen AttackRadius-Angriffen. Wirkt nicht mit WPAttack_BasicAttack zusammen.
Bei Kombination mit AttackProjectileAreaEffect: Bei einem (dem ersten bzw. beliebigen) Monster im Zielgebiet und jedem Fragmenttreffer wird am getroffenen Ziel der AttackRadius ausgelöst. Keine Mehrfachtreffer im Zielgebiet. Im Rhythmus des AoE-Effektes.
- löst bei „AttackWeaponRangedSpread“ manchmal nicht bei Zielen aus, wenn kurz zuvor mit dem selben Angriff ein anderes Ziel getroffen wurde, bei gleichzeitigem Treffer funktioniert’s
- funktioniert auch mit BuffSelfImmobilize, aber nicht mit passiveOnHitBuffSelf
SkillSecondary_BuffRadius:
Als „Debuf“ oder „Passive(Shield)“ funktioniert es mit „AttackWeaponRangedSpread” und „AttackProjectileAreaEffect“ sowie „OnHitAttackRadius“ nur kurzzeitig – wohl kein SecondaryBuff auf Dauer bei einem Angriff möglich. Auch Bonus-Leben ist unwirksam. -> wohl primärer Buff notwendig, funktioniert aber nicht mit passiveOnHitBuffSelf oder BuffSelfImmobilize
SkillSecondary_ChainLightning:
Kettenblitz, der von einem getroffenen Gegner zum nächsten überspringt. Geht bei „ChargedFinal” und „AttackSpell“ vom Charakter aus, nur bei „AttackLightning” vom Ziel.
Ausnahme: Wenn der „Lightning“-Record die Eigenschaft „fromSky“ erfüllt.
SkillSecondary_ForkLightning:
Das gleiche Verhalten wie ChainLightning, außer dass die Blitze alle gleichzeitig vom Charakter, getroffenem Ziel (AttackLightning) bzw. Himmel in alle Richtungen ausgehen.
- Scheinbar lässt sich dieser Zauber erst wieder zaubern, wenn das letzte Element der Kette verschwunden ist. D.h. es dauert umso länger, je mehr Gegner davon betroffen sind und je weiter sie auseinander stehen. Eine Erhöhung der Zaubergeschwindigkeit bringt nichts.
Lediglich eine Reduzierung der Effektanimation erhöht die Zaubergeschwindigkeit
- Die pfx-Datei „Typhon_Meteor_ambientfire.pfx“ wird nirgends in der Fähigkeit „meteorshower“ (und verlinkten DBRs) aufgerufen, aber trotzdem beim Flug verwendet. Selbst wenn alle Effekte für die Fähigkeit aus sind, wird dieser Effekt ingame trotzdem verwendet, weil er direkt mit der Mesh „typhon_meteor.msh“ zusammenhängt.
-> Überschreibung/Ersetzen der pfx-Datei im exakten Pfad nötig.
--> was Tiffy’s Meteorschauer dann aber auch beeinflusst
- Haben diese Monster einen Stab in der Hand und sind noch andere Pets aktiv, führen die genannten Monster eine komische Laufbewegung auf der Stelle aus. Wenn sie keinen Stab in der Hand haben, passiert das nicht.
- Die Übersetzungen für
- RetaliationModifierCold={%+.0f0}% Frostbrandvergeltung
- RetaliationModifierFire={%+.0f0}% Verbrennungsvergeltung
sind falsch und müssten
- RetaliationModifierCold={%+.0f0}% Kältevergeltung
- RetaliationModifierFire={%+.0f0}% Feuervergeltung
heißen. Darüber hinaus sind keine Übersetzungen für
- RetaliationDurationModifierCold
- RetaliationDurationModifierFire
- RetaliationDurationModifierLightning
Vorhanden. Diese wären
- RetaliationDurationModifierCold={%+.0f0}% Frostbrandvergeltung
- RetaliationDurationModifierFire={%+.0f0}% Verbrennungsvergeltung
- RetaliationDurationModifierLightning={%+.0f0}% Elektrobrandvergeltung
- Reihenfolge der Bilder:
Hintergrundbild -> MasteryIcon (Plus-Button) / Skill-Icons / Skill-Connections
Bilder (Icons, Connections) zu Skills, die im Skilltree weiter oben eingetragen sind, werden von Bildern der nachfolgenden Skills überdeckt.
Die Connection-Bilder sind um 20 Pixel nach links und 10 Pixel nach oben gegenüber der Icon-Position verschoben.
Jede weitere Connection ist um die Höhe des vorherigen Bildes nach oben verschoben.
Connectionbilder also nur bis 20 Pixel nach links vom Skillbild positionierbar, ansonsten in alle Richtungen:
Für oben -> weitere transparente Bilder vorher in Connection-Liste eintragen
Für rechts und nach unten-> Connection-Bild selbst nach rechts und unten erweitern
- Auch Standarten, etc. brauchen eine UnarmedSpellAttack- sowie eine UnarmedAttack-Animation, damit sie mit Fähigkeiten wie AttackProjectileRing oder AttackRadius angreifen können.
- Angriff, der ohne Waffe oder Handschaden ausgeführt wird, d.h. nur der Schaden des Skills wird angerichtet. Als Nahkampfangriff auf mehrere Gegner möglich. Ähnlich zu einem AttackRadius-Angriff, nur das nicht alle Gegner im Umkreis getroffen werden, sondern nur die (von der Waffe?) getroffenen.
- Bei Verweisen (auf einen Tag, .dbr, .tex, …) darf kein Leerzeichen am Ende sein, sonst funktioniert der Verweis nicht.
- Öffnet sich, wenn man eine Mod lädt und dann ingame „Strg/AltGr + ^“ drückt.
Dann kann man eine kleine Auswahl an Befehlen zum Testen der Mod eingeben.
Bspw.:
- Game.god
- Game.killme
- Game.incrementSkill (Char erhält einen Fähigkeitspunkt)
- Game.incrementAttribut (Char erhält einen freien Attributpunkt)
- NumDefensiveSlots: ?
NumAttackSlots: Gibt an, wie viele Nahkampfgegner sich um den Charakter/das Pet positionieren und somit angreifen können.
- Manche Änderungen – bspw. der Tier-Stufen – werden nur wirksam, wenn sie in der originalen Database.Arz unter „Titan Quest Immortal Throne\Database\“ gespeichert sind. Der Mod wird also bereits mit dem Spielstart geladen.
- Die Fähigkeit wird erst deaktiviert, wenn das Leben die Aktivierungsgrenze wieder überschritten hat. Daher entweder Bonusleben verleihen oder so geringe Aktivierungsgrenze wählen, dass man nur ungern mit so wenig Leben spielt.
- Height bezeichnet die minimale senkrechte Starthöhe der Geschosse über dem Charakter.
Keine Ahnung wodurch die maximale Höhe begrenzt ist. Offset ist so etwa ein Kreis im Abstand zum Charakter.
- Die „Special Attacks“ haben Wichtungen, die im Vergleich zur Gesamtwichtung (analog zu Itemdrops) angeben, mit welcher Wahrscheinlichkeit diese Spezialattacke genutzt wird. Die „Timeout“-Variable beschreibt die Zeit, bis zu Ausführung der Fähigkeit. Die „Delay“-Variable stellt die Aufladezeit der gleichen Fähigkeit dar.
Aufladezeit von Pet-Skills wirkt nicht – stattdessen ist die „Delay“-Variable zu nutzen.
Für alles weitere siehe: Poinas Antwort in Art Manager Mob Skilltree & Skill Configuration Windows Explanation.
- Die gleiche Aura sollte nicht doppelt unter “initialSkill” und einem der “BuffSelfSkills” genutzt werden, weil sie sonst (womöglich) beim zweiten Aufruf (dem „BuffSelf“) wieder deaktiviert wird.
- Der imho nahezu einzige Attachpoint, den alle Monster haben, ist der „Prey_Effect“ (über dem Monster). Etwas weniger häufig sind „target“ (meist zentral im Körper) und „head“ bzw. „headeffect“ (Kopf).
- Die Buffs (toggled oder duration) wirken im Umkreis des Spielers für eine vorgegebene Dauer. Dabei bewegt sich der Wirkungsradius mit dem Spieler, sodass eine Kombination mit einem BuffDebuf-Skill (s. Todesstrahlung) daraus eine Schaden verursachende Aura macht, die u.A. auch gezielt bestimmte Widerstände und Charakterwerte schwächen kann.
Liste der Buffs, die keinen zweiten Buff benötigen:
Skill_BuffAttackRadiusToggled / Skill_BuffAttackRadiusDuration
Skill_BuffSelf + Colossus / Duration / Immobilize / Invulnerable / Shield / Toggled
Liste der Buffs, die einen zweiten eigentlichen Buff benötigen:
Skill_AttackBuff / Skill_AttackBuffRadius
Skill_AttackProjectilDebuf
Skill_BuffOther
Skill_BuffRadius / Skill_BuffRadiusToggled
Liste der Zweit-Buffs, die mit o.g. Buffs verknüpft werden können:
SkillBuff_BuffImmobilize
SkillBuff_Contageous
SkillBuff_Debuf / SkillBuff_DebufFreeze / SkillBuff_DebufTrap
SkillBuff_Passive
SkillBuff_PassiveShield
- Funktionsweise: Ein Geschoss wird auf das mit der Maus ausgewählte Ziel geschossen. Allerdings wird ausgehend vom Ziel im festgelegten Radius (offset) geschossen. Dieser Umkreis wird in die Anzahl an „multihits“ (numhits) aufgeteilt und die Geschosse fliegen nacheinander auf jeden der neu definierten Zielpunkte zu. Die Launch-Number und Rotation funktionieren hier nicht, d.h. man kann nicht mehrere Geschosse auf einmal verschießen.
Bspw.: offset 10m, numhits 5 – Das erste Geschoss fliegt nun auf einen Punkt, 5m vom anvisierten Ziel zu. Das zweite Geschoss auf den zweiten Punkt, der ebenfalls 5m vom Ziel entfernt ist, aber um 360°/5=72° gegen den Uhrzeigersinn verschoben ist. Die nächsten drei Geschosse fliegen ebenso in Richtung der 5m-Abstand-Punkte um das anvisierte Ziel. Das sechste Geschoss fliegt wieder auf den Punkt des ersten Geschosses zu, (sofern sich der anvisierte Zielpunkt nicht bewegt hat, sonst ist es räumlich natürlich etwas verschoben.) Beispiel: siehe „Hades3_shadowstar_multi“
- Der Zeitpunkt der Fragmentfreisetzung wird im zugehörigen ProjectileAreaEffect unter „targetInterval“ festgelegt. Das minimale Intervall zwischen zwei Fragmentfreisetzungen beträgt 400ms.
Intervall >= AoE-Dauer: Fragmente werden zu Beginn des AoE freigesetzt.
AoE-Dauer -10ms < Intervall < AoE-Dauer: Keine Fragmente werden freigesetzt.
Intervall < AoE-Dauer – 10ms: Fragmente werden nach dem ersten Intervall freigesetzt.
Intervall << AoE-Dauer: Fragmente werden solange im festgelegten Intervall freigesetzt, bis die AoE-Dauer überschritten ist.
- Es gelten die gleichen Bedingungen wie bei Gedankenkontrolle durch den Spieler: Die Monster können nicht direkt gesteuert werden und dürfen maximal 5 Level höher sein als der Spieler. Sie bleiben auch bei Tod des Pets auf der Seite des Spielers. Gedankenkontrolle funktioniert nicht mit BuffRadiusToggled+Buff_Debuf, aber mit AttackSpell.
- Die eingestellten Schadenswerte des Spawn-Skills wirken nur einmalig am Beschwörungsort und im angegebenen Explosionsradius. Es wird ein Explosionsradius benötigt, damit das Pet beschworen werden kann.
- Wenn ein Pet in seiner Skillkonfiguration bei BuffSelf und bei BuffOther einen Skill zugewiesen hat, wird zuerst der BuffSelf-Skill aktiviert und anschließend der BuffOther (bei Aktivierung „whenEnemyIsSeen“). Sind es die gleichen Skills, wird nur der BuffSelf-Skill aktiviert. Die BuffOther-Skills bleiben (bspw. bei „Buff_Passive“) über den Tod des Pets hinaus bestehen.
- Geschosse dieses Typs können den Gegner nicht durchschlagen.
- Jegliche Anpassungen tätigen, bevor man die Pets vervielfältigt, inkl. Items löschen, da es nachher einfacher geht (bspw. mit dem TextCrawler) leere Einträge zu füllen.
- Eine Fähigkeit, die durch einen Gegenstand verliehen wird, berücksichtigt keine anderen evt. benötigten Fähigkeiten. Einträge unter „SkillDependency“ werden bei Item-Skills also nicht berücksichtigt.
Ebenso wenig können Item-Skills als Voraussetzung für eine Fähigkeit einer Meisterschaft verwendet werden. Diese „SkillDependency“-Fähigkeiten müssen einem Skilltree angehören, der dem Charakter bekannt ist.
Um eine Fähigkeit freizuschalten, muss der Skill im Skillfenster mit einem Mausklick aktiviert werden. Eine Fähigkeit kann nicht durch einen Item-Skill freigeschalten werden, selbst wenn dieser einem bekannten Skilltree angehört.
- Es kann immer nur eine exklusive Fähigkeit zur gleichen Zeit aktiv sein. Wenn bereits eine exklusive Fähigkeit aktiv ist, wird sie automatisch deaktiviert bei Aktivierung einer zweiten exklusiven Fähigkeit. Dies wirkt ausschließlich bei Buffs. Selbst ein exklusiver Angriff oder Zauber kann genutzt werden, ohne dass ein bereits aktiver exklusiver Buff deaktiviert wird.
Exklusive Fähigkeiten, die durch Gegenstände verliehen werden, werden auch berücksichtigt.
- Beast – Bestien
Beastman – Tiermenschen
Construct – Belebte Konstruktionen
Demon – Dämonen
Device – Geräte
Insectoid – Insektoide
Magical – Magische Kreaturen
Plant – Pflanzen
Titan – Titanen
Telkine – Telkine
Undead – Untote
- RacialDamage wirkt multiplikativ zu allen anderen Schadensfaktoren.
- Itemeintrag verweist auf A1-> A1 auf A2 -> A2 auf Item
A1) LootMasterTable: Zuweisung verschiedener Loots, bspw. normale Greens oder MIs
A2) LootItemTable_FixedWeight: Zuweisung der Affix-Tabellen zu einzelnen Loots und Konfiguration der Affixmöglichkeiten
Itemeintrag verweist auf B1 -> B1 auf Item
B1) LootItemTable_DynWeight: Zuweisung einer Loot-Tabelle (bspw. für Uniques) und Konfiguration der Affixmöglichkeiten und Levelanforderungen
- „Interval“: wann sich der Buff auf andere Ziele im „Radius“ überträgt. Der Schaden trifft jedes infizierte Ziel stets einmal pro Sekunde. „maxSpread“ ist die obere Grenze. Das „Limit“ gibt an, ab der wievielten potentiellen Infektion sich früher infizierte Monster tatsächlich erneut infizieren können.
- Die Aufladezeit beginnt erst, wenn die Dauer des Buffs vorüber ist und dieser sich somit beendet hat. Gleichbedeutend kann bei solchen Skills durch Items (bspw. Adrenalin auf Achilles Rüstung) die Aufladezeit umgangen werden, indem das Item nicht mehr getragen und somit der Buff vorzeitig abgebrochen wird.
- Einzeleffekte müssen bearbeitet werden, damit Umbenennung gespeichert wird, bspw. Häckchen bei „Render“ entfernen und wieder setzen.
- Texturen und Effekte, die man darin mit der richtigen Pfadstruktur platziert, werden vom Spiel erkannt, sodass nicht extra ein eigener Mod gebastelt werden muss.
- Einfach bei den „Light Options“ ein Häckchen bei Enabled machen und Farbe sowie Radius einstellen. Bei Partikel evt. „oval.tex“ mit „additive“-Shader nehmen, aber die Emissionsrate auf Null senken. Ansonsten sind die Effekt- und Partikeleinstellungen vermutlich egal, weil der Lichteffekt keine Partikel benötigt und nichts emittiert werden muss.
- Wenn ein Pet als Boss klassifiziert ist, kann das Auswirkungen auf Quests haben, weil das Spiel glaubt, dass diese Monster besiegt werden müssen. Bspw. können Truhen erst geöffnet werden, wenn alle Begleiter mit Boss-Klassifikation entlassen sind.
- Die DamageQualifier wirken nicht, d.h. der Buff wird bei jeglichem Angriff ausgelöst, unabhängig von der verursachten Schadensart.
- ChargedLinear-Skills bestehen gewissermaßen aus zwei Skills: einem Buff und einem Waffenangriff.
A) Der Buff wird aktiviert, sobald das erste Monster getroffen wurde. Solange die Fähigkeit aktiv/aufgeladen ist, wirkt der Buff mit allen Parametern auf den Spieler. Die Höhe der Parameter entspricht dabei der aufgeladenen Stufe der Fähigkeit selbst und der geskillten Stufe evt. vorhandener Modifikationen.
B) Ein Waffenangriff mit dieser Fähigkeit wird durch alle offensiven Parameter zusätzlich zum Buff verstärkt. Dabei entspricht die Höhe der Parameter der geskillten Stufe der Fähigkeit und evt. vorhandener Modifikationen.
Somit gilt: Beim ersten Schlag (mit dieser Fähigkeit als Waffenangriff!) wirken stets nur die geskillten, offensiven Eigenschaften/Parameter der Fähigkeit und der Modifikationen. Danach kommen die Effekte des Buffs hinzu. Die offensiven Parameter von Modifikationen werden beim zweiten Schlag verdoppelt und die der Fähigkeit, wenn sie voll aufgeladen ist.
Die eingestellten Aufladestufen gelten für die jeweilige Skillstufe, wohingegen die restlichen eingestellten Werte (ChargeDuration, Parameter) für die jeweilige Aufladestufe des Buffs gelten! Der Waffenangriff nimmt trotzdem zusätzlich die geskillten, offensiven Parameter. In der Fähigkeitenbeschreibung ingame werden aber nur die Werte der Aufladestufen, d.h. des Buffs angezeigt. Die geskillten Werte werden nicht separat angezeigt. Bei Aufladestufe<Skillstufen sollten daher einige Infos in die Skillbeschreibung von Hand (Modstrings) geschrieben werden.
- Die Aufladezeit funktioniert nicht und bei Verwendung eines ChargedFinal-Angriffsskills procct der WPAttack-BasicAttack nicht zusammen mit dem ChargedFinal-Angriff.
- Vorkommen: Talos, Riesenyeti, Cerberus, Hydra, Manticora, …
Nur die Animation “folgt” dem Spieler. Der Skill selbst sind einzelne unsichtbare Geschosse, die bei der Aktivierung des Skills über einen bestimmten Bereich verschossen werden.
Offensichtlich sind also keine „Strahl“-Attacken möglich, wo der Spieler ununterbrochen angreift.
- Die Gefangenschaft, d.h. die Wirkungsdauer des Buffs, wird durch den eigenen Widerstand u.U. reduziert. Der Effekt (bspw. der Knochenkäfig) kann visuell durch andere Effekte (bspw. Beutestudium) überlagert werden, wodurch auch Meshes wie der Knochenkäfig nicht mehr sichtbar sind, aber der Buff trotzdem noch aktiv ist, d.h. der Spieler sich nicht vom Fleck bewegen kann.
- Der Radius-Effekt und die Ausbreitungsdauer funktionieren nicht. Der Radius selbst funktioniert, ist aber wohl eher als Explosionsradius zu verstehen. Bei Kombination mit einem Secondary_Chain- bzw. ForkLightning werden von der Secondary-Fähigkeit nur die Monster getroffen, die außerhalb des Radius des AttackRadiusLightning waren (Sie müssen aber trotzdem in Spark-Reichweite des getroffenen Ziels sein).
- TimeMin und TimeMax bezeichnen in etwa die Zeit, wann der Blitz auftaucht und wann er wieder verschwindet. Bei AttackRadiusLightnings müssen die Blitze vom Himmel kommen, um sichtbar zu sein.
- Bei „Auto-Create Asset“ einer Textur -> Texture -> „Animated Texture Properties”-Bereich.
Siehe: Animated Textures
- „Texturen“ -> „DXT1 (no alpha)“ funktioniert bspw. bei Monster- und Objekt-Texturen, Charakterskins und Icons. Für Texturen mit transparenten Stellen „Bitmap“ auswählen.
Bitmap funktioniert bei Skillfensterhintergründen, Icon-Connections (mit transparenten Stellen) sowie Icons und u.U. für Teleport-Karte.
- Unter „skillConfig“ einer Fähigkeit muss bei „skillSpecialAnimationName” der Referenzstring der Animation angegeben werden. Dieser Referenzstring ist in der jeweiligen Animation-Set bei <Angriffsart>SpecialAnimRef<Nummer> einzutragen, wodurch dann die zugehörige Animation unter <Angriffsart>SpecialAnim<Nummer> ausgelöst wird.
Single Handed, Dual Wielded und Spear können bis zu 15 Spezialanimationen besitzen.
Unarmed, Bow, Staff, Dual Ranged und Ranged One Hand nur bis zu 10.