From 02bfecb92d47949f1245d41a55f6a2544edbcff1 Mon Sep 17 00:00:00 2001 From: Cmdr McDonald Date: Thu, 24 Nov 2016 22:23:14 +0000 Subject: [PATCH] Allow non-numeric modifiers --- src/app/shipyard/Ship.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/app/shipyard/Ship.js b/src/app/shipyard/Ship.js index bbbb974b..e4190c7a 100755 --- a/src/app/shipyard/Ship.js +++ b/src/app/shipyard/Ship.js @@ -1414,8 +1414,8 @@ export default class Ship { for (let slotMod of slot) { buffer.writeInt8(slotMod.id, curpos++); if (isNaN(slotMod.value)) { - // We need to write the value out as a four-byte string - buffer.writeInt32LE(slotMod.value, curpos); + // Need to write the string with a maximum of four characters + buffer.write((" " + slotMod.value).slice(-4), curpos, 4); } else { buffer.writeInt32LE(slotMod.value, curpos); } @@ -1452,7 +1452,13 @@ export default class Ship { let blueprint = {}; let modificationId = buffer.readInt8(curpos++); while (modificationId != MODIFICATION_ID_DONE) { - let modificationValue = buffer.readInt32LE(curpos); + let modificationValue; + if (modificationId === 40) { + // Type is special, in that it's a character string + modificationValue = buffer.toString('utf8', curpos, curpos + 4).trim(); + } else { + modificationValue = buffer.readInt32LE(curpos); + } curpos += 4; // There are a number of 'special' modification IDs, check for them here if (modificationId === MODIFICATION_ID_BLUEPRINT) {