Various fixes and enhancents
This commit is contained in:
@@ -179,14 +179,18 @@ export class Hero6ActorSheet extends ActorSheet {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
let itemId = li.data("item-id")
|
||||
this.actor.rollLiftDice(itemId);
|
||||
});
|
||||
|
||||
});
|
||||
html.find('.roll-weapon').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const skillId = li.data("item-id")
|
||||
this.actor.rollWeapon(skillId)
|
||||
});
|
||||
|
||||
html.find('.roll-maneuver').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const maneuverId = li.data("maneuver-id")
|
||||
this.actor.rollManeuver(maneuverId)
|
||||
});
|
||||
|
||||
html.find('.hold-action').click((event) => {
|
||||
this.actor.holdAction()
|
||||
});
|
||||
|
@@ -70,6 +70,14 @@ export class Hero6Actor extends Actor {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
performMigration() {
|
||||
// Fix OCV/OMCV rollable
|
||||
if (!this.system.characteristics.ocv.hasroll) {
|
||||
this.update({ 'system.characteristics.ocv.hasroll': true, 'system.characteristics.omcv.hasroll': true })
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
computeDicesValue() {
|
||||
this.system.biodata.presenceattack = Hero6Utility.getDerivatedDiceFormulas(this.system.characteristics.pre.value)
|
||||
this.system.characteristics.str.strdice = Hero6LiftDice.getLiftDice(this.system.characteristics.str.value)
|
||||
@@ -205,6 +213,17 @@ export class Hero6Actor extends Actor {
|
||||
skill.roll += skill.system.levels
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
prepareManeuver(maneuver) {
|
||||
|
||||
maneuver.roll = 11 + this.system.characteristics.ocv.value
|
||||
if ( Number(maneuver.system.ocv)) {
|
||||
maneuver.roll += Number(maneuver.system.ocv)
|
||||
} else {
|
||||
maneuver.noOCV = true
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getSkills() {
|
||||
@@ -464,7 +483,7 @@ export class Hero6Actor extends Actor {
|
||||
getBaseInit(turn) {
|
||||
if ( turn != this.turn) {
|
||||
let r = new Roll("1d6").roll({ async: false })
|
||||
this.currentInit = this.system.characteristics.dex.initiative + (r.total / 10)
|
||||
this.currentInit = Number(this.system.characteristics.dex.initiative) + Number(((r.total / 10).toFixed(2)))
|
||||
this.turn = turn
|
||||
}
|
||||
return this.currentInit
|
||||
@@ -648,6 +667,9 @@ export class Hero6Actor extends Actor {
|
||||
if (item.type == "skill") {
|
||||
this.prepareSkill(rollData.item)
|
||||
}
|
||||
if (item.type == "maneuver") {
|
||||
this.prepareManeuver(rollData.item)
|
||||
}
|
||||
this.startRoll(rollData)
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
@@ -697,7 +719,28 @@ export class Hero6Actor extends Actor {
|
||||
msg.setFlag("world", "rolldata", rollData)
|
||||
console.log("Rolldata result", rollData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollManeuver(maneuverId) {
|
||||
let skill = this.items.get(skillId)
|
||||
if (skill) {
|
||||
if (skill.system.islore && skill.system.level == 0) {
|
||||
ui.notifications.warn("You can't use Lore Skills with a SL of 0.")
|
||||
return
|
||||
}
|
||||
skill = duplicate(skill)
|
||||
Hero6Utility.updateSkill(skill)
|
||||
let abilityKey = skill.system.ability
|
||||
let rollData = this.getCommonRollData(abilityKey)
|
||||
rollData.mode = "skill"
|
||||
rollData.skill = skill
|
||||
rollData.img = skill.img
|
||||
if (rollData.target) {
|
||||
ui.notifications.warn("You are targetting a token with a skill : please use a Weapon instead.")
|
||||
return
|
||||
}
|
||||
this.startRoll(rollData)
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
rollSkill(skillId) {
|
||||
let skill = this.items.get(skillId)
|
||||
|
@@ -77,19 +77,28 @@ export class Hero6Combat extends Combat {
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
forceHold(actor, isHold) {
|
||||
let updList = []
|
||||
let c = this.combatants.find(c => c.actor._id == actor.id)
|
||||
let name = actor.name + ((isHold) ? " (H)" : "")
|
||||
updList.push({ _id: c.id || c._id, name: name, initiative: actor.getBaseInit(this.segmentNumber) })
|
||||
this.updateEmbeddedDocuments("Combatant", updList)
|
||||
if (game.user.isGM) {
|
||||
let updList = []
|
||||
let c = this.combatants.find(c => c.actor._id == actor.id)
|
||||
let name = actor.name + ((isHold) ? " (H)" : "")
|
||||
console.log("ForceHold!!", c, actor)
|
||||
updList.push({ _id: c.id || c._id, name: name, initiative: actor.getBaseInit(this.segmentNumber) })
|
||||
this.updateEmbeddedDocuments("Combatant", updList)
|
||||
} else {
|
||||
game.socket.emit("system.fvtt-hero-system-6", { name: "msg_force_hold", data: { actorId: actor.id, isHold: isHold } });
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
forceAbort(actor, isAbort) {
|
||||
let updList = []
|
||||
let c = this.combatants.find(c => c.actor._id == actor.id)
|
||||
let name = actor.name + ((isAbort) ? " (A)" : "")
|
||||
updList.push({ _id: c.id || c._id, name: name, initiative: actor.getBaseInit(this.segmentNumber) })
|
||||
this.updateEmbeddedDocuments("Combatant", updList)
|
||||
if (game.user.isGM) {
|
||||
let updList = []
|
||||
let c = this.combatants.find(c => c.actor._id == actor.id)
|
||||
let name = actor.name + ((isAbort) ? " (A)" : "")
|
||||
updList.push({ _id: c.id || c._id, name: name, initiative: actor.getBaseInit(this.segmentNumber) })
|
||||
this.updateEmbeddedDocuments("Combatant", updList)
|
||||
} else {
|
||||
game.socket.emit("system.fvtt-hero-system-6", { name: "msg_force_abort", data: { actorId: actor.id, isAbort: isAbort } });
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -110,7 +119,7 @@ export class Hero6Combat extends Combat {
|
||||
}
|
||||
if (isOnAbort) {
|
||||
name = c.actor.name + " (A)"
|
||||
if ( c.actor.incAbortActionCount() ) {
|
||||
if (c.actor.incAbortActionCount()) {
|
||||
c.actor.disableAbortAction()
|
||||
}
|
||||
}
|
||||
@@ -159,7 +168,7 @@ export class Hero6Combat extends Combat {
|
||||
nextTurn() {
|
||||
let nbC = this.combatants.filter(c => c.initiative > 0).length
|
||||
//console.log("Next turn called....", this.turn, nbC)
|
||||
if (this.turn < nbC-1) {
|
||||
if (this.turn < nbC - 1) {
|
||||
super.nextTurn()
|
||||
} else {
|
||||
this.nextRound()
|
||||
@@ -172,7 +181,7 @@ export class Hero6Combat extends Combat {
|
||||
let nextRound = this.round
|
||||
let advanceTime = 0
|
||||
let turn = this.turn === null ? null : 0; // Preserve the fact that it's no-one's turn currently.
|
||||
let turnData = this.getFlag("world", "hero6-turn-data")
|
||||
let turnData = this.getFlag("world", "turnData")
|
||||
|
||||
//console.log("Next round called....", nextRound, turnData)
|
||||
while (!hasCombatants) {
|
||||
@@ -187,18 +196,21 @@ export class Hero6Combat extends Combat {
|
||||
advanceTime += CONFIG.time.roundTime;
|
||||
nextRound = nextRound + 1;
|
||||
//console.log("Next round called....2", nextRound, turnData)
|
||||
turnData = this.getFlag("world", "hero6-turn-data")
|
||||
turnData = this.getFlag("world", "turnData")
|
||||
if (!turnData) {
|
||||
turnData = { turnNumber: 0, segmentNumber: 12 }
|
||||
this.setFlag("world", "hero6-turn-data", turnData)
|
||||
this.setFlag("world", "turnData", turnData)
|
||||
}
|
||||
turnData = duplicate(turnData)
|
||||
turnData.segmentNumber += 1
|
||||
if (turnData.segmentNumber > 12) {
|
||||
turnData.segmentNumber = 1
|
||||
turnData.turnNumber++
|
||||
ChatMessage.create({
|
||||
content: "Complete Post-Segment 12 Recoveries."
|
||||
})
|
||||
}
|
||||
await this.setFlag("world", "hero6-turn-data", turnData)
|
||||
await this.setFlag("world", "turnData", turnData)
|
||||
this.turnNumber = turnData.turnNumber;
|
||||
this.segmentNumber = turnData.segmentNumber;
|
||||
//console.log("Next round called....3", nextRound, turnData)
|
||||
@@ -209,9 +221,10 @@ export class Hero6Combat extends Combat {
|
||||
}
|
||||
|
||||
// Update the document, passing data through a hook first
|
||||
const updateData = { round: nextRound, turn: turn, segmentNumber: turnData.segmentNumber, turnNumber: turnData.turnNumber };
|
||||
const updateData = { round: nextRound, turn };
|
||||
const updateOptions = { advanceTime, direction: 1 };
|
||||
Hooks.callAll("combatRound", this, updateData, updateOptions);
|
||||
console.log(this)
|
||||
return this.update(updateData, updateOptions);
|
||||
}
|
||||
|
||||
|
@@ -41,7 +41,7 @@ Hooks.once("init", async function () {
|
||||
// Set an initiative formula for the system
|
||||
CONFIG.Combat.initiative = {
|
||||
formula: "1d6",
|
||||
decimals: 3
|
||||
decimals: 2
|
||||
};
|
||||
|
||||
/* ------------------------------- ------------- */
|
||||
|
@@ -124,6 +124,10 @@ export class Hero6Utility {
|
||||
const rollTables = await Hero6Utility.loadCompendium("fvtt-hero-system-6.rolltables")
|
||||
this.rollTables = rollTables.map(i => i.toObject())
|
||||
|
||||
for (let actor of game.actors) {
|
||||
actor.performMigration()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -230,12 +234,21 @@ export class Hero6Utility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async onSocketMesssage(msg) {
|
||||
console.log("SOCKET MESSAGE", msg.name)
|
||||
console.log("SOCKET MESSAGE", msg.name, msg)
|
||||
if (msg.name == "msg_update_roll") {
|
||||
this.updateRollData(msg.data)
|
||||
}
|
||||
if (msg.name == "msg_gm_process_attack_defense") {
|
||||
this.processSuccessResult(msg.data)
|
||||
if (msg.name == "msg_force_hold") {
|
||||
if (game.user.isGM) {
|
||||
let actor = game.actors.get(msg.data.actorId)
|
||||
game.combat.forceHold(actor, msg.data.isHold)
|
||||
}
|
||||
}
|
||||
if (msg.name == "msg_force_abort") {
|
||||
if (game.user.isGM) {
|
||||
let actor = game.actors.get(msg.data.actorId)
|
||||
game.combat.forceAbort(actor, msg.data.isAbort)
|
||||
}
|
||||
}
|
||||
if (msg.name == "msg_gm_item_drop" && game.user.isGM) {
|
||||
let actor = game.actors.get(msg.data.actorId)
|
||||
|
Reference in New Issue
Block a user