mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-01-15 21:41:53 +00:00
bac6c22973
* eslint config + packages * updated eslint config * fix the issue eslint adding ;;;; at interfaces * first round with eslint --fix . * removed config for unused export * Revert "first round with eslint --fix ." This reverts commit 77a88e0895f7c3389cb223651b90d918af778fe9. * removed config for camelCase * for real this time, first round of eslint --fix . * halfway to manual eslint fix * eslint done * added "how to setup" the hook to eslint --fix each new file before commit (if wanted) * removed eslintrc config file duplicat * fix human error + ignore build folder + merge overrides * added curly brace style + eslint * applied double quote linter rule * added lefthook * test precommit * test precommit * test precommit * test precommit * test precommit * test precommit * test precommit * github action to run eslint * added node_modules to ignore eslint * different action for typescript * no need for different glob (default src) * node 20 * node 20 * removed no longer needed install file * remove hooks part from README * eslint fixes --------- Co-authored-by: Frederico Santos <frederico.f.santos@tecnico.ulisboa.pt>
178 lines
4.7 KiB
TypeScript
178 lines
4.7 KiB
TypeScript
import * as Utils from "../utils";
|
|
|
|
export enum StatusEffect {
|
|
NONE,
|
|
POISON,
|
|
TOXIC,
|
|
PARALYSIS,
|
|
SLEEP,
|
|
FREEZE,
|
|
BURN,
|
|
FAINT
|
|
}
|
|
|
|
export class Status {
|
|
public effect: StatusEffect;
|
|
public turnCount: integer;
|
|
public cureTurn: integer;
|
|
|
|
constructor(effect: StatusEffect, turnCount: integer = 0, cureTurn?: integer) {
|
|
this.effect = effect;
|
|
this.turnCount = turnCount === undefined ? 0 : turnCount;
|
|
this.cureTurn = cureTurn;
|
|
}
|
|
|
|
incrementTurn(): void {
|
|
this.turnCount++;
|
|
}
|
|
|
|
isPostTurn(): boolean {
|
|
return this.effect === StatusEffect.POISON || this.effect === StatusEffect.TOXIC || this.effect === StatusEffect.BURN;
|
|
}
|
|
}
|
|
|
|
export function getStatusEffectObtainText(statusEffect: StatusEffect, sourceText?: string): string {
|
|
const sourceClause = sourceText ? ` ${statusEffect !== StatusEffect.SLEEP ? "by" : "from"} ${sourceText}` : "";
|
|
switch (statusEffect) {
|
|
case StatusEffect.POISON:
|
|
return `\nwas poisoned${sourceClause}!`;
|
|
case StatusEffect.TOXIC:
|
|
return `\nwas badly poisoned${sourceClause}!`;
|
|
case StatusEffect.PARALYSIS:
|
|
return ` was paralyzed${sourceClause}!\nIt may be unable to move!`;
|
|
case StatusEffect.SLEEP:
|
|
return `\nfell asleep${sourceClause}!`;
|
|
case StatusEffect.FREEZE:
|
|
return `\nwas frozen solid${sourceClause}!`;
|
|
case StatusEffect.BURN:
|
|
return `\nwas burned${sourceClause}!`;
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
export function getStatusEffectActivationText(statusEffect: StatusEffect): string {
|
|
switch (statusEffect) {
|
|
case StatusEffect.POISON:
|
|
case StatusEffect.TOXIC:
|
|
return " is hurt\nby poison!";
|
|
case StatusEffect.PARALYSIS:
|
|
return " is paralyzed!\nIt can't move!";
|
|
case StatusEffect.SLEEP:
|
|
return " is fast asleep.";
|
|
case StatusEffect.FREEZE:
|
|
return " is\nfrozen solid!";
|
|
case StatusEffect.BURN:
|
|
return " is hurt\nby its burn!";
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
export function getStatusEffectOverlapText(statusEffect: StatusEffect): string {
|
|
switch (statusEffect) {
|
|
case StatusEffect.POISON:
|
|
case StatusEffect.TOXIC:
|
|
return " is\nalready poisoned!";
|
|
case StatusEffect.PARALYSIS:
|
|
return " is\nalready paralyzed!";
|
|
case StatusEffect.SLEEP:
|
|
return " is\nalready asleep!";
|
|
case StatusEffect.FREEZE:
|
|
return " is\nalready frozen!";
|
|
case StatusEffect.BURN:
|
|
return " is\nalready burned!";
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
export function getStatusEffectHealText(statusEffect: StatusEffect): string {
|
|
switch (statusEffect) {
|
|
case StatusEffect.POISON:
|
|
case StatusEffect.TOXIC:
|
|
return " was\ncured of its poison!";
|
|
case StatusEffect.PARALYSIS:
|
|
return " was\nhealed of paralysis!";
|
|
case StatusEffect.SLEEP:
|
|
return " woke up!";
|
|
case StatusEffect.FREEZE:
|
|
return " was\ndefrosted!";
|
|
case StatusEffect.BURN:
|
|
return " was\nhealed of its burn!";
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
export function getStatusEffectDescriptor(statusEffect: StatusEffect): string {
|
|
switch (statusEffect) {
|
|
case StatusEffect.POISON:
|
|
case StatusEffect.TOXIC:
|
|
return "poisoning";
|
|
case StatusEffect.PARALYSIS:
|
|
return "paralysis";
|
|
case StatusEffect.SLEEP:
|
|
return "sleep";
|
|
case StatusEffect.FREEZE:
|
|
return "freezing";
|
|
case StatusEffect.BURN:
|
|
return "burn";
|
|
}
|
|
}
|
|
|
|
export function getStatusEffectCatchRateMultiplier(statusEffect: StatusEffect): number {
|
|
switch (statusEffect) {
|
|
case StatusEffect.POISON:
|
|
case StatusEffect.TOXIC:
|
|
case StatusEffect.PARALYSIS:
|
|
case StatusEffect.BURN:
|
|
return 1.5;
|
|
case StatusEffect.SLEEP:
|
|
case StatusEffect.FREEZE:
|
|
return 2.5;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/**
|
|
* Returns a random non-volatile StatusEffect
|
|
*/
|
|
export function generateRandomStatusEffect(): StatusEffect {
|
|
return Utils.randIntRange(1, 6);
|
|
}
|
|
|
|
/**
|
|
* Returns a random non-volatile StatusEffect between the two provided
|
|
* @param statusEffectA The first StatusEffect
|
|
* @param statusEffectA The second StatusEffect
|
|
*/
|
|
export function getRandomStatusEffect(statusEffectA: StatusEffect, statusEffectB: StatusEffect): StatusEffect {
|
|
if (statusEffectA === StatusEffect.NONE || statusEffectA === StatusEffect.FAINT) {
|
|
return statusEffectB;
|
|
}
|
|
if (statusEffectB === StatusEffect.NONE || statusEffectB === StatusEffect.FAINT) {
|
|
return statusEffectA;
|
|
}
|
|
|
|
return Utils.randIntRange(0, 2) ? statusEffectA : statusEffectB;
|
|
}
|
|
|
|
/**
|
|
* Returns a random non-volatile StatusEffect between the two provided
|
|
* @param statusA The first Status
|
|
* @param statusB The second Status
|
|
*/
|
|
export function getRandomStatus(statusA: Status, statusB: Status): Status {
|
|
if (statusA === undefined || statusA.effect === StatusEffect.NONE || statusA.effect === StatusEffect.FAINT) {
|
|
return statusB;
|
|
}
|
|
if (statusB === undefined || statusB.effect === StatusEffect.NONE || statusB.effect === StatusEffect.FAINT) {
|
|
return statusA;
|
|
}
|
|
|
|
|
|
return Utils.randIntRange(0, 2) ? statusA : statusB;
|
|
}
|