Fixed Synchronoise double battle functionality

It now does zero damage only to targets who do not share any types with it, while correctly damaging any who do.  It also fails entirely if the user is UNKNOWN type.
This commit is contained in:
InfernoVulpix 2024-04-21 17:31:32 -04:00
parent 0fac0fb9ee
commit 1ce89a1374

View File

@ -3585,7 +3585,18 @@ export class FirstMoveCondition extends MoveCondition {
}
}
const sameTypeCondition: MoveConditionFunc = (user, target, move) => user.getTypes().some(item => target.getTypes().includes(item));
export class hitsSameTypeAttr extends VariableMoveTypeMultiplierAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
const multiplier = args[0] as Utils.NumberHolder;
if (!user.getTypes().some(type => target.getTypes().includes(type))){
multiplier.value = 0;
return true;
}
return false;
}
}
const unknownTypeCondition: MoveConditionFunc = (user, target, move) => !user.getTypes().includes(Type.UNKNOWN);
export type MoveTargetSet = {
targets: BattlerIndex[];
@ -4963,7 +4974,8 @@ export function initMoves() {
.attr(CompareWeightPowerAttr),
new AttackMove(Moves.SYNCHRONOISE, Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 5)
.target(MoveTarget.ALL_NEAR_OTHERS)
.condition(sameTypeCondition),
.condition(unknownTypeCondition)
.attr(hitsSameTypeAttr),
new AttackMove(Moves.ELECTRO_BALL, Type.ELECTRIC, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 5)
.attr(BattleStatRatioPowerAttr, Stat.SPD)
.ballBombMove(),