From a24710a9f5cc1d49e5c07205aef2fa288fe9f5ec Mon Sep 17 00:00:00 2001
From: Rj Manhas <117674421+RjManhas@users.noreply.github.com>
Date: Tue, 11 Nov 2025 14:39:01 -0700
Subject: [PATCH 1/3] A timer and icon flashing for betryal debuff (#2430)
Resolves #2096
## Description:
(TO CLEARIFY THEIRS NO GRACE PERIOD ADDED, AS THAT ISSUE THAT WOULD OF
NEEDED IT WAS FIXED BEFORE ON ITS OWN)
Shows the amount left in the UI for the player who trigged it
also the betryal icon, after 15 seconds starts a slow flash, then after
10 seconds it speeds up, and then at 5 seconds it quickly flashs.
this was a nice way to show the time left without adding any new ui
componets.
video link 36 seconds (https://streamable.com/cwzxch)
## Please complete the following:
- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
## Please put your Discord username so you can be contacted if a bug or
regression is found:
notifxy (1379678982676676639)
---
resources/lang/en.json | 3 +-
src/client/graphics/layers/EventsDisplay.ts | 52 ++++++++++++++++++-
src/client/graphics/layers/NameLayer.ts | 57 ++++++++++++++++++---
3 files changed, 103 insertions(+), 9 deletions(-)
diff --git a/resources/lang/en.json b/resources/lang/en.json
index aac1034c2..9e3d78251 100644
--- a/resources/lang/en.json
+++ b/resources/lang/en.json
@@ -580,7 +580,8 @@
"alliance_renewed": "Your alliance with {name} has been renewed",
"wants_to_renew_alliance": "{name} wants to renew your alliance",
"ignore": "Ignore",
- "unit_voluntarily_deleted": "Unit voluntarily deleted"
+ "unit_voluntarily_deleted": "Unit voluntarily deleted",
+ "betrayal_debuff_ends": "{time} seconds left until betrayal debuff ends"
},
"unit_info_modal": {
"structure_info": "Structure Info",
diff --git a/src/client/graphics/layers/EventsDisplay.ts b/src/client/graphics/layers/EventsDisplay.ts
index 1141643ef..803f81e3f 100644
--- a/src/client/graphics/layers/EventsDisplay.ts
+++ b/src/client/graphics/layers/EventsDisplay.ts
@@ -877,6 +877,30 @@ export class EventsDisplay extends LitElement implements Layer {
`;
}
+ private renderBetrayalDebuffTimer() {
+ const myPlayer = this.game.myPlayer();
+ if (!myPlayer || !myPlayer.isTraitor()) {
+ return html``;
+ }
+
+ const remainingTicks = myPlayer.getTraitorRemainingTicks();
+ const remainingSeconds = Math.ceil(remainingTicks / 10);
+
+ if (remainingSeconds <= 0) {
+ return html``;
+ }
+
+ return html`
+ ${this.renderButton({
+ content: html`${translateText("events_display.betrayal_debuff_ends", {
+ time: remainingSeconds,
+ })}`,
+ className: "text-left text-yellow-400",
+ translate: false,
+ })}
+ `;
+ }
+
render() {
if (!this.active || !this._isVisible) {
return html``;
@@ -1081,6 +1105,24 @@ export class EventsDisplay extends LitElement implements Layer {
`
: ""}
+
+ ${(() => {
+ const myPlayer = this.game.myPlayer();
+ return (
+ myPlayer &&
+ myPlayer.isTraitor() &&
+ myPlayer.getTraitorRemainingTicks() > 0
+ );
+ })()
+ ? html`
+
+ |
+ ${this.renderBetrayalDebuffTimer()}
+ |
+
+ `
+ : ""}
+
${this.outgoingAttacks.length > 0
? html`
@@ -1119,7 +1161,15 @@ export class EventsDisplay extends LitElement implements Layer {
this.incomingAttacks.length === 0 &&
this.outgoingAttacks.length === 0 &&
this.outgoingLandAttacks.length === 0 &&
- this.outgoingBoats.length === 0
+ this.outgoingBoats.length === 0 &&
+ !(() => {
+ const myPlayer = this.game.myPlayer();
+ return (
+ myPlayer &&
+ myPlayer.isTraitor() &&
+ myPlayer.getTraitorRemainingTicks() > 0
+ );
+ })()
? html`
this.onAlternateViewChange(e));
}
@@ -410,16 +425,44 @@ export class NameLayer implements Layer {
}
// Traitor icon
- const existingTraitor = iconsDiv.querySelector('[data-icon="traitor"]');
+ let existingTraitor = iconsDiv.querySelector('[data-icon="traitor"]');
if (render.player.isTraitor()) {
+ const remainingTicks = render.player.getTraitorRemainingTicks();
+ // Use precise seconds (not rounded) for smoother transitions, rounded to 0.5s intervals
+ const remainingSeconds = Math.round((remainingTicks / 10) * 2) / 2;
+
if (!existingTraitor) {
- iconsDiv.appendChild(
- this.createIconElement(
- this.traitorIconImage.src,
- iconSize,
- "traitor",
- ),
+ existingTraitor = this.createIconElement(
+ this.traitorIconImage.src,
+ iconSize,
+ "traitor",
);
+ iconsDiv.appendChild(existingTraitor);
+ }
+
+ // Apply flashing animation - smooth speed increase starting at 15s
+ if (existingTraitor instanceof HTMLImageElement) {
+ if (remainingSeconds <= 15) {
+ // Smooth transition: starts at 1s at 15 seconds, decreases to 0.2s at 0 seconds
+ // Using cubic ease-out for slower, more gradual acceleration
+ const clampedSeconds = Math.max(0, Math.min(15, remainingSeconds));
+ const normalizedTime = clampedSeconds / 15; // 0 to 1 (1 = 15s remaining, 0 = 0s remaining)
+
+ // Cubic ease-out: slower acceleration, smoother transition
+ const easedProgress = 1 - Math.pow(1 - normalizedTime, 3);
+
+ const maxDuration = 1.0; // Slow flash at 15 seconds
+ const minDuration = 0.2; // Fast flash at 0 seconds
+ const duration =
+ minDuration + (maxDuration - minDuration) * easedProgress;
+ const animationDuration = `${duration.toFixed(2)}s`;
+
+ existingTraitor.style.animation = `traitorFlash ${animationDuration} infinite`;
+ existingTraitor.style.animationTimingFunction = "ease-in-out";
+ } else {
+ // Don't flash if more than 15 seconds remaining
+ existingTraitor.style.animation = "none";
+ }
}
} else if (existingTraitor) {
existingTraitor.remove();
From d49566b73b6e675f45aac6b32b9870ba3321fa47 Mon Sep 17 00:00:00 2001
From: Will Dunlop <54122840+wjdunlop@users.noreply.github.com>
Date: Tue, 11 Nov 2025 22:20:32 +0000
Subject: [PATCH 2/3] fix: two rivers that were not connected fully (#2422)
## Description:
Literally one pixel was stopping the river
Before
After
before
after
## Please complete the following:
- [ X ] I have added screenshots for all UI updates
- [ N/A ] I process any text displayed to the user through
translateText() and I've added it to the en.json file
- [ N/A ] I have added relevant tests to the test directory
- [ X ] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
## Please put your Discord username so you can be contacted if a bug or
regression is found:
@dxtron_28992
---------
Co-authored-by: Evan
---
map-generator/assets/maps/britannia/image.png | Bin 670916 -> 670905 bytes
resources/maps/britannia/manifest.json | 6 +++---
resources/maps/britannia/map.bin | 2 +-
resources/maps/britannia/map16x.bin | 2 +-
resources/maps/britannia/map4x.bin | 2 +-
resources/maps/britannia/thumbnail.webp | Bin 11238 -> 11264 bytes
6 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/map-generator/assets/maps/britannia/image.png b/map-generator/assets/maps/britannia/image.png
index b20a97a70571da3e8a25a161acab97e707e51347..45535301a75b6000057bfee6f284e764f6ae20e3 100644
GIT binary patch
delta 272402
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 |