add Sonderfertigkeiten

This commit is contained in:
Sven Balzer 2024-12-05 22:20:20 +01:00
parent 942c395f59
commit f824286243
6 changed files with 135 additions and 13 deletions

View File

@ -15,7 +15,7 @@
</div> </div>
{{/inline}} {{/inline}}
<div class="actor-sheet ActorSheet"> <div class="actor-sheet ActorSheet" data-tooltip-class="DSA41">
<div class="grid4 gap"> <div class="grid4 gap">
{{>editable-input type="text" name="name" value=actor.name placeholder=(localize "DSA41.name")}} {{>editable-input type="text" name="name" value=actor.name placeholder=(localize "DSA41.name")}}
{{>editable-input type="text" name="system.race" value=actor.system.race placeholder=(localize "DSA41.race")}} {{>editable-input type="text" name="system.race" value=actor.system.race placeholder=(localize "DSA41.race")}}
@ -92,6 +92,24 @@
<span>FK-Basiswert</span> <span>FK-Basiswert</span>
<span>{{actor.system.computed.fk_basiswert}}</span> <span>{{actor.system.computed.fk_basiswert}}</span>
</div> </div>
<div class="list Sonderfertigkeiten">
<div class="list-header">
<div>{{localize (concat "DSA41.sonderfertigkeiten.label_allgemein")}}</div>
</div>
{{#each actor.itemTypes.Sonderfertigkeit}}
{{#if (eq this.system.kategorie "allgemein")}}
<div class="list-item" data-item-id="{{_id}}">
<div>
<div class="fit-content" data-action="item-open">{{maybeLocalize name prefix=(concat "DSA41.sonderfertigkeiten." system.kategorie ".name")}}</div>
</div>
<div></div>
<div class="center fas fa-trash" data-action="item-delete"></div>
</div>
{{/if}}
{{/each}}
</div>
</div> </div>
<div class="tab {{#if (eq tabGroups.primary 'tab2')}}active{{/if}}" data-group="primary" data-tab="tab2"> <div class="tab {{#if (eq tabGroups.primary 'tab2')}}active{{/if}}" data-group="primary" data-tab="tab2">
@ -305,5 +323,23 @@
<div>{{actor.system.computed.kampf.ruestungen_gesamt.gesamt_behinderung}}</div> <div>{{actor.system.computed.kampf.ruestungen_gesamt.gesamt_behinderung}}</div>
</div> </div>
</div> </div>
<div class="list Sonderfertigkeiten">
<div class="list-header">
<div>{{localize (concat "DSA41.sonderfertigkeiten.label_kampf")}}</div>
</div>
{{#each actor.itemTypes.Sonderfertigkeit}}
{{#if (eq this.system.kategorie "kampf")}}
<div class="list-item" data-item-id="{{_id}}">
<div>
<div class="fit-content" data-action="item-open" data-tooltip="{{this.system.beschreibung}}">{{maybeLocalize name prefix=(concat "DSA41.sonderfertigkeiten." system.kategorie ".name")}}</div>
</div>
<div></div>
<div class="center fas fa-trash" data-action="item-delete"></div>
</div>
{{/if}}
{{/each}}
</div>
</div> </div>
</div> </div>

View File

@ -0,0 +1,28 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off">
<div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" {{#if editable}}data-edit="img"{{/if}}>
<div class="col">
<div class="grid2 gap">
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}
<div>
<select name="system.kategorie">
<option value="allgemein" {{#if (eq item.system.kategorie "allgemein")}}selected{{/if}}>{{localize "DSA41.sonderfertigkeiten.kategorie.allgemein"}}</option>
<option value="kampf" {{#if (eq item.system.kategorie "kampf") }}selected{{/if}}>{{localize "DSA41.sonderfertigkeiten.kategorie.kampf"}} </option>
<option value="magisch" {{#if (eq item.system.kategorie "magisch") }}selected{{/if}}>{{localize "DSA41.sonderfertigkeiten.kategorie.magisch"}} </option>
<option value="klerikal" {{#if (eq item.system.kategorie "klerikal") }}selected{{/if}}>{{localize "DSA41.sonderfertigkeiten.kategorie.klerikal"}} </option>
</select>
<div class="placeholder">{{localize "DSA41.sonderfertigkeiten.kategorie.label"}}</div>
</div>
</div>
<div class="grid2 gap">
{{>editable-input type="number" name="system.kosten" value=item.system.kosten placeholder=(localize "DSA41.sonderfertigkeiten.kosten")}}
{{>editable-input type="number" name="system.verbreitung" value=item.system.verbreitung placeholder=(localize "DSA41.sonderfertigkeiten.verbreitung")}}
</div>
</div>
</div>
<div>
<prose-mirror name="system.beschreibung" value="{{item.system.beschreibung}}" compact="true">
</prose-mirror>
</div>
</div>

View File

@ -28,6 +28,25 @@
"talentwert_short": "TaW" "talentwert_short": "TaW"
}, },
"sonderfertigkeiten": {
"label_allgemein": "Allgemeine Sonderfertigkeiten",
"label_kampf": "Kampf-Sonderfertigkeiten",
"label_magisch": "Magische Sonderfertigkeiten",
"label_klerikal": "Klerikale Sonderfertigkeiten",
"kosten": "Kosten",
"verbreitung": "Verbreitung",
"kategorie": {
"label": "Kategorie",
"allgemein": "Allgemein",
"kampf": "Kampf",
"magisch": "Magisch",
"klerikal": "Klerikal"
}
},
"roll_types": { "roll_types": {
"courage": "Mut", "courage": "Mut",
"cleverness": "Klugheit", "cleverness": "Klugheit",

View File

@ -287,6 +287,10 @@
display: grid; display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-columns: repeat(4, minmax(0, 1fr));
} }
& .Sonderfertigkeiten {
grid-template-columns: minmax(min-content, max-content) auto min-content;
}
} }
&[data-tab="tab2"] { &[data-tab="tab2"] {
@ -322,6 +326,10 @@
grid-template-columns: 2fr repeat(8, 1fr) repeat(2, 1.5fr); grid-template-columns: 2fr repeat(8, 1fr) repeat(2, 1.5fr);
text-align: center; text-align: center;
} }
& .Sonderfertigkeiten {
grid-template-columns: minmax(min-content, max-content) auto min-content;
}
} }
} }
} }
@ -349,3 +357,13 @@
} }
} }
} }
#tooltip.DSA41 {
max-width: 650px;
text-align: left;
& h4 {
font-size: large;
}
}

