WIP: Char fixes and monster base
parent
2d05fe8916
commit
0178e68bf7
|
@ -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.Alignment": "Alignment",
|
||||||
"OSE.Level": "Level",
|
"OSE.Level": "Level",
|
||||||
"OSE.Experience": "Experience",
|
"OSE.Experience": "Experience",
|
||||||
|
"OSE.Treasure": "Treasure type",
|
||||||
|
"OSE.Size": "Size",
|
||||||
|
"OSE.Morale": "Morale",
|
||||||
|
"OSE.Appearing": "NA",
|
||||||
|
|
||||||
"OSE.scores.str.long": "Strength",
|
"OSE.scores.str.long": "Strength",
|
||||||
"OSE.scores.str.short": "STR",
|
"OSE.scores.str.short": "STR",
|
||||||
|
@ -29,12 +33,18 @@
|
||||||
"OSE.saves.spells.short": "S",
|
"OSE.saves.spells.short": "S",
|
||||||
|
|
||||||
"OSE.Health": "Hit Points",
|
"OSE.Health": "Hit Points",
|
||||||
|
"OSE.HealthShort": "HP",
|
||||||
"OSE.HitDice": "Hit Dice",
|
"OSE.HitDice": "Hit Dice",
|
||||||
|
"OSE.HitDiceShort": "HD",
|
||||||
"OSE.Movement": "Movement",
|
"OSE.Movement": "Movement",
|
||||||
|
"OSE.MovementShort": "MOV",
|
||||||
"OSE.SpecialMovement": "Special Movement",
|
"OSE.SpecialMovement": "Special Movement",
|
||||||
"OSE.ArmorClass": "Armor Class",
|
"OSE.ArmorClass": "Armor Class",
|
||||||
|
"OSE.ArmorClassShort": "AC",
|
||||||
"OSE.SpellDC": "DC",
|
"OSE.SpellDC": "DC",
|
||||||
|
"OSE.Thac0": "THAC0",
|
||||||
"OSE.Initiative": "Initiative",
|
"OSE.Initiative": "Initiative",
|
||||||
|
"OSE.InitiativeShort": "INIT",
|
||||||
|
|
||||||
|
|
||||||
"OSE.category.attributes": "Attributes",
|
"OSE.category.attributes": "Attributes",
|
||||||
|
|
|
@ -18,9 +18,9 @@ export class OseActorSheetMonster extends ActorSheet {
|
||||||
return mergeObject(super.defaultOptions, {
|
return mergeObject(super.defaultOptions, {
|
||||||
classes: ["ose", "sheet", "monster", "actor"],
|
classes: ["ose", "sheet", "monster", "actor"],
|
||||||
template: "systems/ose/templates/actors/monster-sheet.html",
|
template: "systems/ose/templates/actors/monster-sheet.html",
|
||||||
width: 520,
|
width: 450,
|
||||||
height: 580,
|
height: 560,
|
||||||
resizable: false,
|
resizable: true,
|
||||||
tabs: [
|
tabs: [
|
||||||
{
|
{
|
||||||
navSelector: ".tabs",
|
navSelector: ".tabs",
|
||||||
|
|
|
@ -8,6 +8,23 @@
|
||||||
padding: 0;
|
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 Summary Details */
|
||||||
.header-details {
|
.header-details {
|
||||||
h1 {
|
h1 {
|
||||||
|
@ -75,6 +92,7 @@
|
||||||
.attribute-name {
|
.attribute-name {
|
||||||
color: whitesmoke;
|
color: whitesmoke;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
|
margin: 0;
|
||||||
background: $colorDark;
|
background: $colorDark;
|
||||||
text-align: center;
|
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 {
|
.inventory {
|
||||||
.item-entry {
|
.item-entry {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
|
@ -18,40 +18,8 @@
|
||||||
/* Sheet Body */
|
/* Sheet Body */
|
||||||
/* ----------------------------------------- */
|
/* ----------------------------------------- */
|
||||||
.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 {
|
.abilities {
|
||||||
.panel-content {
|
.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,
|
"value": 0,
|
||||||
"mod": 0
|
"mod": 0
|
||||||
},
|
},
|
||||||
"thaco": {
|
"thac0": {
|
||||||
"value": 19,
|
"value": 19,
|
||||||
"mod": 0
|
"mod": 0
|
||||||
},
|
},
|
||||||
|
@ -101,6 +101,8 @@
|
||||||
"alignment": "",
|
"alignment": "",
|
||||||
"xp": 0,
|
"xp": 0,
|
||||||
"treasure": "",
|
"treasure": "",
|
||||||
|
"size": "",
|
||||||
|
"appearing": "",
|
||||||
"morale": 0
|
"morale": 0
|
||||||
},
|
},
|
||||||
"saves": {
|
"saves": {
|
||||||
|
@ -110,7 +112,7 @@
|
||||||
"B": 10,
|
"B": 10,
|
||||||
"S": 10
|
"S": 10
|
||||||
},
|
},
|
||||||
"thaco": {
|
"thac0": {
|
||||||
"value": 19,
|
"value": 19,
|
||||||
"mod": 0
|
"mod": 0
|
||||||
},
|
},
|
||||||
|
@ -126,6 +128,29 @@
|
||||||
"movement": {
|
"movement": {
|
||||||
"base": 0,
|
"base": 0,
|
||||||
"encounter": 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 }}
|
{{! Sheet Body }}
|
||||||
<section class="sheet-body">
|
<section class="sheet-body">
|
||||||
{{! Attributes Tab }}
|
{{! Attributes Tab }}
|
||||||
<div
|
<div class="tab" data-group="primary" data-tab="attributes">
|
||||||
class="tab"
|
|
||||||
data-group="primary"
|
|
||||||
data-tab="attributes"
|
|
||||||
>
|
|
||||||
{{> "systems/ose/templates/actors/partials/character-attributes-tab.html"}}
|
{{> "systems/ose/templates/actors/partials/character-attributes-tab.html"}}
|
||||||
</div>
|
</div>
|
||||||
<div class="tab" data-group="primary" data-tab="inventory">
|
<div class="tab" data-group="primary" data-tab="inventory">
|
||||||
|
|
|
@ -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">
|
<section class="flexrow">
|
||||||
<ul class="attributes flexrow">
|
<ul class="attributes flexrow">
|
||||||
<li class="attribute health">
|
<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">
|
<div class="attribute-value multiple">
|
||||||
<input name="data.hp.value" type="text" value="{{data.hp.value}}" data-dtype="Number"
|
<input name="data.hp.value" type="text" value="{{data.hp.value}}" data-dtype="Number"
|
||||||
placeholder="10" />
|
placeholder="10" />
|
||||||
|
@ -10,21 +10,28 @@
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="attribute">
|
<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">
|
<div class="attribute-value">
|
||||||
<input name="data.ac.value" type="text" value="{{data.ac.value}}" data-dtype="Number"
|
<input name="data.ac.value" type="text" value="{{data.ac.value}}" data-dtype="Number"
|
||||||
placeholder="10" data-dtype="Number" />
|
placeholder="10" data-dtype="Number" />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="attribute">
|
<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">
|
<div class="attribute-value">
|
||||||
<input name="data.initiative.value" type="text" value="{{data.initiative.value}}"
|
<input name="data.initiative.value" type="text" value="{{data.initiative.value}}"
|
||||||
placeholder="0" data-dtype="Number" />
|
placeholder="0" data-dtype="Number" />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="attribute">
|
<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">
|
<div class="attribute-value">
|
||||||
<input name="data.movement.value" type="text" value="{{data.movement.value}}"
|
<input name="data.movement.value" type="text" value="{{data.movement.value}}"
|
||||||
placeholder="0" data-dtype="Number" />
|
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