Implemented Synchronoise's effect (#221)

* Implemented Synchronoise's effect

Tested with Soak, Forest's Curse, and a variety of attacker and defender types.

* 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 authored and GitHub committed 2024-05-02 06:14:19 +10:00
1 parent e6c31966d7
commit 10169382d9
1 file changed
+15 -1
+15 -1
View File
@@ -3706,6 +3706,19 @@ export class FirstMoveCondition extends MoveCondition {
}
}
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[];
multiple: boolean;
@@ -5087,7 +5100,8 @@ export function initMoves() {
.condition(failOnMaxCondition),
new AttackMove(Moves.SYNCHRONOISE, Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 5)
.target(MoveTarget.ALL_NEAR_OTHERS)
.partial(),
.condition(unknownTypeCondition)
.attr(hitsSameTypeAttr),
new AttackMove(Moves.ELECTRO_BALL, Type.ELECTRIC, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 5)
.attr(BattleStatRatioPowerAttr, Stat.SPD)
.ballBombMove(),