mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-06-12 12:11:17 -05:00
Special damages: Crab Tank
This commit is contained in:
parent
9c0fdf0dfe
commit
697caea3f4
|
|
@ -34,6 +34,10 @@ export const DAMAGE_TYPE = [
|
|||
"SPECIAL_THROW_DIRECT",
|
||||
"SPECIAL_THROW",
|
||||
"SPECIAL_SWING",
|
||||
"SPECIAL_CANNON",
|
||||
"SPECIAL_BULLET_MAX",
|
||||
"SPECIAL_BULLET_MIN",
|
||||
"SPECIAL_BUMP",
|
||||
] as const;
|
||||
|
||||
export const damageTypeToWeaponType: Record<
|
||||
|
|
@ -70,6 +74,10 @@ export const damageTypeToWeaponType: Record<
|
|||
SPECIAL_SWING: "SPECIAL",
|
||||
SPECIAL_THROW: "SPECIAL",
|
||||
SPECIAL_THROW_DIRECT: "SPECIAL",
|
||||
SPECIAL_BULLET_MIN: "SPECIAL",
|
||||
SPECIAL_BULLET_MAX: "SPECIAL",
|
||||
SPECIAL_CANNON: "SPECIAL",
|
||||
SPECIAL_BUMP: "SPECIAL",
|
||||
};
|
||||
|
||||
export const multiShot: Partial<Record<MainWeaponId, number>> = {
|
||||
|
|
|
|||
|
|
@ -130,6 +130,10 @@ export type SpecialWeaponParams = SpecialWeaponParamsObject[SpecialWeaponId] & {
|
|||
SwingDamage?: Array<DistanceDamage>;
|
||||
ThrowDamage?: Array<DistanceDamage>;
|
||||
ThrowDirectDamage?: number;
|
||||
BulletDamageMin?: number;
|
||||
BulletDamageMax?: number;
|
||||
CannonDamage?: Array<DistanceDamage>;
|
||||
BumpDamage?: number;
|
||||
};
|
||||
|
||||
export type ParamsJson = {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import {
|
|||
AUTO_BOMB_ID,
|
||||
TORPEDO_ID,
|
||||
ZIPCASTER_ID,
|
||||
CRAB_TANK_ID,
|
||||
} from "~/modules/in-game-lists";
|
||||
import { ANGLE_SHOOTER_ID } from "~/modules/in-game-lists";
|
||||
import { INK_MINE_ID, POINT_SENSOR_ID } from "~/modules/in-game-lists";
|
||||
|
|
@ -428,6 +429,10 @@ const damageTypeToParamsKey: Record<
|
|||
SPECIAL_SWING: "SwingDamage",
|
||||
SPECIAL_THROW: "ThrowDamage",
|
||||
SPECIAL_THROW_DIRECT: "ThrowDirectDamage",
|
||||
SPECIAL_BULLET_MAX: "BulletDamageMax",
|
||||
SPECIAL_BULLET_MIN: "BulletDamageMin",
|
||||
SPECIAL_CANNON: "CannonDamage",
|
||||
SPECIAL_BUMP: "BumpDamage",
|
||||
};
|
||||
|
||||
function damages(args: StatFunctionInput): AnalyzedBuild["stats"]["damages"] {
|
||||
|
|
@ -510,13 +515,26 @@ function specialWeaponDamages(
|
|||
}
|
||||
}
|
||||
|
||||
// Zipcaster direct damage
|
||||
// Artifically combined damages
|
||||
if (args.mainWeaponParams.specialWeaponId === ZIPCASTER_ID) {
|
||||
result.unshift({
|
||||
id: semiRandomId(),
|
||||
distance: 0,
|
||||
value: sumArray(result.map((v) => v.value)),
|
||||
type: "BOMB_NORMAL",
|
||||
type: result[0].type,
|
||||
});
|
||||
}
|
||||
if (args.mainWeaponParams.specialWeaponId === CRAB_TANK_ID) {
|
||||
const cannonDamages = result.filter((d) => d.type === "SPECIAL_CANNON");
|
||||
const firstCannonDamageIdx = result.findIndex(
|
||||
(d) => d.type === "SPECIAL_CANNON"
|
||||
);
|
||||
|
||||
result.splice(firstCannonDamageIdx, 0, {
|
||||
id: semiRandomId(),
|
||||
distance: 0,
|
||||
value: sumArray(cannonDamages.map((v) => v.value)),
|
||||
type: "SPECIAL_CANNON",
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1910,7 +1910,20 @@
|
|||
"Low": 480,
|
||||
"Mid": 570
|
||||
}
|
||||
}
|
||||
},
|
||||
"BulletDamageMin": 160,
|
||||
"BulletDamageMax": 320,
|
||||
"CannonDamage": [
|
||||
{
|
||||
"Damage": 600,
|
||||
"Distance": 1
|
||||
},
|
||||
{
|
||||
"Damage": 300,
|
||||
"Distance": 5.6
|
||||
}
|
||||
],
|
||||
"BumpDamage": 400
|
||||
},
|
||||
"13": {
|
||||
"overwrites": {
|
||||
|
|
|
|||
|
|
@ -66,8 +66,12 @@ export const objectDamageJsonKeyPriority: Record<
|
|||
Charger_Light: ["MAX_CHARGE", "TAP_SHOT"],
|
||||
Charger_Long: ["MAX_CHARGE", "TAP_SHOT"],
|
||||
Charger: ["MAX_CHARGE", "TAP_SHOT"],
|
||||
Chariot_Body: null,
|
||||
Chariot_Cannon: null,
|
||||
Chariot_Body: ["SPECIAL_BUMP"],
|
||||
Chariot_Cannon: [
|
||||
"SPECIAL_BULLET_MIN",
|
||||
"SPECIAL_BULLET_MAX",
|
||||
"SPECIAL_CANNON",
|
||||
],
|
||||
Default: null,
|
||||
EnemyFlyingHohei_BombCore: null,
|
||||
GachihokoTimeUpBurst: null,
|
||||
|
|
|
|||
|
|
@ -120,16 +120,20 @@ export const damageTypePriorityList = [
|
|||
"SPLATANA_HORIZONTAL",
|
||||
"SPLASH_MIN",
|
||||
"SPLASH_MAX",
|
||||
"SPLASH_VERTICAL_MIN",
|
||||
"SPLASH_VERTICAL_MAX",
|
||||
"SPLASH_HORIZONTAL_MIN",
|
||||
"SPLASH_VERTICAL_MIN",
|
||||
"SPLASH_HORIZONTAL_MAX",
|
||||
"SPLASH_HORIZONTAL_MIN",
|
||||
"ROLL_OVER",
|
||||
"SPECIAL_MAX_CHARGE",
|
||||
"SPECIAL_MIN_CHARGE",
|
||||
"SPECIAL_THROW_DIRECT",
|
||||
"SPECIAL_THROW",
|
||||
"SPECIAL_SWING",
|
||||
"SPECIAL_CANNON",
|
||||
"SPECIAL_BULLET_MAX",
|
||||
"SPECIAL_BULLET_MIN",
|
||||
"SPECIAL_BUMP",
|
||||
] as const;
|
||||
assertType<
|
||||
(typeof damageTypePriorityList)[number],
|
||||
|
|
|
|||
|
|
@ -116,6 +116,10 @@
|
|||
"damage.SPECIAL_THROW_DIRECT": "Throw (Direct)",
|
||||
"damage.SPECIAL_THROW": "Throw",
|
||||
"damage.SPECIAL_SWING": "Swing",
|
||||
"damage.SPECIAL_BULLET_MIN": "Bullet (Minimum)",
|
||||
"damage.SPECIAL_BULLET_MAX": "Bullet (Maximum)",
|
||||
"damage.SPECIAL_CANNON": "Cannon",
|
||||
"damage.SPECIAL_BUMP": "Bump",
|
||||
"suffix.seconds": "s",
|
||||
"suffix.hp": "hp",
|
||||
"suffix.specialPointsShort": "p",
|
||||
|
|
|
|||
|
|
@ -461,6 +461,8 @@ function parametersToSpecialWeaponResult(params: any) {
|
|||
}
|
||||
|
||||
const isUltraStamp = () => !!params["SwingBigBlastParam"];
|
||||
const isCrabTank = () => !!params["CannonParam"];
|
||||
|
||||
const SwingDamage = () => {
|
||||
if (!isUltraStamp()) return;
|
||||
|
||||
|
|
@ -476,6 +478,18 @@ function parametersToSpecialWeaponResult(params: any) {
|
|||
return params["ThrowBlastParam"]["DistanceDamage"];
|
||||
};
|
||||
|
||||
const Cannon = () => {
|
||||
if (!isCrabTank()) return;
|
||||
|
||||
return [
|
||||
{
|
||||
Damage: 600,
|
||||
Distance: 1,
|
||||
},
|
||||
...params["CannonParam"]?.["BlastParam"]?.["DistanceDamage"],
|
||||
];
|
||||
};
|
||||
|
||||
return {
|
||||
ArmorHP: params["WeaponSpChariotParam"]?.["ArmorHP"],
|
||||
overwrites: resultUnwrapped,
|
||||
|
|
@ -500,6 +514,10 @@ function parametersToSpecialWeaponResult(params: any) {
|
|||
SwingDamage: SwingDamage(),
|
||||
ThrowDamage: ThrowDamage(),
|
||||
ThrowDirectDamage: params["ThrowMoveParam"]?.["DirectDamageValue"],
|
||||
BulletDamageMin: params["ShooterDamageParam"]?.["ValueMin"],
|
||||
BulletDamageMax: params["ShooterDamageParam"]?.["ValueMax"],
|
||||
CannonDamage: Cannon(),
|
||||
BumpDamage: isCrabTank() ? 400 : undefined,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user