This commit is contained in:
Byroks 2023-11-28 16:50:05 +01:00
parent abcd9d6049
commit 6ba2d7cec0
10 changed files with 142 additions and 61 deletions

View File

@ -240,6 +240,35 @@
"midgard5.spell-effectDuration": "Wirkungsdauer",
"midgard5.spell-origin": "Ursprung",
"midgard5.kampfkunst-type": "Kampfkunst Art",
"midgard5.kampfkunst-variante": "Kampfkunst Variante",
"midgard5.kido-type": "Kido Art",
"midgard5.kido-variante": "Kido Variante",
"midgard5.kampfkunst-type-angriff": "Angriffstechnik",
"midgard5.kampfkunst-type-verteidigung": "Verteidigungstechnik",
"midgard5.kampfkunst-type-finten": "Finten",
"midgard5.kampfkunst-type-geist": "Geistestechnik",
"midgard5.kampfkunst-type-schießkunst": "Schießkunst",
"midgard5.kampfkunst-type-fechten": "Fechtkunst",
"midgard5.kido-type-angriff": "Kido Angriffstechnik",
"midgard5.kido-type-verteidigung": "Kido Verteidigungstechnik",
"midgard5.kido-type-finten": "Kido Finten",
"midgard5.kido-type-leib": "Kido Leibestechnik",
"midgard5.kampfkunst-variante-anstuermen": "Anstürmen",
"midgard5.kampfkunst-variante-attackieren": "Attackieren",
"midgard5.kampfkunst-variante-entwaffnen": "Entwaffnen",
"midgard5.kido-variante-anspringen": "Anspringen",
"midgard5.kido-variante-attackieren": "Attackieren",
"midgard5.kido-variante-entwaffnen": "Entwaffnen",
"midgard5.kido-variante-werfen": "Werfen",
"midgard5.kido-variante-ausweichen": "Ausweichen",
"midgard5.kido-variante-blockieren": "Blockieren",
"midgard5.kido-variante-bewegen": "Bewegen",
"midgard5.kido-variante-kontrollieren": "Kontrollieren",
"midgard5.mod-operation-add100": "Addieren (max 100)",
"midgard5.mod-operation-add": "Addieren",
"midgard5.mod-operation-set": "Basiswert",

View File

@ -1,5 +1,5 @@
{
"name": "Kampfkünste",
"name": "Kampfkunst",
"type": "kampfkunst",
"img": "icons/svg/item-bag.svg",
"data": {
@ -11,11 +11,13 @@
"finten": "midgard5.kampfkunst-type-finten",
"geist": "midgard5.kampfkunst-type-geist",
"schießkunst": "midgard5.kampfkunst-type-schießkunst",
"fechten": "midgard5.kampfkunst-type-fechten",
"kidoAngriff": "midgard5.kido-type-angriff",
"kidoVerteidigung": "midgard5.kido-type-verteidigung",
"kidoFinten": "midgard5.kido-type-finten",
"kidoLeib": "midgard5.kido-type-leub"
"fechten": "midgard5.kampfkunst-type-fechten"
},
"kidoTypeSelection": {
"angriff": "midgard5.kido-type-angriff",
"verteidigung": "midgard5.kido-type-verteidigung",
"finten": "midgard5.kido-type-finten",
"leib": "midgard5.kido-type-leib"
},
"kampfkunstVarianteSelection": {
"none": "midgard5.spell-process-none",
@ -23,9 +25,21 @@
"attackieren": "midgard5.kampfkunst-variante-attackieren",
"entwaffnen": "midgard5.kampfkunst-variante-entwaffnen"
},
"kidoVarianteSelection": {
"none": "midgard5.spell-process-none",
"anspringen": "midgard5.kido-variante-anspringen",
"attackieren": "midgard5.kido-variante-attackieren",
"entwaffnen": "midgard5.kido-variante-entwaffnen",
"werfen": "midgard5.kido-variante-werfen",
"ausweichen": "midgard5.kido-variante-ausweichen",
"blockieren": "midgard5.kido-variante-blockieren",
"bewegen": "midgard5.kido-variante-bewegen",
"kontrollieren": "midgard5.kido-variante-kontrollieren"
},
"bonus": 0,
"type": "angriff",
"variante": "none",
"isKido": false,
"skillId": "",
"ap": 0,
"rolls": {
@ -46,6 +60,5 @@
"permission": {
"default": 0,
"XD0IpWT6bN4AJiYQ": 3
},
"_id": "HQ469FvZkwKfzFff"
}
}

View File

@ -11,6 +11,7 @@ const preloadTemplates = async (): Promise<Handlebars.TemplateDelegate<any>[]> =
"sheets/character/skills.hbs",
"sheets/character/gear.hbs",
"sheets/character/spells.hbs",
"sheets/character/kampfkuenste.hbs",
"sheets/character/effects.hbs",
"sheets/item/rolls.hbs",
"chat/roll-m5.hbs",

