rebalancing

This commit is contained in:
evanpelle
2024-09-07 13:35:07 -07:00
parent 8ff03496c6
commit bf7273ad5a
10 changed files with 54 additions and 23 deletions
+3 -2
View File
@@ -4,9 +4,10 @@ import {loadTerrainMap, TerrainMap} from "../core/TerrainMapLoader";
import {ClientGame, createClientGame} from "./ClientGame";
import backgroundImage from '../../resources/images/TerrainMapFrontPage.png';
import favicon from '../../resources/images/Favicon.png';
import {v4 as uuidv4} from 'uuid';
import './styles.css';
import {generateUniqueId} from "../core/Util";
class Client {
@@ -120,7 +121,7 @@ class Client {
console.log(`got ip ${clientIP}`)
this.game = createClientGame(
getUsername(),
generateUniqueId(),
uuidv4(),
clientIP,
lobby.id,
getConfig(),
+4
View File
@@ -242,6 +242,10 @@ export class ClientGame {
let borderTileClosest = 10000000
let enemyShoreClosest = 10000
if (borderWithDists.length == 0 && enemyShoreDists.length == 0) {
return
}
if (bordersWithDists.length > 0) {
borderTileClosest = borderWithDists[0].dist
}
+1 -1
View File
@@ -10,7 +10,7 @@
<body>
<div class="content">
<h1>OpenFront.io</h1>
<h2>(v0.3.0)</h2>
<h2>(v0.3.5)</h2>
<div id="username-container">
<input type="text" id="username" placeholder="Enter your username">
</div>
+3 -7
View File
@@ -1,3 +1,6 @@
import {v4 as uuidv4} from 'uuid';
import {Cell, Player, Tile} from "./Game";
export function manhattanDist(c1: Cell, c2: Cell): number {
@@ -97,11 +100,4 @@ export function getMode(list: string[]): string {
}
return mode;
}
export function generateUniqueId(): string {
if (typeof crypto === 'undefined' || !crypto.randomUUID) {
throw new Error('crypto.randomUUID is not supported in this environment');
}
return crypto.randomUUID();
}
+8 -4
View File
@@ -31,28 +31,32 @@ export class DefaultConfig implements Config {
attackLogic(attacker: Player, defender: Player | TerraNullius, tileToConquer: Tile): {attackerTroopLoss: number; defenderTroopLoss: number; tilesPerTickUsed: number} {
let mag = 0
let speed = 0
switch (tileToConquer.terrain()) {
case TerrainType.Plains:
mag = 1
mag = 5
speed = 5
break
case TerrainType.Highland:
mag = 15
speed = 10
break
case TerrainType.Mountain:
mag = 40
mag = 45
speed = 15
break
}
if (defender.isPlayer()) {
return {
attackerTroopLoss: within(defender.troops() / attacker.troops() * mag, 1, 1000),
defenderTroopLoss: within(attacker.troops() / defender.troops(), 1, 1000),
tilesPerTickUsed: within(attacker.numTilesOwned() / defender.numTilesOwned(), 1, 5) * mag
tilesPerTickUsed: within(attacker.numTilesOwned() / defender.numTilesOwned() / 2, 1, 5) * speed
}
} else {
return {
attackerTroopLoss: mag,
defenderTroopLoss: 0,
tilesPerTickUsed: Math.max(mag / 2, 1)
tilesPerTickUsed: Math.floor(Math.max(speed, 1))
}
}
}
+3 -2
View File
@@ -4,7 +4,8 @@ import {PseudoRandom} from "../core/PseudoRandom";
import WebSocket from 'ws';
import {ClientID, GameID} from "../core/Schemas";
import {Client} from "./Client";
import {generateUniqueId} from "../core/Util";
import {v4 as uuidv4} from 'uuid';
export class GameManager {
@@ -38,7 +39,7 @@ export class GameManager {
const now = Date.now()
if (now > this.lastNewLobby + this.config.gameCreationRate()) {
this.lastNewLobby = now
const id = generateUniqueId()
const id = uuidv4()
lobbies.push(new GameServer(id, now, this.config))
}