Compare commits

...

2 Commits

3 changed files with 77 additions and 64 deletions

View File

@ -81,49 +81,28 @@ export class SkillDataModel extends BaseItem {
async #combatRoll(rollMode, mode) {
const owner = this.parent.parent
const rollData = owner.getRollData()
let targetNumber = 0
if (mode === this.SKILL_MODE.ATTACK) {
targetNumber = this.at + owner.system.at.basis
owner.rollAttack({
skill: this.parent._id,
target: owner._id,
mod: 0,
penalty: 0,
actor: owner,
circumstance: 0,
targetNumber: this.at + owner.system.at.basis
})
} else {
targetNumber = this.pa + owner.system.pa.basis
owner.rollDefense({
skill: this.parent._id,
target: owner._id,
mod: 0,
penalty: 0,
actor: owner,
circumstance: 0,
targetNumber: this.pa + owner.system.pa.basis
})
}
// TODO: Migrate to DSARoll
let roll1 = new Roll(`1d20cs<${targetNumber}`, owner.getRollData());
let evaluated1 = (await roll1.evaluate())
const rolledValue = evaluated1.terms[0].results[0].result
if (rolledValue === 1 || rolledValue === 20) { // TODO: Modify this target
// fill with actual evaluation (targetNumber should be reduced by X and roll against that again)
}
let message = ""
if (mode === this.SKILL_MODE.ATTACK) {
if (rolledValue <= targetNumber) {
message = `Würde treffen [${rolledValue}]`
} else {
message = `Verfehlt [${rolledValue}]`
}
} else {
if (rolledValue <= targetNumber) {
message = `Würde parrieren [${rolledValue}]`
} else {
message = `Verfehlt die parade [${rolledValue}]`
}
}
evaluated1.toMessage({
speaker: ChatMessage.getSpeaker({actor: owner}),
flavor: message,
rollMode,
}, {
})
}
async #talentRoll(rollMode) {

View File

@ -477,32 +477,59 @@ export class Character extends Actor {
const maneuver = data.manuever
const weapon = this.itemTypes["Equipment"].find(p => p._id === data.weapon)
const skill = data.skill !== "Ausweichen" ? this.itemTypes["Skill"].find(p => p._id === data.skill) : "Ausweichen"
//const target = game.actors.get(game.scenes.current.tokens.find(p => p._id === data.target).actorId)
// TODO: Migrate to DSARoll
const roll = new Roll("1d20cs<" + data.targetNumber)
const evaluated1 = (await roll.evaluate())
let flavor = ''
if (skill === "Ausweichen") {
flavor = `Versucht auszuweichen<br/>${data.modDescription}`
} else {
flavor = `Verteidigt sich gegen einen Angriff mit ${weapon.name} (${skill.name})<br/>${data.modDescription}`
let target = 0
try {
target = game.actors.get(game.scenes.current.tokens.find(p => p._id === data.target).actorId)
} catch (e) {
target = game.actors.get(data.target)
}
await evaluated1.toMessage({
speaker: ChatMessage.getSpeaker({actor: this}),
flavor,
rollMode: "publicroll",
let evaluated = await evaluateRoll("1d20", {
value: data.targetNumber,
mod: data.mod + data.penalty,
owner: this,
werte: [0]
})
const context = {
weapon: weapon.name,
maneuver,
target: this.name,
attacker: this._id,
mod: data.mod,
penalty: data.penalty,
circumstance: data.circumstance,
die: evaluated.evaluated.terms[0].results[0].result,
value: data.targetNumber,
}
if (skill === "Ausweichen") {
context.weapon = "Ausweichen"
}
if (evaluated.tap>0) {
context.remaining = evaluated.tap
context.hit = true
context.critical = evaluated.meisterlich
} else {
context.missing = evaluated.tap
context.miss = true
context.fumble = evaluated.patzer
}
await displayRoll(evaluated.evaluated, game.user, data.actor, false, false, 'systems/DSA_4-1/templates/chat/attack-chat-message.hbs', context)
}
async rollAttack(data) {
const maneuver = data.manuever
const weapon = this.itemTypes["Equipment"].find(p => p._id === data.weapon)
const skill = this.itemTypes["Skill"].find(p => p._id === data.skill)
const target = game.actors.get(game.scenes.current.tokens.find(p => p._id === data.target).actorId)
const weapon = this.itemTypes["Equipment"].find(p => p._id === data.weapon) ?? this.itemTypes["Skill"].find(p => p._id === data.skill)
let target = 0
try {
target = game.actors.get(game.scenes.current.tokens.find(p => p._id === data.target).actorId)
} catch (e) {
target = game.actors.get(data.target)
}
let evaluated = await evaluateRoll("1d20", {
value: data.targetNumber,
@ -514,7 +541,6 @@ export class Character extends Actor {
const context = {
weapon: weapon.name,
maneuver,
skill: skill.name,
target: target.name,
attacker: this._id,
mod: data.mod,
@ -535,12 +561,6 @@ export class Character extends Actor {
}
await displayRoll(evaluated.evaluated, game.user, data.actor, false, false, 'systems/DSA_4-1/templates/chat/attack-chat-message.hbs', context)
/*await evaluated1.toMessage({
speaker: ChatMessage.getSpeaker({actor: this}),
flavor: `Attackiert ${target.name} mit ${weapon.name} (${skill.name})<br/>${data.modDescription}`,
rollMode: "publicroll",
})*/
}
/**

View File

@ -0,0 +1,14 @@
<div>
<div>{{weapon}} ({{value}})</div>
<div>Gewürfelt: {{die}}</div>
<div>Erschwernis: {{circumstance}}</div>
<div>Modifikation: {{mod}}</div>
<hr>
{{#if missing}}
<div>Gefehlt: {{missing}} {{#if fumble}}Patzer{{/if}}</div>
{{else}}
<div>Übrig: {{remaining}} {{#if critical}}Meisterlich{{/if}}</div>
{{/if}}
</div>