View File

@ -1,4 +1,4 @@
import { BooleanField } from "@league-of-foundry-developers/foundry-vtt-types/src/foundry/common/data/fields.mjs";;
import { BooleanField } from "@league-of-foundry-developers/foundry-vtt-types/src/foundry/common/data/fields.mjs";
export interface M5Skill {
fw: number;
@ -163,17 +163,16 @@ export interface M5CharacterCalculatedData {
custom: {};
};
gear: {
weapons: {};;
defensiveWeapons: {};;
armor: {};;
weapons: {};
defensiveWeapons: {};
armor: {};
items: {};
effects: {};;
};;
spells: {};;
effects: {};
};
spells: {};
kampfkuenste: {};
}
export function enumKeys<O extends object, K extends keyof O = keyof O>(obj: O): K[] {
return Object.keys(obj).filter((k) => Number.isNaN(+k)) as K[];
return Object.keys(obj).filter((k) => Number.isNaN(+k)) as K[];
}

View File

@ -293,7 +293,9 @@ export class M5Character extends Actor {
ret.kampfkuenste[item.id] = {
label: item.name,
process: "midgard5.kampfkunst-type-" + item.system.type,
isKido: item.system.isKido,
type: item.system.type,
variante: item.system.variante,
calc: item.system.calc,
};
});

View File

@ -116,7 +116,7 @@ export class M5Item extends Item {
} else if (itemType === "kampfkunst") {
calc.fw = 0;
if (actor) {
const actorCalc = character.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true, kampfkuenste: true });
const actorCalc = character.derivedData({ weapons: true, defensiveWeapons: true, armor: true, items: true, spells: true, effects: true, kampfkuenste: true });
if (actorCalc) {
calc.ew = actorCalc.stats.spellCasting.value;
}

View File

