mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-07-12 22:05:58 +00:00
rebalancing
This commit is contained in:
@@ -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(),
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
@@ -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();
|
||||
}
|
||||
@@ -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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user