Skip to content

Commit

Permalink
damage sandbox
Browse files Browse the repository at this point in the history
  • Loading branch information
giniedp committed Jan 9, 2024
1 parent c460102 commit 84fecda
Show file tree
Hide file tree
Showing 11 changed files with 406 additions and 46 deletions.
156 changes: 141 additions & 15 deletions apps/web/app/pages/tools/dmg-sandbox/dmg-sandbox-page.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,33 +7,43 @@
(assignedChanged)="patchState({ attrSums: $event })"
/>
<div class="grid gap-4 grid-cols-fill-sm">

<div class="form-control w-full">
<label class="label">
<span class="label-text">Attribute Scaling</span>
</label>

<div
type="number"
class="input input-bordered w-full flex items-center"

> {{ attrScale() | number }}</div>

<div type="number" class="input input-bordered w-full flex items-center">{{ attrScale() | number }}</div>
</div>

<div class="form-control w-full">
<label class="label">
<span class="label-text">Player Level</span>
<span class="label-text">Level Scaling</span>
</label>

<label class="input-group">
<input
type="number"
class="input input-bordered w-full"
[min]="1"
[step]="1"
[ngModel]="playerLevel()"
(ngModelChange)="patchState({ playerLevel: $event })"
[cdkMenuTriggerFor]="tplLevel"
(wheel)="($event)"
/>
<ng-template #tplLevel>
<div class="bg-base-200 bg-opacity-75 border border-base-100 rounded-lg p-4 w-80" cdkMenu>
<nwb-input-slider
class="w-full"
[size]="'xs'"
[min]="1"
[max]="65"
[step]="1"
[ngModel]="playerLevel()"
(ngModelChange)="patchState({ playerLevel: $event })"
/>
</div>
</ng-template>
<span>{{ playerLevelFactor() | number }}</span>
</label>
</div>
Expand All @@ -47,9 +57,29 @@
<input
type="number"
class="input input-bordered w-full"
[min]="100"
[step]="1"
[ngModel]="weaponGearScore()"
(ngModelChange)="patchState({ weaponGearScore: $event })"
[cdkMenuTriggerFor]="tplGs"
(wheel)="($event)"
/>
<ng-template #tplGs>
<div class="bg-base-200 bg-opacity-75 border border-base-100 rounded-lg p-4 w-80" cdkMenu>
<nwb-input-slider
class="w-full"
[size]="'xs'"
[min]="100"
[max]="700"
[bars]="true"
[values]="true"
[barsStep]="100"
[step]="1"
[ngModel]="weaponGearScore()"
(ngModelChange)="patchState({ weaponGearScore: $event })"
/>
</div>
</ng-template>
<span>{{ weaponGearScoreFactor() | number }}</span>
</label>
</div>
Expand All @@ -75,10 +105,12 @@
</label>
<input
type="number"
[step]="0.1"
[min]="0"
[step]="1"
class="input input-bordered w-full"
[ngModel]="baseDamage()"
(ngModelChange)="patchState({ baseDamage: $event })"
(wheel)="($event)"
/>
</div>

Expand All @@ -88,11 +120,12 @@
</label>
<input
type="number"
[step]="0.1"
[min]="0"
[step]="0.1"
class="input input-bordered w-full"
[ngModel]="critDamage()"
(ngModelChange)="patchState({ critDamage: $event })"
(wheel)="($event)"
/>
</div>

Expand All @@ -116,10 +149,12 @@
</label>
<input
type="number"
[min]="0"
[step]="0.1"
class="input input-bordered w-full"
[ngModel]="damageCoefficient()"
(ngModelChange)="patchState({ damageCoefficient: $event })"
(wheel)="($event)"
/>
</div>

Expand All @@ -129,10 +164,12 @@
</label>
<input
type="number"
[min]="0"
[step]="0.1"
class="input input-bordered w-full"
[ngModel]="ammoModifier()"
(ngModelChange)="patchState({ ammoModifier: $event })"
(wheel)="($event)"
/>
</div>

