Compare commits
3 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
64fd95c814 | |
|
|
976cd83a04 | |
|
|
aef48dd46b |
17
lang/de.json
17
lang/de.json
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"TYPES.Actor.character": "Charakter",
|
"TYPES.Actor.character": "Charakter",
|
||||||
"TYPES.Actor.npc": "Kreatur / Nichtspielerfigur",
|
"ACTOR.TypeNpc": "Kreatur / Nichtspielerfigur",
|
||||||
"ACTOR.TypeVehicle": "Transportmittel / Pferd etc.",
|
"ACTOR.TypeVehicle": "Transportmittel / Pferd etc.",
|
||||||
|
|
||||||
"TYPES.Item.item": "Gegenstand",
|
"TYPES.Item.item": "Gegenstand",
|
||||||
|
|
@ -16,10 +16,18 @@
|
||||||
|
|
||||||
"midgard5": {
|
"midgard5": {
|
||||||
"phase-action": "Handlungsphase",
|
"phase-action": "Handlungsphase",
|
||||||
|
"actionThisTurn": "Handlung",
|
||||||
"phase-movement": "Bewegungsphase",
|
"phase-movement": "Bewegungsphase",
|
||||||
"no-encounter": "Kein Kampf",
|
"no-encounter": "Kein Kampf",
|
||||||
"encounter-not-started": "Kein aktiver Kampf",
|
"encounter-not-started": "Kein aktiver Kampf",
|
||||||
"initiative": "Initiative",
|
"initiative": "Initiative",
|
||||||
|
"initiativeRoll": "Initiative würfeln",
|
||||||
|
"unableToAct": "Handlungsunfähig",
|
||||||
|
"unablesToAct": "Macht handlungsunfähig",
|
||||||
|
"continue": "Weiter",
|
||||||
|
"endTurn": "Zug beenden",
|
||||||
|
"group": "Gruppe",
|
||||||
|
"leader": "Anführer",
|
||||||
"actionrank": "Handlungsrang",
|
"actionrank": "Handlungsrang",
|
||||||
|
|
||||||
"combat-join": "Kampf Beitreten/Handlungsrang zurücksetzen",
|
"combat-join": "Kampf Beitreten/Handlungsrang zurücksetzen",
|
||||||
|
|
@ -93,6 +101,7 @@
|
||||||
"maximum": "Max.",
|
"maximum": "Max.",
|
||||||
"attrvalue": "Wert",
|
"attrvalue": "Wert",
|
||||||
"movementRange": "Bewegungsweite",
|
"movementRange": "Bewegungsweite",
|
||||||
|
"movedThisTurn": "Bewegt",
|
||||||
|
|
||||||
"base_values": "Grundwerte",
|
"base_values": "Grundwerte",
|
||||||
"skills": "Fertigkeiten",
|
"skills": "Fertigkeiten",
|
||||||
|
|
@ -156,10 +165,6 @@
|
||||||
"beredsamkeit": "Beredsamkeit",
|
"beredsamkeit": "Beredsamkeit",
|
||||||
"betaeuben": "Betäuben",
|
"betaeuben": "Betäuben",
|
||||||
"betaeubungsgriff": "Betäubungsgriff",
|
"betaeubungsgriff": "Betäubungsgriff",
|
||||||
"bildendeKuensteA": "Bildende Künste (Architektur)",
|
|
||||||
"bildendeKuensteB": "Bildende Künste (Bildhauerei)",
|
|
||||||
"bildendeKuensteG": "Bildende Künste (Grafik)",
|
|
||||||
"bildendeKuensteM": "Bildende Künste (Malerei)",
|
|
||||||
"bootfahren": "Bootfahren",
|
"bootfahren": "Bootfahren",
|
||||||
"dickhaeuterLenken": "Dickhäuter lenken",
|
"dickhaeuterLenken": "Dickhäuter lenken",
|
||||||
"ersteHilfe": "Erste Hilfe",
|
"ersteHilfe": "Erste Hilfe",
|
||||||
|
|
@ -280,7 +285,7 @@
|
||||||
"defensive-weapon": "Verteidigungswaffe",
|
"defensive-weapon": "Verteidigungswaffe",
|
||||||
"defensive-weapons": "Verteidigungswaffen",
|
"defensive-weapons": "Verteidigungswaffen",
|
||||||
"no-skill": "Keine Fertigkeit",
|
"no-skill": "Keine Fertigkeit",
|
||||||
"magic": "magisch",
|
"magic": "Magisch",
|
||||||
"valuable": "Vermögen",
|
"valuable": "Vermögen",
|
||||||
"equipped": "Ausgerüstet",
|
"equipped": "Ausgerüstet",
|
||||||
"active": "Aktiv",
|
"active": "Aktiv",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "foundry-system-midgard5",
|
"name": "foundry-system-midgard5",
|
||||||
"version": "2.7.2",
|
"version": "2.6.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
||||||
|
|
@ -95,6 +95,9 @@ Hooks.on("getChatLogEntryContext", function (html, options) {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Hooks.on("createCombatant", function () {
|
||||||
|
});
|
||||||
|
|
||||||
Hooks.on("updateCombat", function (combat: Combat, updateData: { round: number; turn: number }, updateOptions: { advanceTime: number; direction: number }) {
|
Hooks.on("updateCombat", function (combat: Combat, updateData: { round: number; turn: number }, updateOptions: { advanceTime: number; direction: number }) {
|
||||||
if (combat.round % 2 === 0 && combat.turn !== null) {
|
if (combat.round % 2 === 0 && combat.turn !== null) {
|
||||||
const tokenId = combat.current.tokenId;
|
const tokenId = combat.current.tokenId;
|
||||||
|
|
@ -140,15 +143,8 @@ Hooks.on("updateCombat", function (combat: Combat, updateData: { round: number;
|
||||||
});
|
});
|
||||||
|
|
||||||
Hooks.on("renderCombatTracker", (combatTracker, html, context) => {
|
Hooks.on("renderCombatTracker", (combatTracker, html, context) => {
|
||||||
if (context.combat === null) {
|
handleRenderCombatTracker(combatTracker, html, context);
|
||||||
html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.no-encounter");
|
});
|
||||||
} else if (Math.ceil(context.round / 2) === 0) {
|
|
||||||
html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.encounter-not-started");
|
|
||||||
} else {
|
|
||||||
html.find("h3.encounter-title")[0].innerHTML =
|
|
||||||
(context.round % 2 == 1 ? game["i18n"].localize("midgard5.phase-movement") : game["i18n"].localize("midgard5.phase-action")) + " " + Math.ceil(context.round / 2);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Hooks.once("ready", () => {
|
Hooks.once("ready", () => {
|
||||||
Logger.ok("Template module is now ready.");
|
Logger.ok("Template module is now ready.");
|
||||||
|
|
@ -201,3 +197,28 @@ function limitHeal(heal: number, current: number, max: number): number {
|
||||||
}
|
}
|
||||||
return heal;
|
return heal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleRenderCombatTracker(combatTracker, html, context) {
|
||||||
|
let combatPhase = -1;
|
||||||
|
if (context.combat === null) {
|
||||||
|
combatPhase = 0;
|
||||||
|
html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.no-encounter");
|
||||||
|
} else if (Math.ceil(context.round / 2) === 0) {
|
||||||
|
combatPhase = 1;
|
||||||
|
html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.encounter-not-started");
|
||||||
|
} else if (context.round % 2 == 1) {
|
||||||
|
combatPhase = 2;
|
||||||
|
html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.phase-movement");
|
||||||
|
} else {
|
||||||
|
combatPhase = 3;
|
||||||
|
html.find("h3.encounter-title")[0].innerHTML = game["i18n"].localize("midgard5.phase-action") + " " + Math.ceil(context.round / 2);
|
||||||
|
}
|
||||||
|
console.log("Combat Phase: ", combatPhase);
|
||||||
|
context.combat?.setFlag('world', 'combatPhase', combatPhase);
|
||||||
|
|
||||||
|
for (const key in context.combat?.combatants.contents) {
|
||||||
|
let actorId = context.combat?.combatants.contents[key].actorId;
|
||||||
|
let actor = (game as Game).actors.get(actorId);
|
||||||
|
actor.render();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -162,6 +162,15 @@ export interface M5AttributeCalculated extends M5ModResult {
|
||||||
|
|
||||||
export interface M5CharacterCalculatedData {
|
export interface M5CharacterCalculatedData {
|
||||||
level: number;
|
level: number;
|
||||||
|
initiative: number;
|
||||||
|
unableToAct: {
|
||||||
|
effectId: string;
|
||||||
|
enabled: boolean;
|
||||||
|
rounds: number;
|
||||||
|
reason: string;
|
||||||
|
};
|
||||||
|
group: string;
|
||||||
|
combatPhase: number;
|
||||||
movement: number;
|
movement: number;
|
||||||
attributes: {
|
attributes: {
|
||||||
st: M5AttributeCalculated;
|
st: M5AttributeCalculated;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { log } from "console";
|
||||||
import { M5Item } from "../items/M5Item";
|
import { M5Item } from "../items/M5Item";
|
||||||
import { M5Attribute, M5CharacterCalculatedData, M5ItemMod, M5ItemType, M5ModOperation, M5ModResult, M5RollData, M5Skill, M5SkillCalculated } from "../M5Base";
|
import { M5Attribute, M5CharacterCalculatedData, M5ItemMod, M5ItemType, M5ModOperation, M5ModResult, M5RollData, M5Skill, M5SkillCalculated } from "../M5Base";
|
||||||
import M5ModAggregate from "./M5ModAggregate";
|
import M5ModAggregate from "./M5ModAggregate";
|
||||||
|
|
@ -86,6 +87,7 @@ export class M5Character extends Actor {
|
||||||
): M5CharacterCalculatedData {
|
): M5CharacterCalculatedData {
|
||||||
let ret: M5CharacterCalculatedData = {
|
let ret: M5CharacterCalculatedData = {
|
||||||
level: 0,
|
level: 0,
|
||||||
|
initiative: 0,
|
||||||
attributes: {
|
attributes: {
|
||||||
st: { value: 0, bonus: 0, mods: [] },
|
st: { value: 0, bonus: 0, mods: [] },
|
||||||
gs: { value: 0, bonus: 0, mods: [] },
|
gs: { value: 0, bonus: 0, mods: [] },
|
||||||
|
|
@ -151,8 +153,11 @@ export class M5Character extends Actor {
|
||||||
if (!data) return null;
|
if (!data) return null;
|
||||||
|
|
||||||
ret.level = M5Character.levelFromExp(data.info.race === "Zwerg" ? Math.min(data.calc.stats?.hoard * 2 || 0, data.es) : data.es);
|
ret.level = M5Character.levelFromExp(data.info.race === "Zwerg" ? Math.min(data.calc.stats?.hoard * 2 || 0, data.es) : data.es);
|
||||||
|
ret.initiative = M5Character.initiativeFromAnfuehren(data.calc.skills?.general, (game as Game).i18n.localize("midgard5.anfuehren"), data.skills.general.anfuehren.fw);
|
||||||
|
ret.unableToAct = M5Character.unableToActFromEffect(data.calc.gear?.effects);
|
||||||
|
ret.group = M5Character.groupFromDisposition(this);
|
||||||
|
ret.combatPhase = M5Character.combatPhaseFromEncounter(this);
|
||||||
|
|
||||||
//Set all values that are not dependent on another Value
|
|
||||||
ret.attributes.st.value = M5Character.attributeMinMax(data.attributes.st); // TODO item effects
|
ret.attributes.st.value = M5Character.attributeMinMax(data.attributes.st); // TODO item effects
|
||||||
ret.attributes.gs.value = M5Character.attributeMinMax(data.attributes.gs);
|
ret.attributes.gs.value = M5Character.attributeMinMax(data.attributes.gs);
|
||||||
ret.attributes.gw.value = M5Character.attributeMinMax(data.attributes.gw);
|
ret.attributes.gw.value = M5Character.attributeMinMax(data.attributes.gw);
|
||||||
|
|
@ -177,37 +182,11 @@ export class M5Character extends Actor {
|
||||||
ret.stats.ap = this.modResult(data.ap);
|
ret.stats.ap = this.modResult(data.ap);
|
||||||
ret.stats.lpProtection = this.modResult(0);
|
ret.stats.lpProtection = this.modResult(0);
|
||||||
ret.stats.apProtection = this.modResult(0);
|
ret.stats.apProtection = this.modResult(0);
|
||||||
ret.stats.movement = this.modResult(data.movement);
|
|
||||||
ret.stats.hoardMin = M5Character.levelThreshold.at(ret.level - 1) / 2;
|
|
||||||
ret.stats.hoardNext = M5Character.levelThreshold.at(ret.level) / 2;
|
|
||||||
ret.stats.wealth = parseFloat((data.info.gold + data.info.silver / 10 + data.info.copper / 100).toPrecision(10));
|
|
||||||
ret.stats.hoard = 0;
|
|
||||||
ret.stats.encumbrance = 0;
|
|
||||||
|
|
||||||
if (!skip?.mods) {
|
|
||||||
const aggregate = new M5ModAggregate(data, ret);
|
|
||||||
|
|
||||||
context.items
|
|
||||||
?.filter(
|
|
||||||
(item) =>
|
|
||||||
(item.type === "item" || item.type === "skill" || item.type === "effect" || item.type === "armor" || item.type === "container" || item.type === "class") && item.system.equipped
|
|
||||||
)
|
|
||||||
.forEach((item) => {
|
|
||||||
const mods = item.system.mods;
|
|
||||||
//console.log("Actor item mods", mods)
|
|
||||||
Object.keys(mods).forEach((modIndex) => {
|
|
||||||
const mod = mods[modIndex] as M5ItemMod;
|
|
||||||
aggregate.push(mod, item.name);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
ret.skillMods = aggregate.calculate();
|
|
||||||
}
|
|
||||||
|
|
||||||
ret.stats.defense = this.modResult(M5Character.defenseFromLevel(ret.level));
|
ret.stats.defense = this.modResult(M5Character.defenseFromLevel(ret.level));
|
||||||
ret.stats.damageBonus = this.modResult(Math.floor(ret.attributes.st.value / 20) + Math.floor(ret.attributes.gs.value / 30) - 3);
|
ret.stats.damageBonus = this.modResult(Math.floor(ret.attributes.st.value / 20) + Math.floor(ret.attributes.gs.value / 30) - 3);
|
||||||
ret.stats.attackBonus = this.modResult(ret.attributes.gs.bonus);
|
ret.stats.attackBonus = this.modResult(ret.attributes.gs.bonus);
|
||||||
ret.stats.defenseBonus = this.modResult(ret.attributes.gw.bonus);
|
ret.stats.defenseBonus = this.modResult(ret.attributes.gw.bonus);
|
||||||
|
ret.stats.movement = this.modResult(data.movement);
|
||||||
ret.stats.resistanceMind = this.modResult(ret.stats.defense.value + (data.info.race === "Mensch" ? ret.attributes.in.bonus : this.raceBonus(data.info.race)));
|
ret.stats.resistanceMind = this.modResult(ret.stats.defense.value + (data.info.race === "Mensch" ? ret.attributes.in.bonus : this.raceBonus(data.info.race)));
|
||||||
ret.stats.resistanceBody = this.modResult(ret.stats.defense.value + (data.info.race === "Mensch" ? ret.attributes.ko.bonus : this.raceBonus(data.info.race)));
|
ret.stats.resistanceBody = this.modResult(ret.stats.defense.value + (data.info.race === "Mensch" ? ret.attributes.ko.bonus : this.raceBonus(data.info.race)));
|
||||||
ret.stats.spellCasting = this.modResult((data.info.magicUsing ? M5Character.spellCastingFromLevel(ret.level) : 3) + ret.attributes.zt.bonus);
|
ret.stats.spellCasting = this.modResult((data.info.magicUsing ? M5Character.spellCastingFromLevel(ret.level) : 3) + ret.attributes.zt.bonus);
|
||||||
|
|
@ -218,10 +197,15 @@ export class M5Character extends Actor {
|
||||||
ret.stats.deprivationCold = this.modResult(Math.floor(ret.attributes.ko.value / 2));
|
ret.stats.deprivationCold = this.modResult(Math.floor(ret.attributes.ko.value / 2));
|
||||||
ret.stats.deprivationHeat = this.modResult(Math.floor(ret.attributes.ko.value / 2));
|
ret.stats.deprivationHeat = this.modResult(Math.floor(ret.attributes.ko.value / 2));
|
||||||
ret.stats.deprivationFood = this.modResult(Math.floor(40 + ret.attributes.ko.value / 2));
|
ret.stats.deprivationFood = this.modResult(Math.floor(40 + ret.attributes.ko.value / 2));
|
||||||
|
ret.stats.hoardMin = M5Character.levelThreshold.at(ret.level - 1) / 2;
|
||||||
|
ret.stats.hoardNext = M5Character.levelThreshold.at(ret.level) / 2;
|
||||||
|
ret.stats.wealth = parseFloat((data.info.gold + data.info.silver / 10 + data.info.copper / 100).toPrecision(3));
|
||||||
|
ret.stats.hoard = 0;
|
||||||
ret.stats.load = M5Character.loadValue(data.attributes.st);
|
ret.stats.load = M5Character.loadValue(data.attributes.st);
|
||||||
ret.stats.heavyLoad = M5Character.heavyLoadValue(data.attributes.st);
|
ret.stats.heavyLoad = M5Character.heavyLoadValue(data.attributes.st);
|
||||||
ret.stats.loadMax = M5Character.maxLoadValue(data.attributes.st);
|
ret.stats.loadMax = M5Character.maxLoadValue(data.attributes.st);
|
||||||
ret.stats.thrustLoad = M5Character.thrustLoadValue(data.attributes.st);
|
ret.stats.thrustLoad = M5Character.thrustLoadValue(data.attributes.st);
|
||||||
|
ret.stats.encumbrance = 0;
|
||||||
|
|
||||||
if (!skip?.mods) {
|
if (!skip?.mods) {
|
||||||
const aggregate = new M5ModAggregate(data, ret);
|
const aggregate = new M5ModAggregate(data, ret);
|
||||||
|
|
@ -516,6 +500,7 @@ export class M5Character extends Actor {
|
||||||
magic: item.system.magic,
|
magic: item.system.magic,
|
||||||
calc: item.system.calc,
|
calc: item.system.calc,
|
||||||
equipped: item.system?.equipped || false,
|
equipped: item.system?.equipped || false,
|
||||||
|
unablesToAct: item.system?.unablesToAct || false,
|
||||||
duration: item.system?.duration || { time: 0, unit: "" },
|
duration: item.system?.duration || { time: 0, unit: "" },
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
@ -626,6 +611,55 @@ export class M5Character extends Actor {
|
||||||
return ret === -1 ? M5Character.levelThreshold.length : ret;
|
return ret === -1 ? M5Character.levelThreshold.length : ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static initiativeFromAnfuehren(list: object, anfuehren: string, unlearned: number): number {
|
||||||
|
for (const element in list) {
|
||||||
|
if (list[element].label.toLowerCase() === anfuehren.toLowerCase()) {
|
||||||
|
return list[element].calc.ew;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return unlearned;
|
||||||
|
}
|
||||||
|
|
||||||
|
static unableToActFromEffect(list: object): { effectId: string; enabled: boolean; rounds: number; reason: string } {
|
||||||
|
console.log("Effects:", list);
|
||||||
|
for (const element in list) {
|
||||||
|
if (list[element].unablesToAct) {
|
||||||
|
return {
|
||||||
|
effectId: list[element],
|
||||||
|
enabled: list[element].equipped,
|
||||||
|
rounds: list[element].duration.time,
|
||||||
|
reason: list[element].label,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return { effectId: "", enabled: false, rounds: 0, reason: "" };
|
||||||
|
}
|
||||||
|
|
||||||
|
static groupFromDisposition(actor: any): string {
|
||||||
|
// console.log("Group:", actor);
|
||||||
|
let disposition:number = 0;
|
||||||
|
if (actor.isToken) {
|
||||||
|
disposition = actor.token.disposition;
|
||||||
|
} else {
|
||||||
|
disposition = actor.prototypeToken.disposition;
|
||||||
|
}
|
||||||
|
switch ( disposition ) {
|
||||||
|
case 1: return "Spieler";
|
||||||
|
case -1: return "Gegner";
|
||||||
|
case 0: return "Gegner 2";
|
||||||
|
case 2: return "Gegner 3";
|
||||||
|
default: return "Unbekannt";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static combatPhaseFromEncounter(actor: any): any {
|
||||||
|
if (actor.inCombat) {
|
||||||
|
let combatPhase = (game as Game).combat.getFlag('world', 'combatPhase');
|
||||||
|
return combatPhase ? combatPhase : -1;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static readonly defenseThreshold: Array<[number, number]> = [
|
static readonly defenseThreshold: Array<[number, number]> = [
|
||||||
[30, 18],
|
[30, 18],
|
||||||
[25, 17],
|
[25, 17],
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,7 @@ export class M5Roll {
|
||||||
public _total: number = 0;
|
public _total: number = 0;
|
||||||
public pool: PoolTerm = null;
|
public pool: PoolTerm = null;
|
||||||
|
|
||||||
constructor(
|
constructor(public data: M5RollData, public actor: any, public label: string, public id?: string) {
|
||||||
public data: M5RollData,
|
|
||||||
public actor: any,
|
|
||||||
public label: string,
|
|
||||||
public id?: string
|
|
||||||
) {
|
|
||||||
//super(null)
|
//super(null)
|
||||||
//this.data = rollData
|
//this.data = rollData
|
||||||
}
|
}
|
||||||
|
|
@ -31,7 +26,7 @@ export class M5Roll {
|
||||||
.map((rollName, index) => {
|
.map((rollName, index) => {
|
||||||
indexMap.set(index, rollName);
|
indexMap.set(index, rollName);
|
||||||
const formula = this.data.rolls[rollName];
|
const formula = this.data.rolls[rollName];
|
||||||
formula.formula = index === 0 && this.id !== "-1" ? formula.formula + `+ ${this.data.b.modifier}` : formula.formula;
|
formula.formula = index === 0 && this.id !== "-1" ? formula.formula.replace(/(\d*d\d*)/, `{$1 + ${this.data.b.modifier}}`) : formula.formula;
|
||||||
const roll = new Roll(formula.formula, this.data);
|
const roll = new Roll(formula.formula, this.data);
|
||||||
return roll;
|
return roll;
|
||||||
});
|
});
|
||||||
|
|
@ -95,7 +90,6 @@ export class M5Roll {
|
||||||
this.data.res.label = this.label;
|
this.data.res.label = this.label;
|
||||||
if ((game as Game).settings.get("midgard5", "automatedPP") && this.data.iType !== null) {
|
if ((game as Game).settings.get("midgard5", "automatedPP") && this.data.iType !== null) {
|
||||||
if ((this.data.i.type === "language" || this.data.i.type === "general") && this.data.rolls[0].dice[0] >= 16) {
|
if ((this.data.i.type === "language" || this.data.i.type === "general") && this.data.rolls[0].dice[0] >= 16) {
|
||||||
ui.notifications.notify(`Praxispunkt eingetragen für ${this.actor.items.get(this.id).name}`);
|
|
||||||
this.actor.items.get(this.id).update({
|
this.actor.items.get(this.id).update({
|
||||||
system: {
|
system: {
|
||||||
pp: this.data.i.pp + 1,
|
pp: this.data.i.pp + 1,
|
||||||
|
|
@ -103,7 +97,6 @@ export class M5Roll {
|
||||||
});
|
});
|
||||||
} else if (this.data.rolls[0].dice[0] === 20) {
|
} else if (this.data.rolls[0].dice[0] === 20) {
|
||||||
if (this.data.i.type === "combat") {
|
if (this.data.i.type === "combat") {
|
||||||
ui.notifications.notify(`Praxispunkt eingetragen für ${this.actor.items.get(this.id).name}`);
|
|
||||||
// Rolling through skill
|
// Rolling through skill
|
||||||
this.actor.items.get(this.id).update({
|
this.actor.items.get(this.id).update({
|
||||||
system: {
|
system: {
|
||||||
|
|
@ -111,7 +104,6 @@ export class M5Roll {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else if (this.data.iType === "weapon") {
|
} else if (this.data.iType === "weapon") {
|
||||||
ui.notifications.notify(`Praxispunkt eingetragen für ${this.actor.items.get(this.id).name}`);
|
|
||||||
// Rolling through Weapon Item
|
// Rolling through Weapon Item
|
||||||
const skill = this.actor.items.get(this.data.i.skillId);
|
const skill = this.actor.items.get(this.data.i.skillId);
|
||||||
skill.update({
|
skill.update({
|
||||||
|
|
@ -120,7 +112,6 @@ export class M5Roll {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else if (this.data.iType === "defensiveWeapon") {
|
} else if (this.data.iType === "defensiveWeapon") {
|
||||||
ui.notifications.notify(`Praxispunkt eingetragen für ${this.actor.items.get(this.id).name}`);
|
|
||||||
// Rolling through defensiveWeapon Item
|
// Rolling through defensiveWeapon Item
|
||||||
const skill = this.actor.items.get(this.data.i.skillId);
|
const skill = this.actor.items.get(this.data.i.skillId);
|
||||||
skill.update({
|
skill.update({
|
||||||
|
|
@ -129,7 +120,6 @@ export class M5Roll {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else if (this.data.iType === "spell") {
|
} else if (this.data.iType === "spell") {
|
||||||
ui.notifications.notify(`Praxispunkt eingetragen für ${this.data.i.process}`);
|
|
||||||
// Rolling through Spell Item
|
// Rolling through Spell Item
|
||||||
const klasse = this.actor.items.find((x) => x.type === "class" && x.system.equipped);
|
const klasse = this.actor.items.find((x) => x.type === "class" && x.system.equipped);
|
||||||
klasse.update({
|
klasse.update({
|
||||||
|
|
@ -155,14 +145,14 @@ export class M5Roll {
|
||||||
async toMessage(toggleAutomatedRoll = false) {
|
async toMessage(toggleAutomatedRoll = false) {
|
||||||
let automatedRoll = (game as Game).settings.get("midgard5", "automatedRoll");
|
let automatedRoll = (game as Game).settings.get("midgard5", "automatedRoll");
|
||||||
automatedRoll = toggleAutomatedRoll ? !automatedRoll : automatedRoll;
|
automatedRoll = toggleAutomatedRoll ? !automatedRoll : automatedRoll;
|
||||||
let rMode = (game as Game).settings.get("core", "rollMode");
|
const rMode = (game as Game).settings.get("core", "rollMode");
|
||||||
|
|
||||||
if (!automatedRoll) {
|
if (!automatedRoll) {
|
||||||
let checkOptions = await this.popUp({ isPW: this.data.rolls[0].label === (game as Game).i18n.localize("midgard5.pw") });
|
let checkOptions = await this.popUp({ isPW: this.data.rolls[0].label === (game as Game).i18n.localize("midgard5.pw") });
|
||||||
if (checkOptions["cancelled"]) {
|
if (checkOptions["cancelled"]) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
rMode = checkOptions["rollMode"];
|
const rMode = checkOptions["rollMode"];
|
||||||
this.data.b = checkOptions;
|
this.data.b = checkOptions;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -222,7 +212,7 @@ export class M5Roll {
|
||||||
rollData.rolls["0"] = {
|
rollData.rolls["0"] = {
|
||||||
formula: "1d20 + @i.fw + @i.bonus",
|
formula: "1d20 + @i.fw + @i.bonus",
|
||||||
enabled: true,
|
enabled: true,
|
||||||
label: (game as Game).i18n.localize("midgard5.ew"),
|
label: (game as Game).i18n.localize("midgard5.pw"),
|
||||||
result: "",
|
result: "",
|
||||||
total: 0,
|
total: 0,
|
||||||
totalStr: "",
|
totalStr: "",
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
.midgard5 {
|
.midgard5 {
|
||||||
.flexbox {
|
.flexbox {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
align-items: stretch;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
@ -17,26 +18,31 @@
|
||||||
.flexcolumn-1 {
|
.flexcolumn-1 {
|
||||||
flex-basis: 100%;
|
flex-basis: 100%;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flexcolumn-2 {
|
.flexcolumn-2 {
|
||||||
flex-basis: 50%;
|
flex-basis: 50%;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flexcolumn-3 {
|
.flexcolumn-3 {
|
||||||
flex-basis: 33%;
|
flex-basis: 33%;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flexcolumn-4 {
|
.flexcolumn-4 {
|
||||||
flex-basis: 25%;
|
flex-basis: 25%;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flexcolumn-5 {
|
.flexcolumn-5 {
|
||||||
flex-basis: 20%;
|
flex-basis: 20%;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flexpart {
|
.flexpart {
|
||||||
|
|
@ -63,7 +69,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.flexrow {
|
.flexrow {
|
||||||
align-items: center;
|
flex-direction: row;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
|
|
@ -79,6 +85,11 @@
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.fixed-value {
|
||||||
|
width: 3rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.profile-img {
|
.profile-img {
|
||||||
display: block;
|
display: block;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
"name": "midgard5",
|
"name": "midgard5",
|
||||||
"title": "Midgard 5. Edition",
|
"title": "Midgard 5. Edition",
|
||||||
"description": "The German RPG Midgard 5. Edition",
|
"description": "The German RPG Midgard 5. Edition",
|
||||||
"version": "2.7.2",
|
"version": "2.6.0",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "10",
|
"minimum": "10",
|
||||||
"verified": "11",
|
"verified": "11",
|
||||||
|
|
|
||||||
|
|
@ -23,13 +23,16 @@
|
||||||
"origin": "",
|
"origin": "",
|
||||||
"faith": "",
|
"faith": "",
|
||||||
"level": 1,
|
"level": 1,
|
||||||
|
"leader": false,
|
||||||
"gold": 0,
|
"gold": 0,
|
||||||
"silver": 0,
|
"silver": 0,
|
||||||
"copper": 0,
|
"copper": 0
|
||||||
"showAllItems": false,
|
|
||||||
"showUnlearned": false
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"settings": {
|
||||||
|
"showAllItems": false,
|
||||||
|
"showUnlearned": false
|
||||||
|
},
|
||||||
"characterBars": {
|
"characterBars": {
|
||||||
"lp": {
|
"lp": {
|
||||||
"value": 15,
|
"value": 15,
|
||||||
|
|
@ -81,10 +84,6 @@
|
||||||
"bergreiten": { "fw": 0, "attribute": "gw", "initial": 12, "pp": 0 },
|
"bergreiten": { "fw": 0, "attribute": "gw", "initial": 12, "pp": 0 },
|
||||||
"betaeuben": { "fw": 6, "attribute": "gs", "initial": 8, "pp": 0 },
|
"betaeuben": { "fw": 6, "attribute": "gs", "initial": 8, "pp": 0 },
|
||||||
"betaeubungsgriff": { "fw": 0, "attribute": "in", "initial": 8, "pp": 0 },
|
"betaeubungsgriff": { "fw": 0, "attribute": "in", "initial": 8, "pp": 0 },
|
||||||
"bildendeKuensteA": { "fw": 0, "attribute": "gs", "initial": 12, "pp": 0 },
|
|
||||||
"bildendeKuensteB": { "fw": 0, "attribute": "gs", "initial": 12, "pp": 0 },
|
|
||||||
"bildendeKuensteG": { "fw": 0, "attribute": "gs", "initial": 12, "pp": 0 },
|
|
||||||
"bildendeKuensteM": { "fw": 0, "attribute": "gs", "initial": 12, "pp": 0 },
|
|
||||||
"bootfahren": { "fw": 3, "attribute": "gs", "initial": 8, "pp": 0 },
|
"bootfahren": { "fw": 3, "attribute": "gs", "initial": 8, "pp": 0 },
|
||||||
"dickhaeuterLenken": { "fw": 0, "attribute": "gs", "initial": 8, "pp": 0 },
|
"dickhaeuterLenken": { "fw": 0, "attribute": "gs", "initial": 8, "pp": 0 },
|
||||||
"ersteHilfe": { "fw": 0, "attribute": "gs", "initial": 8, "pp": 0 },
|
"ersteHilfe": { "fw": 0, "attribute": "gs", "initial": 8, "pp": 0 },
|
||||||
|
|
@ -167,11 +166,11 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"character": {
|
"character": {
|
||||||
"templates": ["characterBars", "attributes", "characterDescription", "characterHeader", "skills", "gear"],
|
"templates": ["characterBars", "settings", "attributes", "characterDescription", "characterHeader", "skills", "gear"],
|
||||||
"calc": {}
|
"calc": {}
|
||||||
},
|
},
|
||||||
"npc": {
|
"npc": {
|
||||||
"templates": ["characterBars", "attributes", "characterDescription", "skills", "gear"],
|
"templates": ["characterBars", "settings", "attributes", "characterDescription", "skills", "gear"],
|
||||||
"calc": {}
|
"calc": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -378,6 +377,7 @@
|
||||||
},
|
},
|
||||||
"effect": {
|
"effect": {
|
||||||
"templates": ["itemDescription", "equippable", "physical", "durationSelection"],
|
"templates": ["itemDescription", "equippable", "physical", "durationSelection"],
|
||||||
|
"unablesToAct": false,
|
||||||
"rolls": {
|
"rolls": {
|
||||||
"formulas": {},
|
"formulas": {},
|
||||||
"output": ""
|
"output": ""
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
<td>{{localize "midgard5.grace"}}</td>
|
<td>{{localize "midgard5.grace"}}</td>
|
||||||
<td><input name="data.gg" type="text" value="{{data.gg}}" data-dtype="Number" /></td>
|
<td><input name="data.gg" type="text" value="{{data.gg}}" data-dtype="Number" /></td>
|
||||||
<td>{{localize "midgard5.exp-overall"}}</td>
|
<td>{{localize "midgard5.exp-overall"}}</td>
|
||||||
<td width="40%"><input name="data.es" type="text" value="{{data.es}}" data-dtype="Number" /></td>
|
<td><input name="data.es" type="text" value="{{data.es}}" data-dtype="Number" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{localize "midgard5.destiny"}}</td>
|
<td>{{localize "midgard5.destiny"}}</td>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,140 @@
|
||||||
<div class="flexbox">
|
<h3>{{localize "midgard5.combatPhases"}}</h3>
|
||||||
|
<div class="flexbox flexpart">
|
||||||
|
<div class="flexcolumn-2 flexpart" style="flex: 1 1 200px;">
|
||||||
|
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.initiative"}}</div>
|
||||||
|
<br>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div style="font-weight: 800;">{{localize "midgard5.group"}}:</div>
|
||||||
|
<div class="fixed-value" style="font-weight: 800;">{{data.calc.group}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div style="font-weight: 800;">{{localize "midgard5.anfuehren"}}:</div>
|
||||||
|
<div class="fixed-value" style="font-weight: 800;">{{data.calc.initiative}}</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
{{#if data.calc.unableToAct.enabled}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<div>{{localize "midgard5.unableToAct"}}</div>
|
||||||
|
<div class="fixed-value;"><input type="checkbox" name="data.calc.unableToAct.enabled" {{checked data.calc.unableToAct.enabled}} disabled="disabled"></div>
|
||||||
|
<div class="fixed-value"><button class="roll-button roll-unableToAct-button"></button></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
|
||||||
|
<div>{{localize "midgard5.time-round"}}</div>
|
||||||
|
<div class="fixed-value"><input type="number" name="data.calc.unableToAct.roundsRemaining" value="{{data.calc.unableToAct.roundsRemaining}}"></div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{#unless data.calc.unableToAct.enabled}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<div>{{localize "midgard5.leader"}}</div>
|
||||||
|
<div class="fixed-value;"><input type="checkbox" name="data.info.leader" {{checked data.info.leader}}></div>
|
||||||
|
</div>
|
||||||
|
{{#if data.info.leader}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<button class="wide-button rollInitiative">{{localize "midgard5.initiativeRoll"}}</button>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/unless}}
|
||||||
|
|
||||||
|
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.phase-movement"}}</div>
|
||||||
|
<br>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div style="font-weight: 800;">{{localize "midgard5.movementRange"}}:</div>
|
||||||
|
<div class="fixed-value" style="font-weight: 800;">{{data.calc.stats.movement.value}}</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="tM1">{{localize "midgard5.movedThisTurn"}}: max. 1m</label></div>
|
||||||
|
<div><input type="radio" id="tM1" name="gwModificator" value="1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="tM2">{{localize "midgard5.movedThisTurn"}}: max.B/2m</label></div>
|
||||||
|
<div><input type="radio" id="tM2" name="gwModificator" value="0.5"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="tM3">{{localize "midgard5.movedThisTurn"}}: max. {{data.calc.stats.movement.value}}m</label></div>
|
||||||
|
<div><input type="radio" id="tm3" name="gwModificator" value="0"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="tM4">Eigener GW Multiplikator</label></div>
|
||||||
|
<div><input type="radio" id="tm4" name="dedicatedgwModificator" value="1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div> <label for="tM5">GW Multiplikator:</label></div>
|
||||||
|
<div class="fixed-value;"><input type="float" id="tm5" name="gwModificator" value="0" ></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<button class="wide-button continueToAction">{{localize "midgard5.continue"}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexcolumn-2 flexpart" style="flex: 1 1 200px;">
|
||||||
|
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.phase-action"}}</div>
|
||||||
|
<br>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div style="font-weight: 800;">{{localize "midgard5.actionrank"}} :</div>
|
||||||
|
<div class="fixed-value" style="font-weight: 800;">{{data.calc.attributes.gw.value}}</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="a1">{{localize "midgard5.actionThisTurn"}}: 10s</label></div>
|
||||||
|
<div><input type="radio" id="a1" name="gwModificator" value="1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="a2">{{localize "midgard5.actionThisTurn"}}: 5s</label></div>
|
||||||
|
<div><input type="radio" id="a2" name="gwModificator" value="0.5"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="a3">{{localize "midgard5.actionThisTurn"}}: 1s</label></div>
|
||||||
|
<div><input type="radio" id="a3" name="gwModificator" value="0"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="a4">Manuelle Eingabe</label></div>
|
||||||
|
<div><input type="radio" id="a4" name="dedicatedgwModificator" value="1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div> <label for="a5">{{localize "midgard5.actionrank"}}:</label></div>
|
||||||
|
<div class="fixed-value;"><input type="float" id="a5" name="midgard5.actionThisTurn" value="0" ></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<button class="wide-button endTurn">{{localize "midgard5.endTurn"}}</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.phase-action"}}</div>
|
||||||
|
<br>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div style="font-weight: 800;">{{localize "midgard5.actionrank"}} :</div>
|
||||||
|
<div class="fixed-value" style="font-weight: 800;">{{data.calc.attributes.gw.value}}</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="a1">{{localize "midgard5.actionThisTurn"}}: 10s</label></div>
|
||||||
|
<div><input type="radio" id="a1" name="gwModificator" value="1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="a2">{{localize "midgard5.actionThisTurn"}}: 5s</label></div>
|
||||||
|
<div><input type="radio" id="a2" name="gwModificator" value="0.5"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="a3">{{localize "midgard5.actionThisTurn"}}: 1s</label></div>
|
||||||
|
<div><input type="radio" id="a3" name="gwModificator" value="0"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div><label for="a4">Manuelle Eingabe</label></div>
|
||||||
|
<div><input type="radio" id="a4" name="dedicatedgwModificator" value="1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div> <label for="a5">{{localize "midgard5.actionrank"}}:</label></div>
|
||||||
|
<div class="fixed-value;"><input type="float" id="a5" name="midgard5.actionThisTurn" value="0" ></div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<button class="wide-button endTurn">{{localize "midgard5.endTurn"}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3>{{localize "midgard5.combat"}}</h3>
|
||||||
|
<div class="flexbox">
|
||||||
<div class="flexcolumn-2">
|
<div class="flexcolumn-2">
|
||||||
<div class="flexpart">
|
<div class="flexpart">
|
||||||
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.calculated-values"}}</div>
|
<div class="flexpart-header"><img src="icons/magic/time/arrows-circling-pink.webp" class="flexpart-icon">{{localize "midgard5.calculated-values"}}</div>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
|
<th class="title"><img src="/icons/svg/eye.svg" class="table-icon"></th>
|
||||||
<th class="title">{{localize "TYPES.Item.effect"}}</th>
|
<th class="title">{{localize "TYPES.Item.effect"}}</th>
|
||||||
<td><a class="title add-effect"><i class="fa-regular fa-plus"></i></a></th>
|
<th><a class="title add-effect"><i class="fa-regular fa-plus"></i></a></th>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
|
||||||
|
|
@ -217,8 +217,8 @@
|
||||||
|
|
||||||
<h3>
|
<h3>
|
||||||
{{localize "midgard5.allItems"}}
|
{{localize "midgard5.allItems"}}
|
||||||
<input id="data.info.showAllItems" class="checkbox" type="checkbox" name="data.info.showAllItems" {{checked data.info.showAllItems}} style="float: right;">
|
<input id="data.settings.showAllItems" class="checkbox" type="checkbox" name="data.settings.showAllItems" {{checked data.settings.showAllItems}} style="float: right;">
|
||||||
<label for="data.info.showAllItems" style="font-size: small; font-weight: normal; font-style: italic; float: right;">{{localize "midgard5.showAll"}} </label>
|
<label for="data.settings.showAllItems" style="font-size: small; font-weight: normal; font-style: italic; float: right;">{{localize "midgard5.showAll"}} </label>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="flexbox">
|
<div class="flexbox">
|
||||||
<div class="flexcolumn-2">
|
<div class="flexcolumn-2">
|
||||||
|
|
@ -295,7 +295,7 @@
|
||||||
<tbody class="items-list">
|
<tbody class="items-list">
|
||||||
<tr height = 10px></tr>
|
<tr height = 10px></tr>
|
||||||
{{#each data.calc.gear.items as |item itemId|}}
|
{{#each data.calc.gear.items as |item itemId|}}
|
||||||
{{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
|
{{#if (or ../data.settings.showAllItems (eq item.containerId ""))}}
|
||||||
<tr data-item-id="{{itemId}}" class="item">
|
<tr data-item-id="{{itemId}}" class="item">
|
||||||
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
|
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
|
||||||
<td class="padding">
|
<td class="padding">
|
||||||
|
|
@ -351,7 +351,7 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="items-list">
|
<tbody class="items-list">
|
||||||
{{#each data.calc.gear.weapons as |item itemId|}}
|
{{#each data.calc.gear.weapons as |item itemId|}}
|
||||||
{{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
|
{{#if (or ../data.settings.showAllItems (eq item.containerId ""))}}
|
||||||
<tr data-item-id="{{itemId}}" class="item">
|
<tr data-item-id="{{itemId}}" class="item">
|
||||||
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
|
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
|
||||||
<td class="padding edit-item">{{item.label}}</td>
|
<td class="padding edit-item">{{item.label}}</td>
|
||||||
|
|
@ -397,7 +397,7 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="items-list">
|
<tbody class="items-list">
|
||||||
{{#each data.calc.gear.defensiveWeapons as |item itemId|}}
|
{{#each data.calc.gear.defensiveWeapons as |item itemId|}}
|
||||||
{{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
|
{{#if (or ../data.settings.showAllItems (eq item.containerId ""))}}
|
||||||
<tr data-item-id="{{itemId}}" class="item">
|
<tr data-item-id="{{itemId}}" class="item">
|
||||||
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
|
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
|
||||||
<td class="padding edit-item">{{item.label}}</td>
|
<td class="padding edit-item">{{item.label}}</td>
|
||||||
|
|
@ -443,7 +443,7 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="items-list">
|
<tbody class="items-list">
|
||||||
{{#each data.calc.gear.armor as |item itemId|}}
|
{{#each data.calc.gear.armor as |item itemId|}}
|
||||||
{{#if (or ../data.info.showAllItems (eq item.containerId ""))}}
|
{{#if (or ../data.settings.showAllItems (eq item.containerId ""))}}
|
||||||
<tr data-item-id="{{itemId}}" class="item">
|
<tr data-item-id="{{itemId}}" class="item">
|
||||||
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
|
<td class="flexpart-img"><img src={{item.icon}} class="flexpart-icon"></td>
|
||||||
<td class="padding edit-item">{{item.label}}</td>
|
<td class="padding edit-item">{{item.label}}</td>
|
||||||
|
|
|
||||||
|
|
@ -142,8 +142,6 @@
|
||||||
|
|
||||||
<div class="flexpart">
|
<div class="flexpart">
|
||||||
<div class="flexpart-header"><img src="icons/sundries/gaming/dice-pair-white-green.webp" class="flexpart-icon">{{localize "midgard5.unlearned-skills"}}</div>
|
<div class="flexpart-header"><img src="icons/sundries/gaming/dice-pair-white-green.webp" class="flexpart-icon">{{localize "midgard5.unlearned-skills"}}</div>
|
||||||
<input id="data.info.showUnlearned" class="checkbox" type="checkbox" name="data.info.showUnlearned" {{checked data.info.showUnlearned}} style="float: right;">
|
|
||||||
<label for="data.info.showUnlearned" style="font-size: small; font-weight: normal; font-style: italic; float: right;">{{localize "midgard5.showUnlearned"}} </label>
|
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -156,7 +154,6 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{#unless (not data.info.showUnlearned)}}
|
|
||||||
{{#each data.skills.general as |skill key|}}
|
{{#each data.skills.general as |skill key|}}
|
||||||
{{#unless (isSkillInList (localizeMidgard key) ../actor.system.calc.skills.general) }}
|
{{#unless (isSkillInList (localizeMidgard key) ../actor.system.calc.skills.general) }}
|
||||||
<tr data-skill="{{key}}">
|
<tr data-skill="{{key}}">
|
||||||
|
|
@ -169,7 +166,6 @@
|
||||||
</tr>
|
</tr>
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{/unless}}
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{#if (eq data.types.actor)}}
|
||||||
<div class="flexcolumn-1">
|
<div class="flexcolumn-1">
|
||||||
<div class="flexpart">
|
<div class="flexpart">
|
||||||
<div class="flexpart-header">{{localize "midgard5.pp"}} {{localize "midgard5.spells"}}</div>
|
<div class="flexpart-header">{{localize "midgard5.pp"}} {{localize "midgard5.spells"}}</div>
|
||||||
|
|
@ -87,7 +88,6 @@
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
|
|
||||||
{{#each data.lernKostenZauber as |group name|}}
|
{{#each data.lernKostenZauber as |group name|}}
|
||||||
{{#unless (eq group.kosten 0)}}
|
|
||||||
<span data-pp-name="{{name}}" class="pp-listing">
|
<span data-pp-name="{{name}}" class="pp-listing">
|
||||||
<label for="data.lernKostenZauber.{{name}}">{{localize (m5concat "midgard5.spell-process-" name)}}</label>
|
<label for="data.lernKostenZauber.{{name}}">{{localize (m5concat "midgard5.spell-process-" name)}}</label>
|
||||||
<span >
|
<span >
|
||||||
|
|
@ -96,7 +96,6 @@
|
||||||
<i class="fa fa-plus-circle pp-increase" style="cursor: pointer"></i>
|
<i class="fa fa-plus-circle pp-increase" style="cursor: pointer"></i>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
{{/unless}}
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|
@ -105,4 +104,5 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,11 @@
|
||||||
<input id="data.magic" type="checkbox" name="data.magic" {{checked data.magic}}>
|
<input id="data.magic" type="checkbox" name="data.magic" {{checked data.magic}}>
|
||||||
<label for="data.magic">{{localize "midgard5.magic"}}</label>
|
<label for="data.magic">{{localize "midgard5.magic"}}</label>
|
||||||
</span>
|
</span>
|
||||||
|
<span>
|
||||||
|
<input id="data.unablesToAct" type="checkbox" name="data.unablesToAct" {{checked data.unablesToAct}}>
|
||||||
|
<label for="data.unablesToAct">{{localize "midgard5.unablesToAct"}}</label>
|
||||||
|
</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
||||||
|
|
@ -34,16 +34,16 @@
|
||||||
|
|
||||||
<table style="width: 100%;">
|
<table style="width: 100%;">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="attribute-value roll-attribute-button" data-attribute="st" data-value="{{data.calc.attributes.st.value}}">{{data.calc.attributes.st.value}}</td>
|
<td class="attribute-value roll-attribute-button" data-attribute="st" data-value="{{data.attributes.st.value}}">{{data.attributes.st.value}}</td>
|
||||||
<td class="attribute-value roll-attribute-button" data-attribute="gs" data-value="{{data.calc.attributes.gs.value}}">{{data.calc.attributes.gs.value}}</td>
|
<td class="attribute-value roll-attribute-button" data-attribute="gs" data-value="{{data.attributes.gs.value}}">{{data.attributes.gs.value}}</td>
|
||||||
<td class="attribute-value roll-attribute-button" data-attribute="gw" data-value="{{data.calc.attributes.gw.value}}">{{data.calc.attributes.gw.value}}</td>
|
<td class="attribute-value roll-attribute-button" data-attribute="gw" data-value="{{data.attributes.gw.value}}">{{data.attributes.gw.value}}</td>
|
||||||
<td class="attribute-value roll-attribute-button" data-attribute="ko" data-value="{{data.calc.attributes.ko.value}}">{{data.calc.attributes.ko.value}}</td>
|
<td class="attribute-value roll-attribute-button" data-attribute="ko" data-value="{{data.attributes.ko.value}}">{{data.attributes.ko.value}}</td>
|
||||||
<td class="attribute-value roll-attribute-button" data-attribute="in" data-value="{{data.calc.attributes.in.value}}">{{data.calc.attributes.in.value}}</td>
|
<td class="attribute-value roll-attribute-button" data-attribute="in" data-value="{{data.attributes.in.value}}">{{data.attributes.in.value}}</td>
|
||||||
<td class="attribute-value roll-attribute-button" data-attribute="zt" data-value="{{data.calc.attributes.zt.value}}">{{data.calc.attributes.zt.value}}</td>
|
<td class="attribute-value roll-attribute-button" data-attribute="zt" data-value="{{data.attributes.zt.value}}">{{data.attributes.zt.value}}</td>
|
||||||
<td class="attribute-value roll-attribute-button" data-attribute="au" data-value="{{data.calc.attributes.au.value}}">{{data.calc.attributes.au.value}}</td>
|
<td class="attribute-value roll-attribute-button" data-attribute="au" data-value="{{data.attributes.au.value}}">{{data.attributes.au.value}}</td>
|
||||||
<td class="attribute-value roll-attribute-button" data-attribute="pa" data-value="{{data.calc.attributes.pa.value}}">{{data.calc.attributes.pa.value}}</td>
|
<td class="attribute-value roll-attribute-button" data-attribute="pa" data-value="{{data.attributes.pa.value}}">{{data.attributes.pa.value}}</td>
|
||||||
<td class="attribute-value roll-attribute-button" data-attribute="wk" data-value="{{data.calc.attributes.wk.value}}">{{data.calc.attributes.wk.value}}</td>
|
<td class="attribute-value roll-attribute-button" data-attribute="wk" data-value="{{data.attributes.wk.value}}">{{data.attributes.wk.value}}</td>
|
||||||
<td class="attribute-value roll-attribute-button" data-attribute="git" data-value="{{data.calc.stats.poisonResistance.value}}">{{data.calc.stats.poisonResistance.value}}</td>
|
<td class="attribute-value roll-attribute-button" data-attribute="git" data-value="{{data.attributes.git.value}}">{{data.attributes.git.value}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="attribute">{{localize "midgard5.actor-st"}}</td>
|
<td class="attribute">{{localize "midgard5.actor-st"}}</td>
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="git" attribute=data.attributes.git}}
|
{{> "systems/midgard5/templates/sheets/npc/attribute.hbs" attributeId="git" attribute=data.attributes.git}}
|
||||||
<div class="sheet-npc">
|
<div class="sheet-npc">
|
||||||
<div class="attribute-header">{{localize "midgard5.movementRange"}}</div>
|
<div class="attribute-header">{{localize "midgard5.movementRange"}}</div>
|
||||||
<div class="attribute-value"><input name="data.movement" type="text" value="{{data.movement}}" data-dtype="Number" /></div>
|
<div class="attribute-value"><input name="data.movement" type="text" value="{{data.calc.stats.movement.mods.0.value}}" data-dtype="Number" /></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sheet-npc">
|
<div class="sheet-npc">
|
||||||
<div class="attribute-header">{{localize "midgard5.exp-overall"}}</div>
|
<div class="attribute-header">{{localize "midgard5.exp-overall"}}</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue