WIP: Char fixes and monster base
							parent
							
								
									2d05fe8916
								
							
						
					
					
						commit
						0178e68bf7
					
				|  | @ -1 +1,9 @@ | |||
| ### 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"> | ||||
|  |  | |||
|  | @ -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