Code Check-in
Fixed two-handed arming bug, where activating a two handed weapon while a single handed weapon was active would cause the two handed weapon's off hand to be armed while the main hand was not.
This commit is contained in:
@@ -11533,8 +11533,9 @@
|
||||
|
||||
function updateWeaponStates(debug, timer, attrdb, extraarmIDs, value, source, sourceAttr, setObj){
|
||||
const handsource = getHandSource(debug, timer, extraarmIDs, source);
|
||||
clog(debug, timer, 'handsource =', handsource, 'updateWeaponStates()');
|
||||
const state = parseInt(value[`${handsource}_state`]) || 0;
|
||||
clog(debug, timer, 'state =', state, 'updateWeaponStates()');
|
||||
clog(debug, timer, 'state =', state);
|
||||
if(state > 0) {
|
||||
setWeaponStates(debug, timer, extraarmIDs, value, handsource, setObj);
|
||||
setActiveWeapon(debug, timer, value, handsource, setObj);
|
||||
@@ -11706,7 +11707,7 @@
|
||||
setArms(debug, timer, value, rowID, setObj, name, false, "offhand");
|
||||
updateWeaponStates(debug, timer, attrdb, extraarmIDs, value, "mainhand", sourceAttr, setObj);
|
||||
} else {
|
||||
if (source.indexOf(',') > 1) source = source.split(',');
|
||||
if (source.indexOf(',') !== -1) source = source.split(',');
|
||||
_.each(source, (extraarm, i) => {
|
||||
if (extraarm === source[i]) {
|
||||
setArms(debug, timer, value, rowID, setObj, name, false, extraarm);
|
||||
@@ -12355,9 +12356,9 @@
|
||||
return result;
|
||||
}
|
||||
|
||||
function setActiveWeapon(debug, timer, value, rowID, setObj) {
|
||||
const state = parseInt(setObj[`${rowID}_state`]) || 0;
|
||||
const source = state > 0 ? value[`${rowID}_source`] : '';
|
||||
function setActiveWeapon(debug, timer, value, handsource, setObj) {
|
||||
const state = parseInt(setObj[`${handsource}_state`]) || 0;
|
||||
const source = state !== 0 ? value[`${handsource}_source`] : '';
|
||||
clog(debug, timer, 'source =', source, 'setActiveWeapon()');
|
||||
if (source !== undefined) {
|
||||
//setObj.previous_weapon = setObj.active_weapon || value.active_weapon;
|
||||
@@ -12488,8 +12489,10 @@
|
||||
const capacitystate = parseInt(value.weapon_ammo_capacity) || 0;
|
||||
clog(debug, timer, 'ammostate =', ammostate, 'setWeaponAmmo()');
|
||||
clog(debug, timer, 'capacitystate =', capacitystate);
|
||||
if (rowID !== setObj.previous_weapon && _.isString(setObj.previous_weapon)) {
|
||||
if (rowID !== setObj.previous_weapon && !isFalsey(setObj.previous_weapon)) {
|
||||
clog(debug, timer, 'weapon change, save ammo state', '');
|
||||
clog(debug, timer, 'setObj.previous_weapon', setObj.previous_weapon);
|
||||
clog(debug, timer, 'setObj.previous_weapon', setObj.previous_weapon);
|
||||
writeValues(debug, timer, value, `repeating_attr_${setObj.previous_weapon}_ammostate`, ammostate, setObj);
|
||||
writeValues(debug, timer, value, `repeating_attr_${setObj.previous_weapon}_capacitystate`, capacitystate, setObj);
|
||||
}
|
||||
@@ -13376,25 +13379,27 @@
|
||||
}
|
||||
|
||||
function recordAmmoState(debug, timer, value, setObj) {
|
||||
clog(debug, timer, '', '', 'recordAmmoState()');
|
||||
writeValues(debug, timer, value, `repeating_attr_${value.active_weapon}_ammostate`, value.weapon_ammo_reloads, setObj);
|
||||
writeValues(debug, timer, value, `repeating_attr_${value.active_weapon}_capacitystate`, value.weapon_ammo_capacity, setObj);
|
||||
}
|
||||
|
||||
function disableActiveWeapon(debug, timer, value, rowID, setObj) {
|
||||
clog(debug, timer, '', '', 'disableActiveWeapon()');
|
||||
const attribute = value[`repeating_attr_${rowID}_attribute`];
|
||||
if (attribute !== 'weapon') return;
|
||||
const activeweapon = value.active_weapon || 'empty';
|
||||
if (activeweapon.length === 20) recordAmmoState(debug, timer, value, setObj);
|
||||
const activeweapon = value.active_weapon || '';
|
||||
if (activeweapon.length !== 0) recordAmmoState(debug, timer, value, setObj);
|
||||
setObj.weapon_range = 0;
|
||||
setObj.weapon_ammo_autofire = 0;
|
||||
setObj.weapon_ammo = 0;
|
||||
setObj.weapon_autofire = 0;
|
||||
const state = parseInt(setObj[`repeating_attr_${rowID}_activate`]) ||
|
||||
parseInt(value[`repeating_attr_${rowID}_activate`]) || 0;
|
||||
clog(debug, timer, 'state =', state, 'disableActiveWeapon()');
|
||||
clog(debug, timer, 'state =', state);
|
||||
clog(debug, timer, 'activeweapon =', activeweapon);
|
||||
if (!state) return;
|
||||
if (activeweapon == rowID) {
|
||||
if (activeweapon === rowID) {
|
||||
setObj.active_weapon = '';
|
||||
}
|
||||
}
|
||||
@@ -13443,24 +13448,42 @@
|
||||
return result;
|
||||
}
|
||||
|
||||
function setWeaponStates(debug, timer, extraarmIDs, value, rowID, setObj) {
|
||||
function setWeaponStates(debug, timer, extraarmIDs, value, handsource, setObj) {
|
||||
clog(debug, timer, 'handsource =', handsource, 'setWeaponStates()');
|
||||
const armedID =
|
||||
setObj[`${rowID}_source`] ||
|
||||
value[`${rowID}_source`];
|
||||
setObj[`${handsource}_source`] ||
|
||||
value[`${handsource}_source`];
|
||||
clog(debug, timer, 'armedID =', armedID);
|
||||
const handSources = value[`repeating_attr_${armedID}_source`] !== undefined ?
|
||||
value[`repeating_attr_${armedID}_source`].indexOf(',') !== -1 ?
|
||||
value[`repeating_attr_${armedID}_source`].split(',') :
|
||||
value[`repeating_attr_${armedID}_source`] : '';
|
||||
const isTwoHanded = _.isArray(handSources);
|
||||
const handsArray = buildHandsArray(debug, timer, extraarmIDs);
|
||||
clog(debug, timer, 'handsArray =', handsArray);
|
||||
const handsStateArray =
|
||||
_.map(handsArray, hand => {
|
||||
const source = setObj[`${hand}_source`] || value[`${hand}_source`];
|
||||
clog(debug, timer, 'hand[source] =', `${hand}[${source}]`);
|
||||
const state = parseInt(setObj[`${hand}_state`]) || parseInt(value[`${hand}_state`]) || 0;
|
||||
clog(debug, timer, 'state =', state);
|
||||
const isActive = //isNaN(parseInt(setObj[`repeating_attr_${source}_activate`])) ?
|
||||
//parseInt(value[`repeating_attr_${source}_activate`]) || 0 :
|
||||
parseInt(setObj[`repeating_attr_${source}_activate`]) || 0;
|
||||
clog(debug, timer, 'isActive =', isActive);
|
||||
//const sourceHandPosition = handSources.indexOf(hand);
|
||||
const isExtraArm = extraarmIDs.indexOf(hand) !== -1 ? true : false;
|
||||
const extraArmType = parseInt(value[`${hand}_type`]) || false;
|
||||
const isWeaponMount = isExtraArm && extraArmType === 0 ? true : false;
|
||||
const handstate = source == armedID ?
|
||||
state == 0 ? 1 : 0 : 0;
|
||||
isTwoHanded ?
|
||||
parseInt(setObj[`${handSources[0]}_state`]) || parseInt(value[`${handSources[0]}_state`]) === 0 ? 1 : 0 :
|
||||
state === 0 ? 1 : 0 : 0;
|
||||
return handstate;
|
||||
});
|
||||
clog(debug, timer, 'handsStateArray:', handsStateArray, 'setWeaponStates()');
|
||||
clog(debug, timer, 'handsStateArray:', handsStateArray);
|
||||
_.each(handsArray, (hand, i) => {
|
||||
clog(debug, timer, 'hand[state]', `${hand}[${handsStateArray[i]}]`);
|
||||
//setObj[`${hand}_state`] = handsStateArray[i];
|
||||
writeValues(debug, timer, value, `${hand}_state`, handsStateArray[i], setObj);
|
||||
});
|
||||
@@ -14174,6 +14197,7 @@
|
||||
const isActive = setButtonState(debug, timer, value, source, rowID, sourceAttr, setObj);
|
||||
const handsource = getHandSource(debug, timer, extraarmIDs, value[`repeating_attr_${rowID}_source`]);
|
||||
const handstate = handsource !== false ? parseInt(value[`${handsource}_state`]) || 0 : false;
|
||||
clog(debug, timer, 'handstate =', handstate, 'TEST');
|
||||
setAttrEffects(debug, timer, isActive, value, attrdb, extraarmIDs, attrIDs, skillIDs, sectionName, rowID, sourceAttr, setObj);
|
||||
//setPoolCostIfGroupIsFlux(debug, timer, attrIDs, value, rowID, setObj);
|
||||
setAttrGroupPoolSpentByActivation(debug, timer, isActive, attrIDs, value, rowID, setObj);
|
||||
@@ -14181,6 +14205,13 @@
|
||||
disableActiveWeapon(debug, timer, value, rowID, setObj);
|
||||
if (handstate) {
|
||||
setWeaponAmmo(debug, timer, attrdb, value, handsource, setObj);
|
||||
|
||||
//const handsource = getHandSource(debug, timer, extraarmIDs, rowID);
|
||||
//setWeaponStates(debug, timer, extraarmIDs, value, rowID, setObj);
|
||||
//setActiveWeapon(debug, timer, value, handsource, setObj);
|
||||
//setActiveWeaponUI(debug, timer, attrdb, value, setObj);
|
||||
//setWeaponAmmo(debug, timer, attrdb, value, handsource, setObj);
|
||||
//setCombatRoll(debug, timer, value, attrdb, value[`${handsource}_source`], sourceAttr, setObj);
|
||||
}
|
||||
setGroupDefectPointsOnActivation(debug, timer, attrIDs, attrdb, value, sectionName, rowID, setObj);
|
||||
setDepleteResurvation(debug, timer, attrdb, value, rowID, setObj);
|
||||
@@ -14369,8 +14400,9 @@
|
||||
setStatButtonStatsAndRolls(debug, timer, eventInfo, value, rowID, sourceAttr, setObj);
|
||||
switch (`${sourceAttr}`) {
|
||||
case `armedstate`:
|
||||
const handsource = getHandSource(debug, timer, extraarmIDs, rowID);
|
||||
setWeaponStates(debug, timer, extraarmIDs, value, rowID, setObj);
|
||||
setActiveWeapon(debug, timer, value, rowID, setObj);
|
||||
setActiveWeapon(debug, timer, value, handsource, setObj);
|
||||
setActiveWeaponUI(debug, timer, attrdb, value, setObj);
|
||||
setWeaponAmmo(debug, timer, attrdb, value, rowID, setObj);
|
||||
setCombatRoll(debug, timer, value, attrdb, value[`${rowID}_source`], sourceAttr, setObj);
|
||||
|
||||
Reference in New Issue
Block a user