WIP: Char fixes and monster base
parent
2d05fe8916
commit
0178e68bf7
10
README.md
10
README.md
|
@ -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.
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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" />
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
Loading…
Reference in New Issue