From 928bc2ab3047a08c59007853d5c449d7aad5e0d6 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sat, 7 Mar 2026 13:59:13 -0800 Subject: [PATCH 01/21] added orthogonal --- src/tool/modifiers/restrictions/_list.zig | 1 + .../modifiers/restrictions/onOrthogonal.zig | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/tool/modifiers/restrictions/onOrthogonal.zig diff --git a/src/tool/modifiers/restrictions/_list.zig b/src/tool/modifiers/restrictions/_list.zig index c77fcf13aa..dccd605103 100644 --- a/src/tool/modifiers/restrictions/_list.zig +++ b/src/tool/modifiers/restrictions/_list.zig @@ -3,3 +3,4 @@ pub const @"and" = @import("and.zig"); pub const encased = @import("encased.zig"); pub const not = @import("not.zig"); pub const @"or" = @import("or.zig"); +pub const @"onOrthogonal" = @import("onOrthogonal.zig"); diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig new file mode 100644 index 0000000000..7fe4d02c15 --- /dev/null +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -0,0 +1,50 @@ +const std = @import("std"); + +const main = @import("main"); +const NeverFailingAllocator = main.heap.NeverFailingAllocator; +const ModifierRestriction = main.items.ModifierRestriction; +const Tool = main.items.Tool; +const ZonElement = main.ZonElement; + +const Encased = struct { + tag: main.Tag, + amount: usize, + range: usize, +}; + +pub fn satisfied(self: *const Encased, tool: *const Tool, x: i32, y: i32) bool { + var count: usize = 0; + const lowBound = 0; + const highBound = self.range*2 + 1; + for (lowBound..highBound) |dx| { + const checkedX = x + @as(i32, @intCast(dx - self.range)); + const checkedY = y + @as(i32, @intCast(0 - self.range)); + if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; + } + for (lowBound..highBound) |dy| { + const checkedX = x + @as(i32, @intCast(0 - self.range)); + const checkedY = y + @as(i32, @intCast(dy - self.range)); + if (!(dy == 0)) { + if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; + } + } + return count >= self.amount; +} + +pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const Encased { + const result = allocator.create(Encased); + result.* = .{ + .tag = main.Tag.find(zon.get([]const u8, "tag", "not specified")), + .amount = zon.get(usize, "amount", 8), + .range = zon.get(usize, "range", 5), + }; + return result; +} + +pub fn printTooltip(self: *const Encased, outString: *main.List(u8)) void { + if (self.range < 5) { + outString.print("{} .{s} {s} {}", .{self.amount, self.tag.getName(), "in orthoganal range", self.range}); + } else { + outString.print("{} .{s} {s}", .{self.amount, self.tag.getName(), "on orthoganal axis"}); + } +} From f37cdceccccd3a0d8912feef386defad497092d1 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sat, 7 Mar 2026 14:06:43 -0800 Subject: [PATCH 02/21] not supposed to be there --- src/tool/modifiers/restrictions/_list.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tool/modifiers/restrictions/_list.zig b/src/tool/modifiers/restrictions/_list.zig index dccd605103..cd7b514a2d 100644 --- a/src/tool/modifiers/restrictions/_list.zig +++ b/src/tool/modifiers/restrictions/_list.zig @@ -3,4 +3,4 @@ pub const @"and" = @import("and.zig"); pub const encased = @import("encased.zig"); pub const not = @import("not.zig"); pub const @"or" = @import("or.zig"); -pub const @"onOrthogonal" = @import("onOrthogonal.zig"); +pub const onOrthogonal = @import("onOrthogonal.zig"); From 7971bead8beee1312b318649c01b856e6bd62b5f Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sun, 15 Mar 2026 11:06:13 -0700 Subject: [PATCH 03/21] Update onOrthogonal.zig default is 0 and it checks whole axis --- .../modifiers/restrictions/onOrthogonal.zig | 81 +++++++++++-------- 1 file changed, 46 insertions(+), 35 deletions(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index 7fe4d02c15..442e7dda7f 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -6,45 +6,56 @@ const ModifierRestriction = main.items.ModifierRestriction; const Tool = main.items.Tool; const ZonElement = main.ZonElement; -const Encased = struct { - tag: main.Tag, - amount: usize, - range: usize, +const OnOrthogonal = struct { + tag: main.Tag, + amount: usize, + range: usize, }; -pub fn satisfied(self: *const Encased, tool: *const Tool, x: i32, y: i32) bool { - var count: usize = 0; - const lowBound = 0; - const highBound = self.range*2 + 1; - for (lowBound..highBound) |dx| { - const checkedX = x + @as(i32, @intCast(dx - self.range)); - const checkedY = y + @as(i32, @intCast(0 - self.range)); - if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; - } - for (lowBound..highBound) |dy| { - const checkedX = x + @as(i32, @intCast(0 - self.range)); - const checkedY = y + @as(i32, @intCast(dy - self.range)); - if (!(dy == 0)) { - if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; - } - } - return count >= self.amount; +pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) bool { + var count: usize = 0; + const gridSize: usize = @sqrt(tool.craftingGrid.len); + var rangeChecked: usize = 0; + if (self.range > gridSize) { + rangeChecked = gridSize; + } else { + if (self.range == 0) { + rangeChecked = gridSize; + } else { + rangeChecked = self.range; + } + } + const lowBound = 0; + const highBound = rangeChecked * 2 + 1; + for (lowBound..highBound) |dx| { + const checkedX = x + @as(i32, @intCast(dx - rangeChecked)); + const checkedY = y + @as(i32, @intCast(0 - rangeChecked)); + if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; + } + for (lowBound..highBound) |dy| { + const checkedX = x + @as(i32, @intCast(0 - rangeChecked)); + const checkedY = y + @as(i32, @intCast(dy - rangeChecked)); + if (!(dy == 0)) { + if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; + } + } + return count >= self.amount; } -pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const Encased { - const result = allocator.create(Encased); - result.* = .{ - .tag = main.Tag.find(zon.get([]const u8, "tag", "not specified")), - .amount = zon.get(usize, "amount", 8), - .range = zon.get(usize, "range", 5), - }; - return result; +pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnOrthogonal { + const result = allocator.create(OnOrthogonal); + result.* = .{ + .tag = main.Tag.find(zon.get([]const u8, "tag", "not specified")), + .amount = zon.get(usize, "amount", 8), + .range = zon.get(usize, "range", 0), + }; + return result; } -pub fn printTooltip(self: *const Encased, outString: *main.List(u8)) void { - if (self.range < 5) { - outString.print("{} .{s} {s} {}", .{self.amount, self.tag.getName(), "in orthoganal range", self.range}); - } else { - outString.print("{} .{s} {s}", .{self.amount, self.tag.getName(), "on orthoganal axis"}); - } +pub fn printTooltip(self: *const OnOrthogonal, outString: *main.List(u8)) void { + if (self.range == 0) { + outString.print("{} .{s} {s}", .{ self.amount, self.tag.getName(), "on orthoganal axis" }); + } else { + outString.print("{} .{s} {s} {}", .{ self.amount, self.tag.getName(), "in orthoganal range", self.range }); + } } From 4352e53f78c6d14963af92ad02f30d8cf5af9372 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sun, 15 Mar 2026 11:54:55 -0700 Subject: [PATCH 04/21] default zig formatter turned off --- .../modifiers/restrictions/onOrthogonal.zig | 84 +++++++++---------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index 442e7dda7f..f18d41439b 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -7,55 +7,55 @@ const Tool = main.items.Tool; const ZonElement = main.ZonElement; const OnOrthogonal = struct { - tag: main.Tag, - amount: usize, - range: usize, + tag: main.Tag, + amount: usize, + range: usize, }; pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) bool { - var count: usize = 0; - const gridSize: usize = @sqrt(tool.craftingGrid.len); - var rangeChecked: usize = 0; - if (self.range > gridSize) { - rangeChecked = gridSize; - } else { - if (self.range == 0) { - rangeChecked = gridSize; - } else { - rangeChecked = self.range; - } - } - const lowBound = 0; - const highBound = rangeChecked * 2 + 1; - for (lowBound..highBound) |dx| { - const checkedX = x + @as(i32, @intCast(dx - rangeChecked)); - const checkedY = y + @as(i32, @intCast(0 - rangeChecked)); - if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; - } - for (lowBound..highBound) |dy| { - const checkedX = x + @as(i32, @intCast(0 - rangeChecked)); - const checkedY = y + @as(i32, @intCast(dy - rangeChecked)); - if (!(dy == 0)) { - if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; - } - } - return count >= self.amount; + var count: usize = 0; + const gridSize: usize = @sqrt(tool.craftingGrid.len); + var rangeChecked: usize = 0; + if (self.range > gridSize) { + rangeChecked = gridSize; + } else { + if (self.range == 0) { + rangeChecked = gridSize; + } else { + rangeChecked = self.range; + } + } + const lowBound = 0; + const highBound = rangeChecked * 2 + 1; + for (lowBound..highBound) |dx| { + const checkedX = x + @as(i32, @intCast(dx - rangeChecked)); + const checkedY = y + @as(i32, @intCast(0 - rangeChecked)); + if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; + } + for (lowBound..highBound) |dy| { + const checkedX = x + @as(i32, @intCast(0 - rangeChecked)); + const checkedY = y + @as(i32, @intCast(dy - rangeChecked)); + if (!(dy == 0)) { + if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; + } + } + return count >= self.amount; } pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnOrthogonal { - const result = allocator.create(OnOrthogonal); - result.* = .{ - .tag = main.Tag.find(zon.get([]const u8, "tag", "not specified")), - .amount = zon.get(usize, "amount", 8), - .range = zon.get(usize, "range", 0), - }; - return result; + const result = allocator.create(OnOrthogonal); + result.* = .{ + .tag = main.Tag.find(zon.get([]const u8, "tag", "not specified")), + .amount = zon.get(usize, "amount", 8), + .range = zon.get(usize, "range", 0), + }; + return result; } pub fn printTooltip(self: *const OnOrthogonal, outString: *main.List(u8)) void { - if (self.range == 0) { - outString.print("{} .{s} {s}", .{ self.amount, self.tag.getName(), "on orthoganal axis" }); - } else { - outString.print("{} .{s} {s} {}", .{ self.amount, self.tag.getName(), "in orthoganal range", self.range }); - } + if (self.range == 0) { + outString.print("{} .{s} {s}", .{ self.amount, self.tag.getName(), "on orthoganal axis" }); + } else { + outString.print("{} .{s} {s} {}", .{ self.amount, self.tag.getName(), "in orthoganal range", self.range }); + } } From d9e0364f3b521a4e47986bef774e33a4308193a9 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sun, 15 Mar 2026 11:59:47 -0700 Subject: [PATCH 05/21] formatting --- src/tool/modifiers/restrictions/onOrthogonal.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index f18d41439b..86dd00e47e 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -26,7 +26,7 @@ pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) b } } const lowBound = 0; - const highBound = rangeChecked * 2 + 1; + const highBound = rangeChecked*2 + 1; for (lowBound..highBound) |dx| { const checkedX = x + @as(i32, @intCast(dx - rangeChecked)); const checkedY = y + @as(i32, @intCast(0 - rangeChecked)); @@ -54,8 +54,8 @@ pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnO pub fn printTooltip(self: *const OnOrthogonal, outString: *main.List(u8)) void { if (self.range == 0) { - outString.print("{} .{s} {s}", .{ self.amount, self.tag.getName(), "on orthoganal axis" }); + outString.print("{} .{s} {s}", .{self.amount, self.tag.getName(), "on orthoganal axis" }); } else { - outString.print("{} .{s} {s} {}", .{ self.amount, self.tag.getName(), "in orthoganal range", self.range }); + outString.print("{} .{s} {s} {}", .{self.amount, self.tag.getName(), "in orthoganal range", self.range }); } } From 5c0f02bcf529af6b07365a21485eab8931f925e1 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sun, 15 Mar 2026 12:57:59 -0700 Subject: [PATCH 06/21] Update onOrthogonal.zig --- src/tool/modifiers/restrictions/onOrthogonal.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index 86dd00e47e..75b0cd67bf 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -54,8 +54,8 @@ pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnO pub fn printTooltip(self: *const OnOrthogonal, outString: *main.List(u8)) void { if (self.range == 0) { - outString.print("{} .{s} {s}", .{self.amount, self.tag.getName(), "on orthoganal axis" }); + outString.print("{} .{s} {s}", .{self.amount, self.tag.getName(), "on orthoganal axis"}); } else { - outString.print("{} .{s} {s} {}", .{self.amount, self.tag.getName(), "in orthoganal range", self.range }); + outString.print("{} .{s} {s} {}", .{self.amount, self.tag.getName(), "in orthoganal range", self.range}); } } From 6a6686eca3d7f4c1173a7a4178429fa844ef2ca4 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sun, 15 Mar 2026 22:55:07 -0700 Subject: [PATCH 07/21] Update onOrthogonal.zig --- src/tool/modifiers/restrictions/onOrthogonal.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index 75b0cd67bf..d60f8e6221 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -14,7 +14,7 @@ const OnOrthogonal = struct { pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) bool { var count: usize = 0; - const gridSize: usize = @sqrt(tool.craftingGrid.len); + const gridSize: usize = @intCast(@ceil(@sqrt(@as(f32 ,@floatCast(tool.craftingGrid.len))))); var rangeChecked: usize = 0; if (self.range > gridSize) { rangeChecked = gridSize; From b72965dae4f07f0e6eb5d3124dc58a34f90b08b5 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sun, 15 Mar 2026 23:01:20 -0700 Subject: [PATCH 08/21] Update onOrthogonal.zig --- src/tool/modifiers/restrictions/onOrthogonal.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index d60f8e6221..ea36b4ef2c 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -14,7 +14,7 @@ const OnOrthogonal = struct { pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) bool { var count: usize = 0; - const gridSize: usize = @intCast(@ceil(@sqrt(@as(f32 ,@floatCast(tool.craftingGrid.len))))); + const gridSize: usize = tool.craftingGrid.len; var rangeChecked: usize = 0; if (self.range > gridSize) { rangeChecked = gridSize; From 12b39753b16bbfda316a3f329da7837cd03b64fe Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sun, 15 Mar 2026 23:08:49 -0700 Subject: [PATCH 09/21] Update onOrthogonal.zig --- src/tool/modifiers/restrictions/onOrthogonal.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index ea36b4ef2c..c2301b5b05 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -35,7 +35,7 @@ pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) b for (lowBound..highBound) |dy| { const checkedX = x + @as(i32, @intCast(0 - rangeChecked)); const checkedY = y + @as(i32, @intCast(dy - rangeChecked)); - if (!(dy == 0)) { + if (dy != 0) { if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; } } From 8881707ce2b3b8bb4dddc5dce3c339c2cc632028 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Mon, 16 Mar 2026 17:28:23 -0700 Subject: [PATCH 10/21] Update onOrthogonal.zig --- src/tool/modifiers/restrictions/onOrthogonal.zig | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index c2301b5b05..218ce224d3 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -15,16 +15,7 @@ const OnOrthogonal = struct { pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) bool { var count: usize = 0; const gridSize: usize = tool.craftingGrid.len; - var rangeChecked: usize = 0; - if (self.range > gridSize) { - rangeChecked = gridSize; - } else { - if (self.range == 0) { - rangeChecked = gridSize; - } else { - rangeChecked = self.range; - } - } + const rangeChecked = @min(self.range orelse gridSize, gridSize); const lowBound = 0; const highBound = rangeChecked*2 + 1; for (lowBound..highBound) |dx| { From 86ab7e623e6584cfb071358819ce3afeef12be32 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Mon, 16 Mar 2026 17:30:19 -0700 Subject: [PATCH 11/21] Update onOrthogonal.zig --- src/tool/modifiers/restrictions/onOrthogonal.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index 218ce224d3..c6d5b897fa 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -36,7 +36,7 @@ pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) b pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnOrthogonal { const result = allocator.create(OnOrthogonal); result.* = .{ - .tag = main.Tag.find(zon.get([]const u8, "tag", "not specified")), + .tag = main.Tag.find(zon.get(?[]const u8, "tag", null)), .amount = zon.get(usize, "amount", 8), .range = zon.get(usize, "range", 0), }; From e50b5c1311f818cd607ba5eb23d146be916c9f77 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Mon, 16 Mar 2026 17:35:19 -0700 Subject: [PATCH 12/21] Update onOrthogonal.zig --- src/tool/modifiers/restrictions/onOrthogonal.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index c6d5b897fa..7a43617e82 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -36,7 +36,7 @@ pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) b pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnOrthogonal { const result = allocator.create(OnOrthogonal); result.* = .{ - .tag = main.Tag.find(zon.get(?[]const u8, "tag", null)), + .tag = main.Tag.find(zon.get([]const u8, "tag", null)), .amount = zon.get(usize, "amount", 8), .range = zon.get(usize, "range", 0), }; From cba0be5fcca4ca941bee42e9679cec75879d1798 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Mon, 16 Mar 2026 17:36:41 -0700 Subject: [PATCH 13/21] Update onOrthogonal.zig --- src/tool/modifiers/restrictions/onOrthogonal.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index 7a43617e82..c6d5b897fa 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -36,7 +36,7 @@ pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) b pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnOrthogonal { const result = allocator.create(OnOrthogonal); result.* = .{ - .tag = main.Tag.find(zon.get([]const u8, "tag", null)), + .tag = main.Tag.find(zon.get(?[]const u8, "tag", null)), .amount = zon.get(usize, "amount", 8), .range = zon.get(usize, "range", 0), }; From b4bf1157ebf33b9e467eb4de2cbf636ae7b2886e Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Mon, 16 Mar 2026 18:34:50 -0700 Subject: [PATCH 14/21] Update onOrthogonal.zig --- src/tool/modifiers/restrictions/onOrthogonal.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index c6d5b897fa..1655dd69c9 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -36,7 +36,7 @@ pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) b pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnOrthogonal { const result = allocator.create(OnOrthogonal); result.* = .{ - .tag = main.Tag.find(zon.get(?[]const u8, "tag", null)), + .tag = main.Tag.find(zon.get(?[]const u8, "tag", null) orelse {...std.log.err(...)...}), .amount = zon.get(usize, "amount", 8), .range = zon.get(usize, "range", 0), }; From 8e509d3371cd67f815c5325b5bd5b8f7a3e5facb Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Mon, 16 Mar 2026 18:39:16 -0700 Subject: [PATCH 15/21] Update onOrthogonal.zig --- src/tool/modifiers/restrictions/onOrthogonal.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index 1655dd69c9..218ce224d3 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -36,7 +36,7 @@ pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) b pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnOrthogonal { const result = allocator.create(OnOrthogonal); result.* = .{ - .tag = main.Tag.find(zon.get(?[]const u8, "tag", null) orelse {...std.log.err(...)...}), + .tag = main.Tag.find(zon.get([]const u8, "tag", "not specified")), .amount = zon.get(usize, "amount", 8), .range = zon.get(usize, "range", 0), }; From 43b3782464e324138e77d2a1255e50f03c073aec Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Mon, 16 Mar 2026 18:52:06 -0700 Subject: [PATCH 16/21] Update onOrthogonal.zig --- src/tool/modifiers/restrictions/onOrthogonal.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index 218ce224d3..37a5b92527 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -38,7 +38,7 @@ pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnO result.* = .{ .tag = main.Tag.find(zon.get([]const u8, "tag", "not specified")), .amount = zon.get(usize, "amount", 8), - .range = zon.get(usize, "range", 0), + .range = zon.get(?usize, "range", null), }; return result; } From 46d6c68f8eb830c8e9dc0c60366922958393a497 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sun, 12 Apr 2026 17:09:17 -0700 Subject: [PATCH 17/21] fix --- src/tool/modifiers/restrictions/onOrthogonal.zig | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/tool/modifiers/restrictions/onOrthogonal.zig b/src/tool/modifiers/restrictions/onOrthogonal.zig index 37a5b92527..0f37dc5ffa 100644 --- a/src/tool/modifiers/restrictions/onOrthogonal.zig +++ b/src/tool/modifiers/restrictions/onOrthogonal.zig @@ -3,31 +3,31 @@ const std = @import("std"); const main = @import("main"); const NeverFailingAllocator = main.heap.NeverFailingAllocator; const ModifierRestriction = main.items.ModifierRestriction; -const Tool = main.items.Tool; +const ProceduralItem = main.items.ProceduralItem; const ZonElement = main.ZonElement; const OnOrthogonal = struct { tag: main.Tag, amount: usize, - range: usize, + range: ?usize, }; -pub fn satisfied(self: *const OnOrthogonal, tool: *const Tool, x: i32, y: i32) bool { +pub fn satisfied(self: *const OnOrthogonal, proceduralItem: *const ProceduralItem, x: i32, y: i32) bool { var count: usize = 0; - const gridSize: usize = tool.craftingGrid.len; + const gridSize: usize = proceduralItem.craftingGrid.len; const rangeChecked = @min(self.range orelse gridSize, gridSize); const lowBound = 0; const highBound = rangeChecked*2 + 1; for (lowBound..highBound) |dx| { const checkedX = x + @as(i32, @intCast(dx - rangeChecked)); const checkedY = y + @as(i32, @intCast(0 - rangeChecked)); - if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; + if ((proceduralItem.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; } for (lowBound..highBound) |dy| { const checkedX = x + @as(i32, @intCast(0 - rangeChecked)); const checkedY = y + @as(i32, @intCast(dy - rangeChecked)); if (dy != 0) { - if ((tool.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; + if ((proceduralItem.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; } } return count >= self.amount; @@ -44,7 +44,7 @@ pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnO } pub fn printTooltip(self: *const OnOrthogonal, outString: *main.List(u8)) void { - if (self.range == 0) { + if (self.range == null) { outString.print("{} .{s} {s}", .{self.amount, self.tag.getName(), "on orthoganal axis"}); } else { outString.print("{} .{s} {s} {}", .{self.amount, self.tag.getName(), "in orthoganal range", self.range}); From 1fffd51562d4316ed1d221b1fd240f900aa4f451 Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sun, 12 Apr 2026 17:15:50 -0700 Subject: [PATCH 18/21] Update onOrthogonal.zig --- src/proceduralItem/modifiers/restrictions/onOrthogonal.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/proceduralItem/modifiers/restrictions/onOrthogonal.zig b/src/proceduralItem/modifiers/restrictions/onOrthogonal.zig index 0f37dc5ffa..47949eb5a7 100644 --- a/src/proceduralItem/modifiers/restrictions/onOrthogonal.zig +++ b/src/proceduralItem/modifiers/restrictions/onOrthogonal.zig @@ -47,6 +47,6 @@ pub fn printTooltip(self: *const OnOrthogonal, outString: *main.List(u8)) void { if (self.range == null) { outString.print("{} .{s} {s}", .{self.amount, self.tag.getName(), "on orthoganal axis"}); } else { - outString.print("{} .{s} {s} {}", .{self.amount, self.tag.getName(), "in orthoganal range", self.range}); + outString.print("{} .{s} {s} {?}", .{self.amount, self.tag.getName(), "in orthoganal range", self.range}); } } From 6979f78cdc05b844bcc69aae1799d6eb36dd1c0f Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sat, 18 Apr 2026 14:51:27 -0700 Subject: [PATCH 19/21] critical fix --- src/proceduralItem/modifiers/restrictions/_list.zig | 2 +- .../{onOrthogonal.zig => on_orthogonal.zig} | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) rename src/proceduralItem/modifiers/restrictions/{onOrthogonal.zig => on_orthogonal.zig} (84%) diff --git a/src/proceduralItem/modifiers/restrictions/_list.zig b/src/proceduralItem/modifiers/restrictions/_list.zig index cd7b514a2d..59717b3340 100644 --- a/src/proceduralItem/modifiers/restrictions/_list.zig +++ b/src/proceduralItem/modifiers/restrictions/_list.zig @@ -3,4 +3,4 @@ pub const @"and" = @import("and.zig"); pub const encased = @import("encased.zig"); pub const not = @import("not.zig"); pub const @"or" = @import("or.zig"); -pub const onOrthogonal = @import("onOrthogonal.zig"); +pub const on_orthogonal = @import("on_orthogonal.zig"); diff --git a/src/proceduralItem/modifiers/restrictions/onOrthogonal.zig b/src/proceduralItem/modifiers/restrictions/on_orthogonal.zig similarity index 84% rename from src/proceduralItem/modifiers/restrictions/onOrthogonal.zig rename to src/proceduralItem/modifiers/restrictions/on_orthogonal.zig index 47949eb5a7..7dc776b78e 100644 --- a/src/proceduralItem/modifiers/restrictions/onOrthogonal.zig +++ b/src/proceduralItem/modifiers/restrictions/on_orthogonal.zig @@ -6,13 +6,13 @@ const ModifierRestriction = main.items.ModifierRestriction; const ProceduralItem = main.items.ProceduralItem; const ZonElement = main.ZonElement; -const OnOrthogonal = struct { +const On_orthogonal = struct { tag: main.Tag, amount: usize, range: ?usize, }; -pub fn satisfied(self: *const OnOrthogonal, proceduralItem: *const ProceduralItem, x: i32, y: i32) bool { +pub fn satisfied(self: *const On_orthogonal, proceduralItem: *const ProceduralItem, x: i32, y: i32) bool { var count: usize = 0; const gridSize: usize = proceduralItem.craftingGrid.len; const rangeChecked = @min(self.range orelse gridSize, gridSize); @@ -33,8 +33,8 @@ pub fn satisfied(self: *const OnOrthogonal, proceduralItem: *const ProceduralIte return count >= self.amount; } -pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnOrthogonal { - const result = allocator.create(OnOrthogonal); +pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const On_orthogonal { + const result = allocator.create(On_orthogonal); result.* = .{ .tag = main.Tag.find(zon.get([]const u8, "tag", "not specified")), .amount = zon.get(usize, "amount", 8), @@ -43,7 +43,7 @@ pub fn loadFromZon(allocator: NeverFailingAllocator, zon: ZonElement) *const OnO return result; } -pub fn printTooltip(self: *const OnOrthogonal, outString: *main.List(u8)) void { +pub fn printTooltip(self: *const On_orthogonal, outString: *main.List(u8)) void { if (self.range == null) { outString.print("{} .{s} {s}", .{self.amount, self.tag.getName(), "on orthoganal axis"}); } else { From 24e3aec263227c6f3289e2a0f45903d88279df5c Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sun, 19 Apr 2026 23:20:41 -0700 Subject: [PATCH 20/21] Update on_orthogonal.zig --- .../modifiers/restrictions/on_orthogonal.zig | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/proceduralItem/modifiers/restrictions/on_orthogonal.zig b/src/proceduralItem/modifiers/restrictions/on_orthogonal.zig index 7dc776b78e..6634e251e6 100644 --- a/src/proceduralItem/modifiers/restrictions/on_orthogonal.zig +++ b/src/proceduralItem/modifiers/restrictions/on_orthogonal.zig @@ -14,19 +14,19 @@ const On_orthogonal = struct { pub fn satisfied(self: *const On_orthogonal, proceduralItem: *const ProceduralItem, x: i32, y: i32) bool { var count: usize = 0; - const gridSize: usize = proceduralItem.craftingGrid.len; + const gridSize: usize = proceduralItem.materialGrid.len - 1; const rangeChecked = @min(self.range orelse gridSize, gridSize); const lowBound = 0; const highBound = rangeChecked*2 + 1; for (lowBound..highBound) |dx| { - const checkedX = x + @as(i32, @intCast(dx - rangeChecked)); - const checkedY = y + @as(i32, @intCast(0 - rangeChecked)); + const checkedX = x + (@as(i32, @intCast(dx)) - rangeChecked); + const checkedY = y + (@as(i32, @intCast(0)) - rangeChecked); if ((proceduralItem.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; } for (lowBound..highBound) |dy| { - const checkedX = x + @as(i32, @intCast(0 - rangeChecked)); - const checkedY = y + @as(i32, @intCast(dy - rangeChecked)); - if (dy != 0) { + const checkedX = x + (@as(i32, @intCast(0)) - rangeChecked); + const checkedY = y + (@as(i32, @intCast(dy)) - rangeChecked); + if (dy != 0) {// prevents double counting if ((proceduralItem.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; } } From e845405cbe5448c8448480ad20b05905ae43ac1e Mon Sep 17 00:00:00 2001 From: Vinywar123 Date: Sun, 19 Apr 2026 23:23:01 -0700 Subject: [PATCH 21/21] Update on_orthogonal.zig --- src/proceduralItem/modifiers/restrictions/on_orthogonal.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/proceduralItem/modifiers/restrictions/on_orthogonal.zig b/src/proceduralItem/modifiers/restrictions/on_orthogonal.zig index 6634e251e6..2e1c35ec3c 100644 --- a/src/proceduralItem/modifiers/restrictions/on_orthogonal.zig +++ b/src/proceduralItem/modifiers/restrictions/on_orthogonal.zig @@ -26,7 +26,7 @@ pub fn satisfied(self: *const On_orthogonal, proceduralItem: *const ProceduralIt for (lowBound..highBound) |dy| { const checkedX = x + (@as(i32, @intCast(0)) - rangeChecked); const checkedY = y + (@as(i32, @intCast(dy)) - rangeChecked); - if (dy != 0) {// prevents double counting + if (dy != 0) { // prevents double counting if ((proceduralItem.getItemAt(checkedX, checkedY) orelse continue).hasTag(self.tag)) count += 1; } }