Compare commits
8 Commits
test1
...
d099e32fcc
| Author | SHA1 | Date | |
|---|---|---|---|
| d099e32fcc | |||
| 442cae2598 | |||
| cccb503493 | |||
| fa611c356e | |||
| 68522582fd | |||
| 74e884436a | |||
| fc5913e742 | |||
| f0a82fef45 |
@@ -1,2 +1,4 @@
|
||||
# dsa-4th-edition
|
||||
|
||||
https://gitlab.com/foundry-vtt-dsa/dsa-4.1-core/dsa-4.1-system
|
||||
-> comparison for mechanics
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
{{#*inline "editable-input"}}
|
||||
<div class="editable-input editable-{{type}}">
|
||||
{{#if @root.editable}}
|
||||
<input type="{{type}}" name="{{name}}" value="{{value}}" placeholder="{{placeholder}}">
|
||||
{{else}}
|
||||
<div>
|
||||
{{value}}
|
||||
{{#unless value}}{{placeholder}}{{/unless}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if placeholder}}
|
||||
<div class="placeholder">{{placeholder}}</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/inline}}
|
||||
|
||||
{{#*inline "die-type"}}
|
||||
<div class="center die die-{{type}}">{{localize (concat "DSA41.attributes.short." type)}}</div>
|
||||
{{/inline}}
|
||||
|
||||
{{#*inline "die-value"}}
|
||||
<div class="col">
|
||||
<div class="center">{{localize (concat "DSA41.attributes.short." type)}}</div>
|
||||
<div class="die die-{{type}}">{{lookup @root.actor.system.computed type}}</div>
|
||||
</div>
|
||||
{{/inline}}
|
||||
|
||||
<form class="actor-sheet {{ cssClass }}" autocomplete="off">
|
||||
<div class="row">
|
||||
{{>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.culture" value=actor.system.culture placeholder=(localize "DSA41.culture")}}
|
||||
{{>editable-input type="text" name="system.profession" value=actor.system.profession placeholder=(localize "DSA41.profession")}}
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<img class="character-image" src="{{ actor.img }}" title="{{ actor.name }}" {{#if editable}}data-edit="img"{{/if}}>
|
||||
{{#each actor.system.attributes}}
|
||||
{{>die-value type=@key}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<fieldset>
|
||||
<legend>{{localize "DSA41.attributes.label"}}</legend>
|
||||
<table>
|
||||
<tr>
|
||||
<th></th>
|
||||
{{#each actor.system.attributes}}
|
||||
<th>{{localize (concat "DSA41.attributes.short." @key)}}</th>
|
||||
{{/each}}
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{localize "DSA41.attributes.initial"}}</td>
|
||||
{{#each actor.system.attributes}}
|
||||
<td>{{>editable-input type="number" name=(concat "system.attributes." @key ".initial") value=(lookup this "initial")}}</td>
|
||||
{{/each}}
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{localize "DSA41.attributes.advancement"}}</td>
|
||||
{{#each actor.system.attributes}}
|
||||
<td>{{>editable-input type="number" name=(concat "system.attributes." @key ".advancement") value=(lookup this "advancement")}}</td>
|
||||
{{/each}}
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{localize "DSA41.attributes.modifier"}}</td>
|
||||
{{#each actor.system.attributes}}
|
||||
<td>{{>editable-input type="number" name=(concat "system.attributes." @key ".modifier") value=(lookup this "modifier")}}</td>
|
||||
{{/each}}
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<fieldset>
|
||||
<legend>{{localize "DSA41.talente.kampf_talente.label"}}</legend>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{localize "DSA41.talente.label"}}</th>
|
||||
<th>{{localize "DSA41.talente.label_talentwert"}}</th>
|
||||
<th>{{localize "DSA41.talente.kampf.label_attacke"}}</th>
|
||||
<th>{{localize "DSA41.talente.kampf.label_parade"}}</th>
|
||||
<th>{{localize "DSA41.talente.kampf.label_attacke_total"}}</th>
|
||||
<th>{{localize "DSA41.talente.kampf.label_parade_total"}}</th>
|
||||
</tr>
|
||||
{{#each actor.system.kampf_talente}}
|
||||
<tr>
|
||||
<td>{{localize (concat "DSA41.talente.kampf.name." @key)}}</td>
|
||||
<td>{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".talentwert") value=(lookup this "talentwert")}}</td>
|
||||
<td>{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".attacke") value=(lookup this "attacke")}}</td>
|
||||
<td>{{>editable-input type="number" name=(concat "system.kampf_talente." @key ".parade") value=(lookup this "parade")}}</td>
|
||||
<td class="center">0</td>
|
||||
<td class="center">0</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
{{#each actor.system.talente}}
|
||||
<div class="row">
|
||||
<fieldset>
|
||||
<legend>{{localize (concat "DSA41.talente." @key ".label")}}</legend>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{{localize "DSA41.talente.label"}}</th>
|
||||
<th>{{localize "DSA41.talente.label_eigenschaften"}}</th>
|
||||
<th>{{localize "DSA41.talente.label_talentwert"}}</th>
|
||||
</tr>
|
||||
{{#each @this}}
|
||||
<tr>
|
||||
<td>{{localize (concat "DSA41.talente." @../key ".name." @key)}}</td>
|
||||
<td></td>
|
||||
<td>{{>editable-input type="number" name=(concat "system.talente." @../key "." @key) value=@this}}</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{/each}}
|
||||
</form>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
|
||||
<g>
|
||||
<path d="m11.906 20.4h40.188l-20.094 34.801z"/>
|
||||
<path d="m52.635 21.059 6.5977 26.664-26.391 7.6172z"/>
|
||||
<path d="m32 .55664 19.791 19.043h-39.582z"/>
|
||||
<path d="m11.365 21.059 19.793 34.281-26.391-7.6172z"/>
|
||||
<path d="m4.6875 16.691 6.0664 3.5039-6.0664 24.52z"/>
|
||||
<path d="m29.359 1.9863-18.207 17.518-6.0664-3.5039z"/>
|
||||
<path d="m34.641 1.9863 24.273 14.014-6.0664 3.5039z"/>
|
||||
<path d="m59.312 16.691v28.023l-6.0664-24.52z"/>
|
||||
<path d="m7.3281 49.295 24.271 7.0059v7.0078z"/>
|
||||
<path d="m56.672 49.295-24.271 14.014v-7.0078z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 696 B |
@@ -0,0 +1,29 @@
|
||||
{{#*inline "editable-input"}}
|
||||
<div class="editable-input editable-{{type}}">
|
||||
{{#if @root.editable}}
|
||||
<input type="{{type}}" name="{{name}}" value="{{value}}" placeholder="{{placeholder}}">
|
||||
{{else}}
|
||||
<div>
|
||||
{{value}}
|
||||
{{#unless value}}{{placeholder}}{{/unless}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if placeholder}}
|
||||
<div class="placeholder">{{placeholder}}</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/inline}}
|
||||
|
||||
<form 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">
|
||||
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}
|
||||
<div class="row">
|
||||
{{>editable-input type="number" name="system.gewicht" value=item.system.gewicht placeholder=(localize "DSA41.weight")}}
|
||||
{{>editable-input type="number" name="system.preis" value=item.system.preis placeholder=(localize "DSA41.price")}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -0,0 +1,11 @@
|
||||
<form class="item-sheet {{ cssClass }}" autocomplete="off">
|
||||
<header>
|
||||
{{#if editable}}
|
||||
<img src="{{ item.img }}" title="{{ item.name }}" data-edit="img">
|
||||
<input name="name" type="text" value="{{ item.name }}" placeholder="Name">
|
||||
{{else}}
|
||||
<img src="{{ item.img }}" title="{{ item.name }}">
|
||||
<div>{{ item.name }}</div>
|
||||
{{/if}}
|
||||
</header>
|
||||
</form>
|
||||
@@ -0,0 +1,11 @@
|
||||
<form class="item-sheet {{ cssClass }}" autocomplete="off">
|
||||
<header>
|
||||
{{#if editable}}
|
||||
<img src="{{ item.img }}" title="{{ item.name }}" data-edit="img">
|
||||
<input name="name" type="text" value="{{ item.name }}" placeholder="Name">
|
||||
{{else}}
|
||||
<img src="{{ item.img }}" title="{{ item.name }}">
|
||||
<div>{{ item.name }}</div>
|
||||
{{/if}}
|
||||
</header>
|
||||
</form>
|
||||
@@ -0,0 +1,150 @@
|
||||
{
|
||||
"TYPES": {
|
||||
"Item": {
|
||||
"Gegenstaende": "Gegenstände",
|
||||
"Waffen": "Waffen",
|
||||
"Ruestungen": "Rüstungen"
|
||||
}
|
||||
},
|
||||
|
||||
"DSA41": {
|
||||
"name": "Name",
|
||||
"race": "Rasse",
|
||||
"culture": "Kultur",
|
||||
"profession": "Profession",
|
||||
"weight": "Gewicht",
|
||||
"price": "Preis",
|
||||
|
||||
"attributes": {
|
||||
"label": "Eigenschaften",
|
||||
"initial": "Startwert",
|
||||
"advancement": "Steigerungen",
|
||||
"modifier": "Modifikatoren",
|
||||
|
||||
"long": {
|
||||
"courage": "Mut",
|
||||
"cleverness": "Klugheit",
|
||||
"intuition": "Intuition",
|
||||
"charisma": "Charisma",
|
||||
"dexterity": "Fingerfertigkeit",
|
||||
"agility": "Gewandheit",
|
||||
"constitution": "Konstitution",
|
||||
"strength": "Körperkraft"
|
||||
},
|
||||
|
||||
"short": {
|
||||
"courage": "MU",
|
||||
"cleverness": "KL",
|
||||
"intuition": "IN",
|
||||
"charisma": "CH",
|
||||
"dexterity": "FF",
|
||||
"agility": "GE",
|
||||
"constitution": "KO",
|
||||
"strength": "KK"
|
||||
}
|
||||
},
|
||||
|
||||
"talente":{
|
||||
"label": "Talent",
|
||||
"label_eigenschaften": "Eigenschaften",
|
||||
"label_talentwert": "Talentwert",
|
||||
|
||||
"kampf": {
|
||||
"label": "Kampf Talente",
|
||||
"label_attacke": "Attacke",
|
||||
"label_parade": "Parade",
|
||||
"label_attacke_total": "Attacke",
|
||||
"label_parade_total": "Parade",
|
||||
|
||||
"name": {
|
||||
"anderthalbhaender": "Anderthalbhänder",
|
||||
"armbrust": "Armbrust"
|
||||
}
|
||||
},
|
||||
|
||||
"koerperliche": {
|
||||
"label": "Körperliche Talente",
|
||||
|
||||
"name": {
|
||||
"akrobatik": "Akrobatik",
|
||||
"athletik": "Athletik",
|
||||
"fliegen": "Fliegen",
|
||||
"gaukeleien": "Gaukeleien",
|
||||
"klettern": "Klettern",
|
||||
"koerperbeherrschung": "Körperbeherrschung",
|
||||
"reiten": "Reiten",
|
||||
"schleichen": "Schleichen",
|
||||
"schwimmen": "Schwimmen",
|
||||
"selbstbeherrschung": "Selbstbeherrschung",
|
||||
"sich_verstecken": "Sich Verstecken",
|
||||
"singen": "Singen",
|
||||
"sinnenschärfe": "Sinnenschärfe",
|
||||
"skifahren": "Skifahren",
|
||||
"stimmen_imitieren": "Stimmen Imitieren",
|
||||
"tanzen": "Tanzen",
|
||||
"taschendiebstahl": "Taschendiebstahl",
|
||||
"zechen": "Zechen"
|
||||
}
|
||||
},
|
||||
|
||||
"gesellschaftliche": {
|
||||
"label": "Gesellschaftliche Talente",
|
||||
|
||||
"name": {
|
||||
"betoeren": "Betören",
|
||||
"etikette": "Etikette",
|
||||
"gassenwissen": "Gassenwissen",
|
||||
"lehren": "Lehren",
|
||||
"menschenkenntnis": "Menschenkenntnis",
|
||||
"schauspielerei": "Schauspielerei",
|
||||
"schriftlicher_ausdruck": "Schriftlicher Ausdruck",
|
||||
"sich_verkleiden": "Sich Verkleiden",
|
||||
"ueberreden": "Überreden",
|
||||
"ueberzeugen": "Überzeugen"
|
||||
}
|
||||
},
|
||||
|
||||
"natur": {
|
||||
"label": "Natur-Talente",
|
||||
|
||||
"name": {
|
||||
"faehrtensuchen": "Fährtensuchen",
|
||||
"fallenstellen": "Fallenstellen",
|
||||
"fesseln": "Fesseln/Entfesseln",
|
||||
"fischen": "Fischen/Angeln",
|
||||
"orientierung": "Orientierung",
|
||||
"wettervorhersage": "Wettervorhersage",
|
||||
"wildnisleben": "Wildnisleben"
|
||||
}
|
||||
},
|
||||
|
||||
"wissens": {
|
||||
"label": "Wissenstalente",
|
||||
|
||||
"name": {
|
||||
"anatomie": "Anatomie",
|
||||
"baukunst": "Baukunst"
|
||||
}
|
||||
},
|
||||
|
||||
"sprachen": {
|
||||
"label": "Sprachen und Schriften",
|
||||
|
||||
"name": {
|
||||
"lesen_schreiben": "Lesen/Schreiben [Schrift]",
|
||||
"muttersprache": "Sprachen [Muttersprache]",
|
||||
"fremdsprache": "Sprachen [Fremdsprache]"
|
||||
}
|
||||
},
|
||||
|
||||
"handwerks": {
|
||||
"label": "Handwerkstalente",
|
||||
|
||||
"name": {
|
||||
"abrichten": "Abrichten",
|
||||
"ackerbau": "Ackerbau"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
{
|
||||
"TYPES": {
|
||||
"Item": {
|
||||
"Gegenstaende": "Generic",
|
||||
"Waffen": "Weapons",
|
||||
"Ruestungen": "Armor"
|
||||
}
|
||||
},
|
||||
|
||||
"DSA41": {
|
||||
"name": "Name",
|
||||
"race": "Race",
|
||||
"culture": "Culture",
|
||||
"profession": "Profession",
|
||||
"weight": "Weight",
|
||||
"price": "Price",
|
||||
|
||||
"attributes": {
|
||||
"label": "Attributes",
|
||||
"initial": "Initial",
|
||||
"advancement": "Advancements",
|
||||
"modifier": "Modifiers",
|
||||
|
||||
"long": {
|
||||
"courage": "Courage",
|
||||
"cleverness": "Cleverness",
|
||||
"intuition": "Intuition",
|
||||
"charisma": "Charisma",
|
||||
"dexterity": "Dexterity",
|
||||
"agility": "Agility",
|
||||
"constitution": "Constitution",
|
||||
"strength": "Strength"
|
||||
},
|
||||
|
||||
"short": {
|
||||
"courage": "CO",
|
||||
"cleverness": "CL",
|
||||
"intuition": "IN",
|
||||
"charisma": "CH",
|
||||
"dexterity": "DE",
|
||||
"agility": "AG",
|
||||
"constitution": "CN",
|
||||
"strength": "ST"
|
||||
}
|
||||
},
|
||||
|
||||
"talente": {
|
||||
"label": "Talent",
|
||||
"label_eigenschaften": "Attributes",
|
||||
"label_talentwert": "Talent Prowess",
|
||||
|
||||
"kampf": {
|
||||
"label": "Combat Talents",
|
||||
"label_attacke": "!!TODO!!",
|
||||
"label_parade": "!!TODO!!",
|
||||
"label_attacke_total": "!!TODO!!",
|
||||
"label_parade_total": "!!TODO!!",
|
||||
|
||||
"name": {
|
||||
"anderthalbhaender": "!!TODO!!",
|
||||
"armbrust": "!!TODO!!"
|
||||
}
|
||||
},
|
||||
|
||||
"koerperliche": {
|
||||
"label": "!!TODO!!",
|
||||
|
||||
"name": {
|
||||
"akrobatik": "!!TODO!!",
|
||||
"athletik": "!!TODO!!",
|
||||
"fliegen": "!!TODO!!",
|
||||
"gaukeleien": "!!TODO!!",
|
||||
"klettern": "!!TODO!!",
|
||||
"koerperbeherrschung": "!!TODO!!",
|
||||
"reiten": "!!TODO!!",
|
||||
"schleichen": "!!TODO!!",
|
||||
"schwimmen": "!!TODO!!",
|
||||
"selbstbeherrschung": "!!TODO!!",
|
||||
"sich_verstecken": "!!TODO!!",
|
||||
"singen": "!!TODO!!",
|
||||
"sinnenschärfe": "!!TODO!!",
|
||||
"skifahren": "!!TODO!!",
|
||||
"stimmen_imitieren": "!!TODO!!",
|
||||
"tanzen": "!!TODO!!",
|
||||
"taschendiebstahl": "!!TODO!!",
|
||||
"zechen": "!!TODO!!"
|
||||
}
|
||||
},
|
||||
|
||||
"gesellschaftliche": {
|
||||
"label": "!!TODO!!",
|
||||
|
||||
"name": {
|
||||
"betoeren": "!!TODO!!",
|
||||
"etikette": "!!TODO!!",
|
||||
"gassenwissen": "!!TODO!!",
|
||||
"lehren": "!!TODO!!",
|
||||
"menschenkenntnis": "!!TODO!!",
|
||||
"schauspielerei": "!!TODO!!",
|
||||
"schriftlicher_ausdruck": "!!TODO!!",
|
||||
"sich_verkleiden": "!!TODO!!",
|
||||
"ueberreden": "!!TODO!!",
|
||||
"ueberzeugen": "!!TODO!!"
|
||||
}
|
||||
},
|
||||
|
||||
"natur": {
|
||||
"label": "Nature Talents",
|
||||
|
||||
"name": {
|
||||
"faehrtensuchen": "Track",
|
||||
"fallenstellen": "Traps",
|
||||
"fesseln": "Bind/Escape",
|
||||
"fischen": "Fish",
|
||||
"orientierung": "Orientation",
|
||||
"wettervorhersage": "Weather Sense",
|
||||
"wildnisleben": "Survival"
|
||||
}
|
||||
},
|
||||
|
||||
"wissens": {
|
||||
"label": "!!TODO!!",
|
||||
|
||||
"name": {
|
||||
"anatomie": "!!TODO!!",
|
||||
"baukunst": "!!TODO!!"
|
||||
}
|
||||
},
|
||||
|
||||
"sprachen": {
|
||||
"label": "!!TODO!!",
|
||||
|
||||
"name": {
|
||||
"lesen_schreiben": "!!TODO!!",
|
||||
"muttersprache": "!!TODO!!",
|
||||
"fremdsprache": "!!TODO!!"
|
||||
}
|
||||
},
|
||||
|
||||
"handwerks": {
|
||||
"label": "!!TODO!!",
|
||||
|
||||
"name": {
|
||||
"abrichten": "!!TODO!!",
|
||||
"ackerbau": "!!TODO!!"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
.row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.col {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.wrap {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.editable-input {
|
||||
flex: 1;
|
||||
padding: 0px 3px;
|
||||
}
|
||||
|
||||
.editable-input input {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.editable-number {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.placeholder {
|
||||
font-size: 0.8em;
|
||||
border-top: 1px solid;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.die {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
|
||||
background-color: #000;
|
||||
mask-image: url("../src/Assets/d20.svg");
|
||||
mask-size: contain;
|
||||
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.die-courage { background-color: #b22319; }
|
||||
.die-cleverness { background-color: #8158a3; }
|
||||
.die-intuition { background-color: #388834; }
|
||||
.die-charisma { background-color: #0c0c0c; }
|
||||
.die-dexterity { background-color: #d4b366; }
|
||||
.die-agility { background-color: #678ec3; }
|
||||
.die-constitution { background-color: #a3a3a3; }
|
||||
.die-strength { background-color: #d5a877; }
|
||||
|
||||
|
||||
.character-image {
|
||||
width: 115px;
|
||||
height: 115px;
|
||||
}
|
||||
|
||||
.item-image {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
|
||||
.actor-sheet fieldset {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.actor-sheet table {
|
||||
border: none;
|
||||
background: none;
|
||||
table-layout: fixed;
|
||||
}
|
||||
+255
@@ -0,0 +1,255 @@
|
||||
Hooks.once("init", function() {
|
||||
console.log("INIT");
|
||||
|
||||
CONFIG.Actor.dataModels.Player = DSA41_CharacterData;
|
||||
CONFIG.Item.dataModels.Gegenstaende = DSA41_GegenstaendeData;
|
||||
|
||||
//DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet);
|
||||
DocumentSheetConfig.registerSheet(Actor, "dsa41", DSA41_ActorSheet, {
|
||||
makeDefault: true,
|
||||
types: [
|
||||
"Player",
|
||||
]
|
||||
});
|
||||
|
||||
//DocumentSheetConfig.unregisterSheet(Item, "core", ItemSheet);
|
||||
DocumentSheetConfig.registerSheet(Item, "dsa41", DSA41_ItemSheet, {
|
||||
makeDefault: true,
|
||||
types: [
|
||||
"Gegenstaende",
|
||||
"Waffen",
|
||||
"Ruestungen",
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
const { SchemaField, NumberField, StringField } = foundry.data.fields;
|
||||
|
||||
class AttributeField extends foundry.data.fields.SchemaField {
|
||||
constructor() {
|
||||
return super({
|
||||
initial: new NumberField({ integer: true, initial: 8, min: 8, max: 14, }),
|
||||
advancement: new NumberField({ integer: true, initial: 0, min: 0, max: 4, }),
|
||||
modifier: new NumberField({ integer: true, initial: 0, min: 0, }),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
class CombatTalentField extends foundry.data.fields.SchemaField {
|
||||
constructor() {
|
||||
return super({
|
||||
talentwert: new NumberField({ integer: true, initial: 0 }),
|
||||
attacke: new NumberField({ integer: true, initial: 0 }),
|
||||
parade: new NumberField({ integer: true, initial: 0 }),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
class DSA41_CharacterData extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
race: new StringField(),
|
||||
culture: new StringField(),
|
||||
profession: new StringField(),
|
||||
|
||||
attributes: new SchemaField({
|
||||
courage: new AttributeField(),
|
||||
cleverness: new AttributeField(),
|
||||
intuition: new AttributeField(),
|
||||
charisma: new AttributeField(),
|
||||
dexterity: new AttributeField(),
|
||||
agility: new AttributeField(),
|
||||
constitution: new AttributeField(),
|
||||
strength: new AttributeField(),
|
||||
}),
|
||||
|
||||
kampf_talente: new SchemaField({
|
||||
anderthalbhaender: new CombatTalentField(),
|
||||
armbrust: new CombatTalentField(),
|
||||
belagerungswaffen: new CombatTalentField(),
|
||||
blasrohr: new CombatTalentField(),
|
||||
bogen: new CombatTalentField(),
|
||||
diskus: new CombatTalentField(),
|
||||
dolche: new CombatTalentField(),
|
||||
fechtwaffen: new CombatTalentField(),
|
||||
hiebwaffen: new CombatTalentField(),
|
||||
infanteriewaffen: new CombatTalentField(),
|
||||
kettenstaebe: new CombatTalentField(),
|
||||
kettenwaffen: new CombatTalentField(),
|
||||
lanzenreiten: new CombatTalentField(),
|
||||
peitsche: new CombatTalentField(),
|
||||
raufen: new CombatTalentField(),
|
||||
ringen: new CombatTalentField(),
|
||||
saebel: new CombatTalentField(),
|
||||
schleuder: new CombatTalentField(),
|
||||
schwerter: new CombatTalentField(),
|
||||
speere: new CombatTalentField(),
|
||||
staebe: new CombatTalentField(),
|
||||
wurfbeile: new CombatTalentField(),
|
||||
wurfmesser: new CombatTalentField(),
|
||||
wurfspeere: new CombatTalentField(),
|
||||
zweihandflegel: new CombatTalentField(),
|
||||
zweihand_hiebwaffen: new CombatTalentField(),
|
||||
zweihandschwerter: new CombatTalentField(),
|
||||
}),
|
||||
|
||||
talente: new SchemaField({
|
||||
koerperliche: new SchemaField({
|
||||
akrobatik: new NumberField({ integer: true, initial: 0 }),
|
||||
athletik: new NumberField({ integer: true, initial: 0 }),
|
||||
fliegen: new NumberField({ integer: true, initial: 0 }),
|
||||
gaukeleien: new NumberField({ integer: true, initial: 0 }),
|
||||
klettern: new NumberField({ integer: true, initial: 0 }),
|
||||
koerperbeherrschung: new NumberField({ integer: true, initial: 0 }),
|
||||
reiten: new NumberField({ integer: true, initial: 0 }),
|
||||
schleichen: new NumberField({ integer: true, initial: 0 }),
|
||||
schwimmen: new NumberField({ integer: true, initial: 0 }),
|
||||
selbstbeherrschung: new NumberField({ integer: true, initial: 0 }),
|
||||
sich_verstecken: new NumberField({ integer: true, initial: 0 }),
|
||||
singen: new NumberField({ integer: true, initial: 0 }),
|
||||
sinnenschärfe: new NumberField({ integer: true, initial: 0 }),
|
||||
skifahren: new NumberField({ integer: true, initial: 0 }),
|
||||
stimmen_imitieren: new NumberField({ integer: true, initial: 0 }),
|
||||
tanzen: new NumberField({ integer: true, initial: 0 }),
|
||||
taschendiebstahl: new NumberField({ integer: true, initial: 0 }),
|
||||
zechen: new NumberField({ integer: true, initial: 0 }),
|
||||
}),
|
||||
|
||||
gesellschaftliche: new SchemaField({
|
||||
betoeren: new NumberField({ integer: true, initial: 0 }),
|
||||
etikette: new NumberField({ integer: true, initial: 0 }),
|
||||
gassenwissen: new NumberField({ integer: true, initial: 0 }),
|
||||
lehren: new NumberField({ integer: true, initial: 0 }),
|
||||
menschenkenntnis: new NumberField({ integer: true, initial: 0 }),
|
||||
schauspielerei: new NumberField({ integer: true, initial: 0 }),
|
||||
schriftlicher_ausdruck: new NumberField({ integer: true, initial: 0 }),
|
||||
sich_verkleiden: new NumberField({ integer: true, initial: 0 }),
|
||||
ueberreden: new NumberField({ integer: true, initial: 0 }),
|
||||
ueberzeugen: new NumberField({ integer: true, initial: 0 }),
|
||||
}),
|
||||
|
||||
natur: new SchemaField({
|
||||
faehrtensuchen: new NumberField({ integer: true, initial: 0 }),
|
||||
fallenstellen: new NumberField({ integer: true, initial: 0 }),
|
||||
fesseln: new NumberField({ integer: true, initial: 0 }),
|
||||
fischen: new NumberField({ integer: true, initial: 0 }),
|
||||
orientierung: new NumberField({ integer: true, initial: 0 }),
|
||||
wettervorhersage: new NumberField({ integer: true, initial: 0 }),
|
||||
wildnisleben: new NumberField({ integer: true, initial: 0 }),
|
||||
}),
|
||||
|
||||
wissens: new SchemaField({
|
||||
anatomie: new NumberField({ integer: true, initial: 0 }),
|
||||
baukunst: new NumberField({ integer: true, initial: 0 }),
|
||||
brett_kartenspiel: new NumberField({ integer: true, initial: 0 }),
|
||||
geographie: new NumberField({ integer: true, initial: 0 }),
|
||||
geschichtswissen: new NumberField({ integer: true, initial: 0 }),
|
||||
gesteinskunde: new NumberField({ integer: true, initial: 0 }),
|
||||
goetter_kulte: new NumberField({ integer: true, initial: 0 }),
|
||||
heraldik: new NumberField({ integer: true, initial: 0 }),
|
||||
huettenkunde: new NumberField({ integer: true, initial: 0 }),
|
||||
kriegskunst: new NumberField({ integer: true, initial: 0 }),
|
||||
kryptographie: new NumberField({ integer: true, initial: 0 }),
|
||||
magiekunde: new NumberField({ integer: true, initial: 0 }),
|
||||
mechanik: new NumberField({ integer: true, initial: 0 }),
|
||||
pflanzenkunde: new NumberField({ integer: true, initial: 0 }),
|
||||
philosophie: new NumberField({ integer: true, initial: 0 }),
|
||||
rechnen: new NumberField({ integer: true, initial: 0 }),
|
||||
rechtskunde: new NumberField({ integer: true, initial: 0 }),
|
||||
sagen_legenden: new NumberField({ integer: true, initial: 0 }),
|
||||
schaetzen: new NumberField({ integer: true, initial: 0 }),
|
||||
sprachenkunde: new NumberField({ integer: true, initial: 0 }),
|
||||
staatskunst: new NumberField({ integer: true, initial: 0 }),
|
||||
sternkunde: new NumberField({ integer: true, initial: 0 }),
|
||||
tierkunde: new NumberField({ integer: true, initial: 0 }),
|
||||
}),
|
||||
|
||||
sprachen: new SchemaField({
|
||||
lesen_schreiben: new NumberField({ integer: true, initial: 0 }),
|
||||
muttersprache: new NumberField({ integer: true, initial: 0 }),
|
||||
fremdsprache: new NumberField({ integer: true, initial: 0 }),
|
||||
}),
|
||||
|
||||
handwerks: new SchemaField({
|
||||
abrichten: new NumberField({ integer: true, initial: 0 }),
|
||||
ackerbau: new NumberField({ integer: true, initial: 0 }),
|
||||
alchimie: new NumberField({ integer: true, initial: 0 }),
|
||||
bergbau: new NumberField({ integer: true, initial: 0 }),
|
||||
bogenbau: new NumberField({ integer: true, initial: 0 }),
|
||||
boote_fahren: new NumberField({ integer: true, initial: 0 }),
|
||||
brauer: new NumberField({ integer: true, initial: 0 }),
|
||||
drucker: new NumberField({ integer: true, initial: 0 }),
|
||||
fahrzeug_lenken: new NumberField({ integer: true, initial: 0 }),
|
||||
falschspiel: new NumberField({ integer: true, initial: 0 }),
|
||||
feinmechanik: new NumberField({ integer: true, initial: 0 }),
|
||||
feuersteinbearbeitung: new NumberField({ integer: true, initial: 0 }),
|
||||
fleischer: new NumberField({ integer: true, initial: 0 }),
|
||||
gerber: new NumberField({ integer: true, initial: 0 }),
|
||||
glaskunst: new NumberField({ integer: true, initial: 0 }),
|
||||
grobschmied: new NumberField({ integer: true, initial: 0 }),
|
||||
handel: new NumberField({ integer: true, initial: 0 }),
|
||||
hauswirtschaft: new NumberField({ integer: true, initial: 0 }),
|
||||
heilkunde_gift: new NumberField({ integer: true, initial: 0 }),
|
||||
heilkunde_krankheiten: new NumberField({ integer: true, initial: 0 }),
|
||||
heilkunde_seele: new NumberField({ integer: true, initial: 0 }),
|
||||
heilkunde_wunden: new NumberField({ integer: true, initial: 0 }),
|
||||
holzbearbeitung: new NumberField({ integer: true, initial: 0 }),
|
||||
instrumentenbauer: new NumberField({ integer: true, initial: 0 }),
|
||||
kartographie: new NumberField({ integer: true, initial: 0 }),
|
||||
kochen: new NumberField({ integer: true, initial: 0 }),
|
||||
kristallzucht: new NumberField({ integer: true, initial: 0 }),
|
||||
lederarbeiten: new NumberField({ integer: true, initial: 0 }),
|
||||
malen_zeichnen: new NumberField({ integer: true, initial: 0 }),
|
||||
maurer: new NumberField({ integer: true, initial: 0 }),
|
||||
metallguss: new NumberField({ integer: true, initial: 0 }),
|
||||
musizieren: new NumberField({ integer: true, initial: 0 }),
|
||||
schloesser_knacken: new NumberField({ integer: true, initial: 0 }),
|
||||
schnapps_brennen: new NumberField({ integer: true, initial: 0 }),
|
||||
schneidern: new NumberField({ integer: true, initial: 0 }),
|
||||
seefahrt: new NumberField({ integer: true, initial: 0 }),
|
||||
seiler: new NumberField({ integer: true, initial: 0 }),
|
||||
steinmetz: new NumberField({ integer: true, initial: 0 }),
|
||||
juwelier: new NumberField({ integer: true, initial: 0 }),
|
||||
stellmacher: new NumberField({ integer: true, initial: 0 }),
|
||||
stoffe_faerben: new NumberField({ integer: true, initial: 0 }),
|
||||
taetowieren: new NumberField({ integer: true, initial: 0 }),
|
||||
toepfern: new NumberField({ integer: true, initial: 0 }),
|
||||
viehzucht: new NumberField({ integer: true, initial: 0 }),
|
||||
webkunst: new NumberField({ integer: true, initial: 0 }),
|
||||
winzer: new NumberField({ integer: true, initial: 0 }),
|
||||
zimmermann: new NumberField({ integer: true, initial: 0 }),
|
||||
}),
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
prepareDerivedData() {
|
||||
super.prepareDerivedData();
|
||||
this.computed = {};
|
||||
|
||||
for (const [attribute, values] of Object.entries(this.attributes)) {
|
||||
this.computed[attribute] = Object.values(values).reduce((a, b) => a + b, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class DSA41_GegenstaendeData extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
gewicht: new NumberField({ integer: false, initial: 0, min: 0 }),
|
||||
preis: new NumberField({ integer: true, initial: 0, min: 0 }),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
class DSA41_ActorSheet extends ActorSheet {
|
||||
get template() {
|
||||
return "systems/dsa-4th-edition/src/ActorSheet.html";
|
||||
}
|
||||
}
|
||||
|
||||
class DSA41_ItemSheet extends ItemSheet {
|
||||
get template() {
|
||||
return "systems/dsa-4th-edition/src/ItemSheets/" + this.item.type + ".html";
|
||||
}
|
||||
}
|
||||
+15
-50
@@ -1,59 +1,24 @@
|
||||
{
|
||||
"id": "dsa-4th-edition",
|
||||
"title": "Das Schwarze Auge 4.1",
|
||||
"title": "Custom Das Schwarze Auge 4.1",
|
||||
"description": "",
|
||||
"version": "0.1.0",
|
||||
"compatibility": {
|
||||
"minimum": 11,
|
||||
"verified": 11
|
||||
},
|
||||
"authors": [{
|
||||
"name": "Mike",
|
||||
"url": "ammerhai.com",
|
||||
"email": "",
|
||||
"discord": ""
|
||||
}],
|
||||
"esmodules": ["mysystem.mjs"],
|
||||
"styles": ["styles/system-styles.css"],
|
||||
"packs": [{
|
||||
"name": "monsters",
|
||||
"label": "My Monsters",
|
||||
"type": "Actor"
|
||||
"esmodules": ["src/main.mjs"],
|
||||
"styles": ["src/main.css"],
|
||||
|
||||
"languages": [
|
||||
{
|
||||
"lang": "de",
|
||||
"name": "German (Deutsch)",
|
||||
"path": "src/lang/de.json"
|
||||
},
|
||||
{
|
||||
"name": "items",
|
||||
"label": "My Items",
|
||||
"type": "Item"
|
||||
}],
|
||||
"languages": [{
|
||||
"lang": "en",
|
||||
"name": "English",
|
||||
"path": "lang/en.json"
|
||||
}, {
|
||||
"lang": "de",
|
||||
"name": "Deutsch",
|
||||
"path": "lang/de.json"
|
||||
}],
|
||||
"documentTypes": {
|
||||
"Actor": {
|
||||
"hero": { "htmlFields": ["background.biography"] },
|
||||
"villain": { "htmlFields": ["background.biography"] },
|
||||
"pawn": {}
|
||||
},
|
||||
"Item": {
|
||||
"weapon": {},
|
||||
"spell": {}
|
||||
"path": "src/lang/en.json"
|
||||
}
|
||||
},
|
||||
"socket": false,
|
||||
"initiative": "1d20",
|
||||
"grid": {
|
||||
"distance": 1,
|
||||
"units": "m"
|
||||
},
|
||||
"primaryTokenAttribute": "resources.health",
|
||||
"secondaryTokenAttribute": "resources.power",
|
||||
"url": "https://your/hosted/system/repo/",
|
||||
"manifest": "https://gitea.ammerhai.com/foundry/dsa-4th-edition/raw/branch/main/system.json",
|
||||
"download": "https://your/packaged/download/archive.zip"
|
||||
],
|
||||
|
||||
"version": "0.1.5",
|
||||
"manifest": "https://gitea.ammerhai.com/foundry/dsa-4th-edition/releases/download/latest/system.json",
|
||||
"download": "https://gitea.ammerhai.com/foundry/dsa-4th-edition/releases/download/test2/dsa-4th-edition.zip"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Actor": {
|
||||
"types": [
|
||||
"Player"
|
||||
]
|
||||
},
|
||||
"Item": {
|
||||
"types": [
|
||||
"Gegenstaende",
|
||||
"Waffen",
|
||||
"Ruestungen"
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user