Fix battle arena ending at 96% base charge, fix part of #61

This commit is contained in:
NG (Graham) committed 2026-01-18 12:39:58 -05:00
1 parent 5fd4acdf62
commit ff0588ada1
10 files changed
+805 -93

No files matched your search

+18 -6
View File
@@ -12,15 +12,27 @@ impl OffsetParser {
let colours = &mut colours[4..];
for cube in cubes.chunks_mut(8) {
// bytes 4, 5, 6 are x, y, z (respectively)
cube[4] = (cube[4] as i16 + offset.0) as _;
cube[5] = (cube[5] as i16 + offset.1) as _;
cube[6] = (cube[6] as i16 + offset.2) as _;
cube[4] = (cube[4] as u16).saturating_add_signed(offset.0) as _;
cube[5] = (cube[5] as u16).saturating_add_signed(offset.1) as _;
cube[6] = (cube[6] as u16).saturating_add_signed(offset.2) as _;
}
for colour in colours.chunks_mut(4) {
// last 3 bytes are x, y, z (respectively)
colour[1] = (colour[1] as i16 + offset.0) as _;
colour[2] = (colour[2] as i16 + offset.1) as _;
colour[3] = (colour[3] as i16 + offset.2) as _;
colour[1] = (colour[1] as u16).saturating_add_signed(offset.0) as _;
colour[2] = (colour[2] as u16).saturating_add_signed(offset.1) as _;
colour[3] = (colour[3] as u16).saturating_add_signed(offset.2) as _;
}
}
pub fn offset_inplace_with_id(&self, cubes: &mut [u8], offset: (i8, i8, i8), target_id: u32) {
let cubes = &mut cubes[4..];
for cube in cubes.chunks_mut(8) {
let id = u32::from_le_bytes([cube[0], cube[1], cube[2], cube[3]]);
if id != target_id { continue; }
// bytes 4, 5, 6 are x, y, z (respectively)
cube[4] = cube[4].saturating_add_signed(offset.0);
cube[5] = cube[5].saturating_add_signed(offset.1);
cube[6] = cube[6].saturating_add_signed(offset.2);
}
}
}