WIP: Char fixes and monster base

master
U~man 2020-06-28 18:33:03 +02:00
parent 2d05fe8916
commit 0178e68bf7
12 changed files with 281 additions and 48 deletions

View File

@ -1 +1,9 @@
### Old School Essentials System for Foundry VTT
### Old School Essentials System for Foundry VTT
## License
Old-School Essentials is a trademark of Necrotic Gnome.
This Foundry VTT system requires Old-School Essentials Core Rules and does not contain any copyright infringement material.
## Contributions
This system is currently under heavy development.
Feel free to grab a TO DO issue from the gitlab board. You can then do a merge request on the `development` branch.

View File

@ -8,6 +8,10 @@
"OSE.Alignment": "Alignment",
"OSE.Level": "Level",
"OSE.Experience": "Experience",
"OSE.Treasure": "Treasure type",
"OSE.Size": "Size",
"OSE.Morale": "Morale",
"OSE.Appearing": "NA",
"OSE.scores.str.long": "Strength",
"OSE.scores.str.short": "STR",
@ -29,12 +33,18 @@
"OSE.saves.spells.short": "S",
"OSE.Health": "Hit Points",
"OSE.HealthShort": "HP",
"OSE.HitDice": "Hit Dice",
"OSE.HitDiceShort": "HD",
"OSE.Movement": "Movement",
"OSE.MovementShort": "MOV",
"OSE.SpecialMovement": "Special Movement",
"OSE.ArmorClass": "Armor Class",
"OSE.ArmorClassShort": "AC",
"OSE.SpellDC": "DC",
"OSE.Thac0": "THAC0",
"OSE.Initiative": "Initiative",
"OSE.InitiativeShort": "INIT",
"OSE.category.attributes": "Attributes",

View File