View File

@ -14,10 +14,11 @@ Hooks.once("init", async function() {
CONFIG.Actor.dataModels.Player = DSA41_CharacterData; CONFIG.Actor.dataModels.Player = DSA41_CharacterData;
CONFIG.Actor.documentClass = DSA41_CharacterDocument; CONFIG.Actor.documentClass = DSA41_CharacterDocument;
CONFIG.Item.dataModels.Gegenstand = DSA41_GegenstandData; CONFIG.Item.dataModels.Gegenstand = DSA41_GegenstandData;
CONFIG.Item.dataModels.Ruestung = DSA41_RuestungData; CONFIG.Item.dataModels.Ruestung = DSA41_RuestungData;
CONFIG.Item.dataModels.Bewaffnung = DSA41_BewaffnungData; CONFIG.Item.dataModels.Bewaffnung = DSA41_BewaffnungData;
CONFIG.Item.dataModels.Talent = DSA41_TalentData; CONFIG.Item.dataModels.Talent = DSA41_TalentData;
CONFIG.Item.dataModels.Sonderfertigkeit = DSA41_SonderfertigkeitData;
DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet); DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet);
DocumentSheetConfig.registerSheet(Actor, "dsa41", DSA41_ActorSheet, { DocumentSheetConfig.registerSheet(Actor, "dsa41", DSA41_ActorSheet, {
@ -35,14 +36,20 @@ Hooks.once("init", async function() {
"Ruestung", "Ruestung",
"Bewaffnung", "Bewaffnung",
"Talent", "Talent",
"Sonderfertigkeit",
] ]
}); });
Handlebars.registerHelper({ Handlebars.registerHelper({
maybeLocalize: (value, options) => { maybeLocalize: (value, options) => {
const prefix = options.hash.prefix ? options.hash.prefix.string : null; const prefix = options.hash.prefix ? options.hash.prefix.string : null;
if (prefix) if (prefix) {
return game.i18n.localize(prefix + "." + value); const id = prefix + "." + value;
const localized = game.i18n.localize(id);
return id === localized ? value : localized;
}
return value; return value;
} }
}); });
@ -516,7 +523,7 @@ class DSA41_BewaffnungData extends TypeDataModel {
class DSA41_TalentData extends TypeDataModel { class DSA41_TalentData extends TypeDataModel {
static defineSchema() { static defineSchema() {
return { return {
kategorie: new StringField(), kategorie: new StringField(),
behinderung: new StringField(), behinderung: new StringField(),
attribute1: new StringField(), attribute1: new StringField(),
@ -528,6 +535,18 @@ class DSA41_TalentData extends TypeDataModel {
} }
} }
class DSA41_SonderfertigkeitData extends TypeDataModel {
static defineSchema() {
return {
kategorie: new StringField(),
kosten: new NumberField({ integer: true, initial: 0 }),
verbreitung: new NumberField({ integer: true, initial: 0 }),
beschreibung: new StringField(),
};
}
}
function DSA41_ApplicationMixin(BaseApplication) { function DSA41_ApplicationMixin(BaseApplication) {
class DSA41_Application extends HandlebarsApplicationMixin(BaseApplication) { class DSA41_Application extends HandlebarsApplicationMixin(BaseApplication) {
static DEFAULT_OPTIONS= { static DEFAULT_OPTIONS= {
@ -859,10 +878,11 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) {
class DSA41_ItemSheetV2 extends DSA41_ApplicationMixin(ItemSheetV2) { class DSA41_ItemSheetV2 extends DSA41_ApplicationMixin(ItemSheetV2) {
static PARTS = { static PARTS = {
Bewaffnung: { template: "systems/dsa-4th-edition/src/ItemSheets/Bewaffnung.hbs" }, Bewaffnung: { template: "systems/dsa-4th-edition/src/ItemSheets/Bewaffnung.hbs" },
Gegenstand: { template: "systems/dsa-4th-edition/src/ItemSheets/Gegenstand.hbs" }, Gegenstand: { template: "systems/dsa-4th-edition/src/ItemSheets/Gegenstand.hbs" },
Ruestung: { template: "systems/dsa-4th-edition/src/ItemSheets/Ruestung.hbs" }, Ruestung: { template: "systems/dsa-4th-edition/src/ItemSheets/Ruestung.hbs" },
Talent: { template: "systems/dsa-4th-edition/src/ItemSheets/Talent.hbs" }, Talent: { template: "systems/dsa-4th-edition/src/ItemSheets/Talent.hbs" },
Sonderfertigkeit: { template: "systems/dsa-4th-edition/src/ItemSheets/Sonderfertigkeit.hbs" },
}; };
static DEFAULT_OPTIONS = { static DEFAULT_OPTIONS = {

View File

@ -14,7 +14,8 @@
"Ruestung": {}, "Ruestung": {},
"Bewaffnung": {}, "Bewaffnung": {},
"Talent": {} "Talent": {},
"Sonderfertigkeit": {}
} }
}, },