mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-22 18:06:39 +00:00
Merge branch 'v26'
This commit is contained in:
+28
@@ -0,0 +1,28 @@
|
||||
# Credits
|
||||
|
||||
## Code
|
||||
|
||||
OpenFront is licensed under AGPL-3.0.
|
||||
See [Contributors](https://github.com/openfrontio/OpenFrontIO/graphs/contributors) for code contributors.
|
||||
|
||||
## Map Data
|
||||
|
||||
### OpenStreetMap
|
||||
|
||||
© [OpenStreetMap contributors](https://www.openstreetmap.org/copyright)
|
||||
Licensed under ODbL
|
||||
|
||||
### Natural Earth
|
||||
|
||||
[Natural Earth](https://www.naturalearthdata.com/)
|
||||
Public Domain
|
||||
|
||||
### Bedmap3 Antarctica Dataset
|
||||
|
||||
Pritchard, H.D., Fretwell, P.T., Fremand, A.C. et al. Bedmap3 updated ice bed, surface and thickness gridded datasets for Antarctica. _Sci Data_ 12, 109 (2025).
|
||||
[https://doi.org/10.1038/s41597-025-04672-y](https://doi.org/10.1038/s41597-025-04672-y)
|
||||
Licensed under [CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/)
|
||||
|
||||
## Icons
|
||||
|
||||
Icons from [The Noun Project](https://thenounproject.com/)
|
||||
@@ -277,8 +277,8 @@
|
||||
},
|
||||
"game_starting_modal": {
|
||||
"title": "Game is Starting...",
|
||||
"code_license": "Code licensed under AGPL-3.0",
|
||||
"desc": "Preparing for the lobby to start. Please wait."
|
||||
"credits": "Credits",
|
||||
"code_license": "Code licensed under AGPL-3.0"
|
||||
},
|
||||
"difficulty": {
|
||||
"difficulty": "Difficulty",
|
||||
|
||||
@@ -51,6 +51,13 @@ export class GameStartingModal extends LitElement {
|
||||
}
|
||||
|
||||
.modal p {
|
||||
margin: 2px 0;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.modal .loading {
|
||||
font-size: 16px;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
padding: 10px;
|
||||
@@ -88,16 +95,38 @@ export class GameStartingModal extends LitElement {
|
||||
.copyright {
|
||||
font-size: 32px;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 10px;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.modal a {
|
||||
display: block;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 15px;
|
||||
font-size: 20px;
|
||||
color: #4a9eff;
|
||||
text-decoration: none;
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
|
||||
.modal a:hover {
|
||||
color: #6bb0ff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
`;
|
||||
|
||||
render() {
|
||||
return html`
|
||||
<div class="modal ${this.isVisible ? "visible" : ""}">
|
||||
<div class="copyright">© OpenFront</div>
|
||||
<h5>${translateText("game_starting_modal.code_license")}</h5>
|
||||
<p>${translateText("game_starting_modal.title")}</p>
|
||||
<a
|
||||
href="https://github.com/openfrontio/OpenFrontIO/blob/main/CREDITS.md"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>${translateText("game_starting_modal.credits")}</a
|
||||
>
|
||||
<p>${translateText("game_starting_modal.code_license")}</p>
|
||||
<p class="loading">${translateText("game_starting_modal.title")}</p>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
@@ -353,7 +353,7 @@ export class DefaultConfig implements Config {
|
||||
trainSpawnRate(numPlayerFactories: number): number {
|
||||
// hyperbolic decay, midpoint at 10 factories
|
||||
// expected number of trains = numPlayerFactories / trainSpawnRate(numPlayerFactories)
|
||||
return (numPlayerFactories + 10) * 20;
|
||||
return (numPlayerFactories + 10) * 16;
|
||||
}
|
||||
trainGold(rel: "self" | "team" | "ally" | "other"): Gold {
|
||||
switch (rel) {
|
||||
@@ -378,7 +378,8 @@ export class DefaultConfig implements Config {
|
||||
}
|
||||
|
||||
tradeShipGold(dist: number, numPorts: number): Gold {
|
||||
const baseGold = Math.floor(100_000 + 100 * dist);
|
||||
// Smooth anti-cheese formula: base reward scales with distance using rational function, heavily penalizing short trades while converging to original rewards at long distances
|
||||
const baseGold = Math.floor(100_000 * (dist / (dist + 50)) + 100 * dist);
|
||||
const numPortBonus = numPorts - 1;
|
||||
// Hyperbolic decay, midpoint at 5 ports, 3x bonus max.
|
||||
const bonus = 1 + 2 * (numPortBonus / (numPortBonus + 5));
|
||||
|
||||
Reference in New Issue
Block a user