diff --git a/doc/source/netscript/gangapi/createGang.rst b/doc/source/netscript/gangapi/createGang.rst new file mode 100644 index 000000000..2e0365484 --- /dev/null +++ b/doc/source/netscript/gangapi/createGang.rst @@ -0,0 +1,12 @@ +createGang() Netscript Function +====================================== + +.. js:function:: createGang(faction) + + :RAM cost: 1 GB + :param string faction: Name of faction + :returns: ``true`` if a Gang was created with that faction. + + Creates a Gang with that faction. You need to have access to Gangs, the + faction must be one of the approved gang factions, and you must be a member + of that faction for the creation to be successful. diff --git a/doc/source/netscript/gangapi/inGang.rst b/doc/source/netscript/gangapi/inGang.rst new file mode 100644 index 000000000..7813b4d9f --- /dev/null +++ b/doc/source/netscript/gangapi/inGang.rst @@ -0,0 +1,7 @@ +inGang() Netscript Function +====================================== + +.. js:function:: inGang() + + :RAM cost: 1 GB + :returns: ``true`` if the player is already in a gang. diff --git a/doc/source/netscript/netscriptgangapi.rst b/doc/source/netscript/netscriptgangapi.rst index 24cedd801..df26529c1 100644 --- a/doc/source/netscript/netscriptgangapi.rst +++ b/doc/source/netscript/netscriptgangapi.rst @@ -25,6 +25,8 @@ In :ref:`netscriptjs`:: .. toctree:: :caption: API Functions: + createGang() + inGang() getMemberNames() getGangInformation() getOtherGangInformation() diff --git a/src/Netscript/RamCostGenerator.ts b/src/Netscript/RamCostGenerator.ts index 7e428ab89..ff3ccdcac 100644 --- a/src/Netscript/RamCostGenerator.ts +++ b/src/Netscript/RamCostGenerator.ts @@ -223,6 +223,8 @@ export const RamCosts: IMap = { // Gang API gang : { + createGang: () => RamCostConstants.ScriptGangApiBaseRamCost / 4, + inGang: () => RamCostConstants.ScriptGangApiBaseRamCost / 4, getMemberNames: () => RamCostConstants.ScriptGangApiBaseRamCost / 4, getGangInformation: () => RamCostConstants.ScriptGangApiBaseRamCost / 2, getOtherGangInformation: () => RamCostConstants.ScriptGangApiBaseRamCost / 2, diff --git a/src/NetscriptFunctions.js b/src/NetscriptFunctions.js index cd243f199..f8b74fe16 100644 --- a/src/NetscriptFunctions.js +++ b/src/NetscriptFunctions.js @@ -3603,6 +3603,30 @@ function NetscriptFunctions(workerScript) { // Gang API gang: { + createGang: function(faction) { + updateDynamicRam("createGang", getRamCost("gang", "createGang")); + // this list is copied from Faction/ui/Root.tsx + const GangNames = [ + "Slum Snakes", + "Tetrads", + "The Syndicate", + "The Dark Army", + "Speakers for the Dead", + "NiteSec", + "The Black Hand", + ]; + if(!Player.canAccessGang() || !GangNames.includes(faction)) return false; + if (Player.inGang()) return false; + if(!Player.factions.includes(faction)) return false; + + const isHacking = (faction === "NiteSec" || faction === "The Black Hand"); + Player.startGang(faction, isHacking); + return true; + }, + inGang: function() { + updateDynamicRam("inGang", getRamCost("gang", "inGang")); + return Player.inGang(); + }, getMemberNames: function() { updateDynamicRam("getMemberNames", getRamCost("gang", "getMemberNames")); checkGangApiAccess("getMemberNames");