diff --git a/src/data/move.ts b/src/data/move.ts index afad81d4807..a4ca1e422dc 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -2440,6 +2440,27 @@ export class HiddenPowerTypeAttr extends VariableMoveTypeAttr { } } +export class MatchUserTypeAttr extends VariableMoveTypeAttr { + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + const type = (args[0] as Utils.IntegerHolder); + + const userTypes = user.getTypes(true); + + if(userTypes.includes(Type.STELLAR)) { // will not change to stellar type + const nonTeraTypes = user.getTypes(); + type.value = nonTeraTypes[0]; + return true; + } + else if (userTypes.length > 0) { + type.value = userTypes[0]; + return true; + } + else + return false; + + } +} + export class VariableMoveTypeMultiplierAttr extends MoveAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { return false; @@ -5796,7 +5817,7 @@ export function initMoves() { .unimplemented(), new AttackMove(Moves.REVELATION_DANCE, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) .danceMove() - .partial(), + .attr(MatchUserTypeAttr), new AttackMove(Moves.CORE_ENFORCER, Type.DRAGON, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 7) .target(MoveTarget.ALL_NEAR_ENEMIES) .partial(), diff --git a/src/data/type.ts b/src/data/type.ts index 14f9f932a2a..35c56aecd32 100644 --- a/src/data/type.ts +++ b/src/data/type.ts @@ -543,4 +543,4 @@ export function getTypeRgb(type: Type): [ integer, integer, integer ] { default: return [ 0, 0, 0 ]; } -} \ No newline at end of file +} diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 36dc4265efc..2242b1ee694 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -778,9 +778,16 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { types.splice(flyingIndex, 1); } - if (!types.length) + if (!types.length) // become UNKNOWN if no types are present types.push(Type.UNKNOWN); + if (types.length > 1 && types.includes(Type.UNKNOWN)) { // remove UNKNOWN if other types are present + const index = types.indexOf(Type.UNKNOWN); + if (index !== -1) { + types.splice(index, 1); + } + } + return types; }