Skip to content

Commit

Permalink
Misc correction, difficult skills and add Focus
Browse files Browse the repository at this point in the history
  • Loading branch information
AnthonyMonette committed Jun 13, 2021
1 parent 7772b18 commit 6f2cedc
Show file tree
Hide file tree
Showing 9 changed files with 138 additions and 102 deletions.
28 changes: 14 additions & 14 deletions lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,21 +84,21 @@
"WITCHER.Actor.DerStat.HP": "Max HP",
"WITCHER.Actor.DerStat.Sta": "STA",
"WITCHER.Actor.DerStat.Resolve": "Resolve",
"WITCHER.Actor.DerStat.Focus": "FOCUS",
"WITCHER.Actor.DerStat.Focus": "Focus",
"WITCHER.Actor.DerStat.Punch": "Punch",
"WITCHER.Actor.DerStat.Kick": "Kick",

"WITCHER.SkIntAwareness": "Awareness",
"WITCHER.SkIntBusiness": "Business",
"WITCHER.SkIntDeduction": "Deduction",
"WITCHER.SkIntEducation": "Education",
"WITCHER.SkIntCommon": "Common Speech",
"WITCHER.SkIntElder": "Elder Speech",
"WITCHER.SkIntDwarven": "Dwarven",
"WITCHER.SkIntMonster": "Monster Lore",
"WITCHER.SkIntCommon": "Common Speech (2)",
"WITCHER.SkIntElder": "Elder Speech (2)",
"WITCHER.SkIntDwarven": "Dwarven (2)",
"WITCHER.SkIntMonster": "Monster Lore (2)",
"WITCHER.SkIntSocialEt": "Social Etiquette",
"WITCHER.SkIntStreet": "Streetwise",
"WITCHER.SkIntTactics": "Tactics",
"WITCHER.SkIntTactics": "Tactics (2)",
"WITCHER.SkIntTeaching": "Teaching",
"WITCHER.SkIntWilderness": "Wilderness Survival",

Expand Down Expand Up @@ -131,21 +131,21 @@
"WITCHER.SkEmpPerformance": "Performance",
"WITCHER.SkEmpSeduction": "Seduction",

"WITCHER.SkCraAlchemy": "Alchemy",
"WITCHER.SkCraCrafting": "Crafting",
"WITCHER.SkCraAlchemy": "Alchemy (2)",
"WITCHER.SkCraCrafting": "Crafting (2)",
"WITCHER.SkCraDisguise": "Disguise",
"WITCHER.SkCraAid": "First Aid",
"WITCHER.SkCraForge": "Forgery",
"WITCHER.SkCraPick": "Pick Lock",
"WITCHER.SkCraTrapCraft": "Trap Crafting",
"WITCHER.SkCraTrapCraft": "Trap Crafting (2)",

"WITCHER.SkWillCourage": "Courage",
"WITCHER.SkWillHex": "Hex Weaving",
"WITCHER.SkWillHex": "Hex Weaving (2)",
"WITCHER.SkWillIntim": "Intimidation",
"WITCHER.SkWillSpellcast": "Spell Casting",
"WITCHER.SkWillResistMag": "Resist Magic",
"WITCHER.SkWillSpellcast": "Spell Casting (2)",
"WITCHER.SkWillResistMag": "Resist Magic (2)",
"WITCHER.SkWillResistCoer": "Resist Coercion",
"WITCHER.SkWillRitCraft": "Ritual Crafting",
"WITCHER.SkWillRitCraft": "Ritual Crafting (2)",


"WITCHER.SocialStanding": "Social Standing",
Expand All @@ -162,5 +162,5 @@
"WITCHER.LifeEvents": "Life Events",
"WITCHER.Decade": "Decade",
"WITCHER.Event": "Event",
"WITCHER.DeathSave": "Stun/Death"
"WITCHER.DeathSave": "Stun/Death Save"
}
54 changes: 31 additions & 23 deletions module/chat.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { getRandomInt } from "./witcher.js";

