Ported Uplinks, Door stuff, Hacktools, Compressed Matter implant.

This commit is contained in:
SkyMarshal
2012-01-27 20:15:06 -07:00
parent 21fe68972f
commit 12afd61ffc
43 changed files with 2399 additions and 557 deletions
+43
View File
@@ -3,6 +3,49 @@
config_tag = "blob"
required_players = 0
uplink_welcome = "Syndicate Uplink Console:"
uplink_items = {"Highly Visible and Dangerous Weapons;
/obj/item/weapon/gun/projectile:6:Revolver;
/obj/item/ammo_magazine/a357:2:Ammo-357;
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
/obj/item/weapon/storage/emp_kit:4:5 EMP Grenades;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/sleepypen:3:Sleepy Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
/obj/item/device/chameleon:4:Chameleon-Projector;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:4:Hacktool;
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;
/obj/item/weapon/plastique:2:C-4;
/obj/item/device/powersink:5:Powersink (DANGER!);
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
Whitespace:Seperator;
Implants;
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
/obj/item/weapon/storage/syndie_kit/imp_compress:5:Compressed Matter Implant;
/obj/item/weapon/storage/syndie_kit/imp_explosive:6:Explosive Implant;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
uplink_uses = 10
var/const/waittime_l = 2000 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 3000 //upper bound on time before intercept arrives (in tenths of seconds)
@@ -9,6 +9,49 @@
required_players = 1
required_enemies = 1
uplink_welcome = "Syndicate Uplink Console:"
uplink_items = {"Highly Visible and Dangerous Weapons;
/obj/item/weapon/gun/projectile:6:Revolver;
/obj/item/ammo_magazine/a357:2:Ammo-357;
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
/obj/item/weapon/storage/emp_kit:4:5 EMP Grenades;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/sleepypen:3:Sleepy Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
/obj/item/device/chameleon:4:Chameleon-Projector;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:4:Hacktool;
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;
/obj/item/weapon/plastique:2:C-4;
/obj/item/device/powersink:5:Powersink (DANGER!);
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
Whitespace:Seperator;
Implants;
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
/obj/item/weapon/storage/syndie_kit/imp_compress:5:Compressed Matter Implant;
/obj/item/weapon/storage/syndie_kit/imp_explosive:6:Explosive Implant;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
uplink_uses = 10
var
changeling_amount
const
@@ -5,6 +5,49 @@
required_players = 20
required_enemies = 2
uplink_welcome = "Syndicate Uplink Console:"
uplink_items = {"Highly Visible and Dangerous Weapons;
/obj/item/weapon/gun/projectile:6:Revolver;
/obj/item/ammo_magazine/a357:2:Ammo-357;
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
/obj/item/weapon/storage/emp_kit:4:5 EMP Grenades;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/sleepypen:3:Sleepy Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
/obj/item/device/chameleon:4:Chameleon-Projector;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:4:Hacktool;
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;
/obj/item/weapon/plastique:2:C-4;
/obj/item/device/powersink:5:Powersink (DANGER!);
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
Whitespace:Seperator;
Implants;
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
/obj/item/weapon/storage/syndie_kit/imp_compress:5:Compressed Matter Implant;
/obj/item/weapon/storage/syndie_kit/imp_explosive:6:Explosive Implant;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
uplink_uses = 10
/datum/game_mode/traitor/changeling/announce()
world << "<B>The current game mode is - Traitor+Changeling!</B>"
world << "<B>There is an alien creature on the station along with some syndicate operatives out for their own gain! Do not let the changeling and the traitors succeed!</B>"
+43
View File
@@ -39,6 +39,49 @@
var/const/max_cultists_to_start = 4
var/acolytes_survived = 0
uplink_welcome = "Nar-Sie Uplink Console:"
uplink_items = {"Highly Visible and Dangerous Weapons;
/obj/item/weapon/gun/projectile:6:Revolver;
/obj/item/ammo_magazine/a357:2:Ammo-357;
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
/obj/item/weapon/storage/emp_kit:4:5 EMP Grenades;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/sleepypen:3:Sleepy Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
/obj/item/device/chameleon:4:Chameleon-Projector;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:4:Hacktool;
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;
/obj/item/weapon/plastique:2:C-4;
/obj/item/device/powersink:5:Powersink (DANGER!);
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
Whitespace:Seperator;
Implants;
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
/obj/item/weapon/storage/syndie_kit/imp_compress:5:Compressed Matter Implant;
/obj/item/weapon/storage/syndie_kit/imp_explosive:6:Explosive Implant;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
uplink_uses = 10
/datum/game_mode/cult/announce()
world << "<B>The current game mode is - Cult!</B>"
+43
View File
@@ -3,6 +3,49 @@
config_tag = "extended"
required_players = 0
uplink_welcome = "Syndicate Uplink Console:"
uplink_items = {"Highly Visible and Dangerous Weapons;
/obj/item/weapon/gun/projectile:6:Revolver;
/obj/item/ammo_magazine/a357:2:Ammo-357;
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
/obj/item/weapon/storage/emp_kit:4:5 EMP Grenades;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/sleepypen:3:Sleepy Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
/obj/item/device/chameleon:4:Chameleon-Projector;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:4:Hacktool;
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;
/obj/item/weapon/plastique:2:C-4;
/obj/item/device/powersink:5:Powersink (DANGER!);
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
Whitespace:Seperator;
Implants;
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
/obj/item/weapon/storage/syndie_kit/imp_compress:5:Compressed Matter Implant;
/obj/item/weapon/storage/syndie_kit/imp_explosive:6:Explosive Implant;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
uplink_uses = 10
/datum/game_mode/announce()
world << "<B>The current game mode is - Extended Role-Playing!</B>"
world << "<B>Just have fun and role-play!</B>"
+3
View File
@@ -23,6 +23,9 @@
list/restricted_jobs = list()
required_players = 0
required_enemies = 0
uplink_welcome
uplink_items
uplink_uses
/datum/game_mode/proc/announce() //to be calles when round starts
world << "<B>Notice</B>: [src] did not define announce()"
@@ -15,6 +15,49 @@
var/to_nuke_or_not_to_nuke = 0
var/apcs = 0 //Adding dis to track how many APCs the AI hacks. --NeoFite
uplink_welcome = "Crazy AI Uplink Console:"
uplink_items = {"Highly Visible and Dangerous Weapons;
/obj/item/weapon/gun/projectile:6:Revolver;
/obj/item/ammo_magazine/a357:2:Ammo-357;
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
/obj/item/weapon/storage/emp_kit:4:5 EMP Grenades;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/sleepypen:3:Sleepy Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
/obj/item/device/chameleon:4:Chameleon-Projector;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:4:Hacktool;
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;
/obj/item/weapon/plastique:2:C-4;
/obj/item/device/powersink:5:Powersink (DANGER!);
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
Whitespace:Seperator;
Implants;
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
/obj/item/weapon/storage/syndie_kit/imp_compress:5:Compressed Matter Implant;
/obj/item/weapon/storage/syndie_kit/imp_explosive:6:Explosive Implant;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
uplink_uses = 10
/datum/game_mode/malfunction/announce()
world << "<B>The current game mode is - AI Malfunction!</B>"
+42
View File
@@ -7,6 +7,48 @@
var/nometeors = 1
required_players = 0
uplink_welcome = "EVIL METEOR Uplink Console:"
uplink_items = {"Highly Visible and Dangerous Weapons;
/obj/item/weapon/gun/projectile:6:Revolver;
/obj/item/ammo_magazine/a357:2:Ammo-357;
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
/obj/item/weapon/storage/emp_kit:4:5 EMP Grenades;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/sleepypen:3:Sleepy Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
/obj/item/device/chameleon:4:Chameleon-Projector;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:4:Hacktool;
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;
/obj/item/weapon/plastique:2:C-4;
/obj/item/device/powersink:5:Powersink (DANGER!);
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
Whitespace:Seperator;
Implants;
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
/obj/item/weapon/storage/syndie_kit/imp_compress:5:Compressed Matter Implant;
/obj/item/weapon/storage/syndie_kit/imp_explosive:6:Explosive Implant;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
uplink_uses = 10
/datum/game_mode/meteor/announce()
world << "<B>The current game mode is - Meteor!</B>"
+43
View File
@@ -8,6 +8,49 @@
required_players = 3
required_enemies = 2
uplink_welcome = "Corporate Backed Uplink Console:"
uplink_items = {"Highly Visible and Dangerous Weapons;
/obj/item/weapon/gun/projectile:6:Revolver;
/obj/item/ammo_magazine/a357:2:Ammo-357;
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
/obj/item/weapon/storage/emp_kit:4:5 EMP Grenades;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/sleepypen:3:Sleepy Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
/obj/item/device/chameleon:4:Chameleon-Projector;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:4:Hacktool;
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;
/obj/item/weapon/plastique:2:C-4;
/obj/item/device/powersink:5:Powersink (DANGER!);
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
Whitespace:Seperator;
Implants;
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
/obj/item/weapon/storage/syndie_kit/imp_compress:5:Compressed Matter Implant;
/obj/item/weapon/storage/syndie_kit/imp_explosive:6:Explosive Implant;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
uplink_uses = 40
var/const/agents_possible = 5 //If we ever need more syndicate agents.
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
+44 -1
View File
@@ -18,6 +18,49 @@
required_players = 3
required_enemies = 3
uplink_welcome = "Revolutionary Uplink Console:"
uplink_items = {"Highly Visible and Dangerous Weapons;
/obj/item/weapon/gun/projectile:6:Revolver;
/obj/item/ammo_magazine/a357:2:Ammo-357;
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
/obj/item/weapon/storage/emp_kit:4:5 EMP Grenades;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/sleepypen:3:Sleepy Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
/obj/item/device/chameleon:4:Chameleon-Projector;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:4:Hacktool;
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;
/obj/item/weapon/plastique:2:C-4;
/obj/item/device/powersink:5:Powersink (DANGER!);
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
Whitespace:Seperator;
Implants;
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
/obj/item/weapon/storage/syndie_kit/imp_compress:5:Compressed Matter Implant;
/obj/item/weapon/storage/syndie_kit/imp_explosive:6:Explosive Implant;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
uplink_uses = 10
var/finished = 0
var/checkwin_counter = 0
var/const/max_headrevs = 3
@@ -130,7 +173,7 @@
if (!where)
mob << "The Syndicate were unfortunately unable to get you a flash."
else
mob << "The flash in your [where] would help you to use your extremal persuade skill."
mob << "The flash in your [where] would help you to use your extreme persuasion skills."
return 1
//////////////////////////////////////
+58 -13
View File
@@ -9,6 +9,49 @@
required_players = 0
required_enemies = 1
uplink_welcome = "Syndicate Uplink Console:"
uplink_items = {"Highly Visible and Dangerous Weapons;
/obj/item/weapon/gun/projectile:6:Revolver;
/obj/item/ammo_magazine/a357:2:Ammo-357;
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
/obj/item/weapon/storage/emp_kit:4:5 EMP Grenades;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/sleepypen:3:Sleepy Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
/obj/item/device/chameleon:4:Chameleon-Projector;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:4:Hacktool;
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;
/obj/item/weapon/plastique:2:C-4;
/obj/item/device/powersink:5:Powersink (DANGER!);
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
Whitespace:Seperator;
Implants;
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
/obj/item/weapon/storage/syndie_kit/imp_compress:5:Compressed Matter Implant;
/obj/item/weapon/storage/syndie_kit/imp_explosive:6:Explosive Implant;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
uplink_uses = 10
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
@@ -163,12 +206,12 @@
killer << "\red Code Phrase: \black [syndicate_code_phrase]"
killer.mind.store_memory("<b>Code Phrase</b>: [syndicate_code_phrase]")
else
killer << "Unfortunetly, the Syndicate did not provide you with a code phrase."
killer << "Unfortunately, the Syndicate did not provide you with a code phrase."
if(prob(80))
killer << "\red Code Response: \black [syndicate_code_response]"
killer.mind.store_memory("<b>Code Response</b>: [syndicate_code_response]")
else
killer << "Unfortunetly, the Syndicate did not provide you with a code response."
killer << "Unfortunately, the Syndicate did not provide you with a code response."
killer << "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe."
//End code phrase.
@@ -215,7 +258,7 @@
traitor_mob << "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself."
traitor_mob.mutations &= ~CLUMSY
// find a radio! toolbox(es), backpack, belt, headset
// find a radio! toolbox(es), backpack, belt, headset, pockets
var/loc = ""
var/obj/item/device/R = null //Hide the uplink in a PDA if available, otherwise radio
if (!R && istype(traitor_mob.belt, /obj/item/device/pda))
@@ -248,11 +291,11 @@
R = foo
loc = "in the [S.name] on your back"
break
if (!R && istype(traitor_mob.slot_l_store, /obj/item/device/pda))
R = traitor_mob.slot_l_store
if (!R && istype(traitor_mob.l_store, /obj/item/device/pda))
R = traitor_mob.l_store
loc = "in your pocket"
if (!R && istype(traitor_mob.slot_r_store, /obj/item/device/pda))
R = traitor_mob.slot_r_store
if (!R && istype(traitor_mob.r_store, /obj/item/device/pda))
R = traitor_mob.r_store
loc = "in your pocket"
if (!R && traitor_mob.w_uniform && istype(traitor_mob.belt, /obj/item/device/radio))
R = traitor_mob.belt
@@ -264,10 +307,10 @@
R = traitor_mob.r_ear
loc = "on your head"
if (!R)
traitor_mob << "Unfortunately, the Syndicate wasn't able to get you a radio."
traitor_mob << "Unfortunately, the Syndicate wasn't able to get you an uplink."
. = 0
else
if (istype(R, /obj/item/device/radio))
if (istype(R, /obj/item/device/radio) || prob(10))
// generate list of radio freqs
var/freq = 1441
var/list/freqlist = list()
@@ -279,10 +322,12 @@
freq += 1
freq = freqlist[rand(1, freqlist.len)]
var/obj/item/weapon/syndicate_uplink/T = new /obj/item/weapon/syndicate_uplink(R)
var/obj/item/device/uplink/radio/T = new /obj/item/device/uplink/radio(R)
R:traitorradio = T
R:traitor_frequency = freq
T.name = R.name
T.icon = R.icon
T.w_class = R.w_class
T.icon_state = R.icon_state
T.origradio = R
traitor_mob << "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name] [loc]. Simply dial the frequency [format_frequency(freq)] to unlock its hidden features."
@@ -291,7 +336,7 @@
// generate a passcode if the uplink is hidden in a PDA
var/pda_pass = "[rand(100,999)] [pick("Alpha","Bravo","Delta","Omega")]"
var/obj/item/weapon/integrated_uplink/T = new /obj/item/weapon/integrated_uplink(R)
var/obj/item/device/uplink/pda/T = new /obj/item/device/uplink/pda(R)
R:uplink = T
T.lock_code = pda_pass
T.hostpda = R
@@ -304,11 +349,11 @@
traitor_mob << "\red Code Phrase: \black [syndicate_code_phrase]"
traitor_mob.mind.store_memory("<b>Code Phrase</b>: [syndicate_code_phrase]")
else
traitor_mob << "Unfortunetly, the Syndicate did not provide you with a code phrase."
traitor_mob << "Unfortunately, the Syndicate did not provide you with a code phrase."
if(prob(80))
traitor_mob << "\red Code Response: \black [syndicate_code_response]"
traitor_mob.mind.store_memory("<b>Code Response</b>: [syndicate_code_response]")
else
traitor_mob << "Unfortunetly, the Syndicate did not provide you with a code response."
traitor_mob << "Unfortunately, the Syndicate did not provide you with a code response."
traitor_mob << "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe."
//End code phrase.
@@ -0,0 +1,6 @@
/datum/traitorinfo
var/starting_objective = ""
var/starting_player_count = 0
var/starting_occupation = ""
var/ckey = ""
var/list/spawnlist = list( )
+43
View File
@@ -8,6 +8,49 @@
required_players = 0
required_enemies = 1
uplink_welcome = "Wizardly Uplink Console:"
uplink_items = {"Highly Visible and Dangerous Weapons;
/obj/item/weapon/gun/projectile:6:Revolver;
/obj/item/ammo_magazine/a357:2:Ammo-357;
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
/obj/item/weapon/storage/emp_kit:4:5 EMP Grenades;
Whitespace:Seperator;
Stealthy and Inconspicuous Weapons;
/obj/item/weapon/pen/sleepypen:3:Sleepy Pen;
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
Whitespace:Seperator;
Stealth and Camouflage Items;
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
/obj/item/clothing/glasses/thermal:4:Thermal Imaging Glasses;
/obj/item/device/chameleon:4:Chameleon-Projector;
/obj/item/weapon/stamperaser:1:Stamp Remover;
Whitespace:Seperator;
Devices and Tools;
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
/obj/item/device/hacktool:4:Hacktool;
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
/obj/item/device/radio/headset/traitor:3:Headset with Binary Translator;
/obj/item/weapon/plastique:2:C-4;
/obj/item/device/powersink:5:Powersink (DANGER!);
/obj/machinery/singularity_beacon/syndicate:7:Singularity Beacon (DANGER!);
Whitespace:Seperator;
Implants;
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
/obj/item/weapon/storage/syndie_kit/imp_compress:5:Compressed Matter Implant;
/obj/item/weapon/storage/syndie_kit/imp_explosive:6:Explosive Implant;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
uplink_uses = 10
var/finished = 0
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
+279 -18
View File
@@ -7,6 +7,9 @@
#define AIRLOCK_WIRE_OPEN_DOOR 7
#define AIRLOCK_WIRE_AI_CONTROL 8
#define AIRLOCK_WIRE_ELECTRIFY 9
#define AIRLOCK_WIRE_CRUSH 10
#define AIRLOCK_WIRE_LIGHT 11
#define AIRLOCK_WIRE_HOLDOPEN 12
/*
New methods:
@@ -30,16 +33,16 @@
//This generates the randomized airlock wire assignments for the game.
/proc/RandomAirlockWires()
//to make this not randomize the wires, just set index to 1 and increment it in the flag for loop (after doing everything else).
var/list/wires = list(0, 0, 0, 0, 0, 0, 0, 0, 0)
airlockIndexToFlag = list(0, 0, 0, 0, 0, 0, 0, 0, 0)
airlockIndexToWireColor = list(0, 0, 0, 0, 0, 0, 0, 0, 0)
airlockWireColorToIndex = list(0, 0, 0, 0, 0, 0, 0, 0, 0)
var/list/wires = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
airlockIndexToFlag = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
airlockIndexToWireColor = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
airlockWireColorToIndex = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
var/flagIndex = 1
for (var/flag=1, flag<512, flag+=flag)
for (var/flag=1, flag<4096, flag+=flag)
var/valid = 0
while (!valid)
var/colorIndex = rand(1, 9)
if (wires[colorIndex]==0)
var/colorIndex = rand(1, 11)
if (wires[colorIndex] == 0)
valid = 1
wires[colorIndex] = flag
airlockIndexToFlag[flagIndex] = flag
@@ -61,12 +64,14 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
icon_state = "door_closed"
var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in.
var/synDoorHacked = 0 // Has it been hacked? bool 1 = yes / 0 = no
var/synHacking = 0 // Is hack in process y/n?
var/secondsMainPowerLost = 0 //The number of seconds until power is restored.
var/secondsBackupPowerLost = 0 //The number of seconds until power is restored.
var/spawnPowerRestoreRunning = 0
var/welded = null
var/locked = 0
var/wires = 511
var/wires = 4095
secondsElectrified = 0 //How many seconds remain until the door is no longer electrified. -1 if it is permanently electrified until someone fixes it.
var/aiDisabledIdScanner = 0
var/aiHacking = 0
@@ -77,8 +82,11 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
autoclose = 1
var/doortype = 0
var/justzap = 0
var/safetylight = 1
var/obj/item/weapon/airlock_electronics/electronics = null
/obj/machinery/door/airlock/New()
/obj/machinery/door/airlock/command
name = "Airlock"
icon = 'Doorcom.dmi'
@@ -266,6 +274,12 @@ About the new airlock wires panel:
open()
else
close()
if(AIRLOCK_WIRE_CRUSH)
src.forcecrush = !src.forcecrush
if(AIRLOCK_WIRE_LIGHT)
src.safetylight = !src.safetylight
if(AIRLOCK_WIRE_HOLDOPEN)
src.holdopen = !src.holdopen
@@ -350,6 +364,13 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/proc/canAIHack()
return ((src.aiControlDisabled==1) && (!src.isAllPowerCut()));
/obj/machinery/door/airlock/proc/canSynControl()
return (src.synDoorHacked && (!src.isAllPowerCut()));
/obj/machinery/door/airlock/proc/canSynHack(obj/item/device/hacktool/H)
if(in_range(src, usr) && get_dist(src, H) <= 1 && src.synDoorHacked==0 && !src.isAllPowerCut())
return 1
/obj/machinery/door/airlock/proc/arePowerSystemsOn()
return (src.secondsMainPowerLost==0 || src.secondsBackupPowerLost==0)
@@ -421,7 +442,7 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/update_icon()
if(overlays) overlays = null
if(density)
if(locked)
if(locked && safetylight)
icon_state = "door_locked"
else
icon_state = "door_closed"
@@ -505,6 +526,121 @@ About the new airlock wires panel:
if (src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2))
t1 += text("Backup Power Output wire is cut.<br>\n")
if (src.isWireCut(AIRLOCK_WIRE_CRUSH))
t1 += text("Airlock extra force wire is cut.<br>\n")
else if(!src.forcecrush)
t1 += text("Airlock extra force disabled <A href='?src=\ref[src];aiEnable=8'>Enable it?</a><br>\n")
else
t1 += text("Airlock extra force enabled <A href='?src=\ref[src];aiDisable=8'>Disable it?</a><br>\n")
if (src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
t1 += text("Door bolt drop wire is cut.<br>\n")
else if (!src.locked)
t1 += text("Door bolts are up. <A href='?src=\ref[];aiDisable=4'>Drop them?</a><br>\n", src)
else
t1 += text("Door bolts are down.")
if (src.arePowerSystemsOn())
t1 += text(" <A href='?src=\ref[];aiEnable=4'>Raise?</a><br>\n", src)
else
t1 += text(" Cannot raise door bolts due to power failure.<br>\n")
if (src.isWireCut(AIRLOCK_WIRE_ELECTRIFY))
t1 += text("Electrification wire is cut.<br>\n")
if (src.secondsElectrified==-1)
t1 += text("Door is electrified indefinitely. <A href='?src=\ref[];aiDisable=5'>Un-electrify it?</a><br>\n", src)
else if (src.secondsElectrified>0)
t1 += text("Door is electrified temporarily ([] seconds). <A href='?src=\ref[];aiDisable=5'>Un-electrify it?</a><br>\n", src.secondsElectrified, src)
else
t1 += text("Door is not electrified. <A href='?src=\ref[];aiEnable=5'>Electrify it for 30 seconds?</a> Or, <A href='?src=\ref[];aiEnable=6'>Electrify it indefinitely until someone cancels the electrification?</a><br>\n", src, src)
if(src.isWireCut(AIRLOCK_WIRE_LIGHT))
t1 += "Bolt indication light wire is cut.<br>\n"
else if(!src.safetylight)
t1 += text("Bolt Indication light is disabled <A href='?src=\ref[src];aiEnable=9'>Enable it?</a><br>\n")
else
t1 += text("Bolt Indication light is enabled <A href='?src=\ref[src];aiDisable=9'>Disable it?</a><br>\n")
if(src.isWireCut(AIRLOCK_WIRE_HOLDOPEN))
t1 += "Behavior Control light wire is cut.<br>\n"
else if(!src.holdopen)
t1 += text("Door behavior is set to: Automatically close <A href='?src=\ref[src];aiEnable=10'>Toggle?</a><br>\n")
else
t1 += text("Door behavior is set to: Wait for clearance to close <A href='?src=\ref[src];aiDisable=10'>Toggle?</a><br>\n")
if (src.welded)
t1 += text("Door appears to have been welded shut.<br>\n")
else if (!src.locked)
if (src.density)
t1 += text("<A href='?src=\ref[];aiEnable=7'>Open door</a><br>\n", src)
else
t1 += text("<A href='?src=\ref[];aiDisable=7'>Close door</a><br>\n", src)
t1 += text("<p><a href='?src=\ref[];close=1'>Close</a></p>\n", src)
user << browse(t1, "window=airlock")
onclose(user, "airlock")
//aiDisable - 1 idscan, 2 disrupt main power, 3 disrupt backup power, 4 drop door bolts, 5 un-electrify door, 7 close door
//aiEnable - 1 idscan, 4 raise door bolts, 5 electrify door for 30 seconds, 6 electrify door indefinitely, 7 open door
/obj/machinery/door/airlock/proc/attack_hack(mob/user as mob, obj/item/device/hacktool/C)
if(!C)
return
if(C.in_use)
user << "We are already hacking another airlock."
return
if (!src.canSynControl() && src.canSynHack(C))
src.synhack(user, C)
return
//Separate interface for the hacker.
var/t1 = text("<B>Airlock Control</B><br>\n")
if (src.secondsMainPowerLost > 0)
if ((!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2)))
t1 += text("Main power is offline for [] seconds.<br>\n", src.secondsMainPowerLost)
else
t1 += text("Main power is offline indefinitely.<br>\n")
else
t1 += text("Main power is online.")
if (src.secondsBackupPowerLost > 0)
if ((!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2)))
t1 += text("Backup power is offline for [] seconds.<br>\n", src.secondsBackupPowerLost)
else
t1 += text("Backup power is offline indefinitely.<br>\n")
else if (src.secondsMainPowerLost > 0)
t1 += text("Backup power is online.")
else
t1 += text("Backup power is offline, but will turn on if main power fails.")
t1 += "<br>\n"
if (src.isWireCut(AIRLOCK_WIRE_IDSCAN))
t1 += text("IdScan wire is cut.<br>\n")
else if (src.aiDisabledIdScanner)
t1 += text("IdScan disabled. <A href='?src=\ref[];aiEnable=1'>Enable?</a><br>\n", src)
else
t1 += text("IdScan enabled. <A href='?src=\ref[];aiDisable=1'>Disable?</a><br>\n", src)
if (src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1))
t1 += text("Main Power Input wire is cut.<br>\n")
if (src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2))
t1 += text("Main Power Output wire is cut.<br>\n")
if (src.secondsMainPowerLost == 0)
t1 += text("<A href='?src=\ref[];aiDisable=2'>Temporarily disrupt main power?</a>.<br>\n", src)
if (src.secondsBackupPowerLost == 0)
t1 += text("<A href='?src=\ref[];aiDisable=3'>Temporarily disrupt backup power?</a>.<br>\n", src)
if (src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1))
t1 += text("Backup Power Input wire is cut.<br>\n")
if (src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2))
t1 += text("Backup Power Output wire is cut.<br>\n")
if (src.isWireCut(AIRLOCK_WIRE_CRUSH))
t1 += text("Airlock extra force wire is cut.<br>\n")
else if(!src.forcecrush)
t1 += text("Airlock extra force disabled <A href='?src=\ref[src];aiEnable=8'>Enable it?</a><br>\n")
else
t1 += text("Airlock extra force enabled <A href='?src=\ref[src];aiDisable=8'>Disable it?</a><br>\n")
if (src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
t1 += text("Door bolt drop wire is cut.<br>\n")
else if (!src.locked)
@@ -524,6 +660,20 @@ About the new airlock wires panel:
else
t1 += text("Door is not electrified. <A href='?src=\ref[];aiEnable=5'>Electrify it for 30 seconds?</a> Or, <A href='?src=\ref[];aiEnable=6'>Electrify it indefinitely until someone cancels the electrification?</a><br>\n", src, src)
if(src.isWireCut(AIRLOCK_WIRE_LIGHT))
t1 += "Bolt indication light wire is cut.<br>\n"
else if(!src.safetylight)
t1 += text("Bolt indication light is disabled <A href='?src=\ref[src];aiEnable=9'>Enable it?</a><br>\n")
else
t1 += text("Bolt indication light is enabled <A href='?src=\ref[src];aiDisable=9'>Disable it?</a><br>\n")
if(src.isWireCut(AIRLOCK_WIRE_HOLDOPEN))
t1 += "Behavior Control light wire is cut.<br>\n"
else if(!src.holdopen)
t1 += text("Door behavior is set to: Automatically close <A href='?src=\ref[src];aiEnable=10'>Toggle?</a><br>\n")
else
t1 += text("Door behavior is set to: Wait for clearance to close <A href='?src=\ref[src];aiDisable=10'>Toggle?</a><br>\n")
if (src.welded)
t1 += text("Door appears to have been welded shut.<br>\n")
else if (!src.locked)
@@ -536,10 +686,6 @@ About the new airlock wires panel:
user << browse(t1, "window=airlock")
onclose(user, "airlock")
//aiDisable - 1 idscan, 2 disrupt main power, 3 disrupt backup power, 4 drop door bolts, 5 un-electrify door, 7 close door
//aiEnable - 1 idscan, 4 raise door bolts, 5 electrify door for 30 seconds, 6 electrify door indefinitely, 7 open door
/obj/machinery/door/airlock/proc/hack(mob/user as mob)
if (src.aiHacking==0)
src.aiHacking=1
@@ -628,7 +774,10 @@ About the new airlock wires panel:
"Blue" = 6,
"Green" = 7,
"Grey" = 8,
"Black" = 9
"Black" = 9,
"Pink" = 10,
"Brown" = 11,
"Maroon" = 12
)
for(var/wiredesc in wires)
var/is_uncut = src.wires & airlockWireColorToFlag[wires[wiredesc]]
@@ -644,7 +793,7 @@ About the new airlock wires panel:
t1 += "<a href='?src=\ref[src];signaler=[wires[wiredesc]]'>Attach signaler</a>"
t1 += "<br>"
t1 += text("<br>\n[]<br>\n[]<br>\n[]", (src.locked ? "The door bolts have fallen!" : "The door bolts look up."), ((src.arePowerSystemsOn() && !(stat & NOPOWER)) ? "The test light is on." : "The test light is off!"), (src.aiControlDisabled==0 ? "The 'AI control allowed' light is on." : "The 'AI control allowed' light is off."))
t1 += text("<br>\n[]<br>\n[]<br>\n[]<br>\n[]<br>\n[]", (src.locked ? "The door bolts have fallen!" : "The door bolts look up."), ((src.arePowerSystemsOn() && !(stat & NOPOWER)) ? "The test light is on." : "The test light is off!"), (src.aiControlDisabled==0 ? "The 'AI control allowed' light is on." : "The 'AI control allowed' light is off."), (src.secondsElectrified!=0 ? "The safety light is flashing!" : "The safety light is on."), (src.forcecrush==0 ? "The hydraulics control light is a solid green." : "The hydraulics control light is flashing red."))
t1 += text("<p><a href='?src=\ref[];close=1'>Close</a></p>\n", src)
@@ -716,9 +865,8 @@ About the new airlock wires panel:
src.update_icon()
add_fingerprint(usr)
src.updateUsrDialog()
else if(istype(usr, /mob/living/silicon)) // unranged silicon interface
//AI
if (!src.canAIControl())
else //AI or Syndicate using hacktool
if (!src.canAIControl() || (istype(usr.equipped(), /obj/item/device/hacktool/) && (!src.canSynControl() || !in_range(src, usr))))
usr << "Airlock control connection lost!"
return
//aiDisable - 1 idscan, 2 disrupt main power, 3 disrupt backup power, 4 drop door bolts, 5 un-electrify door, 7 close door
@@ -771,6 +919,21 @@ About the new airlock wires panel:
close()
else
usr << text("The airlock is already closed.<br>\n")
if (8)
if(!src.forcecrush)
usr << text("Door extra force not enabled!<br>\n")
else
src.forcecrush = 0
if (9)
if(!src.safetylight)
usr << text("Bolt indication light not enabled!<br>\n")
else
src.safetylight = 0
if (10)
if(!src.holdopen)
usr << text("Door Behavior already set to: Wait for clearance to close<br>\n")
else
src.holdopen = 1
else if (href_list["aiEnable"])
var/code = text2num(href_list["aiEnable"])
@@ -834,6 +997,21 @@ About the new airlock wires panel:
// close()
else
usr << text("The airlock is already opened.<br>\n")
if (8)
if(src.forcecrush)
usr << text("Door extra force already enabled!<br>\n")
else
src.forcecrush = 1
if (9)
if(src.safetylight)
usr << text("Bolt indication light already enabled!<br>\n")
else
src.safetylight = 1
if (10)
if(src.holdopen)
usr << text("Door Behavior already set to: Automatically close<br>\n")
else
src.holdopen = 0
src.update_icon()
src.updateUsrDialog()
@@ -866,6 +1044,8 @@ About the new airlock wires panel:
return src.attack_hand(user)
else if (istype(C, /obj/item/device/multitool))
return src.attack_hand(user)
else if (istype(C, /obj/item/device/hacktool))
return src.attack_hack(user, C)
else if (istype(C, /obj/item/device/assembly/signaler))
return src.attack_hand(user)
else if (istype(C, /obj/item/weapon/pai_cable)) // -- TLE
@@ -980,6 +1160,85 @@ About the new airlock wires panel:
..()
return
/obj/machinery/door/airlock/proc/synhack(mob/user as mob, obj/item/device/hacktool/I)
if (src.synHacking==0)
src.synHacking=1
I.in_use = 1
spawn(20 )
user << "Jacking in. Stay close to the airlock or you'll rip the cables out and we'll have to start over."
sleep(25 )
if (src.canSynControl())
user << "Hack cancelled, control already possible."
src.synHacking=0
I.in_use = 0
return
else if (!src.canSynHack(I))
user << "\red Connection lost. Stand still and stay near the airlock!"
src.synHacking=0
I.in_use = 0
return
user << "Connection established."
sleep(10 )
user << "Attempting to hack into airlock. This may take some time."
sleep(100 )
// Alerting the AIs
var/list/cameras = list()
for (var/obj/machinery/camera/C in src.loc.loc.contents) // getting all cameras in the area
cameras += C
var/alertoption = prob(50) // 50% chance of warning the AI
if(prob(15)) //15% chance of sending the AI all the details (camera, area, warning)
alertoption = 3
else if (prob(18)) //18% chance of sending the AI just the area
alertoption = 2
for (var/mob/living/silicon/ai/aiPlayer in world)
if (aiPlayer.stat != 2)
switch(alertoption)
if(3) aiPlayer.triggerUnmarkedAlarm("AirlockHacking", src.loc.loc, cameras)
if(2) aiPlayer.triggerUnmarkedAlarm("AirlockHacking", src.loc.loc)
if(1) aiPlayer.triggerUnmarkedAlarm("AirlockHacking")
for (var/mob/living/silicon/robot/robotPlayer in world)
if (robotPlayer.stat != 2)
switch(alertoption)
if(2,3) robotPlayer.triggerUnmarkedAlarm("AirlockHacking", src.loc.loc)
if(1) robotPlayer.triggerUnmarkedAlarm("AirlockHacking")
// ...And done
if (!src.canSynHack(I))
user << "\red Hack aborted: landline connection lost. Stay closer to the airlock."
src.synHacking=0
I.in_use = 0
return
else if (src.canSynControl())
user << "Local override already in place, hack aborted."
src.synHacking=0
I.in_use = 0
return
user << "Upload access confirmed. Loading control program into airlock software."
sleep(85 )
if (!src.canSynHack(I))
user << "\red Hack aborted: cable connection lost. Do not move away from the airlock."
src.synHacking=0
I.in_use = 0
return
else if (src.canSynControl())
user << "Upload access aborted, local override already in place."
src.synHacking=0
I.in_use = 0
return
user << "Transfer complete. Forcing airlock to execute program."
sleep(25 )
//disable blocked control
src.synDoorHacked = 1
user << "Bingo! We're in. Airlock control panel coming right up."
sleep(5 )
//bring up airlock dialog
src.synHacking = 0
I.in_use = 0
src.attack_hack(user, I)
/obj/machinery/door/airlock/open()
if (src.welded || src.locked || (!src.arePowerSystemsOn()) || (stat & NOPOWER) || src.isWireCut(AIRLOCK_WIRE_OPEN_DOOR))
return 0
@@ -1002,6 +1261,8 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/New()
..()
if(src.holdopen)
wires -= 2^11
if (src.closeOtherId != null)
spawn (5)
for (var/obj/machinery/door/airlock/A in machines)
+52 -3
View File
@@ -289,14 +289,63 @@
/obj/machinery/door/proc/close()
if(density)
return 1
if(src.operating)
if (src.operating)
return
src.operating = 1
var/held = 0
if(src.holdopen)
while(held == 0)
var/list/objects = locate() in get_turf(src)
for(var/obj/T in objects)
if(T.anchored)
held = 1
break
for(var/mob/T in objects)
held = 1
break
sleep(150)
animate("closing")
src.density = 1
src.layer = 3.1
sleep(10)
spawn(4)
if(!istype(src, /obj/machinery/door/window))
for(var/mob/living/L in src.loc) // Crush mobs and move them out of the way
if(src.forcecrush) // Save an AI, crush a limb
var/limbname = pick("l arm", "r arm", "l hand","r hand", "l foot", "r foot")
var/limbdisplay
for(var/organ in L:organs)
var/datum/organ/external/temp = L:organs["[organ]"]
if (istype(temp, /datum/organ/external) && temp.name == limbname)
limbdisplay = temp.display_name // Take the name for down below
temp.take_damage(60, 0) //OH GOD IT HURTS
break
L << "\red The airlock crushes your [limbdisplay]!"
for(var/mob/O in viewers(L, null))
O.show_message("\red The airlock crushes [L.name]'s [limbdisplay]!", 1)
else
L << "\red The airlock forces you out of the way!" //Lucky you
for(var/mob/O in viewers(L, null))
O.show_message("\red The airlock pushes [L.name] out of the way!", 1)
var/list/lst = list(NORTH,SOUTH,EAST,WEST)
var/turf/T = get_random_turf(L, lst)
if(T)
L.loc = T
for(var/obj/item/I in src.loc) // Move items out of the way
if(!I.anchored)
var/list/lst = list(NORTH,SOUTH,EAST,WEST)
var/turf/T = get_random_turf(I, lst)
if(T)
I.loc = T
sleep(6)
update_icon()
if(src.visible && (!src.glass))
+1 -1
View File
@@ -32,7 +32,7 @@
var/cart = "" //A place to stick cartridge menu information
var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit
var/obj/item/weapon/integrated_uplink/uplink = null
var/obj/item/device/uplink/pda/uplink = null
var/obj/item/weapon/card/id/id = null //Making it possible to slot an ID card into the PDA so it can function as both.
var/ownjob = null //related to above
-245
View File
@@ -1,245 +0,0 @@
/obj/item/weapon/integrated_uplink
name = "uplink module"
desc = "An electronic uplink system of unknown origin."
icon = 'module.dmi'
icon_state = "power_mod"
var/uses = 10
var/obj/item/device/pda/hostpda = null
var/orignote = null //Restore original notes when locked.
var/active = 0 //Are we currently active??
var/menu_message = ""
var/lock_code = "password" //What's the password?
//Communicate with traitor through the PDA's note function.
/obj/item/weapon/integrated_uplink/proc/print_to_host(var/text)
if (isnull(hostpda))
return
hostpda.note = text
for (var/mob/M in viewers(1, hostpda.loc))
if (M.client && M.machine == hostpda)
hostpda.attack_self(M)
return
//Let's build a menu!
/obj/item/weapon/integrated_uplink/proc/generate_menu()
menu_message = "<B>Syndicate Uplink Console:</B><BR>"
menu_message += "Tele-Crystals left: [uses]<BR>"
menu_message += "<HR>"
menu_message += "<B>Request item:</B><BR>"
menu_message += "<I>Each item costs a number of tele-crystals as indicated by the number following their name.</I><BR>"
menu_message += "<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=revolver'>Revolver</A> (6)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=revolver_ammo'>Ammo-357</A> for use with Revolver (2)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=suffocation_revolver_ammo'>Ammo-418</A> for use with Revolver (3)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=xbow'>Energy Crossbow</A> (5)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=sword'>Energy Sword</A> (4)<BR>"
menu_message += "<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=jump'>Chameleon Jumpsuit</A> (3)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=shoes'>Syndicate Shoes</A> (2)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=card'>Syndicate Card</A> (3)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=voice'>Voice-Changer</A> (4)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=thermal'>Thermal Glasses</A> (4)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=eraser'>Stamp Remover</A> (1)<BR>" //Allows doccuments to be de-stamped
menu_message += "<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=imp_freedom'>Freedom Implant (with injector)</A> (3)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=imp_uplink'>Uplink Implant (5 crystals inside)</A> (10)<BR>"
// menu_message += "<A href='byond://?src=\ref[src];buy_item=paralysispen'>Paralysis Pen</A> (3)<BR>"
//When given the choice, people have been P2W
menu_message += "<A href='byond://?src=\ref[src];buy_item=sleepypen'>Sleepy Pen</A> (4)<BR>" //Terrible -Pete.
menu_message += "<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=imp_exp'>Explosive Implant (with injector)</A> (6)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=detomatix'>Detomatix Cartridge</A> (3)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=bomb'>Plastic Explosives</A> (2)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=powersink'>Power Sink</A> (5)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=space'>Syndicate-made Space Suit (inludes a helmet)</A> (3)<BR>"
menu_message += "<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=projector'>Chameleon-projector</A> (4)<BR>"
// menu_message += "<A href='byond://?src=\ref[src];buy_item=cloak'>Cloaking Device</A> (4)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=emag'>Electromagnet Card</A> (3)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=empbox'>5 EMP Grenades</A> (4)<BR>"
menu_message += "<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=botchat'>Binary Translator</A> (3)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=lawmod'>Hacked AI Module</A> (7)<BR>"
menu_message += "<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=singubeacon'>Singularity Beacon</A> (does not include a screwdriver) (7)<BR>"
menu_message += "<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=toolbox'>Syndicate Toolbox</A> (Includes various tools) (1)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=soap'>Syndicate Soap</A> (1)<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=balloon'>Syndicate Balloon</A> (Useless) (10)<BR>"
menu_message += "<BR>"
menu_message += "<A href='byond://?src=\ref[src];buy_item=bundle'>Syndicate Bundle</A> (Contains an assorted selection of syndicate items)(10)<BR>"
menu_message += "<HR>"
return
/obj/item/weapon/integrated_uplink/proc/unlock()
if ((isnull(hostpda)) || (active))
return
orignote = hostpda.note
active = 1
hostpda.mode = 1 //Switch right to the notes program
generate_menu()
print_to_host(menu_message)
return
/obj/item/weapon/integrated_uplink/Topic(href, href_list)
if ((isnull(hostpda)) || (!active))
return
if (usr.stat || usr.restrained() || !in_range(hostpda, usr))
return
if (href_list["buy_item"])
switch(href_list["buy_item"])
if("revolver")
if (uses >= 6)
uses -= 6
new /obj/item/weapon/gun/projectile(get_turf(hostpda))
if("revolver_ammo")
if (uses >= 2)
uses -= 2
new /obj/item/ammo_magazine/a357(get_turf(hostpda))
if("suffocation_revolver_ammo")
if (uses >= 3)
uses -= 3
new /obj/item/ammo_magazine/a418(get_turf(hostpda))
if("xbow")
if (uses >= 5)
uses -= 5
new /obj/item/weapon/gun/energy/crossbow(get_turf(hostpda))
if("empbox")
if (uses >= 4)
uses -= 4
new /obj/item/weapon/storage/emp_kit(get_turf(hostpda))
if("voice")
if (uses >= 4)
uses -= 4
new /obj/item/clothing/mask/gas/voice(get_turf(hostpda))
if("jump")
if (uses >= 3)
uses -= 3
new /obj/item/clothing/under/chameleon(get_turf(hostpda))
if("shoes")
if (uses >= 2)
uses -= 2
new /obj/item/clothing/shoes/syndigaloshes(get_turf(hostpda))
if("card")
if (uses >= 3)
uses -= 3
new /obj/item/weapon/card/id/syndicate(get_turf(hostpda))
if("emag")
if (uses >= 3)
uses -= 3
new /obj/item/weapon/card/emag(get_turf(hostpda))
if("imp_freedom")
if (uses >= 3)
uses -= 3
var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(get_turf(hostpda))
O.imp = new /obj/item/weapon/implant/freedom(O)
O.update()
if("imp_uplink")
if (uses >= 10)
uses -= 10
var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(get_turf(hostpda))
O.imp = new /obj/item/weapon/implant/uplink(O)
O.update()
if("imp_exp")
if (src.uses >= 6)
src.uses -= 6
var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(get_turf(hostpda))
O.imp = new /obj/item/weapon/implant/explosive(O)
O.name = "(BIO-HAZARD) BIO-detpack"
O.update()
if("sleepypen")
if (uses >= 4)
uses -= 4
new /obj/item/weapon/pen/sleepypen(get_turf(hostpda))
if("paralysispen")
if (uses >= 3)
uses -= 3
new /obj/item/weapon/pen/paralysis(get_turf(src))
if("projector")
if (uses >= 4)
uses -= 4
new /obj/item/device/chameleon(get_turf(hostpda))
/*if("cloak")
if (uses >= 4)
uses -= 4
new /obj/item/weapon/cloaking_device(get_turf(hostpda))*/
if("thermal")
if (src.uses >= 4)
src.uses -= 4
new /obj/item/clothing/glasses/thermal(get_turf(src))
if("sword")
if (uses >= 4)
uses -= 4
new /obj/item/weapon/melee/energy/sword(get_turf(hostpda))
if("bomb")
if (uses >= 2)
uses -= 2
new /obj/item/weapon/plastique(get_turf(hostpda))
if("powersink")
if (uses >= 5)
uses -= 5
new /obj/item/device/powersink(get_turf(hostpda))
if("detomatix")
if (uses >= 3)
uses -= 3
new /obj/item/weapon/cartridge/syndicate(get_turf(hostpda))
if("space")
if (uses >= 3)
uses -= 3
new /obj/item/clothing/suit/space/syndicate(get_turf(hostpda))
new /obj/item/clothing/head/helmet/space/syndicate(get_turf(hostpda))
if("lawmod")
if (uses >= 7)
uses -= 7
new /obj/item/weapon/aiModule/syndicate(get_turf(hostpda))
if("botchat")
if (uses >= 3)
uses -= 3
new /obj/item/device/radio/headset/traitor(get_turf(hostpda))
if("singubeacon")
if(uses >= 7)
uses -= 7
new /obj/machinery/singularity_beacon/syndicate(get_turf(hostpda))
if("toolbox")
if(uses)
uses--
new /obj/item/weapon/storage/toolbox/syndicate(get_turf(hostpda))
if("soap")
if(uses)
uses--
new /obj/item/weapon/soap/syndie(get_turf(src))
if("balloon")
if(uses >= 10)
uses -= 10
new /obj/item/toy/syndicateballoon(get_turf(hostpda))
if("bundle")
if(uses >= 10)
uses -= 10
new /obj/item/weapon/storage/box/syndicate(get_turf(hostpda))
if("eraser")
if(uses >= 1)
uses -= 1
new /obj/item/weapon/stamperaser(get_turf(hostpda))
generate_menu()
print_to_host(menu_message)
return
return
/obj/item/weapon/integrated_uplink/proc/shutdown_uplink()
if (isnull(src.hostpda))
return
active = 0
hostpda.note = orignote
if (hostpda.mode==1)
hostpda.mode = 0
hostpda.updateDialog()
return
@@ -38,12 +38,12 @@
desc = "Summon things."
var
activation_emote = "chuckle"
obj/item/weapon/syndicate_uplink/uplink = null
obj/item/device/uplink/radio/uplink = null
New()
activation_emote = pick("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
uplink = new /obj/item/weapon/syndicate_uplink/implanted(src)
uplink = new /obj/item/device/uplink/radio/implanted(src)
..()
return
@@ -290,4 +290,38 @@ the implant may become unstable and either pre-maturely inject the subject or si
implanted(mob/source as mob)
mobname = source.real_name
processing_objects.Add(src)
processing_objects.Add(src)
/obj/item/weapon/implant/compressed
name = "compressed matter implant"
desc = "*fwooomp*"
var/activation_emote = "sigh"
var/obj/item/scanned = null
get_data()
var/dat = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> NanoTrasen \"Profit Margin\" Class Employee Lifesign Sensor<BR>
<b>Life:</b> Activates upon death.<BR>
<b>Important Notes:</b> Alerts crew to crewmember death.<BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a compact radio signaler that triggers when the host's lifesigns cease.<BR>
<b>Special Features:</b> Alerts crew to crewmember death.<BR>
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
return dat
trigger(emote, mob/source as mob)
if (src.scanned == null)
return 0
if (emote == src.activation_emote)
source << "The air glows as \the [src.scanned.name] uncompresses."
var/turf/t = get_turf(source)
src.scanned.loc = t
del src
implanted(mob/source as mob)
src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.", 0, 0)
source << "The implanted freedom implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
@@ -80,4 +80,39 @@
src.imp = new /obj/item/weapon/implant/explosive( src )
..()
update()
return
return
/obj/item/weapon/implanter/compressed
name = "implanter-compressed"
icon_state = "cimplanter0"
New()
src.imp = new /obj/item/weapon/implant/compressed( src )
..()
update()
return
update()
if (src.imp)
var/obj/item/weapon/implant/compressed/c = src.imp
if(!c.scanned)
src.icon_state = "cimplanter0"
else
src.icon_state = "cimplanter1"
else
src.icon_state = "cimplanter2"
return
attack(mob/M as mob, mob/user as mob)
var/obj/item/weapon/implant/compressed/c = src.imp
if (c.scanned == null)
user << "Please scan an object with the implanter first."
return
..()
afterattack(atom/A, mob/user as mob)
if(istype(A,/obj/item))
var/obj/item/weapon/implant/compressed/c = src.imp
c.scanned = A
A.loc.contents.Remove(A)
src.update()
-255
View File
@@ -1,255 +0,0 @@
/*
CONTAINS:
SYNDICATE UPLINK
*/
/obj/item/weapon/syndicate_uplink/implanted
uses = 5
/obj/item/weapon/syndicate_uplink/proc/explode()
var/turf/location = get_turf(src.loc)
if(location)
location.hotspot_expose(700,125)
explosion(location, 0, 0, 2, 4)
del(src.master)
del(src)
return
/obj/item/weapon/syndicate_uplink/attack_self(mob/user as mob)
interact(user)
/obj/item/weapon/syndicate_uplink/proc/interact(mob/user as mob)
currentUser = user
user.machine = src
var/dat
if (src.selfdestruct)
dat = "Self Destructing..."
else
if (src.temp)
dat = "[src.temp]<BR><BR><A href='byond://?src=\ref[src];temp=1'>Clear</A>"
else
dat = "<B>Syndicate Uplink Access:</B><BR>"
dat += "Tele-Crystals left: [src.uses]<BR>"
dat += "<HR>"
dat += "<B>Request item:</B><BR>"
dat += "<I>Each item costs a number of tele-crystals as indicated by the number following their name.</I><BR>"
dat += "<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=revolver'>Revolver</A> (6)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=revolver_ammo'>Ammo-357</A> for use with Revolver (2)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=xbow'>Energy Crossbow</A> (5)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=sword'>Energy Sword</A> (4)<BR>"
dat += "<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=jump'>Chameleon Jumpsuit</A> (3)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=shoes'>Syndicate Shoes</A> (2)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=card'>Syndicate Card</A> (3)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=voice'>Voice-Changer</A> (4)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=thermal'>Thermal Glasses</A> (4)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=eraser'>Stamp Remover</A> (1)<BR>"
dat += "<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=imp_freedom'>Freedom Implant (with injector)</A> (3)<BR>"
// dat += "<A href='byond://?src=\ref[src];buy_item=paralysispen'>Paralysis Pen</A> (3)<BR>" //Note that this goes to the updated sleepypen now.
dat += "<A href='byond://?src=\ref[src];buy_item=sleepypen'>Sleepy Pen</A> (4)<BR>" //Terrible -Pete. //Reinstated -Skymarshal
dat += "<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=imp_exp'>Explosive Implant (with injector)</A> (6)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=detomatix'>Detomatix Cartridge</A> (3)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=bomb'>Plastic Explosives</A> (2)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=powersink'>Power Sink</A> (5)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=space'>Syndicate-made Space Suit (inludes a helmet)</A> (3)<BR>"
dat += "<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=projector'>Chameleon-projector</A> (4)<BR>"
// dat += "<A href='byond://?src=\ref[src];buy_item=cloak'>Cloaking Device</A> (4)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=emag'>Electromagnet Card</A> (3)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=empbox'>5 EMP Grenades</A> (4)<BR>"
dat += "<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=botchat'>Binary Translator</A> (3)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=lawmod'>Hacked AI Module</A> (7)<BR>"
dat += "<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=toolbox'>Syndicate Toolbox</A> (Includes various tools) (1)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=soap'>Syndicate Soap</A> (1)<BR>"
dat += "<A href='byond://?src=\ref[src];buy_item=balloon'>Syndicate Balloon</A> (Useless) (10)<BR>"
dat += "<HR>"
if (src.origradio)
dat += "<A href='byond://?src=\ref[src];lock=1'>Lock</A><BR>"
dat += "<HR>"
dat += "<A href='byond://?src=\ref[src];selfdestruct=1'>Self-Destruct</A>"
user << browse(dat, "window=radio")
onclose(user, "radio")
return
/obj/item/weapon/syndicate_uplink/Topic(href, href_list)
..()
if(!currentUser)
return
if (currentUser.stat || currentUser.restrained())
return
if (!( istype(currentUser, /mob/living/carbon/human)))
return
if ((currentUser.contents.Find(src) || (in_range(src, currentUser) && istype(src.loc, /turf))) || istype(src,/obj/item/weapon/syndicate_uplink/implanted))
currentUser.machine = src
if (href_list["buy_item"])
switch(href_list["buy_item"])
if("revolver")
if (src.uses >= 6)
src.uses -= 6
new /obj/item/weapon/gun/projectile(get_turf(src))
if("revolver_ammo")
if (src.uses >= 2)
src.uses -= 2
new /obj/item/ammo_magazine/a357(get_turf(src))
if("xbow")
if (src.uses >= 5)
src.uses -= 5
new /obj/item/weapon/gun/energy/crossbow(get_turf(src))
if("empbox")
if (src.uses >= 4)
src.uses -= 4
new /obj/item/weapon/storage/emp_kit(get_turf(src))
if("voice")
if (src.uses >= 4)
src.uses -= 4
new /obj/item/clothing/mask/gas/voice(get_turf(src))
if("jump")
if (src.uses >= 3)
src.uses -= 3
new /obj/item/clothing/under/chameleon(get_turf(src))
if("shoes")
if (uses >= 2)
uses -= 2
new /obj/item/clothing/shoes/syndigaloshes(get_turf(src))
if("card")
if (src.uses >= 3)
src.uses -= 3
new /obj/item/weapon/card/id/syndicate(get_turf(src))
if("emag")
if (src.uses >= 3)
src.uses -= 3
new /obj/item/weapon/card/emag(get_turf(src))
if("imp_freedom")
if (src.uses >= 3)
src.uses -= 3
var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(get_turf(src))
O.imp = new /obj/item/weapon/implant/freedom(O)
if("imp_exp")
if (src.uses >= 6)
src.uses -= 6
var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(get_turf(src))
O.imp = new /obj/item/weapon/implant/explosive(O)
O.name = "(BIO-HAZARD) BIO-detpack"
O.update()
if("sleepypen")
if (src.uses >= 4)
src.uses -= 4
new /obj/item/weapon/pen/sleepypen(get_turf(src))
if("paralysispen")
if (src.uses >= 3)
src.uses -= 3
new /obj/item/weapon/pen/paralysis(get_turf(src))
if("projector")
if (src.uses >= 4)
src.uses -= 4
new /obj/item/device/chameleon(get_turf(src))
if("lawmod")
if (src.uses >= 7)
src.uses -= 7
new /obj/item/weapon/aiModule/syndicate(get_turf(src))
/* if("cloak")
if (src.uses >= 4)
if (ticker.mode.config_tag!="nuclear" || \
(input(currentUser,"Spawning a cloak in nuke is generally regarded as entirely dumb, are you sure?") in list("Confirm", "Abort")) == "Confirm" \
)
if (src.uses >= 4)
src.uses -= 4
new /obj/item/weapon/cloaking_device(get_turf(src)) */
if("sword")
if (src.uses >= 4)
src.uses -= 4
new /obj/item/weapon/melee/energy/sword(get_turf(src))
if("thermal")
if (src.uses >= 4)
src.uses -= 4
new /obj/item/clothing/glasses/thermal(get_turf(src))
if("bomb")
if (src.uses >= 2)
src.uses -= 2
new /obj/item/weapon/plastique(get_turf(src))
if("powersink")
if (src.uses >= 5)
src.uses -= 5
new /obj/item/device/powersink(get_turf(src))
if("detomatix")
if (src.uses >= 3)
src.uses -= 3
new /obj/item/weapon/cartridge/syndicate(get_turf(src))
if("space")
if (src.uses >= 3)
src.uses -= 3
new /obj/item/clothing/suit/space/syndicate(get_turf(src))
new /obj/item/clothing/head/helmet/space/syndicate(get_turf(src))
if("botchat")
if (src.uses >= 3)
src.uses -= 3
new /obj/item/device/radio/headset/traitor(get_turf(src))
if("toolbox")
if(uses)
uses--
new /obj/item/weapon/storage/toolbox/syndicate(get_turf(src))
if("soap")
if(uses)
uses--
new /obj/item/weapon/soap/syndie(get_turf(src))
if("balloon")
if (src.uses >= 10)
uses -= 10
new /obj/item/toy/syndicateballoon(get_turf(src))
else if (href_list["lock"] && src.origradio)
// presto chango, a regular radio again! (reset the freq too...)
shutdown_uplink()
return
else if (href_list["selfdestruct"])
src.temp = "<A href='byond://?src=\ref[src];selfdestruct2=1'>Self-Destruct</A>"
else if (href_list["selfdestruct2"])
src.selfdestruct = 1
spawn (100)
explode()
return
else
if (href_list["temp"])
src.temp = null
if (istype(src.loc, /mob))
interact(src.loc)
else
for(var/mob/M in viewers(1, src))
if (M.client)
interact(M)
return
/obj/item/weapon/syndicate_uplink/proc/shutdown_uplink()
if (!src.origradio)
return
var/list/nearby = viewers(1, src)
for(var/mob/M in nearby)
if (M.client && M.machine == src)
M << browse(null, "window=radio")
M.machine = null
var/obj/item/device/radio/T = src.origradio
var/obj/item/weapon/syndicate_uplink/R = src
var/mob/L = src.loc
R.loc = T
T.loc = L
// R.layer = initial(R.layer)
R.layer = 0
if (istype(L))
if (L.client)
L.client.screen -= R
if (L.r_hand == R)
L.u_equip(R)
L.r_hand = T
else
L.u_equip(R)
L.l_hand = T
T.layer = 20
T.set_frequency(initial(T.frequency))
return