Expand All @@ -147,6 +184,7 @@
class="input input-bordered w-full"
[ngModel]="baseDamageMods()"
(ngModelChange)="patchState({ baseDamageMods: $event })"
(wheel)="($event)"
/>
<span>{{ baseDamageMods() | percent }}</span>
</div>
Expand All @@ -163,6 +201,7 @@
class="input input-bordered w-full"
[ngModel]="critMods()"
(ngModelChange)="patchState({ critMods: $event })"
(wheel)="($event)"
/>
<span>{{ critModsSum() | percent }}</span>
</div>
Expand All @@ -179,30 +218,117 @@
class="input input-bordered w-full"
[ngModel]="empowerMods()"
(ngModelChange)="patchState({ empowerMods: $event })"
(wheel)="($event)"
/>
<span>{{ empowerMods() | percent }}</span>
</div>
</div>
</div>
<div class="flex items-center justify-center">
<div class="stats shadow">
<div class="stat">
<div class="stat place-items-center">
<div class="stat-title">Tooltip</div>
<div class="stat-value">{{ dmgTooltip() | number: '1.2-2' }}</div>
<div class="stat-desc">Baseline 100%</div>
</div>
<div class="stat">
<div class="stat place-items-center">
<div class="stat-title">Standard</div>
<div class="stat-value">{{ dmgStandard() | number: '1.2-2' }}</div>
<div class="stat-desc">
{{ dmgStandard() / dmgTooltip() | percent }}
↗︎ {{ dmgStandard() - dmgTooltip() | number: '1.2-2' }} ({{ dmgStandard() / dmgTooltip() - 1 | percent }})
</div>
</div>
<div class="stat">
<div class="stat place-items-center">
<div class="stat-title">Crit</div>
<div class="stat-value">{{ dmgCrit() | number: '1.2-2' }}</div>
<div class="stat-desc">
{{ dmgCrit() / dmgTooltip() | percent }}
↗︎ {{ dmgCrit() - dmgTooltip() | number: '1.2-2' }} ({{ dmgCrit() / dmgTooltip() - 1 | percent }})
</div>
</div>
</div>
</div>

<div class="grid gap-4 grid-cols-fill-sm">
<div class="form-control w-full">
<label class="label">
<span class="label-text">Armor penetration</span>
</label>
<input
type="number"
[min]="0"
[max]="1"
[step]="0.1"
class="input input-bordered w-full"
[ngModel]="armorPenetration()"
(ngModelChange)="patchState({ armorPenetration: $event })"
(wheel)="($event)"
/>
</div>
<div class="form-control w-full">
<label class="label">
<span class="label-text">Attacker avg GS</span>
<span class="label-text">Defender avg GS</span>
</label>
<div class="input-group">
<input
type="number"
[min]="0"
[step]="1"
class="input input-bordered w-full"
[ngModel]="attackerAvgGs()"
(ngModelChange)="patchState({ attackerAvgGs: $event })"
(wheel)="($event)"
/>
<span class="text-center">{{ defenderAvgGs() - attackerAvgGs() }}</span>
<input
type="number"
[min]="0"
[step]="1"
class="input input-bordered w-full"
[ngModel]="defenderAvgGs()"
(ngModelChange)="patchState({ defenderAvgGs: $event })"
(wheel)="($event)"
/>
</div>
</div>

<div class="form-control w-full">
<label class="label">
<span class="label-text">Defender armor rating</span>
</label>
<input
type="number"
[min]="0"
[step]="50"
class="input input-bordered w-full"
[ngModel]="defenderArmorRating()"
(ngModelChange)="patchState({ defenderArmorRating: $event })"
(wheel)="($event)"
/>
</div>
</div>

<div class="flex items-center justify-center">
<div class="stats shadow">
<div class="stat">
<div class="stat-title">Mitigation</div>
<div class="stat-value">{{ 1 - damageMitigationFactor() | percent }}</div>
<div class="stat-desc"></div>
</div>
<div class="stat">
<div class="stat-title">Standard</div>
<div class="stat-value">{{ dmgStandardMitigation() | number: '1.2-2' }}</div>
<div class="stat-desc">
↘ {{ dmgStandardMitigation() - dmgStandard() | number: '1.2-2' }} ({{
damageMitigationFactor() - 1 | percent
}})
</div>
</div>
<div class="stat">
<div class="stat-title">Crit</div>
<div class="stat-value">{{ dmgCritMitigation() | number: '1.2-2' }}</div>
<div class="stat-desc">
↘ {{ dmgCritMitigation() - dmgCrit() | number: '1.2-2' }} ({{ damageMitigationFactor() - 1 | percent }})
</div>
</div>
</div>
Expand Down
Loading

0 comments on commit 84fecda

Please sign in to comment.