Fixed vehicle movement costs.

This commit is contained in:
Villain1nGlasses
2025-02-05 16:46:50 -07:00
parent a509dfda78
commit ba93b2a720
2 changed files with 158 additions and 137 deletions
+20 -12
View File
@@ -890,7 +890,7 @@ select:focus + .focus {
min-width: 313px;
background: #c6d2f6;
border: solid 1px #8da5ed;
border-top: solid 2px #8da5ed;
border-bottom: solid 2px #8da5ed;
border-radius: 3px;
}
@@ -1242,8 +1242,8 @@ select:focus + .focus {
}
.item-characteristics-vehicle-propulsion-systems {
min-height: 143px;
max-height: 143px;
min-height: 157px;
max-height: 157px;
}
.item-characteristics-power-system,
@@ -1297,8 +1297,8 @@ select:focus + .focus {
background-color: #f4ec7a;
border: solid 1px #ebb232;
border-bottom: solid 2px #ebb232;
min-height: 112px;
max-height: 112px;
min-height: 126px;
max-height: 126px;
}
.item-characteristics-power-system-row,
@@ -1321,14 +1321,14 @@ select:focus + .focus {
margin-bottom: 2px;
margin-left: 2px;
padding: 0px;
max-width: 46px;
max-width: 42px;
border: none;
background-color: transparent;
}
.item-characteristics-power-system-row h2,
.item-characteristics-propulsion-system-row h2 {
min-width: 25px;
min-width: 20px;
margin: 0px;
font-size: 13px;
text-align: left;
@@ -1380,7 +1380,7 @@ select:focus + .focus {
flex-direction: row;
justify-content: space-between;
align-items: baseline;
min-width: 82px;
max-width: 68px;
}
.item-characteristics-power-system-row .custom-select-alternate,
@@ -1388,24 +1388,24 @@ select:focus + .focus {
top: -1px;
padding-left: 3px;
padding-bottom: 3px;
margin: 0px;
max-height: 17px;
text-align-last: center;
}
.item-characteristics-power-system-row .custom-select-alternate {
width: 44px;
width: 40px;
border: solid 1px #8da5ed;
}
.item-characteristics-propulsion-system-row .custom-select-alternate {
width: 44px;
width: 40px;
border: 1px solid #f2cf7f;
}
.item-characteristics-power-system-block textarea,
.item-characteristics-propulsion-system-block textarea {
width: 148px;
min-height: 30px;
padding: 2px;
border: none;
text-align: left;
@@ -1416,6 +1416,14 @@ select:focus + .focus {
line-height: 1.1;
}
.item-characteristics-power-system-block textarea {
min-height: 30px;
}
.item-characteristics-propulsion-system-block textarea {
min-height: 45px;
}
.item-characteristics-power-system-block textarea {
&:focus {
background-color: #d9e1f9;
@@ -1884,7 +1892,7 @@ select:focus + .focus {
align-items: center;
background: #c6d2f6;
border: solid 1px #8da5ed;
border-top: solid 2px #8da5ed;
border-bottom: solid 2px #8da5ed;
border-radius: 2px;
}
+138 -125
View File
@@ -397,16 +397,19 @@
<option value="clinging">Clinging</option>
</select>
</div>
<div class="subitem-characteristics-system-cost">
<h2>CP</h2>
<input type="text" value="0" name="attr_primaryPropulsionCP" readonly tabindex="-1" title="@{primaryPropulsionCP"/>
</div>
<input type="text" value="0" name="attr_primaryPropulsionCP" readonly tabindex="-1" title="@{primaryPropulsionCP"/>
</div>
<div class="item-characteristics-propulsion-system-row">
<div class="subitem-characteristics-system-value">
<h2>Base</h2>
<input type="number" value="0" name="attr_primaryPropulsion" min="0" step="1" tabindex="46" title="@{primaryPropulsion}"/>
</div>
<div class="subitem-characteristics-system-value">
<h2>Mod</h2>
<input type="number" value="0" name="attr_primaryPropulsionMod" step="1" tabindex="47" title="@{primaryPropulsionMod}"/>
</div>
</div>
<div class="item-characteristics-propulsion-system-row">
<div class="custom-select-alternate">
<select name="attr_primaryNoncombatMultiple" title="@{attr_primaryNoncombatMultiple}" tabindex="-1">
<option value="1" selected>&#215;2</option>
@@ -416,15 +419,9 @@
<option value="5">&#215;32</option>
</select>
</div>
</div>
<div class="item-characteristics-propulsion-system-row">
<div class="subitem-characteristics-system-value">
<h2>Mod</h2>
<input type="number" value="0" name="attr_primaryPropulsionMod" step="1" tabindex="47" title="@{primaryPropulsionMod}"/>
</div>
<div class="custom-select-alternate">
<select name="attr_primaryPropulsionLIM" title="@{attr_primaryPropulsionLIM}" tabindex="-1">
<option value="0" selected>Limit</option>
<select name="attr_primaryPropulsionADV" title="@{attr_primaryPropulsionADV}" tabindex="-1">
<option value="0" selected>Adv</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.50">0.50</option>
@@ -440,8 +437,26 @@
<option value="3.00">3.00</option>
</select>
</div>
<div class="custom-select-alternate">
<select name="attr_primaryPropulsionLIM" title="@{attr_primaryPropulsionLIM}" tabindex="-1">
<option value="0" selected>Limit</option>
<option value="0">0</option>
<option value="0.25">-0.25</option>
<option value="0.50">-0.50</option>
<option value="0.75">-0.75</option>
<option value="1.00">-1.00</option>
<option value="1.25">-1.25</option>
<option value="1.50">-1.50</option>
<option value="1.75">-1.75</option>
<option value="2.00">-2.00</option>
<option value="2.25">-2.25</option>
<option value="2.50">-2.50</option>
<option value="2.75">-2.75</option>
<option value="3.00">-3.00</option>
</select>
</div>
</div>
<textarea placeholder="Limitations" name="attr_primaryPropulsionText" title="@{primaryPropulsionText}" cols="18" rows="2" maxlength="50" tabindex="3"></textarea>
<textarea placeholder="Modifiers" name="attr_primaryPropulsionText" title="@{primaryPropulsionText}" cols="18" rows="3" maxlength="75" tabindex="3"></textarea>
</div>
</div>
@@ -464,16 +479,19 @@
<option value="clinging">Clinging</option>
</select>
</div>
<div class="subitem-characteristics-system-cost">
<h2>CP</h2>
<input type="text" value="0" name="attr_secondaryPropulsionCP" readonly tabindex="-1" title="@{secondaryPropulsionCP"/>
</div>
<input type="text" value="0" name="attr_secondaryPropulsionCP" readonly tabindex="-1" title="@{secondaryPropulsionCP"/>
</div>
<div class="item-characteristics-propulsion-system-row">
<div class="subitem-characteristics-system-value">
<h2>Base</h2>
<input type="number" value="0" name="attr_secondaryPropulsion" min="0" step="1" tabindex="46" title="@{secondaryPropulsion}"/>
</div>
<div class="subitem-characteristics-system-value">
<h2>Mod</h2>
<input type="number" value="0" name="attr_secondaryPropulsionMod" step="1" tabindex="47" title="@{secondaryPropulsionMod}"/>
</div>
</div>
<div class="item-characteristics-propulsion-system-row">
<div class="custom-select-alternate">
<select name="attr_secondaryNoncombatMultiple" title="@{attr_secondaryNoncombatMultiple}" tabindex="-1">
<option value="1" selected>&#215;2</option>
@@ -483,15 +501,9 @@
<option value="5">&#215;32</option>
</select>
</div>
</div>
<div class="item-characteristics-propulsion-system-row">
<div class="subitem-characteristics-system-value">
<h2>Mod</h2>
<input type="number" value="0" name="attr_secondaryPropulsionMod" step="1" tabindex="47" title="@{secondaryPropulsionMod}"/>
</div>
<div class="custom-select-alternate">
<select name="attr_secondaryPropulsionLIM" title="@{attr_secondaryPropulsionLIM}" tabindex="-1">
<option value="0" selected>Limit</option>
<select name="attr_secondaryPropulsionADV" title="@{attr_secondaryPropulsionADV}" tabindex="-1">
<option value="0" selected>Adv</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.50">0.50</option>
@@ -507,8 +519,26 @@
<option value="3.00">3.00</option>
</select>
</div>
<div class="custom-select-alternate">
<select name="attr_secondaryPropulsionLIM" title="@{attr_secondaryPropulsionLIM}" tabindex="-1">
<option value="0" selected>Limit</option>
<option value="0">0</option>
<option value="0.25">-0.25</option>
<option value="0.50">-0.50</option>
<option value="0.75">-0.75</option>
<option value="1.00">-1.00</option>
<option value="1.25">-1.25</option>
<option value="1.50">-1.50</option>
<option value="1.75">-1.75</option>
<option value="2.00">-2.00</option>
<option value="2.25">-2.25</option>
<option value="2.50">-2.50</option>
<option value="2.75">-2.75</option>
<option value="3.00">-3.00</option>
</select>
</div>
</div>
<textarea placeholder="Limitations" name="attr_secondaryPropulsionText" title="@{secondaryPropulsionText}" cols="18" rows="2" maxlength="50" tabindex="3"></textarea>
<textarea placeholder="Modifiers" name="attr_secondaryPropulsionText" title="@{secondaryPropulsionText}" cols="18" rows="3" maxlength="75" tabindex="3"></textarea>
</div>
</div>
@@ -525,7 +555,7 @@
<input type="number" value="0" name="attr_primaryReserveEND" min ="0" step="4" tabindex="33" title="@{primaryReserveEND}"/>
</div>
<div class="subitem-characteristics-system-cost">
<!-- <h2>CP</h2> -->
<h2>CP</h2>
<input type="text" value="0" name="attr_primaryReserveCP" readonly tabindex="-1" title="@{primaryReserveCP}"/>
</div>
</div>
@@ -538,18 +568,18 @@
<select name="attr_primaryReserveLIM" title="@{attr_primaryReserveLIM}" tabindex="-1">
<option value="0" selected>Limit</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.50">0.50</option>
<option value="0.75">0.75</option>
<option value="1.00">1.00</option>
<option value="1.25">1.25</option>
<option value="1.50">1.50</option>
<option value="1.75">1.75</option>
<option value="2.00">2.00</option>
<option value="2.25">2.25</option>
<option value="2.50">2.50</option>
<option value="2.75">2.75</option>
<option value="3.00">3.00</option>
<option value="0.25">-0.25</option>
<option value="0.50">-0.50</option>
<option value="0.75">-0.75</option>
<option value="1.00">-1.00</option>
<option value="1.25">-1.25</option>
<option value="1.50">-1.50</option>
<option value="1.75">-1.75</option>
<option value="2.00">-2.00</option>
<option value="2.25">-2.25</option>
<option value="2.50">-2.50</option>
<option value="2.75">-2.75</option>
<option value="3.00">-3.00</option>
</select>
</div>
</div>
@@ -566,7 +596,7 @@
<input type="number" value="0" name="attr_auxiliaryReserveEND" step="4" min ="0" tabindex="33" title="@{auxiliaryReserveEND}"/>
</div>
<div class="subitem-characteristics-system-cost">
<!-- <h2>CP</h2> -->
<h2>CP</h2>
<input type="text" value="0" name="attr_auxiliaryReserveCP" readonly tabindex="-1" title="@{attr_auxiliaryReserveCP}"/>
</div>
</div>
@@ -579,18 +609,18 @@
<select name="attr_auxiliaryReserveLIM" title="@{attr_auxiliaryReserveLIM}" tabindex="-1">
<option value="0" selected>Limit</option>
<option value="0">0</option>
<option value="0.25">0.25</option>
<option value="0.50">0.50</option>
<option value="0.75">0.75</option>
<option value="1.00">1.00</option>
<option value="1.25">1.25</option>
<option value="1.50">1.50</option>
<option value="1.75">1.75</option>
<option value="2.00">2.00</option>
<option value="2.25">2.25</option>
<option value="2.50">2.50</option>
<option value="2.75">2.75</option>
<option value="3.00">3.00</option>
<option value="0.25">-0.25</option>
<option value="0.50">-0.50</option>
<option value="0.75">-0.75</option>
<option value="1.00">-1.00</option>
<option value="1.25">-1.25</option>
<option value="1.50">-1.50</option>
<option value="1.75">-1.75</option>
<option value="2.00">-2.00</option>
<option value="2.25">-2.25</option>
<option value="2.50">-2.50</option>
<option value="2.75">-2.75</option>
<option value="3.00">-3.00</option>
</select>
</div>
</div>
@@ -18581,8 +18611,8 @@
// Update primary propulsion mode for vehicles.
on("change:primaryPropulsionMode change:primaryPropulsion change:primaryPropulsionMod change:primaryNoncombatMultiple change:primaryPropulsionLIM change:weightMovePenalty", function() {
getAttrs(["primaryPropulsionMode", "primaryPropulsion", "primaryPropulsionMod", "primaryNoncombatMultiple", "primaryPropulsionLIM", "weightMovePenalty"], function(values) {
on("change:primaryPropulsionMode change:primaryPropulsion change:primaryPropulsionMod change:primaryNoncombatMultiple change:primaryPropulsionLIM change:primaryPropulsionADV change:weightMovePenalty", function() {
getAttrs(["primaryPropulsionMode", "primaryPropulsion", "primaryPropulsionMod", "primaryNoncombatMultiple", "primaryPropulsionADV", "primaryPropulsionLIM", "weightMovePenalty"], function(values) {
const statValue = Math.max(0, parseInt(values.primaryPropulsion)||0);
const statMod = parseInt(values.primaryPropulsionMod)||0;
@@ -18591,49 +18621,45 @@
const theMode = values.primaryPropulsionMode||"ground";
let statNet = 0;
let statCP = 0;
let advantages = Math.max(0, parseFloat(values.primaryPropulsionADV)||0);
let limitations = Math.max(0, parseFloat(values.primaryPropulsionLIM)||0);
let limitCoefficient = 1/(1+limitations);
let netMove = "NA";
switch (theMode) {
case "ground": statNet = Math.max(0, statValue + statMod + penalty);
statCP = limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
statCP = statValue + 5*statMultiple;
break;
case "flight": statNet = Math.max(0, statValue + statMod + penalty);
statCP = limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
statCP = statValue + 5*statMultiple;
break;
case "swimming": statNet = Math.max(0, statValue + statMod + penalty);
statCP = 0.5 * limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
statCP = 0.5*(statValue + 5*statMultiple);
break;
case "leaping": statNet = Math.max(0, statValue + statMod + penalty);
statCP = 0.5 * limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
statCP = 0.5*(statValue + 5*statMultiple);
break;
case "swinging": statNet = Math.max(0, statValue + statMod + penalty);
statCP = 0.5 * limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
statCP = 0.5*(statValue + 5*statMultiple);
break;
case "teleport": statNet = Math.max(0, statValue + statMod + penalty);
statCP = limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
break;
case "extra": statCP = 20 * limitCoefficient;
case "extra": statCP = 20;
break;
case "ftl": statCP = 10 * limitCoefficient;
case "ftl": statCP = 10;
break;
case "clinging": statCP = 10 * limitCoefficient;
case "clinging": statCP = 10;
break;
}
statCP = heroRoundLow( (1+advantages) * statCP );
statCP = heroRoundLow( statCP/(1+limitations) );
// Update cost and net movement
setAttrs({
"primaryPropulsionCP": heroRoundHigh(statCP),
@@ -18647,8 +18673,8 @@
// Update secondary propulsion mode for vehicles.
on("change:secondaryPropulsionMode change:secondaryPropulsion change:secondaryPropulsionMod change:secondaryNoncombatMultiple change:secondaryPropulsionLIM change:weightMovePenalty", function() {
getAttrs(["secondaryPropulsionMode", "secondaryPropulsion", "secondaryPropulsionMod", "secondaryNoncombatMultiple", "secondaryPropulsionLIM", "weightMovePenalty"], function(values) {
on("change:secondaryPropulsionMode change:secondaryPropulsion change:secondaryPropulsionMod change:secondaryNoncombatMultiple change:secondaryPropulsionADV change:secondaryPropulsionLIM change:weightMovePenalty", function() {
getAttrs(["secondaryPropulsionMode", "secondaryPropulsion", "secondaryPropulsionMod", "secondaryNoncombatMultiple", "secondaryPropulsionADV", "secondaryPropulsionLIM", "weightMovePenalty"], function(values) {
const statValue = Math.max(0, parseInt(values.secondaryPropulsion)||0);
const statMod = parseInt(values.secondaryPropulsionMod)||0;
@@ -18657,49 +18683,45 @@
const theMode = values.secondaryPropulsionMode||"ground";
let statNet = 0;
let statCP = 0;
let advantages = Math.max(0, parseFloat(values.secondaryPropulsionADV)||0);
let limitations = Math.max(0, parseFloat(values.secondaryPropulsionLIM)||0);
let limitCoefficient = 1/(1+limitations);
let netMove = "NA";
switch (theMode) {
case "ground": statNet = Math.max(0, statValue + statMod + penalty);
statCP = limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
statCP = statValue + 5*statMultiple;
break;
case "flight": statNet = Math.max(0, statValue + statMod + penalty);
statCP = limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
statCP = statValue + 5*statMultiple;
break;
case "swimming": statNet = Math.max(0, statValue + statMod + penalty);
statCP = 0.5 * limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
statCP = 0.5*(statValue + 5*statMultiple);
break;
case "leaping": statNet = Math.max(0, statValue + statMod + penalty);
statCP = 0.5 * limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
statCP = 0.5*(statValue + 5*statMultiple);
break;
case "swinging": statNet = Math.max(0, statValue + statMod + penalty);
statCP = 0.5 * limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
statCP = 0.5*(statValue + 5*statMultiple);
break;
case "teleport": statNet = Math.max(0, statValue + statMod + penalty);
statCP = limitCoefficient * statValue;
statCP += 5*statMultiple;
netMove = statNet.toString();
break;
case "extra": statCP = 20 * limitCoefficient;
case "extra": statCP = 20;
break;
case "ftl": statCP = 10 * limitCoefficient;
case "ftl": statCP = 10;
break;
case "clinging": statCP = 10 * limitCoefficient;
case "clinging": statCP = 10;
break;
}
statCP = heroRoundLow( (1+advantages) * statCP );
statCP = heroRoundLow( statCP/(1+limitations) );
// Update cost and net movement
setAttrs({
"secondaryPropulsionCP": heroRoundHigh(statCP),
@@ -18852,15 +18874,15 @@
var powerActiveCost=0;
switch (powerReducedEND) {
case 'reducedENDAF': powerActiveCost=powerBaseCost*(powerAdvantages+1.5);
break;
case 'zeroENDAF': powerActiveCost=powerBaseCost*(powerAdvantages+2);
break;
case 'reducedEND': powerActiveCost=powerBaseCost*(powerAdvantages+1.25);
break;
case 'zeroEND': powerActiveCost=powerBaseCost*(powerAdvantages+1.5);
break;
default: powerActiveCost=powerBaseCost*(1+powerAdvantages);
case 'reducedENDAF': powerActiveCost=powerBaseCost*(powerAdvantages+1.5);
break;
case 'zeroENDAF': powerActiveCost=powerBaseCost*(powerAdvantages+2);
break;
case 'reducedEND': powerActiveCost=powerBaseCost*(powerAdvantages+1.25);
break;
case 'zeroEND': powerActiveCost=powerBaseCost*(powerAdvantages+1.5);
break;
default: powerActiveCost=powerBaseCost*(1+powerAdvantages);
}
return powerActiveCost;
@@ -18870,29 +18892,29 @@
function increasedENDlimitation(settingEND) {
switch (settingEND) {
case 'costsENDhalf': return 0.25;
break;
break;
case 'costsENDfull': return 0.5;
break;
break;
case 'increasedENDx2': return 0.5;
break;
break;
case 'increasedENDx2': return 0.5;
break;
break;
case 'increasedENDx3': return 1;
break;
break;
case 'increasedENDx4': return 1.5;
break;
break;
case 'increasedENDx5': return 2;
break;
break;
case 'increasedENDx6': return 2.5;
break;
break;
case 'increasedENDx7': return 3;
break;
break;
case 'increasedENDx8': return 3.5;
break;
break;
case 'increasedENDx9': return 3.5;
break;
break;
case 'increasedENDx10': return 4;
break;
break;
default: return 0;
}
}
@@ -18927,22 +18949,13 @@
if (powerBaseCost != 0) {
switch (powerType) {
case 'variableSlot': powerRealCost=powerActiveCost/(1+powerLimitations)/5;
powerRealCost=heroRoundLow(powerRealCost);
if (powerRealCost<1) {
powerRealCost=1;
};
break;
case 'fixedSlot': powerRealCost=powerActiveCost/(1+powerLimitations)/10;
powerRealCost=heroRoundLow(powerRealCost);
if (powerRealCost<1) {
powerRealCost=1;
};
break;
default: powerRealCost=powerActiveCost/(1+powerLimitations);
powerRealCost=heroRoundLow(powerRealCost);
if (powerRealCost<1) {
powerRealCost=1;
};
powerRealCost=Math.max(1, heroRoundLow(powerRealCost) );
break;
case 'fixedSlot': powerRealCost=powerActiveCost/(1+powerLimitations)/10;
powerRealCost=Math.max(1, heroRoundLow(powerRealCost) );
break;
default: powerRealCost=powerActiveCost/(1+powerLimitations);
powerRealCost=Math.max(1, heroRoundLow(powerRealCost) );
}
} else {
powerActiveCost=0;