export async function RollCustomMessage(rollResult, template, actor, extraData) {
let templateContext = {
...extraData,
Expand All @@ -23,29 +25,35 @@ export function addChatListeners(html){
function onDamage(event) {
let messageData = {}
console.log(event.currentTarget)
let img = event.currentTarget.getAttribute("data-img")
let name = event.currentTarget.getAttribute("data-name")
let damageFormula = event.currentTarget.getAttribute("data-dmg")
let location = event.currentTarget.getAttribute("data-location")
let strike = event.currentTarget.getAttribute("data-strike")
let effects = JSON.parse(event.currentTarget.getAttribute("data-effects"))

messageData.flavor = `<h1><img src="${item.img}" class="item-img" />Damage: ${item.name} </h1>`;
messageData.flavor = `<h1><img src="${img}" class="item-img" />Damage: ${name} </h1>`;

new Roll("1d10").roll().toMessage(messageData)
// if (strike == "strong") {
// damageFormula = `(${damageFormula})*2`;
// messageData.flavor += `<div>Strong Attack</div>`;
// }
// else if(strike == "fast"){
// messageData.flavor += `<div>Fast Attack ${i + 1}</div>`;
// }
// messageData.flavor += `<div><b>Location:</b> ${touchedLocation}</div>`;
// if (item.data.data.effects) {
// messageData.flavor += `<b>Effects:</b>`;
// item.data.data.effects.forEach(element => {
// messageData.flavor += `<div class="flex">${element.name}`;
// if (element.percentage) {
// let rollPercentage = getRandomInt(100);
// messageData.flavor += `<div>(${element.percentage}%) <b>Rolled:</b> ${rollPercentage}</div>`;
// }
// messageData.flavor += `</div>`;
// });
// }
// console.log(damageFormula)
// new Roll(damageFormula).roll().toMessage(messageData)
if (strike == "strong") {
damageFormula = `(${damageFormula})*2`;
messageData.flavor += `<div>Strong Attack</div>`;
}
else if(strike == "fast"){
messageData.flavor += `<div>Fast Attack ${i + 1}</div>`;
}
messageData.flavor += `<div><b>Location:</b> ${location}</div>`;
console.log(effects)
if (effects) {
messageData.flavor += `<b>Effects:</b>`;
effects.forEach(element => {
messageData.flavor += `<div class="flex">${element.name}`;
if (element.percentage) {
let rollPercentage = getRandomInt(100);
messageData.flavor += `<div>(${element.percentage}%) <b>Rolled:</b> ${rollPercentage}</div>`;
}
messageData.flavor += `</div>`;
});
}
console.log(damageFormula)
new Roll(damageFormula).roll().toMessage(messageData)
}
92 changes: 36 additions & 56 deletions module/sheets/WitcherActorSheet.js
Original file line number Diff line number Diff line change
Expand Up @@ -743,43 +743,41 @@ export default class WitcherActorSheet extends ActorSheet {

if (item.data.data.isMelee){
attFormula += `+${this.actor.data.data.stats.ref.current}`;
switch(item.data.data.attackSkill){
case "Brawling":
attFormula += `+${this.actor.data.data.skills.ref.brawling.value}`;
break;
case "Melee":
attFormula += `+${this.actor.data.data.skills.ref.melee.value}`;
break;
case "Small Blades":
attFormula += `+${this.actor.data.data.skills.ref.smallblades.value}`;
break;
case "Staff/Spear":
attFormula += `+${this.actor.data.data.skills.ref.staffspear.value}`;
break;
case "Swordsmanship":
attFormula += `+${this.actor.data.data.skills.ref.swordsmanship.value}`;
break;
}
}
else {
attFormula += `+${this.actor.data.data.stats.dex.current}`;
switch(item.data.data.attackSkill){
case "Archery":
attFormula += `+${this.actor.data.data.skills.dex.archery.value}`;
break;
case "Athletics":
attFormula += `+${this.actor.data.data.skills.dex.athletics.value}`;
break;
case "Crossbow":
attFormula += `+${this.actor.data.data.skills.dex.crossbow.value}`;
break;
}
}

switch(item.data.data.attackSkill){
case "Brawling":
attFormula += `+${this.actor.data.data.skills.ref.brawling.value}`;
break;
case "Melee":
attFormula += `+${this.actor.data.data.skills.ref.melee.value}`;
break;
case "Small Blades":
attFormula += `+${this.actor.data.data.skills.ref.smallblades.value}`;
break;
case "Staff/Spear":
attFormula += `+${this.actor.data.data.skills.ref.staffspear.value}`;
break;
case "Swordsmanship":
attFormula += `+${this.actor.data.data.skills.ref.swordsmanship.value}`;
break;
case "Archery":
attFormula += `+${this.actor.data.data.skills.dex.archery.value}`;
break;
case "Athletics":
attFormula += `+${this.actor.data.data.skills.dex.athletics.value}`;
break;
case "Crossbow":
attFormula += `+${this.actor.data.data.skills.dex.crossbow.value}`;
break;
}

if (customAtt != "0") {
attFormula += "+"+customAtt;
}
console.log(range)
switch(range){
case "pointBlank":
attFormula = `${attFormula}+5`;
Expand Down Expand Up @@ -933,34 +931,10 @@ export default class WitcherActorSheet extends ActorSheet {
break;
}

let effects = JSON.stringify(item.data.data.effects)
messageData.flavor = `<h1><img src="${item.img}" class="item-img" />Attack: ${item.name}</h1>`;
// messageData.flavor += `<button class="damage" data-id="${item.id} data-dmg="${damageFormula}" data-strike="${strike}" >Damage</button>`;
messageData.flavor += `<button class="damage" data-img="${item.img}" data-name="${item.name}" data-dmg="${damageFormula}" data-location="${touchedLocation}" data-strike="${strike}" data-effects='${effects}'>Damage</button>`;
new Roll(attFormula).roll().toMessage(messageData)


messageData.flavor = `<h1><img src="${item.img}" class="item-img" />Damage:${item.name} </h1>`;

if (strike == "strong") {
damageFormula = `(${damageFormula})*2`;
messageData.flavor += `<div>Strong Attack</div>`;
}
else if(strike == "fast"){
messageData.flavor += `<div>Fast Attack ${i + 1}</div>`;
}
messageData.flavor += `<div><b>Location:</b> ${touchedLocation}</div>`;
if (item.data.data.effects) {
messageData.flavor += `<b>Effects:</b>`;
item.data.data.effects.forEach(element => {
messageData.flavor += `<div class="flex">${element.name}`;
if (element.percentage) {
let rollPercentage = getRandomInt(100);
messageData.flavor += `<div>(${element.percentage}%) <b>Rolled:</b> ${rollPercentage}</div>`;
}
messageData.flavor += `</div>`;
});
}
console.log(damageFormula)
new Roll(damageFormula).roll().toMessage(messageData)
}
}
}
Expand Down Expand Up @@ -1059,7 +1033,13 @@ export default class WitcherActorSheet extends ActorSheet {
let totalSkills = 0;
for (let element in data.data.skills) {
for (let skill in data.data.skills[element]) {
totalSkills += data.data.skills[element][skill].value;
let skillLabel = game.i18n.localize(data.data.skills[element][skill].label)
if (skillLabel.includes("(2)")){
totalSkills += data.data.skills[element][skill].value * 2;
}
else{
totalSkills += data.data.skills[element][skill].value;
}
}
}
return totalSkills;
Expand Down
5 changes: 3 additions & 2 deletions module/witcher.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ with the Hand to Hand Table, page 48 of Witcher TRPG Handbook.
@param {Actor} actor - The actor passed in from actor-sheet.js to have its properties updated
*/
function updateDerived(actor){
if (actor.data.data.customStats){
if (actor.data.data.customStat === true){
return null;
}
let thisActor = actor;
Expand Down Expand Up @@ -101,10 +101,12 @@ function updateDerived(actor){
}

let newResolve = Math.floor((thisActor.data.data.stats.will.current + thisActor.data.data.stats.int.current)/2*5);
let newFocus = Math.floor((thisActor.data.data.stats.will.current + thisActor.data.data.stats.int.current)/2*3);
thisActor.update({
'data.derivedStats.hp.max': newHP,
'data.derivedStats.sta.max': newSta,
'data.derivedStats.resolve.max': newResolve,
'data.derivedStats.focus.max': newFocus,
'data.coreStats.rec.value': newRec,
'data.coreStats.stun.value': newStun,
'data.coreStats.enc.value': newEnc,
Expand All @@ -114,7 +116,6 @@ function updateDerived(actor){
'data.attackStats.punch.value': `1d6+${pBonus}`,
'data.attackStats.kick.value': `1d6+${kBonus}`,
});

}

function removeWoundTreshold(actor){
Expand Down
30 changes: 30 additions & 0 deletions styles/system-styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -577,6 +577,32 @@ input.resolve-value:focus {
}


.stat-focus{
margin-left: 5px;
height: 50px;
width: 50px;
background-color: lightgray;
border-radius: 100%;
border:white solid 5px;
}

input.stat-focus-value {
top: 5px;
position: relative;
border: none;
width: 40px;
background: none;
font-size: 25px;
}
input.stat-focus-value:focus {
border: none;
}
.stat-focus-max{
position: relative;
left: 40px;
}


.perk {
margin:5px
}
Expand Down Expand Up @@ -660,4 +686,8 @@ input.luck-value {
background-color: red;
border-radius: 100%;
border:white solid 5px;
}

.spacer {
height: 55px;
}
2 changes: 1 addition & 1 deletion system.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "TheWitcherTRPG",
"title": "TheWitcherTRPG - fvtt",
"description": "Many details here.",
"version": 0.15,
"version": 0.16,
"author": "TechAntho",
"scripts": [
],
Expand Down
13 changes: 11 additions & 2 deletions templates/partials/character-header.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
{{#each data.coreStats as |details coreStat|}}
<div class="stat-display">
<label>{{localize details.label}}</label>
<input class="header-stat" type="text" placeholder="0" data-dtype="Number" readonly/>
<input class="header-stat" value="{{details.value}}" type="text" placeholder="0" data-dtype="Number" readonly/>
</div>
{{/each}}
<hr />
Expand Down Expand Up @@ -109,14 +109,23 @@
<label class="stat-label"><a class="init-roll">Initiative</a></label>
</div>
<div class="ressource">
<label class="stat-label"><a class="death-roll">Stun/Death</a></label>
<label class="stat-label"><a class="death-roll">Stun/Death Save</a></label>
</div>
<div class="ressource">
<label class="stat-label"><a class="crit-roll">Crit/Fumble</a></label>
</div>
<div class="ressource">
<label class="stat-label"><a class="defence-roll">Defense</a></label>
</div>
<div class="spacer"></div>
<label>{{localize data.derivedStats.focus.label}}</label>
<div class="stat-focus">
<input class="stat-focus-value" name="data.derivedStats.focus.value" type="text" value="{{data.derivedStats.focus.value}}" placeholder="0" data-dtype="Number"/>
<div class="stat-focus-max">
/
{{data.derivedStats.focus.max}}
</div>
</div>
</div>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion templates/partials/chat/stat-chat.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<h2>{{localize statName}} Save</h2>
<h2>{{localize statName}}</h2>
<div class="roll-summary">
<div class="dice-formula">To succeed you need to roll below <b>{{difficulty}}</b></div>
</div>
Expand Down
14 changes: 11 additions & 3 deletions templates/partials/tab-background.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,18 @@
<div class="flex">
<div class="crit-wounds">
<h2>Crit Wounds <a class="add"><i class="fas fa-plus"></i></a></h2>
WIP
{{#each data.critWounds as |crit value|}}

Work In Progress
<!-- {{#each data.critWounds as |crit value|}}
<div>
<select name="crit.gravity" id="homeland-select">
{{#each config.CritGravity as |name value|}}
<option value="{{name}}">{{name}}</option>
{{/each}}
</select>
</div>
Crit
{{/each}}
{{/each}} -->
</div>
</div>
<div class="flexcol background">
Expand Down

0 comments on commit 6f2cedc

Please sign in to comment.