From 0cb195dce6c88947ddd5c25fbb0d22e239550b94 Mon Sep 17 00:00:00 2001 From: IntegratedQuantum Date: Tue, 25 Feb 2025 22:07:26 +0100 Subject: [PATCH] More modifiers --- assets/cubyz/items/diamond.zig.zon | 6 ++++++ src/items.zig | 2 +- src/tool/modifiers/_list.zig | 6 ++++++ src/tool/modifiers/durable.zig | 6 +++--- src/tool/modifiers/fragile.zig | 18 ++++++++++++++++++ src/tool/modifiers/heavy.zig | 18 ++++++++++++++++++ src/tool/modifiers/light.zig | 18 ++++++++++++++++++ src/tool/modifiers/powerful.zig | 18 ++++++++++++++++++ src/tool/modifiers/single_use.zig | 18 ++++++++++++++++++ src/tool/modifiers/weak.zig | 18 ++++++++++++++++++ 10 files changed, 124 insertions(+), 4 deletions(-) create mode 100644 src/tool/modifiers/fragile.zig create mode 100644 src/tool/modifiers/heavy.zig create mode 100644 src/tool/modifiers/light.zig create mode 100644 src/tool/modifiers/powerful.zig create mode 100644 src/tool/modifiers/single_use.zig create mode 100644 src/tool/modifiers/weak.zig diff --git a/assets/cubyz/items/diamond.zig.zon b/assets/cubyz/items/diamond.zig.zon index 58acebd0..c7520dbd 100644 --- a/assets/cubyz/items/diamond.zig.zon +++ b/assets/cubyz/items/diamond.zig.zon @@ -10,5 +10,11 @@ .colors = .{ 0xff847bce, 0xff8b9fe0, 0xff94c6ea, 0xffb0eaf6, 0xffffffff, }, + .modifiers = .{ + .{ + .id = "fragile", + .strength = 0.4, + }, + }, }, } diff --git a/src/items.zig b/src/items.zig index 6acd07e3..be122f17 100644 --- a/src/items.zig +++ b/src/items.zig @@ -563,7 +563,7 @@ pub const Tool = struct { // MARK: Tool self.tooltip.appendSlice("\nModifiers:\n"); for(self.modifiers) |modifier| { modifier.printTooltip(&self.tooltip); - self.tooltip.append('\n'); + self.tooltip.appendSlice("§\n"); } _ = self.tooltip.pop(); } diff --git a/src/tool/modifiers/_list.zig b/src/tool/modifiers/_list.zig index 37826c6b..d63f864f 100644 --- a/src/tool/modifiers/_list.zig +++ b/src/tool/modifiers/_list.zig @@ -1,2 +1,8 @@ pub const durable = @import("durable.zig"); +pub const fragile = @import("fragile.zig"); +pub const heavy = @import("heavy.zig"); +pub const light = @import("light.zig"); +pub const powerful = @import("powerful.zig"); +pub const single_use = @import("single_use.zig"); +pub const weak = @import("weak.zig"); diff --git a/src/tool/modifiers/durable.zig b/src/tool/modifiers/durable.zig index 1c60c117..1213f374 100644 --- a/src/tool/modifiers/durable.zig +++ b/src/tool/modifiers/durable.zig @@ -6,13 +6,13 @@ const Tool = main.items.Tool; pub const priority = 1; pub fn combineModifiers(strength1: f32, strength2: f32) f32 { - return strength1 + strength2; + return @max(0, strength1) + @max(0, strength2); } pub fn changeToolParameters(tool: *Tool, strength: f32) void { - tool.maxDurability *= 1 + strength; + tool.maxDurability *= 1 + @max(0, strength); } pub fn printTooltip(outString: *main.List(u8), strength: f32) void { - outString.writer().print("#500090**Durable#808080 *Increases durability by §**{d:.0}%", .{strength*100}) catch unreachable; + outString.writer().print("#500090**Durable**#808080 *Increases durability by **{d:.0}%", .{@max(0, strength)*100}) catch unreachable; } diff --git a/src/tool/modifiers/fragile.zig b/src/tool/modifiers/fragile.zig new file mode 100644 index 00000000..49acaa13 --- /dev/null +++ b/src/tool/modifiers/fragile.zig @@ -0,0 +1,18 @@ +const std = @import("std"); + +const main = @import("root"); +const Tool = main.items.Tool; + +pub const priority = 1; + +pub fn combineModifiers(strength1: f32, strength2: f32) f32 { + return 1 - (1 - std.math.clamp(strength1, 0, 1))*(1 - std.math.clamp(strength2, 0, 1)); +} + +pub fn changeToolParameters(tool: *Tool, strength: f32) void { + tool.maxDurability *= 1 - std.math.clamp(strength, 0, 1); +} + +pub fn printTooltip(outString: *main.List(u8), strength: f32) void { + outString.writer().print("#ccddff**Fragile**#808080 *Decreases durability by **{d:.0}%", .{std.math.clamp(strength, 0, 1)*100}) catch unreachable; +} diff --git a/src/tool/modifiers/heavy.zig b/src/tool/modifiers/heavy.zig new file mode 100644 index 00000000..4c63a257 --- /dev/null +++ b/src/tool/modifiers/heavy.zig @@ -0,0 +1,18 @@ +const std = @import("std"); + +const main = @import("root"); +const Tool = main.items.Tool; + +pub const priority = 1; + +pub fn combineModifiers(strength1: f32, strength2: f32) f32 { + return @max(0, strength1) + @max(0, strength2); +} + +pub fn changeToolParameters(tool: *Tool, strength: f32) void { + tool.swingTime *= 1 + @max(0, strength); +} + +pub fn printTooltip(outString: *main.List(u8), strength: f32) void { + outString.writer().print("#ffcc30**Heavy**#808080 *Increases swing time by **{d:.0}%", .{@max(0, strength)*100}) catch unreachable; +} diff --git a/src/tool/modifiers/light.zig b/src/tool/modifiers/light.zig new file mode 100644 index 00000000..6baedeb5 --- /dev/null +++ b/src/tool/modifiers/light.zig @@ -0,0 +1,18 @@ +const std = @import("std"); + +const main = @import("root"); +const Tool = main.items.Tool; + +pub const priority = 1; + +pub fn combineModifiers(strength1: f32, strength2: f32) f32 { + return 1 - (1 - std.math.clamp(strength1, 0, 1))*(1 - std.math.clamp(strength2, 0, 1)); +} + +pub fn changeToolParameters(tool: *Tool, strength: f32) void { + tool.swingTime *= 1 - std.math.clamp(strength, 0, 1); +} + +pub fn printTooltip(outString: *main.List(u8), strength: f32) void { + outString.writer().print("#9fffde**Light**#808080 *Decreases swing time by **{d:.0}%", .{std.math.clamp(strength, 0, 1)*100}) catch unreachable; +} diff --git a/src/tool/modifiers/powerful.zig b/src/tool/modifiers/powerful.zig new file mode 100644 index 00000000..ea775403 --- /dev/null +++ b/src/tool/modifiers/powerful.zig @@ -0,0 +1,18 @@ +const std = @import("std"); + +const main = @import("root"); +const Tool = main.items.Tool; + +pub const priority = 1; + +pub fn combineModifiers(strength1: f32, strength2: f32) f32 { + return @max(0, strength1) + @max(0, strength2); +} + +pub fn changeToolParameters(tool: *Tool, strength: f32) void { + tool.power *= 1 + @max(0, strength); +} + +pub fn printTooltip(outString: *main.List(u8), strength: f32) void { + outString.writer().print("#f84a00**Powerful**#808080 *Increases power by **{d:.0}%", .{@max(0, strength)*100}) catch unreachable; +} diff --git a/src/tool/modifiers/single_use.zig b/src/tool/modifiers/single_use.zig new file mode 100644 index 00000000..9fa3f859 --- /dev/null +++ b/src/tool/modifiers/single_use.zig @@ -0,0 +1,18 @@ +const std = @import("std"); + +const main = @import("root"); +const Tool = main.items.Tool; + +pub const priority = 1000; + +pub fn combineModifiers(strength1: f32, strength2: f32) f32 { + return @max(1, @min(strength1, strength2)); +} + +pub fn changeToolParameters(tool: *Tool, strength: f32) void { + tool.maxDurability = @max(1, strength); +} + +pub fn printTooltip(outString: *main.List(u8), strength: f32) void { + outString.writer().print("#800000**Single-use**#808080 *Sets durability to **{d:.0}", .{@max(1, strength)}) catch unreachable; +} diff --git a/src/tool/modifiers/weak.zig b/src/tool/modifiers/weak.zig new file mode 100644 index 00000000..c9e246da --- /dev/null +++ b/src/tool/modifiers/weak.zig @@ -0,0 +1,18 @@ +const std = @import("std"); + +const main = @import("root"); +const Tool = main.items.Tool; + +pub const priority = 1; + +pub fn combineModifiers(strength1: f32, strength2: f32) f32 { + return 1 - (1 - std.math.clamp(strength1, 0, 1))*(1 - std.math.clamp(strength2, 0, 1)); +} + +pub fn changeToolParameters(tool: *Tool, strength: f32) void { + tool.power *= 1 - std.math.clamp(strength, 0, 1); +} + +pub fn printTooltip(outString: *main.List(u8), strength: f32) void { + outString.writer().print("#fcb5e3**Weak**#808080 *Decreases power by **{d:.0}%", .{std.math.clamp(strength, 0, 1)*100}) catch unreachable; +}