Widget:PriceCalculator: Difference between revisions
Jump to navigation
Jump to search
(Create initial) |
(Use math.round) |
||
(17 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<includeonly> | <includeonly> | ||
<div id="bg3wiki-price-calculator-form"> | <div id="bg3wiki-price-calculator"> | ||
<label for="item-value">Item value</label> <input type="number" id="item-value" size=" | <table id="bg3wiki-price-calculator-form"> | ||
<label for="persuasion-mod">Persuasion modifier</label> <input type="number" id="persuasion-mod" size=" | <tr> | ||
<label for="attitude">Attitude</label> <input type="number" id="attitude" size=" | <th><label for="item-value">Item value</label></th><td><input type="number" id="item-value" size="7" value="1000"/></td> | ||
<label for="difficulty">Difficulty</label> | </tr> | ||
<input type="radio" name="difficulty" id="difficulty-explorer" value="explorer" required/><label for="difficulty-explorer">Explorer</label> | <tr> | ||
<input type="radio" name="difficulty" id="difficulty-balanced" value="balanced" checked /><label for="difficulty-balanced">Balanced</label> | <th><label for="persuasion-mod">Persuasion modifier</label></th><td><input type="number" id="persuasion-mod" size="3" value="0"/></td> | ||
<input type="radio" name="difficulty" id="difficulty-tactician" value="tactician" /><label for="difficulty-tactician">Tactician</label> | </tr> | ||
<input type="button" value="Submit" /> | <tr> | ||
<th><label for="attitude">Attitude</label></th><td><input type="number" id="attitude" size="4"/></td> | |||
</tr> | |||
<tr> | |||
<th><label for="difficulty">Difficulty</label></th><td> | |||
<input type="radio" name="difficulty" id="difficulty-explorer" value="explorer" required/><label for="difficulty-explorer">Explorer</label> | |||
<input type="radio" name="difficulty" id="difficulty-balanced" value="balanced" checked /><label for="difficulty-balanced">Balanced</label> | |||
<input type="radio" name="difficulty" id="difficulty-tactician" value="tactician" /><label for="difficulty-tactician">Tactician</label> | |||
</td> | |||
</tr> | |||
<tr> | |||
<th></th><td><input type="button" value="Submit" id="submit" /></td> | |||
</tr> | |||
</table> | |||
<hr/> | |||
<div id="bg3wiki-price-calculator-result"></div> | |||
</div> | </div> | ||
<script> | <script> | ||
document.querySelector("#bg3wiki-price-calculator-form #submit").addEventListener("click", do_calculation); | |||
function sanitize(input) { | |||
// a null-y input or a blank string should be treated as 0 | |||
if (input == "" || input == null) { | |||
return 0; | |||
} | |||
return +input; | |||
} | |||
function get_difficulty_mod(difficulty) { | |||
switch (difficulty) { | |||
case "explorer": return 0.5; | |||
case "balanced": return 0; | |||
case "tactician": return -0.5; | |||
default: return 0; | |||
} | |||
} | |||
function create_output_row(header, content) { | |||
let row = document.createElement('tr'); | |||
row.appendChild(document.createElement('th')).textContent = header; | |||
row.appendChild(document.createElement('td')).textContent = content; | |||
return row; | |||
} | |||
let output = document.querySelector('#bg3wiki-price-calculator-result'); | |||
function do_calculation() { | |||
let get_value = (selector) => document.querySelector(selector).value; | |||
let item_value = sanitize(get_value('#item-value')); | |||
let persuasion_mod = sanitize(get_value('#persuasion-mod')) * 0.1; | |||
let attitude = sanitize(get_value('#attitude')) * 0.005; | |||
let difficulty = document.querySelector('input[name="difficulty"]:checked').value; | |||
difficulty = get_difficulty_mod(difficulty) | |||
let price_mod = Math.max(1.0, 2.5 - persuasion_mod - attitude - difficulty); | |||
let price_buy = Math.round(item_value * price_mod); | |||
let price_sell = Math.round(item_value / price_mod); | |||
output.textContent = ''; | |||
let table = document.createElement('table'); | |||
table.classList.add('wikitable'); | |||
table.appendChild(create_output_row('Base item price', item_value)); | |||
table.appendChild(create_output_row('Item price (selling)', price_sell)); | |||
table.appendChild(create_output_row('Item price (buying)', price_buy)); | |||
output.appendChild(table); | |||
} | |||
</script> | </script> | ||
</includeonly> | </includeonly> | ||
<noinclude>{{#widget:PriceCalculator}}</noinclude> | <noinclude>{{PageSeo | ||
| title = Widget:PriceCalculator | |||
| description = Price calculator for determining the buy & sell price of items. | |||
}}{{#widget:PriceCalculator}}</noinclude> |