fix skill bugs by rewriting function (#5906)

This commit is contained in:
Cassie Levett
2020-03-02 13:38:08 -06:00
committed by GitHub
parent 1740389a28
commit ee103d024f
4 changed files with 237 additions and 180 deletions
+126 -97
View File
@@ -1,5 +1,5 @@
<input name="attr_version" type="hidden" value="4.0"/>
<input name="attr_version" type="hidden" value="4.01"/>
<input class="sheet_type" name="attr_sheet_type" type="hidden" value="pc"/>
<input class="character-type" name="attr_flag_special" type="hidden" value="mundane"/>
<div class="pc">
@@ -435,12 +435,12 @@
<input name="attr_display_limit" type="hidden" value="Physical"/>
<input name="attr_display_attribute" type="hidden" value="Agility"/>
<input name="attr_dicepool" type="hidden" value="0"/>
<input class="settings-flag" name="attr_flag" type="hidden" value="settings" title="undefined_flag}"/>
<input class="settings-flag" name="attr_flag" type="hidden" value="settings" title="@{repeating_active_${x}_flag}"/>
<div class="buttons">
<button name="roll_skill" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{display_limit}}}"><span name="attr_display"></span></button>
<button name="roll_specialization" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute}+2)+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=Spec: @{specialization}, @{display_limit}}}"><span name="attr_display_specialization"></span></button>
</div><span class="text-align-center" name="attr_display_rating" title="@{repeating_active_${x}_display_rating}"></span>
<select class="attribute-select" name="attr_attribute" title="undefined_attribute}">
<select class="attribute-select" name="attr_attribute" title="@{repeating_active_${x}_attribute}">
<option data-i18n="body" value="@{body}">Body</option>
<option data-i18n="agility" value="@{agility}" selected="selected">Agility</option>
<option data-i18n="reaction" value="@{reaction}">Reaction</option>
@@ -452,7 +452,7 @@
<option data-i18n="magic" value="@{magic}">Magic</option>
<option data-i18n="resonance" value="@{resonance}">Resonance</option>
</select>
<select class="limit-select" name="attr_limit" value="physical_limit" title="undefined_limit}">
<select class="limit-select" name="attr_limit" value="physical_limit" title="@{repeating_active_${x}_limit}">
<option value="none">-</option>
<option data-i18n="mental" value="@{mental_limit}">Mental</option>
<option data-i18n="physical" value="@{physical_limit}" selected="selected">Physical</option>
@@ -466,7 +466,7 @@
<input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span>
<div class="collapse"><span name="attr_notes"></span></div>
<div class="settings">
<select class="skill-select" name="attr_skill" value="Close Combat Group" title="undefined_skill}"><option class="option-headers" disabled="true" data-i18n="combatskills">Combat Skills</option>
<select class="skill-select" name="attr_skill" value="Close Combat Group" title="@{repeating_active_${x}_skill}"><option class="option-headers" disabled="true" data-i18n="combatskills">Combat Skills</option>
<option class="option-groups" value="Close Combat Group" data-i18n="closecombat">Close Combat Group</option>
<option class="option-groups" value="Firearms Group" data-i18n="firearms">Firearms Group</option>
<option value="Archery" data-i18n="archery">Archery</option>
@@ -564,16 +564,16 @@
<option value="Software" data-i18n="software">Software</option>
</select>
<label data-i18n-title="rating" title="rating">
<input name="attr_rating" min="0" placeholder="0" type="number" title="undefined_rating}"/>
<input name="attr_rating" min="0" placeholder="0" type="number" title="@{repeating_active_${x}_rating}"/>
</label>
<label data-i18n-title="ratingmodifier" title="Rating Modifier"><span data-i18n="ratingmodifier">Rating Modifier</span>
<input name="attr_rating_modifier" placeholder="0" type="number" title="undefined_rating_modifier}"/>
<input name="attr_rating_modifier" placeholder="0" type="number" title="@{repeating_active_${x}_rating_modifier}"/>
</label>
<label data-i18n-title="specialization" title="specialization"> <span data-i18n="specialization">specialization</span>
<input name="attr_specialization}" placeholder="Specalizations" type="text" title="undefined_specialization}"/>
<input name="attr_specialization" placeholder="Specalizations" type="text" title="@{repeating_active_${x}_specialization}"/>
</label>
<label data-i18n-title="notes" title="notes"><span data-i18n="notes">Notes</span>
<textarea name="attr_notes" value="" placeholder="Notes" title="undefined_notes}"></textarea>
<textarea name="attr_notes" value="" placeholder="Notes" title="@{repeating_active_${x}_notes}"></textarea>
</label>
</div>
</fieldset>
@@ -588,12 +588,12 @@
<input name="attr_display_limit" type="hidden" value="Mental"/>
<input name="attr_display_attribute" type="hidden" value="Logic"/>
<input name="attr_dicepool" type="hidden" value="0"/>
<input class="settings-flag" name="attr_flag" type="hidden" value="settings" title="undefined_flag}"/>
<input class="settings-flag" name="attr_flag" type="hidden" value="settings" title="@{repeating_knowledge_${x}_flag}"/>
<div class="buttons">
<button name="roll_skill" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{display_limit}}}"><span name="attr_display"></span></button>
<button name="roll_specialization" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute}+2)+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=Spec: @{specialization}, @{display_limit}}}"><span name="attr_display_specialization"></span></button>
</div><span class="text-align-center" name="attr_display_rating" title="@{repeating_know_${x}_display_rating}"></span>
<select class="attribute-select" name="attr_attribute" title="undefined_attribute}">
</div><span class="text-align-center" name="attr_display_rating" title="@{repeating_knowledge_${x}_display_rating}"></span>
<select class="attribute-select" name="attr_attribute" title="@{repeating_knowledge_${x}_attribute}">
<option data-i18n="body" value="@{body}">Body</option>
<option data-i18n="agility" value="@{agility}">Agility</option>
<option data-i18n="reaction" value="@{reaction}">Reaction</option>
@@ -605,7 +605,7 @@
<option data-i18n="magic" value="@{magic}">Magic</option>
<option data-i18n="resonance" value="@{resonance}">Resonance</option>
</select>
<select class="limit-select" name="attr_limit" value="physical_limit" title="undefined_limit}">
<select class="limit-select" name="attr_limit" value="physical_limit" title="@{repeating_knowledge_${x}_limit}">
<option value="none">-</option>
<option data-i18n="mental" value="@{mental_limit}" selected="selected">Mental</option>
<option data-i18n="physical" value="@{physical_limit}">Physical</option>
@@ -620,19 +620,19 @@
<div class="collapse"><span name="attr_notes"></span></div>
<div class="settings">
<label data-i18n-title="skill" title="skill">
<input name="attr_skill" placeholder="knowledge" type="text" title="undefined_skill}"/>
<input name="attr_skill" placeholder="knowledge" type="text" title="@{repeating_knowledge_${x}_skill}"/>
</label>
<label data-i18n-title="rating" title="rating">
<input name="attr_rating" min="0" placeholder="0" type="number" title="undefined_rating}"/>
<input name="attr_rating" min="0" placeholder="0" type="number" title="@{repeating_knowledge_${x}_rating}"/>
</label>
<label data-i18n-title="ratingmodifier" title="Rating Modifier"><span data-i18n="ratingmodifier">Rating Modifier</span>
<input name="attr_rating_modifier" placeholder="0" type="number" title="undefined_rating_modifier}"/>
<input name="attr_rating_modifier" placeholder="0" type="number" title="@{repeating_knowledge_${x}_rating_modifier}"/>
</label>
<label data-i18n-title="specialization" title="specialization"> <span data-i18n="specialization">specialization</span>
<input name="attr_specialization}" placeholder="Specalizations" type="text" title="undefined_specialization}"/>
<input name="attr_specialization" placeholder="Specalizations" type="text" title="@{repeating_knowledge_${x}_specialization}"/>
</label>
<label data-i18n-title="notes" title="notes"><span data-i18n="notes">Notes</span>
<textarea name="attr_notes" value="" placeholder="Notes" title="undefined_notes}"></textarea>
<textarea name="attr_notes" value="" placeholder="Notes" title="@{repeating_knowledge_${x}_notes}"></textarea>
</label>
</div>
</fieldset>
@@ -647,12 +647,12 @@
<input name="attr_display_limit" type="hidden" value="Social"/>
<input name="attr_display_attribute" type="hidden" value="Charisma"/>
<input name="attr_dicepool" type="hidden" value="0"/>
<input class="settings-flag" name="attr_flag" type="hidden" value="settings" title="undefined_flag}"/>
<input class="settings-flag" name="attr_flag" type="hidden" value="settings" title="@{repeating_language_${x}_flag}"/>
<div class="buttons">
<button name="roll_skill" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{display_limit}}}"><span name="attr_display"></span></button>
<button name="roll_specialization" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute}+2)+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=Spec: @{specialization}, @{display_limit}}}"><span name="attr_display_specialization"></span></button>
</div><span class="text-align-center" name="attr_display_rating" title="@{repeating_lang_${x}_display_rating}"></span>
<select class="attribute-select" name="attr_attribute" title="undefined_attribute}">
</div><span class="text-align-center" name="attr_display_rating" title="@{repeating_language_${x}_display_rating}"></span>
<select class="attribute-select" name="attr_attribute" title="@{repeating_language_${x}_attribute}">
<option data-i18n="body" value="@{body}">Body</option>
<option data-i18n="agility" value="@{agility}">Agility</option>
<option data-i18n="reaction" value="@{reaction}">Reaction</option>
@@ -664,7 +664,7 @@
<option data-i18n="magic" value="@{magic}">Magic</option>
<option data-i18n="resonance" value="@{resonance}">Resonance</option>
</select>
<select class="limit-select" name="attr_limit" value="physical_limit" title="undefined_limit}">
<select class="limit-select" name="attr_limit" value="physical_limit" title="@{repeating_language_${x}_limit}">
<option value="none">-</option>
<option data-i18n="mental" value="@{mental_limit}">Mental</option>
<option data-i18n="physical" value="@{physical_limit}">Physical</option>
@@ -679,19 +679,19 @@
<div class="collapse"><span name="attr_notes"></span></div>
<div class="settings">
<label data-i18n-title="skill" title="skill">
<input name="attr_skill" placeholder="language" type="text" title="undefined_skill}"/>
<input name="attr_skill" placeholder="language" type="text" title="@{repeating_language_${x}_skill}"/>
</label>
<label data-i18n-title="rating" title="rating">
<input name="attr_rating" min="0" placeholder="0" type="number" title="undefined_rating}"/>
<input name="attr_rating" min="0" placeholder="0" type="number" title="@{repeating_language_${x}_rating}"/>
</label>
<label data-i18n-title="ratingmodifier" title="Rating Modifier"><span data-i18n="ratingmodifier">Rating Modifier</span>
<input name="attr_rating_modifier" placeholder="0" type="number" title="undefined_rating_modifier}"/>
<input name="attr_rating_modifier" placeholder="0" type="number" title="@{repeating_language_${x}_rating_modifier}"/>
</label>
<label data-i18n-title="specialization" title="specialization"> <span data-i18n="specialization">specialization</span>
<input name="attr_specialization}" placeholder="Specalizations" type="text" title="undefined_specialization}"/>
<input name="attr_specialization" placeholder="Specalizations" type="text" title="@{repeating_language_${x}_specialization}"/>
</label>
<label data-i18n-title="notes" title="notes"><span data-i18n="notes">Notes</span>
<textarea name="attr_notes" value="" placeholder="Notes" title="undefined_notes}"></textarea>
<textarea name="attr_notes" value="" placeholder="Notes" title="@{repeating_language_${x}_notes}"></textarea>
</label>
</div>
</fieldset>
@@ -3493,6 +3493,11 @@ const onepointthreefive = () => {
return values
}
const getRepeatingSection = triggerName => {
const split = triggerName.split('_');
return `${split[0]}_${split[1]}_${split[2]}`
}
const calculateLimitTotal = (values, type) => {
const attributes = sheetAttribues[`${type}Limits`];
values.essence ? Math.ceil(values.essence) || 0 : false;
@@ -4147,78 +4152,102 @@ const onepointthreefive = () => {
});
//REFACTORED Skills
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}`, eventinfo => {
const source = eventinfo.sourceAttribute;
const type = eventinfo.sourceType;
if (source.includes("rating")) {
getAttrs([`${field}_rating`, `${field}_rating_modifier`], (v) => {
const bas = parseInt(v[`${field}_rating`]) || 0;
const mod = parseInt(v[`${field}_rating_modifier`]) || 0;
const tot = bas + mod;
setAttrs({
[`${field}_dicepool`]: tot,
[`${field}_display_rating`]: (mod === 0) ? bas : `${bas} (${tot})`
});
});
} else if (source.includes("attribute") && type === "player") {
getAttrs([`${source}`], (v) => {
const attribute = v[`${source}`].slice(2, -1);
const translation = getTranslationByKey(`${attribute}`);
setAttrs({
[`${field}_display_attribute`]: translation
});
});
} else if (source.includes("limit") && type === "player") {
const limit = eventinfo.newValue.slice(2, -1);
if (eventinfo.newValue === "none") {
setAttrs({
[`${field}_display_limit`]: ""
});
} else {
const translation = getTranslationByKey(`${limit}`);
setAttrs({
[`${field}_display_limit`]: `${translation} ${eventinfo.newValue}`
});
}
} else if (source.includes("specialization") && type === "player") {
getAttrs([`${source}`], (v) => {
const bas = v[`${source}`];
const size = bas.length;
let display = (size > 0 && size <= 20) ? `(${bas})` : (size > 20 ) ? "(" + bas.slice(0, 20) + "...)" : " ";
setAttrs({
[`${eventinfo.triggerName}_display_specialization`]: display
});
});
} else if (source.includes("skill") && type === "player") {
getAttrs([`${source}`], (v) => {
console.log(eventinfo)
const bas = v[`${source}`];
const size = bas.length;
let display = (size > 0 && size <= 20) ? bas : (size > 20 ) ? bas.slice(0, 20) + "..." : " ";
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:rating change:repeating_${field}:rating_modifier`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
console.log(display)
console.log(field)
setAttrs({
[`${eventinfo.triggerName}_display`]: display
});
});
} else if (source.includes("dicepool") && type === "player") {
getAttrs([`${source}`, `${field}_skill`], (v) => {
const skill = v[`${field}_skill`];
let lowercase = skill.toLowerCase();
let removeGroup = (lowercase.includes("group")) ? lowercase.slice(0, -6) : lowercase;
let skillSet = (removeGroup.includes(" ")) ? removeGroup.replace(/ /g,"") : removeGroup;
setAttrs({
[`${skillSet}`]: v[`${source}`]
});
});
} else {
console.log(`Change to ${field} did not set attr`);
};
});
});
getAttrs([`${section}_rating`, `${section}_rating_modifier`], value => {
const numbers = parseIntegers(value);
const base = numbers[`${section}_rating`];
const total = calculateSum(Object.values(numbers));
setAttrs({
[`${section}_dicepool`]: total,
[`${section}_display_rating`]: numbers[`${section}_rating_modifier`] === 0 ? base : `${base} (${total})`
})
})
});
});
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:attribute`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
if (eventinfo.sourceType === "player") {
const attribute = eventinfo.newValue.slice(2, -1)
const translation = getTranslationByKey(`${attribute}`)
setAttrs({
[`${section}_display_attribute`]: translation
});
}
})
})
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:limit`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
if (eventinfo.sourceType === "player") {
const limit = eventinfo.newValue.slice(2, -1);
setAttrs({
[`${section}_display_limit`]: eventinfo.newValue === "none" ? "" : `${getTranslationByKey(`${limit}`)} ${eventinfo.newValue}`
});
}
})
})
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:specialization`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
if (eventinfo.sourceType === "player") {
const base = eventinfo.newValue;
const size = base.length;
const display = size > 0 && size <= 20 ? `(${base})` : size > 20 ? "(" + base.slice(0, 20) + "...)" : " ";
setAttrs({
[`${section}_display_specialization`]: display
});
}
})
})
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:skill`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
if (eventinfo.sourceType === "player") {
const base = eventinfo.newValue;
const size = base.length;
const display = size > 0 && size <= 20 ? base : size > 20 ? base.slice(0, 20) + "...)" : " ";
setAttrs({
[`${section}_display`]: display
});
}
})
})
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:dicepool`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
if (eventinfo.sourceType === "player") {
getAttrs([`${section}_skill`], value => {
let skill = value[`${section}_skill`];
skill = skill.toLowerCase();
skill = skill.includes("group") ? skill.split(' group')[0] : skill
skill = skill.includes(" ") ? skill.replace(/ /g,"") : skill
setAttrs({
[`${skill}`]: eventinfo.newValue
});
})
}
})
})
//Setting the Default attribute name for default skill
on("change:default_attribute", (eventinfo) => {
+12 -13
View File
@@ -1,4 +1,4 @@
input(name='attr_version' type='hidden' value='4.0')
input(name='attr_version' type='hidden' value='4.01')
//- CHARACTER SHEET PAGE
input.sheet_type(name='attr_sheet_type' type='hidden' value='pc')
@@ -12,7 +12,6 @@ include src/pug/_mixins.pug
//- VARIABLES
include src/pug/_variables.pug
.pc
.tabs
img(alt='Shadowrun black and metallic logo' src='https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Shadowrun5thEdition/images/ShadowrunLogo.png')
@@ -74,8 +73,8 @@ include src/pug/_variables.pug
+attributeSelect('Agility')
select.limit-select(name='attr_limit' title='Skill limit')
+limitSelect('Physical')
fieldset(class='repeating_' + key)
- const skillsRepeatingSection = `@{repeating_${val[0]}`+'_${x}';
fieldset(class=`repeating_${key}`)
- const skillsRepeatingSection = `@{repeating_${key}_`+'${x}';
input(name='attr_display' type='hidden')
input(name='attr_display_rating' type='hidden')
@@ -84,36 +83,36 @@ include src/pug/_variables.pug
input(name='attr_display_attribute' type='hidden' value=val[1])
input(name='attr_dicepool' type='hidden' value='0')
input.settings-flag(name='attr_flag' type='hidden' value='settings' title=`${repeatingSection}_flag}`)
input.settings-flag(name='attr_flag' type='hidden' value='settings' title=`${skillsRepeatingSection}_flag}`)
.buttons
//- SKILL BUTTON
+skillButton(false)
//- SPECILIZATION BUTTON
+skillButton(true)
span.text-align-center(name='attr_display_rating' title=`${skillsRepeatingSection}_display_rating}`)
select.attribute-select(name='attr_attribute' title=`${repeatingSection}_attribute}`)
select.attribute-select(name='attr_attribute' title=`${skillsRepeatingSection}_attribute}`)
+attributeSelect(val[1])
select.limit-select(name='attr_limit' value='physical_limit' title=`${repeatingSection}_limit}`)
select.limit-select(name='attr_limit' value='physical_limit' title=`${skillsRepeatingSection}_limit}`)
+limitSelect(val[2])
+repeatingSectionFlags()
.settings
if key === 'active'
select.skill-select(name='attr_skill' value='Close Combat Group' title=`${repeatingSection}_skill}`)
select.skill-select(name='attr_skill' value='Close Combat Group' title=`${skillsRepeatingSection}_skill}`)
include src/html/skillselect.html
else
label(data-i18n-title='skill' title='skill')
input(name='attr_skill' placeholder=key type='text' title=`${repeatingSection}_skill}`)
input(name='attr_skill' placeholder=key type='text' title=`${skillsRepeatingSection}_skill}`)
label(data-i18n-title='rating' title='rating')
input(name='attr_rating' min='0' placeholder='0' type='number' title=`${repeatingSection}_rating}`)
input(name='attr_rating' min='0' placeholder='0' type='number' title=`${skillsRepeatingSection}_rating}`)
label(data-i18n-title='ratingmodifier' title='Rating Modifier')
span(data-i18n='ratingmodifier') Rating Modifier
input(name='attr_rating_modifier' placeholder='0' type='number' title=`${repeatingSection}_rating_modifier}`)
input(name='attr_rating_modifier' placeholder='0' type='number' title=`${skillsRepeatingSection}_rating_modifier}`)
label(data-i18n-title='specialization' title='specialization')
span(data-i18n='specialization') specialization
input(name='attr_specialization}' placeholder='Specalizations' type='text' title=`${repeatingSection}_specialization}`)
input(name='attr_specialization' placeholder='Specalizations' type='text' title=`${skillsRepeatingSection}_specialization}`)
label(data-i18n-title='notes' title='notes')
span(data-i18n='notes') Notes
textarea(name='attr_notes' value='' placeholder='Notes' title=`${repeatingSection}_notes}`)
textarea(name='attr_notes' value='' placeholder='Notes' title=`${skillsRepeatingSection}_notes}`)
//- CORE TAB
+5
View File
@@ -12,6 +12,11 @@
return values
}
const getRepeatingSection = triggerName => {
const split = triggerName.split('_');
return `${split[0]}_${split[1]}_${split[2]}`
}
const calculateLimitTotal = (values, type) => {
const attributes = sheetAttribues[`${type}Limits`];
values.essence ? Math.ceil(values.essence) || 0 : false;
+94 -70
View File
@@ -449,78 +449,102 @@
});
//REFACTORED Skills
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}`, eventinfo => {
const source = eventinfo.sourceAttribute;
const type = eventinfo.sourceType;
if (source.includes("rating")) {
getAttrs([`${field}_rating`, `${field}_rating_modifier`], (v) => {
const bas = parseInt(v[`${field}_rating`]) || 0;
const mod = parseInt(v[`${field}_rating_modifier`]) || 0;
const tot = bas + mod;
setAttrs({
[`${field}_dicepool`]: tot,
[`${field}_display_rating`]: (mod === 0) ? bas : `${bas} (${tot})`
});
});
} else if (source.includes("attribute") && type === "player") {
getAttrs([`${source}`], (v) => {
const attribute = v[`${source}`].slice(2, -1);
const translation = getTranslationByKey(`${attribute}`);
setAttrs({
[`${field}_display_attribute`]: translation
});
});
} else if (source.includes("limit") && type === "player") {
const limit = eventinfo.newValue.slice(2, -1);
if (eventinfo.newValue === "none") {
setAttrs({
[`${field}_display_limit`]: ""
});
} else {
const translation = getTranslationByKey(`${limit}`);
setAttrs({
[`${field}_display_limit`]: `${translation} ${eventinfo.newValue}`
});
}
} else if (source.includes("specialization") && type === "player") {
getAttrs([`${source}`], (v) => {
const bas = v[`${source}`];
const size = bas.length;
let display = (size > 0 && size <= 20) ? `(${bas})` : (size > 20 ) ? "(" + bas.slice(0, 20) + "...)" : " ";
setAttrs({
[`${eventinfo.triggerName}_display_specialization`]: display
});
});
} else if (source.includes("skill") && type === "player") {
getAttrs([`${source}`], (v) => {
console.log(eventinfo)
const bas = v[`${source}`];
const size = bas.length;
let display = (size > 0 && size <= 20) ? bas : (size > 20 ) ? bas.slice(0, 20) + "..." : " ";
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:rating change:repeating_${field}:rating_modifier`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
console.log(display)
console.log(field)
setAttrs({
[`${eventinfo.triggerName}_display`]: display
});
});
} else if (source.includes("dicepool") && type === "player") {
getAttrs([`${source}`, `${field}_skill`], (v) => {
const skill = v[`${field}_skill`];
let lowercase = skill.toLowerCase();
let removeGroup = (lowercase.includes("group")) ? lowercase.slice(0, -6) : lowercase;
let skillSet = (removeGroup.includes(" ")) ? removeGroup.replace(/ /g,"") : removeGroup;
setAttrs({
[`${skillSet}`]: v[`${source}`]
});
});
} else {
console.log(`Change to ${field} did not set attr`);
};
});
});
getAttrs([`${section}_rating`, `${section}_rating_modifier`], value => {
const numbers = parseIntegers(value);
const base = numbers[`${section}_rating`];
const total = calculateSum(Object.values(numbers));
setAttrs({
[`${section}_dicepool`]: total,
[`${section}_display_rating`]: numbers[`${section}_rating_modifier`] === 0 ? base : `${base} (${total})`
})
})
});
});
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:attribute`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
if (eventinfo.sourceType === "player") {
const attribute = eventinfo.newValue.slice(2, -1)
const translation = getTranslationByKey(`${attribute}`)
setAttrs({
[`${section}_display_attribute`]: translation
});
}
})
})
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:limit`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
if (eventinfo.sourceType === "player") {
const limit = eventinfo.newValue.slice(2, -1);
setAttrs({
[`${section}_display_limit`]: eventinfo.newValue === "none" ? "" : `${getTranslationByKey(`${limit}`)} ${eventinfo.newValue}`
});
}
})
})
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:specialization`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
if (eventinfo.sourceType === "player") {
const base = eventinfo.newValue;
const size = base.length;
const display = size > 0 && size <= 20 ? `(${base})` : size > 20 ? "(" + base.slice(0, 20) + "...)" : " ";
setAttrs({
[`${section}_display_specialization`]: display
});
}
})
})
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:skill`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
if (eventinfo.sourceType === "player") {
const base = eventinfo.newValue;
const size = base.length;
const display = size > 0 && size <= 20 ? base : size > 20 ? base.slice(0, 20) + "...)" : " ";
setAttrs({
[`${section}_display`]: display
});
}
})
})
sheetAttribues.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:dicepool`, eventinfo => {
const section = getRepeatingSection(eventinfo.triggerName);
if (eventinfo.sourceType === "player") {
getAttrs([`${section}_skill`], value => {
let skill = value[`${section}_skill`];
skill = skill.toLowerCase();
skill = skill.includes("group") ? skill.split(' group')[0] : skill
skill = skill.includes(" ") ? skill.replace(/ /g,"") : skill
setAttrs({
[`${skill}`]: eventinfo.newValue
});
})
}
})
})
//Setting the Default attribute name for default skill
on("change:default_attribute", (eventinfo) => {