mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-02-28 15:07:56 +00:00
add initial commit for trick room
challenge
This commit is contained in:
parent
0eea2031fb
commit
dc36bcd402
@ -59,6 +59,10 @@ export enum ChallengeType {
|
||||
* @see {@linkcode Challenge.applyTypeEffectiveness}
|
||||
*/
|
||||
TYPE_EFFECTIVENESS,
|
||||
/**
|
||||
* Challenge that enables Trick Room in a run
|
||||
*/
|
||||
TRICK_ROOM,
|
||||
/**
|
||||
* Modifies what level the AI pokemon are. UNIMPLEMENTED.
|
||||
*/
|
||||
@ -340,6 +344,15 @@ export abstract class Challenge {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* An apply function for TRICK_ROOM challenges. Derived classes should alter this.
|
||||
* @param enabled {@link Utils.BooleanHolder} Whether the challenge is enabled.
|
||||
* @returns {@link boolean} Whether this function did anything.
|
||||
*/
|
||||
applyTrickRoom(enabled: Utils.BooleanHolder): boolean {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* An apply function for AI_LEVEL challenges. Derived classes should alter this.
|
||||
* @param level {@link Utils.IntegerHolder} The generated level.
|
||||
@ -707,6 +720,35 @@ export class InverseBattleChallenge extends Challenge {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Challenge that enables Trick Room in a run
|
||||
*/
|
||||
export class TrickRoomChallenge extends Challenge {
|
||||
constructor() {
|
||||
super(Challenges.TRICK_ROOM, 1);
|
||||
}
|
||||
|
||||
static loadChallenge(source: TrickRoomChallenge | any): TrickRoomChallenge {
|
||||
const newChallenge = new TrickRoomChallenge();
|
||||
newChallenge.value = source.value;
|
||||
newChallenge.severity = source.severity;
|
||||
return newChallenge;
|
||||
}
|
||||
|
||||
override getDifficulty(): number {
|
||||
return 0;
|
||||
}
|
||||
|
||||
applyTrickRoom(enabled: Utils.BooleanHolder): boolean {
|
||||
if (!enabled.value) {
|
||||
enabled.value = true;
|
||||
} else {
|
||||
enabled.value = false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lowers the amount of starter points available.
|
||||
*/
|
||||
@ -834,6 +876,14 @@ export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType
|
||||
* @returns True if any challenge was successfully applied.
|
||||
*/
|
||||
export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType.TYPE_EFFECTIVENESS, effectiveness: Utils.NumberHolder): boolean;
|
||||
/**
|
||||
* Apply all challenges that modify Trick Room.
|
||||
* @param gameMode {@linkcode GameMode} The current gameMode
|
||||
* @param challengeType {@linkcode ChallengeType} ChallengeType.TRICK_ROOM
|
||||
* @param enabled {@linkcode Utils.BooleanHolder} Whether Trick Room is enabled.
|
||||
* @returns True if any challenge was successfully applied.
|
||||
*/
|
||||
export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType.TRICK_ROOM, enabled: Utils.BooleanHolder): boolean;
|
||||
/**
|
||||
* Apply all challenges that modify what level AI are.
|
||||
* @param gameMode {@link GameMode} The current gameMode
|
||||
@ -918,6 +968,9 @@ export function applyChallenges(gameMode: GameMode, challengeType: ChallengeType
|
||||
case ChallengeType.TYPE_EFFECTIVENESS:
|
||||
ret ||= c.applyTypeEffectiveness(args[0]);
|
||||
break;
|
||||
case ChallengeType.TRICK_ROOM:
|
||||
ret ||= c.applyTrickRoom(args[0]);
|
||||
break;
|
||||
case ChallengeType.AI_LEVEL:
|
||||
ret ||= c.applyLevelChange(args[0], args[1], args[2], args[3]);
|
||||
break;
|
||||
@ -961,6 +1014,8 @@ export function copyChallenge(source: Challenge | any): Challenge {
|
||||
return FreshStartChallenge.loadChallenge(source);
|
||||
case Challenges.INVERSE_BATTLE:
|
||||
return InverseBattleChallenge.loadChallenge(source);
|
||||
case Challenges.TRICK_ROOM:
|
||||
return TrickRoomChallenge.loadChallenge(source);
|
||||
}
|
||||
throw new Error("Unknown challenge copied");
|
||||
}
|
||||
@ -973,5 +1028,6 @@ export function initChallenges() {
|
||||
new SingleTypeChallenge(),
|
||||
new FreshStartChallenge(),
|
||||
new InverseBattleChallenge(),
|
||||
new TrickRoomChallenge(),
|
||||
);
|
||||
}
|
||||
|
@ -5,4 +5,5 @@ export enum Challenges {
|
||||
LOWER_STARTER_POINTS,
|
||||
FRESH_START,
|
||||
INVERSE_BATTLE,
|
||||
TRICK_ROOM,
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ import { TurnEndPhase } from "./turn-end-phase";
|
||||
import { WeatherEffectPhase } from "./weather-effect-phase";
|
||||
import { BattlerIndex } from "#app/battle";
|
||||
import { TrickRoomTag } from "#app/data/arena-tag";
|
||||
import { applyChallenges, ChallengeType } from "#app/data/challenge";
|
||||
|
||||
export class TurnStartPhase extends FieldPhase {
|
||||
constructor(scene: BattleScene) {
|
||||
@ -52,6 +53,7 @@ export class TurnStartPhase extends FieldPhase {
|
||||
// Next, a check for Trick Room is applied. If Trick Room is present, the order is reversed.
|
||||
const speedReversed = new Utils.BooleanHolder(false);
|
||||
this.scene.arena.applyTags(TrickRoomTag, speedReversed);
|
||||
applyChallenges(this.scene.gameMode, ChallengeType.TRICK_ROOM, speedReversed);
|
||||
|
||||
if (speedReversed.value) {
|
||||
orderedTargets = orderedTargets.reverse();
|
||||
|
@ -489,9 +489,11 @@ export default class RunInfoUiHandler extends UiHandler {
|
||||
rules.push(i18next.t("challenges:freshStart.name"));
|
||||
break;
|
||||
case Challenges.INVERSE_BATTLE:
|
||||
//
|
||||
rules.push(i18next.t("challenges:inverseBattle.shortName"));
|
||||
break;
|
||||
case Challenges.TRICK_ROOM:
|
||||
rules.push(i18next.t("challenges:trickRoom.shortName"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user