<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://shadowstuff.de/index.php?action=history&amp;feed=atom&amp;title=mw%3AHausregeln%2FMechreichweitenrechner</id>
	<title>mw:Hausregeln/Mechreichweitenrechner - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://shadowstuff.de/index.php?action=history&amp;feed=atom&amp;title=mw%3AHausregeln%2FMechreichweitenrechner"/>
	<link rel="alternate" type="text/html" href="https://shadowstuff.de/index.php?title=mw:Hausregeln/Mechreichweitenrechner&amp;action=history"/>
	<updated>2026-04-07T20:04:08Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Shadowstuff</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://shadowstuff.de/index.php?title=mw:Hausregeln/Mechreichweitenrechner&amp;diff=518&amp;oldid=prev</id>
		<title>Schevv: Die Seite wurde neu angelegt: „&lt;div class=&quot;replaceme&quot;&gt;&lt;nowiki&gt; &lt;script type=&quot;text/javascript&quot;&gt; function calculateMechRanges() {   const hexMin = parseInt($(&quot;#minRange&quot;).val());   const hexShort = parseInt($(&quot;#shortRange&quot;).val());   const hexMedium = parseInt($(&quot;#mediumRange&quot;).val());   const hexLong = parseInt($(&quot;#longRange&quot;).val());   const damage = parseInt($(&quot;#weaponDamage&quot;).val());   const weaponType = parseInt($(&quot;#weaponType&quot;).val());    if (isNaN(hexMin) || isNaN(hexShort) || isN…“</title>
		<link rel="alternate" type="text/html" href="https://shadowstuff.de/index.php?title=mw:Hausregeln/Mechreichweitenrechner&amp;diff=518&amp;oldid=prev"/>
		<updated>2022-06-05T09:02:29Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „&amp;lt;div class=&amp;quot;replaceme&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt; &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt; function calculateMechRanges() {   const hexMin = parseInt($(&amp;quot;#minRange&amp;quot;).val());   const hexShort = parseInt($(&amp;quot;#shortRange&amp;quot;).val());   const hexMedium = parseInt($(&amp;quot;#mediumRange&amp;quot;).val());   const hexLong = parseInt($(&amp;quot;#longRange&amp;quot;).val());   const damage = parseInt($(&amp;quot;#weaponDamage&amp;quot;).val());   const weaponType = parseInt($(&amp;quot;#weaponType&amp;quot;).val());    if (isNaN(hexMin) || isNaN(hexShort) || isN…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;replaceme&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
function calculateMechRanges() {&lt;br /&gt;
  const hexMin = parseInt($(&amp;quot;#minRange&amp;quot;).val());&lt;br /&gt;
  const hexShort = parseInt($(&amp;quot;#shortRange&amp;quot;).val());&lt;br /&gt;
  const hexMedium = parseInt($(&amp;quot;#mediumRange&amp;quot;).val());&lt;br /&gt;
  const hexLong = parseInt($(&amp;quot;#longRange&amp;quot;).val());&lt;br /&gt;
  const damage = parseInt($(&amp;quot;#weaponDamage&amp;quot;).val());&lt;br /&gt;
  const weaponType = parseInt($(&amp;quot;#weaponType&amp;quot;).val());&lt;br /&gt;
&lt;br /&gt;
  if (isNaN(hexMin) || isNaN(hexShort) || isNaN(hexMedium) || isNaN(hexLong) || isNaN(damage)) { return; }&lt;br /&gt;
&lt;br /&gt;
  const hexExtreme = hexMedium * 2;&lt;br /&gt;
&lt;br /&gt;
  let dmgExtreme = damage;&lt;br /&gt;
  switch (weaponType) {&lt;br /&gt;
    case 1:&lt;br /&gt;
    case 3:&lt;br /&gt;
      dmgExtreme = Math.max(0, damage - 1);&lt;br /&gt;
      break;&lt;br /&gt;
    case 2:&lt;br /&gt;
      dmgExtreme = Math.max(0, damage &amp;gt;&amp;gt; 1);&lt;br /&gt;
      break;&lt;br /&gt;
    case 4:&lt;br /&gt;
      dmgExtreme = Math.max(0, damage * 3 &amp;gt;&amp;gt; 2);&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  const mMin = hexMin * 30;&lt;br /&gt;
  const mShort = hexShort * 30;&lt;br /&gt;
  const mMedium = hexMedium * 30;&lt;br /&gt;
  const mLong = hexLong * 30;&lt;br /&gt;
  const mExtreme = hexExtreme * 30;&lt;br /&gt;
&lt;br /&gt;
  let metersSrt = i =&amp;gt; hexShort * 10 * (i + 1);&lt;br /&gt;
  let metersMed = i =&amp;gt; mShort + (hexMedium - hexShort) * 10 * (i + 1);&lt;br /&gt;
  let metersLng = i =&amp;gt; mMedium + (hexLong - hexMedium) * 10 * (i + 1);&lt;br /&gt;
  let metersExt = i =&amp;gt; mLong + (hexExtreme - hexLong) * 10 * (i + 1);&lt;br /&gt;
  const mLosSteps = metersLng(1) - metersLng(0);&lt;br /&gt;
  function metersAll(i) {&lt;br /&gt;
    if (i &amp;lt; 0) {&lt;br /&gt;
      return 0;&lt;br /&gt;
    }&lt;br /&gt;
    if (i &amp;lt; 3) {&lt;br /&gt;
      return metersSrt(i);&lt;br /&gt;
    }&lt;br /&gt;
    if (i &amp;lt; 6) {&lt;br /&gt;
      return metersMed(i - 3);&lt;br /&gt;
    }&lt;br /&gt;
    if (i &amp;lt; 9) {&lt;br /&gt;
      return metersLng(i - 6);&lt;br /&gt;
    }&lt;br /&gt;
    if (i &amp;lt; 12) {&lt;br /&gt;
      return metersExt(i - 9);&lt;br /&gt;
    }&lt;br /&gt;
    return mExtreme + (i - 11) * mLosSteps;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function damageAll(i) {&lt;br /&gt;
    if (i &amp;lt;= mLong) { return weaponType == 5 ? 0 : damage; }&lt;br /&gt;
    switch (weaponType) {&lt;br /&gt;
      case 1:&lt;br /&gt;
      case 3:&lt;br /&gt;
        return i &amp;lt;= mExtreme ? damage - 1 : Math.max(0, damage - 1 - Math.floor((i - mExtreme) / mLosSteps));&lt;br /&gt;
      case 2:&lt;br /&gt;
        return Math.ceil(Math.max(0, damage - damage * (i - mLong) / (mExtreme - mLong) / 2.0));&lt;br /&gt;
      case 4:&lt;br /&gt;
        return Math.floor(Math.max(0, damage - damage * (i - mLong) / (mExtreme - mLong) / 4.0));&lt;br /&gt;
      case 5:&lt;br /&gt;
        return -Math.ceil((i - mLong) / mLosSteps);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  $(&amp;quot;#weaponRangesHex30 &amp;gt; td&amp;quot;).slice(1, 2).text(hexMin == 0 ? &amp;quot;&amp;quot; : hexMin);&lt;br /&gt;
  $(&amp;quot;#weaponRangesHex15 &amp;gt; td&amp;quot;).slice(1, 2).text(hexMin == 0 ? &amp;quot;&amp;quot; : hexMin * 2);&lt;br /&gt;
  $(&amp;quot;#weaponRangesM &amp;gt; td&amp;quot;).slice(1, 2).text(mMin == 0 ? &amp;quot;&amp;quot; : mMin);&lt;br /&gt;
&lt;br /&gt;
  let prev = 0;&lt;br /&gt;
  function range(i, size) {&lt;br /&gt;
    const meters = metersAll(i);&lt;br /&gt;
    let value = Math.floor(meters / size);&lt;br /&gt;
    const _prev = prev;&lt;br /&gt;
    prev = value;&lt;br /&gt;
    if (weaponType != 5 &amp;amp;&amp;amp; damageAll(meters) == 0) { value = &amp;quot;&amp;quot;; }&lt;br /&gt;
    else if (value == _prev) { value = &amp;quot;&amp;quot; }&lt;br /&gt;
    else if (value != _prev + 1) { value = (_prev + 1) + &amp;quot;-&amp;quot; + value; }&lt;br /&gt;
    return value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $(&amp;quot;#weaponRangesHex30 &amp;gt; td&amp;quot;).slice( 2 ).text(i =&amp;gt; range(i, 30));&lt;br /&gt;
  prev = 0;&lt;br /&gt;
  $(&amp;quot;#weaponRangesHex15 &amp;gt; td&amp;quot;).slice( 2 ).text(i =&amp;gt; range(i, 15));&lt;br /&gt;
  $(&amp;quot;#weaponRangesM &amp;gt; td&amp;quot;).slice( 2 ).text(i =&amp;gt; weaponType != 5 &amp;amp;&amp;amp; damageAll(metersAll(i)) == 0 ? &amp;quot;&amp;quot; : (metersAll(i) + &amp;quot;m&amp;quot;));&lt;br /&gt;
  $(&amp;quot;#weaponRangesDmg &amp;gt; td&amp;quot;).slice( 2 ).text(i =&amp;gt; damageAll(metersAll(i)) == 0 ? &amp;quot;&amp;quot; : damageAll(metersAll(i)));&lt;br /&gt;
&lt;br /&gt;
  if (weaponType != 5)&lt;br /&gt;
  {&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
#weaponRanges {&lt;br /&gt;
  text-align: center;&lt;br /&gt;
}&lt;br /&gt;
#weaponRanges tr td {&lt;br /&gt;
  padding: 0.2em 0.1em;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;#&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Waffenname&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Schaden&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Min&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Kurz&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mittel&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lang&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Type&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;weaponName&amp;quot; onchange=&amp;quot;calculateMechRanges()&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;input type=&amp;quot;number&amp;quot; size=&amp;quot;3&amp;quot; min=&amp;quot;0&amp;quot; value=&amp;quot;5&amp;quot; id=&amp;quot;weaponDamage&amp;quot; onchange=&amp;quot;calculateMechRanges()&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;input type=&amp;quot;number&amp;quot; size=&amp;quot;3&amp;quot; min=&amp;quot;0&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;minRange&amp;quot; onchange=&amp;quot;calculateMechRanges()&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;input type=&amp;quot;number&amp;quot; size=&amp;quot;3&amp;quot; min=&amp;quot;0&amp;quot; value=&amp;quot;3&amp;quot; id=&amp;quot;shortRange&amp;quot; onchange=&amp;quot;calculateMechRanges()&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;input type=&amp;quot;number&amp;quot; size=&amp;quot;3&amp;quot; min=&amp;quot;0&amp;quot; value=&amp;quot;6&amp;quot; id=&amp;quot;mediumRange&amp;quot; onchange=&amp;quot;calculateMechRanges()&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;input type=&amp;quot;number&amp;quot; size=&amp;quot;3&amp;quot; min=&amp;quot;0&amp;quot; value=&amp;quot;9&amp;quot; id=&amp;quot;longRange&amp;quot; onchange=&amp;quot;calculateMechRanges()&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;select id=&amp;quot;weaponType&amp;quot; onchange=&amp;quot;calculateMechRanges()&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;Energiewaffe&amp;lt;/option&amp;gt;&lt;br /&gt;
  &amp;lt;option value=&amp;quot;2&amp;quot;&amp;gt;Impulslaser&amp;lt;/option&amp;gt;&lt;br /&gt;
  &amp;lt;option value=&amp;quot;3&amp;quot;&amp;gt;Gauss&amp;lt;/option&amp;gt;&lt;br /&gt;
  &amp;lt;option value=&amp;quot;4&amp;quot;&amp;gt;Ballistisch&amp;lt;/option&amp;gt;&lt;br /&gt;
  &amp;lt;option value=&amp;quot;5&amp;quot;&amp;gt;Cluster&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/select&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; id=&amp;quot;weaponRanges&amp;quot;&lt;br /&gt;
|+ Waffenreichweite&lt;br /&gt;
|-&lt;br /&gt;
! !! Min !! colspan = &amp;quot;3&amp;quot; | Nah !! colspan = &amp;quot;3&amp;quot; | Mittel !! colspan = &amp;quot;3&amp;quot; | Weit !! colspan = &amp;quot;3&amp;quot; | Extrem !! colspan=&amp;quot;13&amp;quot; | Sichtlinie&lt;br /&gt;
|-&lt;br /&gt;
! !! !! -1 !! +0 !! +1 !! +2 !! +3 !! +4 !! +5 !! +6 !! +7 !! +8 !! +9 !! +10 !! +11 !! +12 !! +13 !! +13 !! +13 !! +13 !! +13 !! +13 !! +13 !! +13 !! +13 !! +13 !! +13&lt;br /&gt;
|- id=&amp;quot;weaponRangesHex30&amp;quot;&lt;br /&gt;
| 30m Hexfelder || || || || || || || || || || || || || || || || || || || || || || || || || ||&lt;br /&gt;
|- id=&amp;quot;weaponRangesHex15&amp;quot;&lt;br /&gt;
| 15m Hexfelder || || || || || || || || || || || || || || || || || || || || || || || || || ||&lt;br /&gt;
|- id=&amp;quot;weaponRangesM&amp;quot;&lt;br /&gt;
| Meter || || || || || || || || || || || || || || || || || || || || || || || || || ||&lt;br /&gt;
|- id=&amp;quot;weaponRangesDmg&amp;quot;&lt;br /&gt;
| Schaden || || || || || || || || || || || || || || || || || || || || || || || || || ||&lt;br /&gt;
|}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=== Benutzung ===&lt;br /&gt;
Einfach oben den Namen der Waffe, den Schaden der Waffe und die Standard-BattleTech-Reichweiten eingeben. Zusätzlich noch auswählen um welche Art von Waffe es sich handelt. &lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Schevv</name></author>
	</entry>
</feed>