ENH: Appearing rolls

master
U~man 2020-07-11 23:05:10 +02:00
parent 5946fbf804
commit 13f4e9ac7d
6 changed files with 83 additions and 15 deletions

View File

@ -38,6 +38,7 @@
"OSE.RetainerWage": "Wage",
"OSE.RetainerUpkeep": "Upkeep",
"OSE.Appearing": "NA",
"OSE.AppearingCheck": "Appearing Check",
"OSE.Attack": "Attack",
"OSE.Encumbrance": "Encumbrance",

View File

@ -244,6 +244,37 @@ export class OseActor extends Actor {
});
}
rollAppearing(options = {}) {
const rollParts = [];
let label = "";
if (options.check == "wilderness") {
rollParts.push(this.data.data.details.appearing.w);
label = "(2)";
} else {
rollParts.push(this.data.data.details.appearing.d);
label = "(1)";
}
const data = {
...this.data,
...{
rollData: {
type: "Appearing",
},
},
};
// Roll and return
return OseDice.Roll({
event: options.event,
parts: rollParts,
data: data,
skipDialog: true,
speaker: ChatMessage.getSpeaker({ actor: this }),
flavor: `${game.i18n.localize('OSE.AppearingCheck')} ${label}`,
title: `${game.i18n.localize('OSE.AppearingCheck')} ${label}`,
});
}
rollExploration(expl, options = {}) {
const label = game.i18n.localize(`OSE.exploration.${expl}.long`);
const rollParts = ["1d6"];

View File

@ -179,6 +179,12 @@ export class OseActorSheetMonster extends OseActorSheet {
actorObject.rollReaction({ event: event });
});
html.find(".appearing-check a").click((ev) => {
let actorObject = this.actor;
let check = $(ev.currentTarget).closest('.check-field').data('check');
actorObject.rollAppearing({ event: event, check: check });
});
html
.find(".counter input")
.click((ev) => ev.target.select())

View File

@ -3,11 +3,21 @@
min-width: 460px;
.header-details {
.summary {
.morale-check,.reaction-check {
line-height: 35px;
flex: 0 0 20px;
.check-field {
&:hover {
color: $colorDark;
.check {
display: block;
}
}
.check {
display: none;
line-height: 35px;
flex: 0 0 20px;
position: absolute;
font-size: 12px;
&:hover {
color: $colorDark;
}
}
}
}
@ -21,6 +31,11 @@
justify-content: space-around;
flex-direction: column;
height: 100%;
.attribute-row {
.attributes {
justify-content: space-between;
}
}
.attribute-row {
.attribute-group {
margin: 5px;
@ -32,7 +47,7 @@
flex: 0 0 85px;
}
&.saving-throw {
flex: 1;
flex: 0 0 40px;
}
}
}

View File

@ -149,7 +149,10 @@
"table": "",
"type": ""
},
"appearing": "",
"appearing": {
"d": 0,
"w": 0
},
"morale": 0
},
"attacks": ""

View File

@ -4,22 +4,34 @@
<input name="name" type="text" value="{{actor.name}}" placeholder="{{localize 'OSE.Name'}}" />
</h1>
<ul class="summary flexrow">
<li class="flex">
<input type="text" name="data.details.alignment" value="{{data.details.alignment}}" />
<label>{{localize 'OSE.Alignment'}}</label>
<li class="flex2 flexrow check-field">
<div>
<input type="text" name="data.details.alignment" value="{{data.details.alignment}}" />
<label>{{localize 'OSE.Alignment'}}</label>
</div>
<div class="check reaction-check" title="{{localize 'OSE.ReactionCheck'}}"><a><i class="fas fa-dice"></i></a></div>
</li>
<li class="reaction-check" title="{{localize 'OSE.ReactionCheck'}}"><a><i class="fas fa-dice"></i></a></li>
<li>
<input type="text" name="data.details.appearing" value="{{data.details.appearing}}" />
<label>{{localize 'OSE.Appearing'}}</label>
<li class="flexrow check-field" data-check="dungeon">
<div>
<input type="text" name="data.details.appearing.d" value="{{data.details.appearing.d}}" />
<label>{{localize 'OSE.Appearing'}}</label>
</div>
<div class="check appearing-check" title="{{localize 'OSE.AppearingCheck'}}"><a><i class="fas fa-dice"></i></a></div>
</li>
<li class="flexrow check-field" data-check="wilderness">
<div>
(<input type="text" name="data.details.appearing.w" value="{{data.details.appearing.w}}" />)
<label>{{localize 'OSE.Appearing'}}</label>
</div>
<div class="check appearing-check" title="{{localize 'OSE.AppearingCheck'}}"><a><i class="fas fa-dice"></i></a></div>
</li>
{{#if config.morale}}
<li class="flexrow">
<li class="flexrow check-field">
<div>
<input type="text" name="data.details.morale" value="{{data.details.morale}}" />
<label>{{localize 'OSE.Morale'}}</label>
</div>
<div class="morale-check" title="{{localize 'OSE.MoraleCheck'}}"><a><i class="fas fa-dice"></i></a></div>
<div class="check morale-check" title="{{localize 'OSE.MoraleCheck'}}"><a><i class="fas fa-dice"></i></a></div>
</li>
{{/if}}
</ul>