Skip to content

Commit

Permalink
Fix artifact rule, update deploy day
Browse files Browse the repository at this point in the history
  • Loading branch information
bglw committed Nov 9, 2024
1 parent 144987b commit e1ae53f
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 32 deletions.
2 changes: 1 addition & 1 deletion truncate_client/src/app_outer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use truncate_core::{
rules::GameRules,
};

pub const ART_CHANGE_DAY: u32 = 280;
pub const ART_CHANGE_DAY: u32 = 288;

/// A way to communicate with an outer host, if one exists. (Typically Browser JS)
pub struct Backchannel {
Expand Down
2 changes: 1 addition & 1 deletion truncate_client/tutorials/update_02.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ changelog_name: Battle length changes

priority: High

effective_day: 238
effective_day: 288

rules:
- category: Update
Expand Down
11 changes: 10 additions & 1 deletion truncate_core/src/board.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ use crate::bag::TileBag;
use crate::error::GamePlayError;
use crate::judge::WordDict;
use crate::reporting::Change;
use crate::rules::{ArtifactDefense, GameRules, WinCondition};
use crate::{player, rules};

#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
Expand Down Expand Up @@ -1136,8 +1137,16 @@ impl Board {
&self,
player: usize,
position: Coordinate,
rules: &GameRules,
) -> (Vec<Vec<Coordinate>>, Vec<Vec<Coordinate>>) {
let attackers = self.get_words(position);
let artifacts_are_combatants = matches!(
rules.win_condition,
WinCondition::Destination {
artifact_defense: ArtifactDefense::BeatenWithDefenseStrength(_),
..
}
);
// Any neighbouring square belonging to another player is attacked. The words containing those squares are the defenders.
let defenders = self
.neighbouring_squares(position)
Expand All @@ -1151,7 +1160,7 @@ impl Board {
player: adjacent_player,
defeated,
..
} => player != *adjacent_player && !defeated,
} => artifacts_are_combatants && player != *adjacent_player && !defeated,
Square::Town {
player: adjacent_player,
defeated,
Expand Down
2 changes: 1 addition & 1 deletion truncate_core/src/game.rs
Original file line number Diff line number Diff line change
Expand Up @@ -673,7 +673,7 @@ impl Game {
cached_word_judgements: Option<&mut HashMap<String, bool, xxh3::Xxh3Builder>>,
changes: &mut Vec<Change>,
) {
let (attackers, defenders) = self.board.collect_combanants(player, position);
let (attackers, defenders) = self.board.collect_combanants(player, position, &self.rules);
let attacking_words = self
.board
.word_strings(&attackers)
Expand Down
10 changes: 5 additions & 5 deletions truncate_core/src/moves/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,7 @@ mod tests {
.unwrap();

assert_eq!(
one_v_one.collect_combanants(0, middle),
one_v_one.collect_combanants(0, middle, &GameRules::generation(0)),
(vec![middle_attacker.clone()], vec![middle_defender.clone()])
);

Expand All @@ -403,7 +403,7 @@ mod tests {
.unwrap();

assert_eq!(
one_v_two.collect_combanants(0, middle),
one_v_two.collect_combanants(0, middle, &GameRules::generation(0)),
(
vec![middle_attacker.clone()],
vec![right_defender.clone(), left_defender.clone()],
Expand All @@ -423,7 +423,7 @@ mod tests {
.unwrap();

assert_eq!(
one_v_three.collect_combanants(0, middle),
one_v_three.collect_combanants(0, middle, &GameRules::generation(0)),
(
vec![middle_attacker.clone()],
vec![
Expand All @@ -447,7 +447,7 @@ mod tests {
.set(middle, 0, 'A', Some(&short_dict().builtin_dictionary))
.unwrap();
assert_eq!(
two_v_two.collect_combanants(0, middle),
two_v_two.collect_combanants(0, middle, &GameRules::generation(0)),
(
vec![middle_attacker, left_attacker],
vec![right_defender, middle_defender, short_cross_defender],
Expand All @@ -470,7 +470,7 @@ mod tests {
.unwrap();

assert_eq!(
board.collect_combanants(1, c(2, 2)),
board.collect_combanants(1, c(2, 2), &GameRules::generation(0)),
(
vec![vec![c(2, 2), c(2, 3), c(2, 4)]],
vec![vec![c(3, 1), c(2, 1)], vec![c(3, 2)], vec![c(1, 2)]],
Expand Down
2 changes: 1 addition & 1 deletion truncate_core/src/rules.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ const RULE_GENERATIONS: [(Option<EffectiveRuleDay>, GameRules); 3] = [
},
),
(
Some(EffectiveRuleDay(237)),
Some(EffectiveRuleDay(288)),
GameRules {
generation: None, // hydrated on fetch
win_condition: WinCondition::Destination {
Expand Down
44 changes: 22 additions & 22 deletions truncate_dueller/seed_notes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1599,133 +1599,133 @@ notes:
rerolls: 3
best_player: 0
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 091d1bd73fe3a86ea2aa0e565c7a93fad7efc3a7225202c96337207d5ff21640
267:
rerolls: 1
best_player: 0
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 41b747705f2fb44161d75bda5760a53b2799252d35873a1fea1468aadb3f3d73
268:
rerolls: 2
best_player: 0
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 2e78514316d3dedf9596bd49b529e046501266c8a5306bb9e9ce01017efd5aa9
269:
rerolls: 1
best_player: 1
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 0309e04c360c75b35e87dd8f492faf5009948dd5aa4ff43725413f7eb969c021
270:
rerolls: 1
best_player: 0
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: a551552da6619c9237141416f15338f945e953f6c5e686aa01fb3ee01ae08fef
271:
rerolls: 2
best_player: 1
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: d7d9e9c10be84d91e07c106ef16990e1fee5de07633882035a5f6b22a1391566
272:
rerolls: 1
best_player: 0
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 10a983a52318a567852e3fdd4e1b88d1053636434ce4b34c964a9166aedebd10
273:
rerolls: 1
best_player: 1
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: ba9dde0a4a8022cd49caeaf037fa9b64f08d28d17f86580def747df74990c53c
274:
rerolls: 1
best_player: 1
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 3681b518408ae27cf25b420f2bce7a89aafa659d844b49ed0f7c8c6ea13eea85
275:
rerolls: 1
best_player: 0
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 3d0909812ed7e4c2ffa50c9d8ead0c2bcb0acb3a7b068f6744e9aa4e4d0eac38
276:
rerolls: 1
best_player: 0
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: bbc621c9491133eef519104e1f50ca7df5a6c2a6550e0f3564c569180f7b3573
277:
rerolls: 2
best_player: 0
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 8842bf25918063bfea95e147aa1ee844ea79dffcd3e86381f7a2737e18bfc35c
278:
rerolls: 1
best_player: 0
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 7d1b4e30f77e29f8cc358866480f8a0676f4b1d222974f0ab4bd310e8233be87
279:
rerolls: 2
best_player: 1
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 3d0766d3d183f6ae3851f3ea94f34c1b76c98c5da725a56c45061d7295f548ee
280:
rerolls: 1
best_player: 1
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 917dec54a9a9cd5f0f71c76e6041fd0b8efc88afad5cdd5dafbfb2d99c413b3d
281:
rerolls: 1
best_player: 1
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: e2a60bcd614bf60fa1862494e4e31c35fed8d62c7ad81d66c575a19d35a11f6e
282:
rerolls: 1
best_player: 1
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 893b0a665600436391f62297bef2c1f91f72572bb578ed9ac88ed96006fc968c
283:
rerolls: 1
best_player: 0
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 04fd80a00f55b64c315a25f108381ce227ce77b3cde454ba4c6a52b315cf8a86
284:
rerolls: 1
best_player: 1
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 5f068a75ecb566bcbc8583ef758cdb344bf52e06a9a7890a9a0c5a9dfa70a4f9
285:
rerolls: 2
best_player: 0
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 284c5da87053b702c4493ed9b82d1b6634d68515acd1d1592c0ae3abd33f745a
286:
rerolls: 1
best_player: 1
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: a7947b1c779b5cc1a26bbc720ec878d7179a51fc7b7835addf499fcac135329f
287:
rerolls: 1
best_player: 1
board_generation: 1
rules_generation: 2
rules_generation: 1
verification: 5b62c9e8da26280acbb4fb171e0163c2fe50fe86ada3479b4587c57275b9a427
288:
rerolls: 2
Expand Down

0 comments on commit e1ae53f

Please sign in to comment.