From 30949404b136b071e9a80b2f5a4d9ed2c034e898 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Wed, 18 Sep 2019 14:04:34 +0200 Subject: [PATCH 1/8] use addProsthetic instead of direct access --- src/uncategorized/multiImplant.tw | 2 +- src/uncategorized/remoteSurgery.tw | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/uncategorized/multiImplant.tw b/src/uncategorized/multiImplant.tw index 210e0eb9a3e..88f76ef94c0 100644 --- a/src/uncategorized/multiImplant.tw +++ b/src/uncategorized/multiImplant.tw @@ -1011,7 +1011,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized <<set _p = $adjustProsthetics[_k]>> <<if _p.slaveID == $activeSlave.ID && _p.workLeft <= 0>> <<set $adjustProsthetics.splice(_k, 1), _k-->> - <<set $activeSlave.readyProsthetics.push({id: _p.id})>> + <<set addProsthetic($activeSlave, _p.id)>> <br><hr> <<switch _p.id>> <<case "ocular">> diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw index c9981dfe7a8..e1e253978dd 100644 --- a/src/uncategorized/remoteSurgery.tw +++ b/src/uncategorized/remoteSurgery.tw @@ -8,7 +8,7 @@ <<if $adjustProstheticsCompleted > 0>> <<set $adjustProsthetics = $adjustProsthetics.filter(function(p) { if (p.workLeft <= 0 && p.slaveID == $activeSlave.ID) { - $activeSlave.readyProsthetics.push({id: p.id}); + addProsthetic($activeSlave, p.id); $adjustProstheticsCompleted--; return false; } -- GitLab From 692509a42d3a6a07c3e5b7059f59af92be07bd09 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Fri, 20 Sep 2019 13:51:04 +0200 Subject: [PATCH 2/8] fix JSDoc --- src/js/itemAvailability.js | 2 +- src/js/surgery.js | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js index a43564b829d..26237b5bdbe 100644 --- a/src/js/itemAvailability.js +++ b/src/js/itemAvailability.js @@ -170,7 +170,7 @@ window.isItemAccessible = function(string) { } }; -/* +/** * @param {App.Entity.SlaveState} slave * @param {string} prosthetic * @returns {boolean} diff --git a/src/js/surgery.js b/src/js/surgery.js index dcd5c5a92c8..3efd07bcafc 100644 --- a/src/js/surgery.js +++ b/src/js/surgery.js @@ -453,11 +453,11 @@ App.Medicine.Surgery.sizingProcedures = function() { }(); /** -* Clean up extremities on removal or piercings, tats, and brands -* For limbs use removeLimbs() -* @param {App.Entity.SlaveState} slave -* @param {string} part -*/ + * Clean up extremities on removal or piercings, tats, and brands + * For limbs use removeLimbs() + * @param {App.Entity.SlaveState} slave + * @param {string} part + */ window.surgeryAmp = function(slave, part) { switch (part) { case "left ear": -- GitLab From c7c822bdd723db68072ac7166d8b9a9b8a29b9b1 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Fri, 20 Sep 2019 15:27:32 +0200 Subject: [PATCH 3/8] add limb prosthetic conversion functions --- src/js/itemAvailability.js | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js index 26237b5bdbe..b70979fde29 100644 --- a/src/js/itemAvailability.js +++ b/src/js/itemAvailability.js @@ -188,3 +188,46 @@ window.addProsthetic = function(slave, prosthetic) { slave.readyProsthetics.push({id: prosthetic}); } }; + +/** + * @param {string} prosthetic + * @returns {number} + */ +window.prostheticToLimb = function(prosthetic) { + switch (prosthetic) { + case "basicL": + return 2; + case "sexL": + return 3; + case "beautyL": + return 4; + case "combatL": + return 5; + case "cyberneticL": + return 6; + default: + return 0; + } +}; + +/** + * + * @param {number} limb + * @returns {string} + */ +window.limbToProsthetic = function(limb) { + switch (limb) { + case 2: + return "basicL"; + case 3: + return "sexL"; + case 4: + return "beautyL"; + case 5: + return "combatL"; + case 6: + return "cyberneticL"; + default: + return ""; + } +}; -- GitLab From a428148005cca8a92fac64cd26fb86d79c7ef342 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Fri, 20 Sep 2019 15:27:57 +0200 Subject: [PATCH 4/8] add findProsthetic() --- src/js/itemAvailability.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js index b70979fde29..b2ced24f3d3 100644 --- a/src/js/itemAvailability.js +++ b/src/js/itemAvailability.js @@ -189,6 +189,15 @@ window.addProsthetic = function(slave, prosthetic) { } }; +/** + * @param {App.Entity.SlaveState} slave + * @param {string} prosthetic + * @returns {{}} + */ +window.findProsthetic = function(slave, prosthetic) { + return slave.readyProsthetics.find(p => p.id === prosthetic); +}; + /** * @param {string} prosthetic * @returns {number} -- GitLab From f4db24a890f2354405b5ca0664321f186f52c4b5 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Fri, 20 Sep 2019 15:28:25 +0200 Subject: [PATCH 5/8] add readyLimbs to slave skeleton --- src/js/SlaveState.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index f0e8655811e..81613472dff 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -2448,6 +2448,7 @@ App.Entity.SlaveState = class SlaveState { return { arm: {left: {}, right: {}}, leg: {left: {}, right: {}}, + readyProsthetics: [], // yes, not an object, but needed for hero slaves counter: {}, brand: {}, scar: {}, -- GitLab 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 6/8] 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 From c28e53e5760ebd74e68a0739289f703c385c8918 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Fri, 20 Sep 2019 15:50:50 +0200 Subject: [PATCH 7/8] increase version --- src/002-config/fc-version.js | 4 ++-- src/uncategorized/BackwardsCompatibility.tw | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js index 4d275c841cb..70b8bee2c7a 100644 --- a/src/002-config/fc-version.js +++ b/src/002-config/fc-version.js @@ -1,8 +1,8 @@ App.Version = { base: "0.10.8", pmod: "2.8.X", - release: 1051, + release: 1052, }; /* Use release as save version */ -Config.saves.version = App.Version.release; \ No newline at end of file +Config.saves.version = App.Version.release; diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index 98c46e1fd57..f9d7bc0acb1 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -4001,10 +4001,6 @@ Done<br> <</if>> <</if>> -<<if $releaseID < App.Version.release>> - <<set $releaseID = App.Version.release>> -<</if>> - <<if def $activeArcology>> <<unset $activeArcology>> <</if>> @@ -4137,5 +4133,10 @@ Done<br> <br>Fixed NaN FS value for FSStatuesqueGlorification <</if>> + +/* leave this at the bottom of BC */ +<<if $releaseID < App.Version.release>> + <<set $releaseID = App.Version.release>> +<</if>> /* reset NaNArray after BC is run */ <<set $NaNArray = findNaN()>> -- GitLab From 8a58bc7113a4cb09372e4ed5bc497ab59839d26d Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Fri, 20 Sep 2019 15:56:03 +0200 Subject: [PATCH 8/8] BC for prosthetic bodymod support --- src/pregmod/widgets/pregmodWidgets.tw | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw index 4d112836bd7..4aa21899783 100644 --- a/src/pregmod/widgets/pregmodWidgets.tw +++ b/src/pregmod/widgets/pregmodWidgets.tw @@ -570,6 +570,12 @@ <</if>> <</if>> +<<if $releaseID < 1052>> + <<set _prosthetics = $args[0].readyProsthetics, $args[0].readyProsthetics = []>> + <<for _p range _prosthetics>> + <<run addProsthetic($args[0], _p.id)>> + <</for>> +<</if>> <</widget>> -- GitLab