@ -205,7 +205,7 @@ export default class M5CharacterSheet extends ActorSheet {
const item = this.actor.items.get(li.dataset.itemId);
// limit transfer on personal weapons/armour/gear
if (["skill", "item", "weapon", "defensiveWeapon", "armor", "spell", "effect"].includes(item.type)) {
if (["skill", "item", "weapon", "defensiveWeapon", "armor", "spell", "effect", "kampfkunst"].includes(item.type)) {
const dragData = {
type: "Transfer",
actorId: this.actor.id,

View File

@ -241,22 +241,30 @@
"finten": "midgard5.kampfkunst-type-finten",
"geist": "midgard5.kampfkunst-type-geist",
"schießkunst": "midgard5.kampfkunst-type-schießkunst",
"fechten": "midgard5.kampfkunst-type-fechten",
"kidoAngriff": "midgard5.kido-type-angriff",
"kidoVerteidigung": "midgard5.kido-type-verteidigung",
"kidoFinten": "midgard5.kido-type-finten",
"kidoLeib": "midgard5.kido-type-leub"
"fechten": "midgard5.kampfkunst-type-fechten"
},
"kidoTypeSelection": {
"angriff": "midgard5.kido-type-angriff",
"verteidigung": "midgard5.kido-type-verteidigung",
"finten": "midgard5.kido-type-finten",
"leib": "midgard5.kido-type-leib"
},
"kampfkunstVarianteSelection": {
"none": "midgard5.spell-process-none",
"anstuermen": "midgard5.kampfkunst-variant-anstuermen",
"attackieren": "midgard5.kampfkunst-variant-attackieren",
"entwaffnen": "midgard5.kampfkunst-variant-entwaffnen"
"anstuermen": "midgard5.kampfkunst-variante-anstuermen",
"attackieren": "midgard5.kampfkunst-variante-attackieren",
"entwaffnen": "midgard5.kampfkunst-variante-entwaffnen"
},
"spellTargetSelection": {
"umgebung": "midgard5.spell-target-umgebung",
"geist": "midgard5.spell-target-geist",
"koerper": "midgard5.spell-target-koerper"
"kidoVarianteSelection": {
"none": "midgard5.spell-process-none",
"anspringen": "midgard5.kido-variante-anspringen",
"attackieren": "midgard5.kido-variante-attackieren",
"entwaffnen": "midgard5.kido-variante-entwaffnen",
"werfen": "midgard5.kido-variante-werfen",
"ausweichen": "midgard5.kido-variante-ausweichen",
"blockieren": "midgard5.kido-variante-blockieren",
"bewegen": "midgard5.kido-variante-bewegen",
"kontrollieren": "midgard5.kido-variante-kontrollieren"
}
}
},
@ -375,11 +383,8 @@
"bonus": 0,
"type": "",
"variante": "",
"isKido": false,
"ap": "",
"effectTarget": "",
"effectArea": "",
"effectDuration": "",
"origin": "",
"rolls": {
"formulas": {
"0": {

View File

@ -12,7 +12,15 @@
<tr data-item="{{itemId}}">
<td class="padding edit-item">
<span>{{item.label}}</span>
<span class="spell-process">{{localize item.process}}</span>
{{#if item.isKido}}
<span class="spell-process">{{localize item.type}}</span>
<span class="spell-process">({{localize item.variante}})</span>
{{else if (eq item.type "midgard5.kampfkunst-type-angriff")}}
<span class="spell-process">{{localize item.kidoType}}</span>
<span class="spell-process">({{localize item.kidoVariante}})</span>
{{/if}}
</td>
<td class="fixed-value">{{item.calc.ew}}</td>
<td class="fixed-value"><button class="roll-button roll-weapon-button" /></td>

View File

@ -6,6 +6,16 @@
<div class="sheet-content">
<table>
<tbody>
<tr>
<td colspan=4>
<div class="flexrow">
<span>
<input id="data.isKido" type="checkbox" name="data.isKido" {{checked data.isKido}}>
<label for="data.isKido">{{localize "midgard5.kido"}}</label>
</span>
</div>
</td>
</tr>
<tr>
<td>{{localize "midgard5.bonus"}}</td>
<td><input name="data.bonus" type="text" value="{{data.bonus}}" data-dtype="Number" /></td>
@ -13,21 +23,8 @@
<td><input name="data.ap" type="text" value="{{data.ap}}" data-dtype="String" /></td>
</tr>
<tr>
<td>{{localize "midgard5.spell-effectTarget"}}</td>
<td>
<select class="select-effectTarget" name="data.effectTarget" data-type="String">
{{#select data.effectTarget}}
{{#each data.spellTargetSelection as |label key|}}
<option value="{{key}}">{{localize label}}</option>
{{/each}}
{{/select}}
</select>
</td>
<td>{{localize "midgard5.spell-effectArea"}}</td>
<td><input name="data.effectArea" type="text" value="{{data.effectArea}}" data-dtype="String" /></td>
</tr>
<tr>
<td>{{localize "midgard5.spell-type"}}</td>
{{#unless item.system.isKido}}
<td>{{localize "midgard5.kampfkunst-type"}}</td>
<td>
<select class="select-type" name="data.type" data-type="String">
{{#select data.type}}
@ -37,22 +34,49 @@
{{/select}}
</select>
</td>
{{#if (eq item.system.type "angriff")}}
<td>{{localize "midgard5.spell-process"}}</td>
{{else}}
<td>{{localize "midgard5.kido-type"}}</td>
<td>
<select class="select-variante" name="data.variante" data-type="String">
{{#select data.variante}}
{{#each data.kampfkunstVarianteSelection as |label key|}}
<select class="select-type" name="data.type" data-type="String">
{{#select data.type}}
{{#each data.kidoTypeSelection as |label key|}}
<option value="{{key}}">{{localize label}}</option>
{{/each}}
{{/select}}
</select>
</td>
{{/if}}
{{/unless}}
{{#unless item.system.isKido}}
{{#if (eq item.system.type "angriff")}}
<td>{{localize "midgard5.kampfkunst-variante"}}</td>
<td>
<select class="select-variante" name="data.variante" data-type="String">
{{#select data.variante}}
{{#each data.kampfkunstVarianteSelection as |label key|}}
<option value="{{key}}">{{localize label}}</option>
{{/each}}
{{/select}}
</select>
</td>
{{/if}}
{{else}}
{{#unless (eq item.system.type "finten")}}
<td>{{localize "midgard5.kido-variante"}}</td>
<td>
<select class="select-variante" name="data.variante" data-type="String">
{{#select data.Variante}}
{{#each data.varianteSelection as |label key|}}
<option value="{{key}}">{{localize label}}</option>
{{/each}}
{{/select}}
</select>
</td>
{{/unless}}
{{/unless}}
</tr>
<td>{{localize "midgard5.weapon-skill"}}</td>
<td>{{localize "midgard5.skill"}}</td>
<td>
{{#if data.calc.skills.general}}
{{!-- {{#if data.calc.skills.general}} --}}
<select class="select-skill" name="data.skillId" data-type="String">
{{#select data.skillId}}
<option value="">{{localize "midgard5.no-skill"}}</option>
@ -61,9 +85,9 @@
{{/each}}
{{/select}}
</select>
{{else}}
{{!-- {{else}}
<span>{{localize "midgard5.assignItemToCharacter"}}</span>
{{/if}}
{{/if}} --}}
</td>
</tbody>
</table>