From b87d31c8d33bfef348a7e27675f5947ead308dc7 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Fri, 20 Sep 2019 15:32:24 +0200 Subject: [PATCH] add bodymod support to prosthetics --- src/js/itemAvailability.js | 16 +++++++++++++- src/js/surgery.js | 43 +++++++++++++++++++++++++------------- 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js index b2ced24f3d3..130127c6497 100644 --- a/src/js/itemAvailability.js +++ b/src/js/itemAvailability.js @@ -185,7 +185,21 @@ window.isProstheticAvailable = function(slave, prosthetic) { */ window.addProsthetic = function(slave, prosthetic) { if (!isProstheticAvailable(slave, prosthetic)) { - slave.readyProsthetics.push({id: prosthetic}); + let limb = prostheticToLimb(prosthetic); + if (limb > 0) { + let p = { + id: prosthetic, + arm: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}, + leg: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()} + }; + p.arm.left.type = limb; + p.arm.right.type = limb; + p.leg.left.type = limb; + p.leg.right.type = limb; + slave.readyProsthetics.push(p); + } else { + slave.readyProsthetics.push({id: prosthetic}); + } } }; diff --git a/src/js/surgery.js b/src/js/surgery.js index 3efd07bcafc..404641a3d10 100644 --- a/src/js/surgery.js +++ b/src/js/surgery.js @@ -527,10 +527,19 @@ window.surgeryAmp = function(slave, part) { * @param {string} limb */ window.removeLimbs = function(slave, limb) { - // TODO: add bodymod support for prosthetics + function remove(limb, side) { + const prosthetic = findProsthetic(slave, limbToProsthetic(slave[limb][side].type)); + + if (prosthetic) { + prosthetic[limb][side] = slave[limb][side]; + } + + slave[limb][side] = null; + } + switch (limb) { case "left arm": - slave.arm.left = null; + remove("arm", "left"); delete slave.brand["left upper arm"]; delete slave.brand["left lower arm"]; delete slave.brand["left wrist"]; @@ -542,7 +551,7 @@ window.removeLimbs = function(slave, limb) { } break; case "right arm": - slave.arm.right = null; + remove("arm", "right"); delete slave.brand["right upper arm"]; delete slave.brand["right lower arm"]; delete slave.brand["right wrist"]; @@ -554,7 +563,7 @@ window.removeLimbs = function(slave, limb) { } break; case "left leg": - slave.leg.left = null; + remove("leg", "left"); delete slave.brand["left thigh"]; delete slave.brand["left calf"]; delete slave.brand["left ankle"]; @@ -568,7 +577,7 @@ window.removeLimbs = function(slave, limb) { } break; case "right leg": - slave.leg.right = null; + remove("leg", "right"); delete slave.brand["right thigh"]; delete slave.brand["right calf"]; delete slave.brand["right ankle"]; @@ -601,23 +610,29 @@ window.removeLimbs = function(slave, limb) { * @param {number} id */ window.attachLimbs = function(slave, limb, id) { - // TODO: add support for body mods + function attach(limb, side) { + let prosthetic = findProsthetic(slave, limbToProsthetic(id)); + + if (prosthetic) { + slave[limb][side] = prosthetic[limb][side]; + } else { + slave[limb][side] = new App.Entity.LimbState(); + slave[limb][side].type = id; + } + } + switch (limb) { case "left arm": - slave.arm.left = new App.Entity.LimbState(); - slave.arm.left.type = id; + attach("arm", "left"); break; case "right arm": - slave.arm.right = new App.Entity.LimbState(); - slave.arm.right.type = id; + attach("arm", "right"); break; case "left leg": - slave.leg.left = new App.Entity.LimbState(); - slave.leg.left.type = id; + attach("leg", "left"); break; case "right leg": - slave.leg.right = new App.Entity.LimbState(); - slave.leg.right.type = id; + attach("leg", "right"); break; case "all": attachLimbs(slave, "left arm", id); -- GitLab