Implement terrains and rework status logic

This commit is contained in:
Flashfyre committed 2024-03-09 21:57:33 -05:00
1 parent b9395ebd7f
commit 47cf14da9b
12 files changed
+364 -66

No files matched your search

+56
View File
@@ -0,0 +1,56 @@
import { Type } from "./type";
export enum TerrainType {
NONE,
MISTY,
ELECTRIC,
GRASSY,
PSYCHIC
}
export class Terrain {
public terrainType: TerrainType;
public turnsLeft: integer;
constructor(terrainType: TerrainType, turnsLeft?: integer) {
this.terrainType = terrainType;
this.turnsLeft = turnsLeft || 0;
}
lapse(): boolean {
if (this.turnsLeft)
return !!--this.turnsLeft;
return true;
}
getAttackTypeMultiplier(attackType: Type): number {
switch (this.terrainType) {
case TerrainType.GRASSY:
if (attackType === Type.GRASS)
return 1.3;
break;
case TerrainType.PSYCHIC:
if (attackType === Type.PSYCHIC)
return 1.3;
break;
}
return 1;
}
}
export function getTerrainColor(terrainType: TerrainType): [ integer, integer, integer ] {
switch (terrainType) {
case TerrainType.GRASSY:
return [ 120, 200, 80 ];
case TerrainType.MISTY:
return [ 232, 136, 200 ];
case TerrainType.ELECTRIC:
return [ 248, 248, 120 ];
case TerrainType.PSYCHIC:
return [ 160, 64, 160 ];
}
return [ 0, 0, 0 ];
}