@ -18,9 +18,9 @@ export class OseActorSheetMonster extends ActorSheet {
return mergeObject(super.defaultOptions, {
classes: ["ose", "sheet", "monster", "actor"],
template: "systems/ose/templates/actors/monster-sheet.html",
width: 520,
height: 580,
resizable: false,
width: 450,
height: 560,
resizable: true,
tabs: [
{
navSelector: ".tabs",

View File

@ -8,6 +8,23 @@
padding: 0;
}
.panel {
border: 1px solid $colorDark;
.panel-title {
color: whitesmoke;
background: $colorDark;
line-height: 14px;
height: 20px;
text-align: center;
margin: 0;
padding: 4px;
}
.panel-content {
margin: 0;
padding: 0;
}
}
/* Header Summary Details */
.header-details {
h1 {
@ -75,6 +92,7 @@
.attribute-name {
color: whitesmoke;
padding: 2px;
margin: 0;
background: $colorDark;
text-align: center;
}
@ -85,6 +103,22 @@
}
}
}
.attribute-group {
.attributes {
.attribute {
display: flex;
flex-direction: row;
.attribute-name {
width: 40px;
margin: 0;
line-height: 28px;
}
}
}
}
.editor {
height: 300px;
}
.inventory {
.item-entry {
padding: 0;

View File

@ -18,40 +18,8 @@
/* Sheet Body */
/* ----------------------------------------- */
.sheet-body {
.attribute-group {
.attributes {
.attribute {
display: flex;
flex-direction: row;
.attribute-name {
width: 40px;
margin: 0;
line-height: 28px;
}
}
}
}
.editor {
height: 300px;
}
}
.panel {
border: 1px solid $colorDark;
.panel-title {
color: whitesmoke;
background: $colorDark;
line-height: 14px;
height: 20px;
text-align: center;
margin: 0;
padding: 4px;
}
.panel-content {
margin: 0;
padding: 0;
}
}
.abilities {
.panel-content {

View File

@ -0,0 +1,15 @@
.ose.actor.monster {
min-height: 565px;
min-width: 460px;
.sheet-body {
.editor {
height: 300px;
}
}
.abilities {
.panel-content {
height: 230px;
overflow: auto;
}
}
}

View File

@ -74,7 +74,7 @@
"value": 0,
"mod": 0
},
"thaco": {
"thac0": {
"value": 19,
"mod": 0
},
@ -101,6 +101,8 @@
"alignment": "",
"xp": 0,
"treasure": "",
"size": "",
"appearing": "",
"morale": 0
},
"saves": {
@ -110,7 +112,7 @@
"B": 10,
"S": 10
},
"thaco": {
"thac0": {
"value": 19,
"mod": 0
},
@ -126,6 +128,29 @@
"movement": {
"base": 0,
"encounter": 0
},
"spells": {
"dc": 0,
"lvl1": {
"value": 0,
"max": 0
},
"lvl2": {
"value": 0,
"max": 0
},
"lvl3": {
"value": 0,
"max": 0
},
"lvl4": {
"value": 0,
"max": 0
},
"lvl5": {
"value": 0,
"max": 0
}
}
}
},

View File

@ -22,11 +22,7 @@
{{! Sheet Body }}
<section class="sheet-body">
{{! Attributes Tab }}
<div
class="tab"
data-group="primary"
data-tab="attributes"
>
<div class="tab" data-group="primary" data-tab="attributes">
{{> "systems/ose/templates/actors/partials/character-attributes-tab.html"}}
</div>
<div class="tab" data-group="primary" data-tab="inventory">
@ -40,4 +36,4 @@
button=true owner=owner editable=editable}}
</div>
</section>
</form>
</form>

View File

@ -0,0 +1,33 @@
<form class="{{cssClass}}" autocomplete="off">
{{! Sheet Header }}
<header class="sheet-header flexrow">
{{> "systems/ose/templates/actors/partials/monster-header.html"}}
</header>
{{! Sheet Tab Navigation }}
<nav class="sheet-tabs tabs flexrow" data-group="primary">
<a class="item" data-tab="attributes">
{{localize "OSE.category.attributes"}}
</a>
<a class="item" data-tab="spells">
{{localize "OSE.category.spells"}}
</a>
<a class="item" data-tab="notes">
{{localize "OSE.category.notes"}}
</a>
</nav>
{{! Sheet Body }}
<section class="sheet-body">
{{! Attributes Tab }}
<div class="tab" data-group="primary" data-tab="attributes">
{{> "systems/ose/templates/actors/partials/monster-attributes-tab.html"}}
</div>
<div class="tab" data-group="primary" data-tab="spells">
{{> "systems/ose/templates/actors/partials/character-spells-tab.html"}}
</div>
<div class="tab" data-group="primary" data-tab="notes">
{{editor content=data.details.biography target="data.details.biography"
button=true owner=owner editable=editable}}
</div>
</section>
</form>

View File

@ -1,7 +1,7 @@
<section class="flexrow">
<ul class="attributes flexrow">
<li class="attribute health">
<h4 class="attribute-name box-title">{{ localize "OSE.Health" }}</h4>
<h4 class="attribute-name box-title">{{ localize "OSE.HealthShort" }}</h4>
<div class="attribute-value multiple">
<input name="data.hp.value" type="text" value="{{data.hp.value}}" data-dtype="Number"
placeholder="10" />
@ -10,21 +10,28 @@
</div>
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.ArmorClass" }}</h4>
<h4 class="attribute-name box-title">{{ localize "OSE.ArmorClassShort" }}</h4>
<div class="attribute-value">
<input name="data.ac.value" type="text" value="{{data.ac.value}}" data-dtype="Number"
placeholder="10" data-dtype="Number" />
</div>
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.Initiative" }}</h4>
<h4 class="attribute-name box-title">{{ localize "OSE.Thac0" }}</h4>
<div class="attribute-value">
<input name="data.thac0.value" type="text" value="{{data.thac0.value}}" placeholder="0"
data-dtype="Number" />
</div>
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.InitiativeShort" }}</h4>
<div class="attribute-value">
<input name="data.initiative.value" type="text" value="{{data.initiative.value}}"
placeholder="0" data-dtype="Number" />
</div>
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.Movement" }}</h4>
<h4 class="attribute-name box-title">{{ localize "OSE.MovementShort" }}</h4>
<div class="attribute-value">
<input name="data.movement.value" type="text" value="{{data.movement.value}}"
placeholder="0" data-dtype="Number" />

View File

@ -0,0 +1,97 @@
<section class="flexrow">
<ul class="attributes flexrow">
<li class="attribute health">
<h4 class="attribute-name box-title">{{ localize "OSE.HealthShort" }}</h4>
<div class="attribute-value multiple">
<input name="data.hp.value" type="text" value="{{data.hp.value}}" data-dtype="Number"
placeholder="10" />
<span class="sep"> / </span>
<input name="data.hp.max" type="text" value="{{data.hp.max}}" data-dtype="Number" placeholder="10" />
</div>
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.ArmorClassShort" }}</h4>
<div class="attribute-value">
<input name="data.ac.value" type="text" value="{{data.ac.value}}" data-dtype="Number" placeholder="10"
data-dtype="Number" />
</div>
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.MovementShort" }}</h4>
<div class="attribute-value">
<input name="data.movement.value" type="text" value="{{data.movement.value}}" placeholder="0"
data-dtype="Number" />
</div>
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.Thac0" }}</h4>
<div class="attribute-value">
<input name="data.thac0.value" type="text" value="{{data.thac0.value}}" placeholder="0"
data-dtype="Number" />
</div>
</li>
</section>
<section class="flexrow">
{{!-- Skills and abilities --}}
<div class="flex3 panel abilities">
<h4 class="panel-title">{{localize 'OSE.panel.abilities'}}</h4>
<ul class="panel-content inventory">
<div class="">
{{#each abilities as |item|}}
<li class="item-entry">
<div class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name flexrow">
<div class="item-image" style="background-image: url({{item.img}})"></div>
<h4 title="{{item.name}}">
{{item.name~}}
</h4>
</div>
<div class="item-controls">
{{#if ../owner}}
<a class="item-control item-edit" title='{{localize "Ose.Edit"}}'><i
class="fas fa-edit"></i></a>
<a class="item-control item-delete" title='{{localize "Ose.Delete"}}'><i
class="fas fa-trash"></i></a>
{{/if}}
</div>
</div>
</li>
{{/each}}
</div>
</ul>
</div>
{{!-- Saving throws --}}
<div class="attribute-group">
<ul class="attributes">
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.saves.death.short" }}</h4>
<div class="attribute-value">
<input name="data.saves.d.value" type="text" value="{{data.saves.d.value}}" placeholder="0"
data-dtype="Number" />
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.saves.wands.short" }}</h4>
<div class="attribute-value">
<input name="data.saves.w.value" type="text" value="{{data.saves.w.value}}" placeholder="0"
data-dtype="Number" />
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.saves.paralysis.short" }}</h4>
<div class="attribute-value">
<input name="data.saves.p.value" type="text" value="{{data.saves.p.value}}" placeholder="0"
data-dtype="Number" />
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.saves.breath.short" }}</h4>
<div class="attribute-value">
<input name="data.saves.b.value" type="text" value="{{data.saves.b.value}}" placeholder="0"
data-dtype="Number" />
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{ localize "OSE.saves.spells.short" }}</h4>
<div class="attribute-value">
<input name="data.saves.s.value" type="text" value="{{data.saves.s.value}}" placeholder="0" />
</li>
</ul>
</div>
</section>

View File

@ -0,0 +1,40 @@
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" />
<section class="header-details flexrow">
<h1 class="charname">
<input name="name" type="text" value="{{actor.name}}" placeholder="{{localize 'OSE.Name'}}" />
</h1>
<ul class="summary flexrow">
<li class="flex2">
<input type="text" name="data.details.alignment" value="{{data.details.alignment}}"
placeholder="{{ localize 'OSE.Alignment' }}" />
<label>{{localize 'OSE.Alignment'}}</label>
</li>
<li class="flex2">
<input type="text" name="data.details.treasure" value="{{data.details.treasure}}"
placeholder="{{ localize 'OSE.Treasure' }}" />
<label>{{localize 'OSE.Treasure'}}</label>
</li>
<li>
<input type="text" name="data.details.appearing" value="{{data.details.appearing}}"
placeholder="{{ localize 'OSE.Appearing' }}" />
<label>{{localize 'OSE.Appearing'}}</label>
</li>
</ul>
<ul class="summary flexrow">
<li class="flex2">
<input type="text" name="data.details.size" value="{{data.details.size}}"
placeholder="{{ localize 'OSE.Size' }}" />
<label>{{localize 'OSE.Size'}}</label>
</li>
<li class="flex2">
<input type="text" name="data.details.xp" value="{{data.details.xp}}"
placeholder="{{ localize 'OSE.Experience' }}" />
<label>{{localize 'OSE.Experience'}}</label>
</li>
<li>
<input type="text" name="data.details.morale" value="{{data.details.morale}}"
placeholder="{{ localize 'OSE.Morale' }}" />
<label>{{localize 'OSE.Morale'}}</label>
</li>
</ul>
</section>