Swarm setting, fix bug where damage and combat were not properly scaled

This commit is contained in:
Melon-PieldeSapo
2025-02-07 17:57:23 +01:00
parent 79d5d02aa3
commit d78150970a
4 changed files with 40 additions and 16 deletions
+16 -4
View File
@@ -2096,7 +2096,7 @@ export class MothershipActor extends Actor {
}
//central check rolling function | TAKES '1d10','low','combat','Geology',10,[weapon item] | RETURNS chat message showing check result
async rollCheck(rollString, aimFor, attribute, skill, skillValue, weapon) {
async rollCheck(rollString, aimFor, attribute, skill, skillValue, weapon,overrideDamagaRollString=null) {
//init vars
let specialRoll = ``;
let checkCrit = true;
@@ -2135,7 +2135,11 @@ export class MothershipActor extends Actor {
skill = 'none';
skillValue = 0;
//set rollstring
rollString = weapon.system.damage;
if(overrideDamagaRollString){
rollString=overrideDamagaRollString;
}else{
rollString = weapon.system.damage;
}
}
//rest save
if (attribute === 'restSave') {
@@ -2249,7 +2253,11 @@ export class MothershipActor extends Actor {
//if this is a damage roll
if (specialRoll === 'damage') {
//parse the roll string
parsedDamageString = this.parseRollString(weapon.system.damage, 'high');
let damageRollString = weapon.system.damage
if(overrideDamagaRollString){
damageRollString = overrideDamagaRollString;
}
parsedDamageString = this.parseRollString(damageRollString, 'high');
//override message header
msgHeader = weapon.name;
//override header image
@@ -2357,7 +2365,11 @@ export class MothershipActor extends Actor {
//prep damage dice in case its needed
if (weapon && parsedRollResult.success) {
//parse the roll string
parsedDamageString = this.parseRollString(weapon.system.damage, 'high');
let damageRollString = weapon.system.damage
if(overrideDamagaRollString){
damageRollString = overrideDamagaRollString;
}
parsedDamageString = this.parseRollString(damageRollString, 'high');
}
//set chat message text
//set roll result as greater than or less than
+6 -4
View File
@@ -184,12 +184,13 @@ export class MothershipCreatureSheet extends ActorSheet {
} else {
item = duplicate(this.actor.getEmbeddedDocument("Item", li.dataset.itemId));
}
let swarm_damage_roll_string =null;
if (this.actor.system.swarm && this.actor.system.swarm.enabled){
//replace the roll damage for swarm actors
let new_dice_ammount = item.system.damage.match(/([0-9]+)d[0-9]+/i)[1]*this.getWoundsLeft(html);
item.system.damage = item.system.damage.replace(/([0-9]+)(d[0-9]+)/i,`${new_dice_ammount}$2`);
swarm_damage_roll_string = item.system.damage.replace(/([0-9]+)(d[0-9]+)/i,`${new_dice_ammount}$2`);
}
this.actor.rollCheck(null, 'low', 'combat', null, null, item);
this.actor.rollCheck(null, 'low', 'combat', null, null, item,swarm_damage_roll_string);
});
// Rollable Damage
@@ -201,12 +202,13 @@ export class MothershipCreatureSheet extends ActorSheet {
} else {
item = duplicate(this.actor.getEmbeddedDocument("Item", li.dataset.itemId));
}
let swarm_damage_roll_string =null;
if (this.actor.system.swarm && this.actor.system.swarm.enabled){
//replace the roll damage for swarm actors
let new_dice_ammount = item.system.damage.match(/([0-9]+)d[0-9]+/i)[1]*this.getWoundsLeft(html);
item.system.damage = item.system.damage.replace(/([0-9]+)(d[0-9]+)/i,`${new_dice_ammount}$2`);
swarm_damage_roll_string = item.system.damage.replace(/([0-9]+)(d[0-9]+)/i,`${new_dice_ammount}$2`);
}
this.actor.rollCheck(null, null, 'damage', null, null, item);
this.actor.rollCheck(null, null, 'damage', null, null, item,swarm_damage_roll_string);
});
//increase ammo
+7 -4
View File
@@ -91,13 +91,16 @@ export class DLCreatureSettings extends FormApplication {
});
});
html.find(`input[type=checkbox][id="system.swarm.enabled"]`).click(ev => {
if (ev.currentTarget.checked) {
const sanity = html.find(`input[type=checkbox][id="system.swarm.enabled"]`).prop('checked', true);
}
this.object.update({
"system.swarm.enabled": ev.currentTarget.checked
});
if (ev.currentTarget.checked) {
const new_combat = this.object.system.swarm.combat.value * ( this.object.system.hits.max - this.object.system.hits.value);
this.object.update({
"system.stats.combat.value":new_combat
});
}
});
}
+11 -4
View File
@@ -10,10 +10,17 @@
<div class="mainstatwrapper">
<div class="resource creature-mainstat">
<span class="ability-mod stat-roll rollable creaturestat" data-key="combat" data-roll="d100"
data-label="Combat">{{ localize 'Mosh.Combat' }}{{#if system.swarm.enabled}} {{ localize 'Mosh.SwarmWoundShort' }}{{/if}}</span>
<input class="creaturestat noborder" style="width: 30px;" type="text" name="system.stats.combat.value"
value="{{system.stats.combat.value}}" data-dtype="Number" />
{{#if system.swarm.enabled}}
<span class="ability-mod stat-roll rollable creaturestat" data-key="combat" data-roll="d100"
data-label="Combat">{{ localize 'Mosh.Combat' }} {{ localize 'Mosh.SwarmWoundShort' }}</span>
<input class="creaturestat noborder" style="width: 30px;" type="text" name="system.swarm.combat.value"
value="{{system.swarm.combat.value}}" data-dtype="Number" />
{{else}}
<span class="ability-mod stat-roll rollable creaturestat" data-key="combat" data-roll="d100"
data-label="Combat">{{ localize 'Mosh.Combat' }}</span>
<input class="creaturestat noborder" style="width: 30px;" type="text" name="system.stats.combat.value"
value="{{system.stats.combat.value}}" data-dtype="Number" />
{{/if}}
</div>
</div>
{{/if}}