diff --git a/src/module/data/skill.mjs b/src/module/data/skill.mjs
index 0e28dbf9..db6eaa55 100644
--- a/src/module/data/skill.mjs
+++ b/src/module/data/skill.mjs
@@ -93,7 +93,15 @@ export class SkillDataModel extends BaseItem {
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
+ })
}
}
diff --git a/src/module/documents/character.mjs b/src/module/documents/character.mjs
index e20e1506..742d283f 100644
--- a/src/module/documents/character.mjs
+++ b/src/module/documents/character.mjs
@@ -477,25 +477,48 @@ 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
${data.modDescription}`
- } else {
- flavor = `Verteidigt sich gegen einen Angriff mit ${weapon.name} (${skill.name})
${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) {
@@ -538,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})
${data.modDescription}`,
- rollMode: "publicroll",
- })*/
}
/**
diff --git a/src/templates/chat/defense-chat-message.hbs b/src/templates/chat/defense-chat-message.hbs
new file mode 100644
index 00000000..d5d878c4
--- /dev/null
+++ b/src/templates/chat/defense-chat-message.hbs
@@ -0,0 +1,14 @@
+
+
+