Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/Const/Achievements.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,10 @@ const parseCondition = (conds: AchievementCondition | null, data: AchievementTag
const value = tags[key as keyof AchievementTags]!;
const givenValue = data[key as keyof AchievementTags]!;

if (givenValue === undefined || givenValue === null) { // Just in case
return false;
}

if (key === "total" || key === "value" || key === "delta") {
const op = conds.op;

Expand Down
6 changes: 3 additions & 3 deletions src/Entity/Tank/TankBody.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import { sendAchievementEvent } from "../../Const/Achievements";
import { DevTank } from "../../Const/DevTankDefinitions";
import { Inputs } from "../AI";
import { ArenaState } from "../../Native/Arena";
import { AccessLevel, maxPlayerLevel, enableAchievements } from "../../config";
import { AccessLevel, maxPlayerLevel } from "../../config";

/**
* Abstract type of entity which barrels can connect to.
Expand Down Expand Up @@ -188,7 +188,7 @@ export default class TankBody extends LivingEntity implements BarrelBase {
if (client) {
if (tank.upgradeMessage) client.notify(tank.upgradeMessage, 0x000000, 10000);

if (enableAchievements && !this.game.arena.disableAchievements) {
if (this.game.enableAchievements) {
sendAchievementEvent(client, "classChange", {
"class": id
});
Expand All @@ -208,7 +208,7 @@ export default class TankBody extends LivingEntity implements BarrelBase {
client.notify(`You've killed ${entity.nameData.values.name || "an unnamed tank"}`);
}

if (enableAchievements && !this.game.arena.disableAchievements) {
if (this.game.enableAchievements) {
const victimIsTank = TankBody.isTank(entity);

sendAchievementEvent(client, "kill", {
Expand Down
3 changes: 3 additions & 0 deletions src/Game.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import MothershipArena from "./Gamemodes/Mothership";
import MazeArena from "./Gamemodes/Maze";
import SandboxArena from "./Gamemodes/Sandbox";
import { ClientBound } from "./Const/Enums";
import { enableAchievements } from "./config";

/**
* WriterStream that broadcasts to all of the game's WebSockets.
Expand Down Expand Up @@ -92,6 +93,8 @@ export default class GameServer {
public tick: number;
/** The game's arena entity. */
public arena: ArenaEntity;
/** If achievements can be earned on this game. */
public enableAchievements: boolean = enableAchievements;
/** The interval timer of the tick loop. */
private _tickInterval: NodeJS.Timeout;
/** The Arena instantiator */
Expand Down
2 changes: 1 addition & 1 deletion src/Gamemodes/Sandbox.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export default class SandboxArena extends ArenaEntity {

this.arenaData.values.flags |= ArenaFlags.canUseCheats;
this.state = ArenaState.OPEN; // Sandbox should start instantly, no countdown
this.disableAchievements = true;
this.game.enableAchievements = false;

this.setSandboxArenaSize(0);
}
Expand Down
3 changes: 0 additions & 3 deletions src/Native/Arena.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,6 @@ export default class ArenaEntity extends Entity implements TeamGroupEntity {
public state: ArenaState = ArenaState.COUNTDOWN;

public shapeScoreRewardMultiplier: number = 1;

/** If achievements cannot be obtained in this arena */
public disableAchievements: boolean = false;

/** The boss spawner. Set to null in gamemode file to disable boss spawning. */
public bossManager: BossManager | null = new BossManager(this);
Expand Down
12 changes: 6 additions & 6 deletions src/Native/Camera.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import { sendAchievementEvent } from "../Const/Achievements";
import { removeFast } from "../util";

import { compileCreation, compileUpdate } from "./UpcreateCompiler";
import { maxPlayerLevel, enableAchievements } from "../config";
import { maxPlayerLevel } from "../config";

/**
* Represents any entity with a camera field group.
Expand Down Expand Up @@ -78,7 +78,7 @@ export class CameraEntity extends Entity {
this.setFieldFactor(getTankById(this.cameraData.values.tank)?.fieldFactor ?? 1);
this.calculateLevelData();

if (!enableAchievements || this.game.arena.disableAchievements) return;
if (!this.game.enableAchievements) return;

const client = this.getClient();
if (!client) return;
Expand Down Expand Up @@ -107,7 +107,7 @@ export class CameraEntity extends Entity {

this.calculateLevelData();

if (!enableAchievements && !this.game.arena.disableAchievements) return;
if (!this.game.enableAchievements) return;

const client = this.getClient();
if (!client) return;
Expand All @@ -127,7 +127,7 @@ export class CameraEntity extends Entity {

this.calculateLevelData();

if (!enableAchievements || this.game.arena.disableAchievements) return;
if (!this.game.enableAchievements) return;

const client = this.getClient();
if (!client) return;
Expand All @@ -146,7 +146,7 @@ export class CameraEntity extends Entity {

if (TankBody.isTank(player)) player.calculateStatData();

if (!enableAchievements || this.game.arena.disableAchievements) return;
if (!this.game.enableAchievements) return;

const client = this.getClient();
if (!client) return;
Expand All @@ -164,7 +164,7 @@ export class CameraEntity extends Entity {

if (TankBody.isTank(player)) player.calculateStatData();

if (!enableAchievements && !this.game.arena.disableAchievements) return;
if (!this.game.enableAchievements) return;

const client = this.getClient();
if (!client) return;
Expand Down
Loading