Merge remote-tracking branch 'tgstation/master'
@@ -1172,7 +1172,8 @@ var/global/list/common_tools = list(
|
||||
/obj/item/clothing/glasses/sunglasses/gar,\
|
||||
/obj/item/clothing/glasses/hud/security/sunglasses/gars,\
|
||||
/obj/item/clothing/glasses/meson/gar,\
|
||||
/obj/item/weapon/twohanded/spear)
|
||||
/obj/item/weapon/twohanded/spear,\
|
||||
/obj/item/weapon/melee/energy/sword/cyborg/saw)
|
||||
|
||||
//Because is_sharp is used for food or something.
|
||||
var/list/sharp_things_2 = list(\
|
||||
@@ -1420,7 +1421,7 @@ B --><-- A
|
||||
//but then you can never stop it and that's just silly.
|
||||
/atom/movable/var/atom/orbiting = null
|
||||
//we raise this each time orbit is called to prevent mutiple calls in a short time frame from breaking things
|
||||
/atom/movable/var/orbitid = 0
|
||||
/atom/movable/var/orbitid = 0
|
||||
|
||||
/atom/movable/proc/orbit(atom/A, radius = 10, clockwise = 1, angle_increment = 15, lockinorbit = 0)
|
||||
if(!istype(A))
|
||||
|
||||
@@ -146,8 +146,8 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/dangerous/crossbow
|
||||
name = "Miniature Energy Crossbow"
|
||||
desc = "A short bow mounted across a tiller in miniature. Small enough to fit into a pocket or slip into a bag unnoticed. It fires bolts tipped with a paralyzing toxin collected from a rare organism. \
|
||||
The bow generates bolts using an internal power source but must be manually charged between shots."
|
||||
desc = "A short bow mounted across a tiller in miniature. Small enough to fit into a pocket or slip into a bag unnoticed. It will synthesize and fire bolts tipped with a paralyzing toxin that will \
|
||||
briefly stun targets and cause them to slur as if inebriated. It can produce an infinite amount of bolts, but must be manually recharged with each shot."
|
||||
item = /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow
|
||||
cost = 12
|
||||
excludefrom = list(/datum/game_mode/nuclear,/datum/game_mode/gang)
|
||||
@@ -157,13 +157,14 @@ var/list/uplink_items = list()
|
||||
name = "Flamethrower"
|
||||
desc = "A flamethrower, fueled by a portion of highly flammable biotoxins stolen previously from Nanotrasen stations. Make a statement by roasting the filth in their own greed. Use with caution."
|
||||
item = /obj/item/weapon/flamethrower/full/tank
|
||||
cost = 11
|
||||
cost = 4
|
||||
gamemodes = list(/datum/game_mode/nuclear,/datum/game_mode/gang)
|
||||
surplus = 40
|
||||
|
||||
/datum/uplink_item/dangerous/sword
|
||||
name = "Energy Sword"
|
||||
desc = "The energy sword is an edged weapon with a blade of pure energy. The sword is small enough to be pocketed when inactive. Activating it produces a loud, distinctive noise."
|
||||
desc = "The energy sword is an edged weapon with a blade of pure energy. The sword is small enough to be pocketed when inactive. Activating it produces a loud, distinctive noise. One can combine two \
|
||||
energy swords to create a double energy sword, which must be wielded in two hands but is more robust and deflects all energy projectiles."
|
||||
item = /obj/item/weapon/melee/energy/sword/saber
|
||||
cost = 8
|
||||
|
||||
@@ -175,7 +176,7 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/dangerous/syndicate_minibomb
|
||||
name = "Syndicate Minibomb"
|
||||
desc = "The Minibomb is a grenade with a five-second fuse."
|
||||
desc = "The minibomb is a grenade with a five-second fuse. Upon detonation, it will create a small hull breach in addition to dealing high amounts of damage to nearby personnel."
|
||||
item = /obj/item/weapon/grenade/syndieminibomb
|
||||
cost = 6
|
||||
|
||||
@@ -305,7 +306,7 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/ammo/bioterror
|
||||
name = "Box of Bioterror Syringes"
|
||||
desc = "A box full of preloaded syringes, containing various chemicals that seize up the victim's motor and broca system , making it impossible for them to move or speak while in their system."
|
||||
desc = "A box full of preloaded syringes, containing various chemicals that seize up the victim's motor and broca systems, making it impossible for them to move or speak for some time."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/bioterror
|
||||
cost = 6
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
@@ -332,12 +333,11 @@ var/list/uplink_items = list()
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/ammo/toydarts
|
||||
/datum/uplink_item/ammo/toydarts //This used to only be for nuke ops, but had the cost lowered and made available to traitors because >a box of foam darts is more expensive than four carbine magazines
|
||||
name = "Box of Riot Darts"
|
||||
desc = "A box of 40 Donksoft foam riot darts, for reloading any compatible foam dart gun. Don't forget to share!"
|
||||
item = /obj/item/ammo_box/foambox/riot
|
||||
cost = 10
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
cost = 2
|
||||
surplus = 0
|
||||
|
||||
// STEALTHY WEAPONS
|
||||
@@ -348,7 +348,7 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/throwingstars
|
||||
name = "Box of Throwing Stars"
|
||||
desc = "A box of throwing stars with a high chance of embedding themselves in people's limbs."
|
||||
desc = "A box of shurikens from ancient Earth martial arts. They are highly effective throwing weapons, and will embed into limbs when possible."
|
||||
item = /obj/item/weapon/storage/box/throwing_stars
|
||||
cost = 6
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
@@ -360,17 +360,17 @@ var/list/uplink_items = list()
|
||||
cost = 2
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/foampistol
|
||||
name = "Toy Gun (with Stun Darts)"
|
||||
desc = "An innocent-looking toy pistol designed to fire foam darts. Comes loaded with riot-grade darts, to incapacitate a target."
|
||||
name = "Toy Gun with Riot Darts"
|
||||
desc = "An innocent-looking toy pistol designed to fire foam darts. Comes loaded with riot-grade darts effective at incapacitating a target."
|
||||
item = /obj/item/weapon/gun/projectile/automatic/toy/pistol/riot
|
||||
cost = 6
|
||||
cost = 3
|
||||
surplus = 10
|
||||
excludefrom = list(/datum/game_mode/gang)
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/sleepy_pen
|
||||
name = "Sleepy Pen"
|
||||
desc = "A syringe disguised as a functional pen, filled with a potent mix of drugs, including a strong anaesthetic and a chemical that is capable of blocking the movement of the vocal chords. \
|
||||
The pen holds one dose of the mixture, and cannot be refilled."
|
||||
desc = "A syringe disguised as a functional pen, filled with a potent mix of drugs, including a strong anesthetic and a chemical that prevents the target from speaking. \
|
||||
The pen holds one dose of the mixture, and cannot be refilled. Note that before the target falls asleep, they will be able to move and act."
|
||||
item = /obj/item/weapon/pen/sleepy
|
||||
cost = 4
|
||||
excludefrom = list(/datum/game_mode/nuclear,/datum/game_mode/gang)
|
||||
@@ -384,11 +384,18 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/traitor_chem_bottle
|
||||
name = "Poison Kit"
|
||||
desc = "An assortment of nasty chemicals."
|
||||
desc = "An assortment of deadly chemicals packed into a compact box. Hard to utilize if there is no method of application."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/chemical
|
||||
cost = 6
|
||||
surplus = 50
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/dart_pistol
|
||||
name = "Dart Pistol"
|
||||
desc = "A miniaturized version of a normal syringe gun. It is very quiet when fired and can fit into any space a small item can."
|
||||
item = /obj/item/weapon/gun/syringe/syndicate
|
||||
cost = 4
|
||||
surplus = 50 //High chance of surplus due to poison kit also having a high chance
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/detomatix
|
||||
name = "Detomatix PDA Cartridge"
|
||||
desc = "When inserted into a personal digital assistant, this cartridge gives you four opportunities to detonate PDAs of crewmembers who have their message feature enabled. \
|
||||
@@ -407,7 +414,7 @@ var/list/uplink_items = list()
|
||||
name = "Pizza Bomb"
|
||||
desc = "A pizza box with a bomb taped inside it. The timer needs to be set by opening the box; afterwards, opening the box again will trigger the detonation."
|
||||
item = /obj/item/device/pizza_bomb
|
||||
cost = 5
|
||||
cost = 6
|
||||
surplus = 8
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/dehy_carp
|
||||
@@ -420,7 +427,7 @@ var/list/uplink_items = list()
|
||||
name = "Explosive Airlock Charge"
|
||||
desc = "A small, easily concealable device. It can be applied to an open airlock panel, and the next person to open that airlock will be knocked down in an explosion. The airlock's maintenance panel will also be destroyed by this."
|
||||
item = /obj/item/device/doorCharge
|
||||
cost = 5
|
||||
cost = 2
|
||||
surplus = 10
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
@@ -431,7 +438,7 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/stealthy_tools/chameleon_jumpsuit
|
||||
name = "Chameleon Jumpsuit"
|
||||
desc = "A jumpsuit used to imitate the uniforms of Nanotrasen crewmembers."
|
||||
desc = "A jumpsuit used to imitate the uniforms of Nanotrasen crewmembers. It can change form at any time to resemble another jumpsuit. May react unpredictably to electromagnetic disruptions."
|
||||
item = /obj/item/clothing/under/chameleon
|
||||
cost = 2
|
||||
|
||||
@@ -445,46 +452,47 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/stealthy_tools/syndigaloshes
|
||||
name = "No-Slip Brown Shoes"
|
||||
desc = "These allow you to run on wet floors. They do not work on lubricated surfaces."
|
||||
desc = "These shoes will allow the wearer to run on wet floors and slippery objects without falling down. They do not work on heavily lubricated surfaces."
|
||||
item = /obj/item/clothing/shoes/sneakers/syndigaloshes
|
||||
cost = 2
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/stealthy_tools/syndigaloshes/nuke
|
||||
name = "Tactical No-Slip Brown Shoes"
|
||||
desc = "These allow you to run on wet floors. They do not work on lubricated surfaces, and the maker swears they're better than normal ones, somehow."
|
||||
desc = "These allow you to run on wet floors. They do not work on lubricated surfaces, but the manufacturer guarantees they're somehow better than the normal ones."
|
||||
cost = 4 //but they aren't
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/stealthy_tools/agent_card
|
||||
name = "Agent Identification card"
|
||||
desc = "Agent cards prevent artificial intelligences from tracking the wearer, and can copy access from other identification cards. The access is cumulative, so scanning one card does not erase the access gained from another."
|
||||
name = "Agent Identification Card"
|
||||
desc = "Agent cards prevent artificial intelligences from tracking the wearer, and can copy access from other identification cards. The access is cumulative, so scanning one card does not erase the access gained from another. \
|
||||
In addition, they can be forged to display a new assignment and name. This can be done an unlimited amount of times. Some Syndicate areas can only be accessed with these cards."
|
||||
item = /obj/item/weapon/card/id/syndicate
|
||||
cost = 2
|
||||
|
||||
/datum/uplink_item/stealthy_tools/voice_changer
|
||||
name = "Voice Changer"
|
||||
item = /obj/item/clothing/mask/gas/voice
|
||||
desc = "A conspicuous gas mask that mimics the voice named on your identification card. When no identification is worn, the mask will render your voice unrecognizable."
|
||||
desc = "A conspicuous gas mask that mimics the voice named on your identification card. It can be toggled on and off."
|
||||
cost = 3
|
||||
|
||||
/datum/uplink_item/stealthy_tools/chameleon_proj
|
||||
name = "Chameleon-Projector"
|
||||
desc = "Projects an image across a user, disguising them as an object scanned with it, as long as they don't move the projector from their hand. Disguised users cannot run, and projectiles pass over them."
|
||||
name = "Chameleon Projector"
|
||||
desc = "Projects an image across a user, disguising them as an object scanned with it, as long as they don't move the projector from their hand. Disguised users move slowly, and projectiles pass over them."
|
||||
item = /obj/item/device/chameleon
|
||||
cost = 7
|
||||
excludefrom = list(/datum/game_mode/gang)
|
||||
|
||||
/datum/uplink_item/stealthy_tools/camera_bug
|
||||
name = "Camera Bug"
|
||||
desc = "Enables you to view all cameras on the network and track a target. Bugging cameras allows you to disable them remotely"
|
||||
desc = "Enables you to view all cameras on the network and track a target. Bugging cameras allows you to disable them remotely."
|
||||
item = /obj/item/device/camera_bug
|
||||
cost = 1
|
||||
surplus = 90
|
||||
|
||||
/datum/uplink_item/stealthy_tools/smugglersatchel
|
||||
name = "Smuggler's Satchel"
|
||||
desc = "This satchel is thin enough to be hidden in the gap between plating and tiling, great for stashing your stolen goods. Comes with a crowbar and a floor tile inside."
|
||||
desc = "This satchel is thin enough to be hidden in the gap between plating and tiling; great for stashing your stolen goods. Comes with a crowbar and a floor tile inside."
|
||||
item = /obj/item/weapon/storage/backpack/satchel_flat
|
||||
cost = 2
|
||||
surplus = 30
|
||||
@@ -503,14 +511,14 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/device_tools/emag
|
||||
name = "Cryptographic Sequencer"
|
||||
desc = "The cryptographic sequencer, or emag, is a small card that unlocks hidden functions in electronic devices, subverts intended functions and characteristically breaks security mechanisms."
|
||||
desc = "The cryptographic sequencer, or emag, is a small card that unlocks hidden functions in electronic devices, subverts intended functions, and characteristically breaks security mechanisms."
|
||||
item = /obj/item/weapon/card/emag
|
||||
cost = 6
|
||||
excludefrom = list(/datum/game_mode/gang)
|
||||
|
||||
/datum/uplink_item/device_tools/toolbox
|
||||
name = "Full Syndicate Toolbox"
|
||||
desc = "The syndicate toolbox is a suspicious black and red. Aside from tools, it comes with cable and a multitool. Insulated gloves are not included."
|
||||
desc = "The syndicate toolbox is a suspicious black and red. It comes loaded with a full tool set including a multitool and combat gloves that are resistant to shocks and heat."
|
||||
item = /obj/item/weapon/storage/toolbox/syndicate
|
||||
cost = 1
|
||||
|
||||
@@ -522,15 +530,15 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/device_tools/military_belt
|
||||
name = "Military Belt"
|
||||
desc = "A robust seven-slot red belt made for carrying a broad variety of weapons, ammunition and explosives"
|
||||
desc = "A robust seven-slot red belt that is capable of holding all items that can fit into it."
|
||||
item = /obj/item/weapon/storage/belt/military
|
||||
cost = 3
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/device_tools/medkit
|
||||
name = "Syndicate Combat Medic Kit"
|
||||
desc = "The syndicate medkit is a suspicious black and red. Included is a combat stimulant injector for rapid healing, a medical hud for quick identification of injured comrades, \
|
||||
and other medical supplies helpful for a medical field operative."
|
||||
desc = "This first aid kit is a suspicious brown and red. Included is a combat stimulant injector for rapid healing, a medical HUD for quick identification of injured personnel, \
|
||||
and other supplies helpful for a field medic."
|
||||
item = /obj/item/weapon/storage/firstaid/tactical
|
||||
cost = 9
|
||||
gamemodes = list(/datum/game_mode/nuclear,/datum/game_mode/gang)
|
||||
@@ -544,18 +552,18 @@ var/list/uplink_items = list()
|
||||
excludefrom = list(/datum/game_mode/gang)
|
||||
|
||||
/datum/uplink_item/device_tools/hardsuit
|
||||
name = "Blood-red Hardsuit"
|
||||
name = "Blood-Red Hardsuit"
|
||||
desc = "The feared suit of a syndicate nuclear agent. Features slightly better armoring and a built in jetpack that runs off standard atmospheric tanks. \
|
||||
When the built in helmet is deployed your identity will be protected, even in death, as the suit cannot be removed by outside forces. Toggling the suit into combat mode \
|
||||
will allow you all the mobility of a loose fitting uniform without sacrificing armoring. Additionally the suit is collapsible, small enough to fit within a backpack. \
|
||||
Nanotrasen crewmembers are trained to report red space suit sightings, these suits in particular are known to drive employees into a panic."
|
||||
Nanotrasen crewmembers are trained to report red space suit sightings; these suits in particular are known to drive employees into a panic."
|
||||
item = /obj/item/clothing/suit/space/hardsuit/syndi
|
||||
cost = 8
|
||||
excludefrom = list(/datum/game_mode/gang)
|
||||
|
||||
/datum/uplink_item/device_tools/thermal
|
||||
name = "Thermal Imaging Glasses"
|
||||
desc = "These glasses are thermals disguised as engineers' optical meson scanners. \
|
||||
desc = "These goggles can be turned to resemble common eyewears throughout the station. \
|
||||
They allow you to see organisms through walls by capturing the upper portion of the infrared light spectrum, emitted as heat and light by objects. \
|
||||
Hotter objects, such as warm bodies, cybernetic organisms and artificial intelligence cores emit more of this light than cooler objects like walls and airlocks." //THEN WHY CANT THEY SEE PLASMA FIRES????
|
||||
item = /obj/item/clothing/glasses/thermal/syndi
|
||||
@@ -563,14 +571,16 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/device_tools/binary
|
||||
name = "Binary Translator Key"
|
||||
desc = "A key, that when inserted into a radio headset, allows you to listen to and talk with artificial intelligences and cybernetic organisms in binary. "
|
||||
desc = "A key that, when inserted into a radio headset, allows you to listen to and talk with silicon-based lifeforms, such as AI units and cyborgs, over their private binary channel. Caution should \
|
||||
be taken while doing this, as unless they are allied with you, they are programmed to report such intrusions."
|
||||
item = /obj/item/device/encryptionkey/binary
|
||||
cost = 5
|
||||
surplus = 75
|
||||
|
||||
/datum/uplink_item/device_tools/encryptionkey
|
||||
name = "Syndicate Encryption Key"
|
||||
desc = "A key, that when inserted into a radio headset, allows you to listen to all station department channels as well as talk on an encrypted Syndicate channel."
|
||||
desc = "A key that, when inserted into a radio headset, allows you to listen to all station department channels as well as talk on an encrypted Syndicate channel with other agents that have the same \
|
||||
key."
|
||||
item = /obj/item/device/encryptionkey/syndicate
|
||||
cost = 2 //Nowhere near as useful as the Binary Key!
|
||||
surplus = 75
|
||||
@@ -603,25 +613,26 @@ var/list/uplink_items = list()
|
||||
cost = 1
|
||||
|
||||
/datum/uplink_item/device_tools/powersink
|
||||
name = "Power sink"
|
||||
desc = "When screwed to wiring attached to an electric grid, then activated, this large device places excessive load on the grid, causing a stationwide blackout. The sink cannot be carried because of its excessive size. \
|
||||
Ordering this sends you a small beacon that will teleport the power sink to your location on activation."
|
||||
name = "Power Sink"
|
||||
desc = "When screwed to wiring attached to a power grid and activated, this large device places excessive load on the grid, causing a stationwide blackout. The sink is large and cannot be stored in \
|
||||
most traditional bags and boxes."
|
||||
item = /obj/item/device/powersink
|
||||
cost = 10
|
||||
|
||||
/datum/uplink_item/device_tools/singularity_beacon
|
||||
name = "Singularity Beacon"
|
||||
desc = "When screwed to wiring attached to an electric grid, then activated, this large device pulls the singularity towards it. \
|
||||
Does not work when the singularity is still in containment. A singularity beacon can cause catastrophic damage to a space station, \
|
||||
leading to an emergency evacuation. Because of its size, it cannot be carried. Ordering this sends you a small beacon that will teleport the larger beacon to your location on activation."
|
||||
desc = "When screwed to wiring attached to an electric grid and activated, this large device pulls any active gravitational singularities towards it. \
|
||||
This will not work when the singularity is still in containment. A singularity beacon can cause catastrophic damage to a space station, \
|
||||
leading to an emergency evacuation. Because of its size, it cannot be carried. Ordering this sends you a small beacon that will teleport the larger beacon to your location upon activation."
|
||||
item = /obj/item/device/sbeacondrop
|
||||
cost = 14
|
||||
excludefrom = list(/datum/game_mode/gang)
|
||||
|
||||
/datum/uplink_item/device_tools/syndicate_bomb
|
||||
name = "Syndicate Bomb"
|
||||
desc = "The Syndicate Bomb has an adjustable timer with a minimum setting of 60 seconds. Ordering the bomb sends you a small beacon, which will teleport the explosive to your location when you activate it. \
|
||||
You can wrench the bomb down to prevent removal. The crew may attempt to defuse the bomb."
|
||||
desc = "The Syndicate bomb is a fearsome device capable of massive destruction. It has an adjustable timer, with a minimum of 60 seconds, and can be bolted to the floor with a wrench to prevent \
|
||||
movement. The bomb is bulky and cannot be moved; upon ordering this item, a smaller beacon will be transported to you that will teleport the actual bomb to it upon activation. Note that this bomb can \
|
||||
be defused, and some crew may attempt to do so."
|
||||
item = /obj/item/device/sbeacondrop/bomb
|
||||
cost = 11
|
||||
|
||||
@@ -634,7 +645,7 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/device_tools/syndicate_detonator
|
||||
name = "Syndicate Detonator"
|
||||
desc = "The Syndicate Detonator is a companion device to the Syndicate Bomb. Simply press the included button and an encrypted radio frequency will instruct all live syndicate bombs to detonate. \
|
||||
desc = "The Syndicate detonator is a companion device to the Syndicate bomb. Simply press the included button and an encrypted radio frequency will instruct all live Syndicate bombs to detonate. \
|
||||
Useful for when speed matters or you wish to synchronize multiple bomb blasts. Be sure to stand clear of the blast radius before using the detonator."
|
||||
item = /obj/item/device/syndicatedetonator
|
||||
cost = 3
|
||||
@@ -642,7 +653,7 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/device_tools/teleporter
|
||||
name = "Teleporter Circuit Board"
|
||||
desc = "A printed circuit board that completes the teleporter onboard the mothership. Advise you test fire the teleporter before entering it, as malfunctions can occur."
|
||||
desc = "A printed circuit board that completes the teleporter onboard the mothership. It is advised you calibrate the teleporter before entering it, as malfunctions can occur."
|
||||
item = /obj/item/weapon/circuitboard/teleporter
|
||||
cost = 40
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
@@ -664,34 +675,34 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/implants/freedom
|
||||
name = "Freedom Implant"
|
||||
desc = "An implant injected into the body and later activated using a bodily gesture to attempt to slip restraints."
|
||||
desc = "An implant injected into the body and later activated at the user's will. It will attempt to free the user from common restraints such as handcuffs."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/imp_freedom
|
||||
cost = 5
|
||||
|
||||
/datum/uplink_item/implants/uplink
|
||||
name = "Uplink Implant"
|
||||
desc = "An implant injected into the body, and later activated using a bodily gesture to open an uplink with 10 telecrystals. \
|
||||
The ability for an agent to open an uplink after their possessions have been stripped from them makes this implant excellent for escaping confinement."
|
||||
desc = "An implant injected into the body, and later activated at the user's will. It will open a separate uplink with 10 telecrystals. The ability to have these telecrystals, combined with no easy \
|
||||
way to detect the ipmlant, makes this excellent for escaping confinement."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/imp_uplink
|
||||
cost = 14
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/implants/adrenal
|
||||
name = "Adrenal Implant"
|
||||
desc = "An implant injected into the body, and later activated using a bodily gesture to inject a chemical cocktail, which has a mild healing effect along with removing all stuns and increasing his speed."
|
||||
desc = "An implant injected into the body, and later activated at the user's will. It will inject a chemical cocktail which has a mild healing effect along with removing all stuns and increasing movement speed."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/imp_adrenal
|
||||
cost = 8
|
||||
|
||||
/datum/uplink_item/implants/storage
|
||||
name = "Storage Implant"
|
||||
desc = "An implant injected into the body and later used to store up to two big items in a subspace pocket."
|
||||
desc = "An implant injected into the body, and later activated at the user's will. It will open a small subspace pocket capable of storing two items."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/imp_storage
|
||||
cost = 8
|
||||
|
||||
/datum/uplink_item/implants/microbomb
|
||||
name = "Microbomb Implant"
|
||||
desc = "An implant injected into the body, and later activated either manually or automatically upon death. The more implants inside of you, the higher the explosive power. \
|
||||
Will permanently destroy your body, however."
|
||||
This will permanently destroy your body, however."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/imp_microbomb
|
||||
cost = 2
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
@@ -706,31 +717,31 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/cyber_implants/thermals
|
||||
name = "Thermal Vision Implant"
|
||||
desc = "These cybernetic eyes will give you thermal vision."
|
||||
desc = "These cybernetic eyes will give you thermal vision. They must be implanted via surgery."
|
||||
item = /obj/item/organ/internal/cyberimp/eyes/thermals
|
||||
cost = 8
|
||||
|
||||
/datum/uplink_item/cyber_implants/xray
|
||||
name = "X-Ray Vision Implant"
|
||||
desc = "These cybernetic eyes will give you X-ray vision."
|
||||
desc = "These cybernetic eyes will give you X-ray vision. They must be implanted via surgery."
|
||||
item = /obj/item/organ/internal/cyberimp/eyes/xray
|
||||
cost = 10
|
||||
|
||||
/datum/uplink_item/cyber_implants/antistun
|
||||
name = "CNS Rebooter Implant"
|
||||
desc = "This implant will help you get back up on your feet faster after being stunned."
|
||||
desc = "This implant will help you get back up on your feet faster after being stunned. It must be implanted via surgery."
|
||||
item = /obj/item/organ/internal/cyberimp/brain/anti_stun
|
||||
cost = 12
|
||||
|
||||
/datum/uplink_item/cyber_implants/reviver
|
||||
name = "Reviver Implant"
|
||||
desc = "This implant will attempt to revive you if you lose consciousness."
|
||||
desc = "This implant will attempt to revive you if you lose consciousness. It must be implanted via surgery."
|
||||
item = /obj/item/organ/internal/cyberimp/chest/reviver
|
||||
cost = 8
|
||||
|
||||
/datum/uplink_item/cyber_implants/bundle
|
||||
name = "Cybernetic Implants Bundle"
|
||||
desc = "A random selection of cybernetic implants. Guaranteed 5 high quality implants."
|
||||
desc = "A random selection of cybernetic implants. Guaranteed 5 high quality implants. They must be implanted via surgery."
|
||||
item = /obj/item/weapon/storage/box/cyber_implants
|
||||
cost = 40
|
||||
|
||||
@@ -743,7 +754,7 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/badass/syndiecigs
|
||||
name = "Syndicate Smokes"
|
||||
desc = "Strong flavor, dense smoke, infused with Omnizine."
|
||||
desc = "Strong flavor, dense smoke, infused with omnizine."
|
||||
item = /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate
|
||||
cost = 2
|
||||
|
||||
@@ -771,14 +782,14 @@ var/list/uplink_items = list()
|
||||
cost = 1
|
||||
|
||||
/datum/uplink_item/badass/balloon
|
||||
name = "For showing that you are The Boss"
|
||||
desc = "A useless red balloon with the syndicate logo on it, which can blow the deepest of covers."
|
||||
name = "For showing that you are THE BOSS"
|
||||
desc = "A useless red balloon with the Syndicate logo on it. Can blow the deepest of covers."
|
||||
item = /obj/item/toy/syndicateballoon
|
||||
cost = 20
|
||||
|
||||
/datum/uplink_item/implants/macrobomb
|
||||
name = "Macrobomb Implant"
|
||||
desc = "An implant injected into the body, and later activated either manually or automatically upon death. Maximum explosion power."
|
||||
desc = "An implant injected into the body, and later activated either manually or automatically upon death. Upon death, releases a massive explosion that will wipe out everything nearby."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/imp_macrobomb
|
||||
cost = 20
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
@@ -120,16 +120,21 @@
|
||||
target.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll/apprentice(target), slot_r_store)
|
||||
|
||||
/obj/item/weapon/antag_spawner/borg_tele
|
||||
name = "Syndicate Cyborg Teleporter"
|
||||
desc = "A single-use teleporter used to deploy a Syndicate Cyborg on the field."
|
||||
name = "syndicate cyborg teleporter"
|
||||
desc = "A single-use teleporter used to deploy a Syndicate cyborg on the field."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "locator"
|
||||
var/TC_cost = 0
|
||||
var/borg_to_spawn
|
||||
var/list/possible_types = list("Assault", "Medical")
|
||||
|
||||
/obj/item/weapon/antag_spawner/borg_tele/attack_self(mob/user)
|
||||
if(used)
|
||||
user << "The teleporter is out of power."
|
||||
return
|
||||
borg_to_spawn = input("What type?", "Cyborg Type", type) as null|anything in possible_types
|
||||
if(!borg_to_spawn)
|
||||
return
|
||||
var/list/borg_candicates = get_candidates(BE_OPERATIVE)
|
||||
if(borg_candicates.len > 0)
|
||||
used = 1
|
||||
@@ -139,10 +144,18 @@
|
||||
user << "<span class='notice'>Unable to connect to Syndicate Command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.</span>"
|
||||
|
||||
/obj/item/weapon/antag_spawner/borg_tele/spawn_antag(client/C, turf/T, type = "")
|
||||
if(!borg_to_spawn) //If there's no type at all, let it still be used but don't do anything
|
||||
used = 0
|
||||
return
|
||||
var/datum/effect/effect/system/spark_spread/S = new /datum/effect/effect/system/spark_spread
|
||||
S.set_up(4, 1, src)
|
||||
S.start()
|
||||
var/mob/living/silicon/robot/R = new /mob/living/silicon/robot/syndicate(T)
|
||||
var/mob/living/silicon/robot/R
|
||||
switch(borg_to_spawn)
|
||||
if("Medical")
|
||||
R = new /mob/living/silicon/robot/syndicate/medical(T)
|
||||
else
|
||||
R = new /mob/living/silicon/robot/syndicate(T) //Assault borg by default
|
||||
R.key = C.key
|
||||
ticker.mode.syndicates += R.mind
|
||||
ticker.mode.update_synd_icons_added(R.mind)
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
#define CAMERA_UPGRADE_XRAY 1
|
||||
#define CAMERA_UPGRADE_EMP_PROOF 2
|
||||
#define CAMERA_UPGRADE_MOTION 4
|
||||
|
||||
/obj/machinery/camera
|
||||
name = "security camera"
|
||||
desc = "It's used to monitor rooms."
|
||||
@@ -29,6 +33,9 @@
|
||||
var/busy = 0
|
||||
var/emped = 0 //Number of consecutive EMP's on this camera
|
||||
|
||||
// Upgrades bitflag
|
||||
var/upgrades = 0
|
||||
|
||||
/obj/machinery/camera/New()
|
||||
..()
|
||||
assembly = new(src)
|
||||
|
||||
@@ -61,25 +61,25 @@
|
||||
// CHECKS
|
||||
|
||||
/obj/machinery/camera/proc/isEmpProof()
|
||||
var/O = locate(/obj/item/stack/sheet/mineral/plasma) in assembly.upgrades
|
||||
return O
|
||||
return upgrades & CAMERA_UPGRADE_EMP_PROOF
|
||||
|
||||
/obj/machinery/camera/proc/isXRay()
|
||||
var/O = locate(/obj/item/device/analyzer) in assembly.upgrades
|
||||
return O
|
||||
return upgrades & CAMERA_UPGRADE_XRAY
|
||||
|
||||
/obj/machinery/camera/proc/isMotion()
|
||||
var/O = locate(/obj/item/device/assembly/prox_sensor) in assembly.upgrades
|
||||
return O
|
||||
return upgrades & CAMERA_UPGRADE_MOTION
|
||||
|
||||
// UPGRADE PROCS
|
||||
|
||||
/obj/machinery/camera/proc/upgradeEmpProof()
|
||||
assembly.upgrades.Add(new /obj/item/stack/sheet/mineral/plasma(assembly))
|
||||
upgrades |= CAMERA_UPGRADE_EMP_PROOF
|
||||
|
||||
/obj/machinery/camera/proc/upgradeXRay()
|
||||
assembly.upgrades.Add(new /obj/item/device/analyzer(assembly))
|
||||
upgrades |= CAMERA_UPGRADE_XRAY
|
||||
|
||||
// If you are upgrading Motion, and it isn't in the camera's New(), add it to the machines list.
|
||||
/obj/machinery/camera/proc/upgradeMotion()
|
||||
assembly.upgrades.Add(new /obj/item/device/assembly/prox_sensor(assembly))
|
||||
upgrades |= CAMERA_UPGRADE_MOTION
|
||||
|
||||
@@ -324,7 +324,9 @@ About the new airlock wires panel:
|
||||
/obj/machinery/door/airlock/examine(mob/user)
|
||||
..()
|
||||
if(charge && !p_open && in_range(user, src))
|
||||
user << "The maintenance panel is bulging slightly."
|
||||
user << "<span class='warning'>The maintenance panel seems haphazardly fastened.</span>"
|
||||
if(charge && p_open)
|
||||
user << "<span class='warning'>Something is wired up to the airlock's electronics!</span>"
|
||||
|
||||
/obj/machinery/door/airlock/attack_ai(mob/user)
|
||||
if(!src.canAIControl())
|
||||
@@ -802,7 +804,7 @@ About the new airlock wires panel:
|
||||
if(p_open && charge)
|
||||
user << "<span class='notice'>You carefully start removing [charge] from [src]...</span>"
|
||||
playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)
|
||||
if(!do_after(user, 150))
|
||||
if(!do_after(user, 150, target = src))
|
||||
user << "<span class='warning'>You slip and [charge] detonates!</span>"
|
||||
charge.ex_act(1)
|
||||
user.Weaken(3)
|
||||
@@ -810,9 +812,6 @@ About the new airlock wires panel:
|
||||
user.visible_message("<span class='notice'>[user] removes [charge] from [src].</span>", \
|
||||
"<span class='notice'>You gently pry out [charge] from [src] and unhook its wires.</span>")
|
||||
charge.loc = get_turf(user)
|
||||
if(prob(25))
|
||||
charge.ex_act(1)
|
||||
return
|
||||
charge = null
|
||||
return
|
||||
if( beingcrowbarred && (density && welded && !operating && src.p_open && (!hasPower()) && !src.locked) )
|
||||
@@ -920,6 +919,7 @@ About the new airlock wires panel:
|
||||
p_open = 1
|
||||
update_icon(AIRLOCK_OPENING)
|
||||
visible_message("<span class='warning'>[src]'s panel is blown off in a spray of deadly shrapnel!</span>")
|
||||
charge.loc = get_turf(src)
|
||||
charge.ex_act(1)
|
||||
detonated = 1
|
||||
charge = null
|
||||
@@ -927,6 +927,7 @@ About the new airlock wires panel:
|
||||
H.Paralyse(8)
|
||||
H.adjust_fire_stacks(1)
|
||||
H.IgniteMob() //Guaranteed knockout and ignition for nearby people
|
||||
H.apply_damage(20, BRUTE, "chest")
|
||||
return
|
||||
if(forced < 2)
|
||||
if(emagged)
|
||||
|
||||
@@ -281,10 +281,24 @@
|
||||
var/cooldown = 0
|
||||
var/busy = 0
|
||||
var/obj/item/weapon/defibrillator/defib
|
||||
var/req_defib = 1
|
||||
var/combat = 0 //If it penetrates armor and gives additional functionality
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/proc/recharge(var/time)
|
||||
if(req_defib || !time)
|
||||
return
|
||||
cooldown = 1
|
||||
update_icon()
|
||||
sleep(time)
|
||||
var/turf/T = get_turf(src)
|
||||
T.audible_message("<span class='notice'>[src] beeps: Unit is recharged.</span>")
|
||||
playsound(T, 'sound/machines/defib_ready.ogg', 50, 0)
|
||||
cooldown = 0
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/New(mainunit)
|
||||
..()
|
||||
if(check_defib_exists(mainunit, src))
|
||||
if(check_defib_exists(mainunit, src) && req_defib)
|
||||
defib = mainunit
|
||||
loc = defib
|
||||
busy = 0
|
||||
@@ -299,11 +313,14 @@
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/suicide_act(mob/user)
|
||||
user.visible_message("<span class='danger'>[user] is putting the live paddles on \his chest! It looks like \he's trying to commit suicide.</span>")
|
||||
defib.deductcharge(revivecost)
|
||||
if(req_defib)
|
||||
defib.deductcharge(revivecost)
|
||||
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
|
||||
return (OXYLOSS)
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/dropped(mob/user)
|
||||
if(!req_defib)
|
||||
return ..()
|
||||
if(user)
|
||||
var/obj/item/weapon/twohanded/O = user.get_inactive_hand()
|
||||
if(istype(O))
|
||||
@@ -315,6 +332,8 @@
|
||||
return unwield(user)
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/proc/check_defib_exists(mainunit, mob/living/carbon/human/M, obj/O)
|
||||
if(!req_defib)
|
||||
return 1 //If it doesn't need a defib, just say it exists
|
||||
if (!mainunit || !istype(mainunit, /obj/item/weapon/defibrillator)) //To avoid weird issues from admin spawns
|
||||
M.unEquip(O)
|
||||
qdel(O)
|
||||
@@ -327,22 +346,35 @@
|
||||
|
||||
if(busy)
|
||||
return
|
||||
if(!defib.powered)
|
||||
if(req_defib && !defib.powered)
|
||||
user.visible_message("<span class='notice'>[defib] beeps: Unit is unpowered.</span>")
|
||||
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
|
||||
return
|
||||
if(!wielded)
|
||||
user << "<span class='warning'>You need to wield the paddles in both hands before you can use them on someone!</span>"
|
||||
if(isrobot(user))
|
||||
user << "<span class='warning'>You must activate the paddles in your active module before you can use them on someone!</span>"
|
||||
else
|
||||
user << "<span class='warning'>You need to wield the paddles in both hands before you can use them on someone!</span>"
|
||||
return
|
||||
if(cooldown)
|
||||
user << "<span class='warning'>[defib] is recharging!</span>"
|
||||
if(req_defib)
|
||||
user << "<span class='warning'>[defib] is recharging!</span>"
|
||||
else
|
||||
user << "<span class='warning'>[src] are recharging!</span>"
|
||||
return
|
||||
if(!ishuman(M))
|
||||
user << "<span class='warning'>The instructions on [defib] don't mention how to revive that...</span>"
|
||||
if(req_defib)
|
||||
user << "<span class='warning'>The instructions on [defib] don't mention how to revive that...</span>"
|
||||
else
|
||||
user << "<span class='warning'>You aren't sure how to revive that...</span>"
|
||||
return
|
||||
else
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(user.a_intent == "disarm" && !defib.safety)
|
||||
if(user.a_intent == "disarm")
|
||||
if(req_defib && defib.safety)
|
||||
return
|
||||
if(!req_defib && !combat)
|
||||
return
|
||||
busy = 1
|
||||
H.visible_message("<span class='danger'>[user] has touched [H.name] with [src]!</span>", \
|
||||
"<span class='userdanger'>[user] has touched [H.name] with [src]!</span>")
|
||||
@@ -351,15 +383,23 @@
|
||||
H.updatehealth() //forces health update before next life tick
|
||||
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
|
||||
H.emote("gasp")
|
||||
add_logs(user, M, "stunned", defib)
|
||||
defib.deductcharge(revivecost)
|
||||
cooldown = 1
|
||||
add_logs(user, M, "stunned", src)
|
||||
if(req_defib)
|
||||
defib.deductcharge(revivecost)
|
||||
cooldown = 1
|
||||
busy = 0
|
||||
update_icon()
|
||||
defib.cooldowncheck(user)
|
||||
if(req_defib)
|
||||
defib.cooldowncheck(user)
|
||||
else
|
||||
recharge(60)
|
||||
return
|
||||
if(user.zone_sel && user.zone_sel.selecting == "chest")
|
||||
if(!defib.safety && user.a_intent == "harm")
|
||||
if(user.a_intent == "harm")
|
||||
if(req_defib && defib.safety)
|
||||
return
|
||||
if(!req_defib && !combat)
|
||||
return
|
||||
user.visible_message("<span class='warning'>[user] begins to place [src] on [M.name]'s chest.</span>",
|
||||
"<span class='warning'>You overcharge the paddles and begin to place them onto [M]'s chest...</span>")
|
||||
busy = 1
|
||||
@@ -369,9 +409,16 @@
|
||||
"<span class='warning'>You place [src] on [M.name]'s chest and begin to charge them.</span>")
|
||||
var/turf/T = get_turf(defib)
|
||||
playsound(get_turf(src), 'sound/machines/defib_charge.ogg', 50, 0)
|
||||
T.audible_message("<span class='warning'>\The [defib] lets out an urgent beep and lets out a steadily rising hum...</span>")
|
||||
if(req_defib)
|
||||
T.audible_message("<span class='warning'>\The [defib] lets out an urgent beep and lets out a steadily rising hum...</span>")
|
||||
else
|
||||
user.audible_message("<span class='warning'>[src] let out an urgent beep.</span>")
|
||||
if(do_after(user, 30, target = M)) //Takes longer due to overcharging
|
||||
if(M.stat == DEAD)
|
||||
if(!M)
|
||||
busy = 0
|
||||
update_icon()
|
||||
return
|
||||
if(M && M.stat == DEAD)
|
||||
user << "<span class='warning'>[M] is dead.</span>"
|
||||
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
|
||||
busy = 0
|
||||
@@ -391,12 +438,15 @@
|
||||
add_logs(user, M, "overloaded the heart of", defib)
|
||||
M.Weaken(5)
|
||||
M.Jitter(100)
|
||||
defib.deductcharge(revivecost)
|
||||
cooldown = 1
|
||||
if(req_defib)
|
||||
defib.deductcharge(revivecost)
|
||||
cooldown = 1
|
||||
busy = 0
|
||||
update_icon()
|
||||
defib.cooldowncheck(user)
|
||||
return
|
||||
if(!req_defib)
|
||||
recharge(60)
|
||||
if(req_defib && (defib.cooldowncheck(user)))
|
||||
return
|
||||
busy = 0
|
||||
update_icon()
|
||||
return
|
||||
@@ -416,8 +466,8 @@
|
||||
if(do_after(user, 20, target = M)) //placed on chest and short delay to shock for dramatic effect, revive time is 5sec total
|
||||
for(var/obj/item/carried_item in H.contents)
|
||||
if(istype(carried_item, /obj/item/clothing/suit/space))
|
||||
if(!defib.combat)
|
||||
user.visible_message("<span class='warning'>[defib] buzzes: Patient's chest is obscured. Operation aborted.</span>")
|
||||
if((!src.combat && !req_defib) || (req_defib && !defib.combat))
|
||||
user.audible_message("<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Patient's chest is obscured. Operation aborted.</span>")
|
||||
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
|
||||
busy = 0
|
||||
update_icon()
|
||||
@@ -432,13 +482,13 @@
|
||||
var/failed = null
|
||||
|
||||
if (H.suiciding || (H.disabilities & NOCLONE))
|
||||
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile.</span>"
|
||||
failed = "<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile.</span>"
|
||||
else if ((tplus > tlimit) || !H.getorgan(/obj/item/organ/internal/heart))
|
||||
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return. Further attempts futile.</span>"
|
||||
failed = "<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return. Further attempts futile.</span>"
|
||||
else if(total_burn >= 180 || total_brute >= 180)
|
||||
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - Severe tissue damage makes recovery of patient impossible via defibrillator. Further attempts futile.</span>"
|
||||
failed = "<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Severe tissue damage makes recovery of patient impossible via defibrillator. Further attempts futile.</span>"
|
||||
else if(H.get_ghost() || !H.getorgan(/obj/item/organ/internal/brain))
|
||||
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - No activity in patient's brain. Further attempts may be successful.</span>"
|
||||
failed = "<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - No activity in patient's brain. Further attempts may be successful.</span>"
|
||||
|
||||
|
||||
if(failed)
|
||||
@@ -455,7 +505,7 @@
|
||||
H.adjustToxLoss((mobhealth - halfwaycritdeath) * (H.getToxLoss() / overall_damage))
|
||||
H.adjustFireLoss((mobhealth - halfwaycritdeath) * (total_burn / overall_damage))
|
||||
H.adjustBruteLoss((mobhealth - halfwaycritdeath) * (total_brute / overall_damage))
|
||||
user.visible_message("<span class='notice'>[defib] pings: Resuscitation successful.</span>")
|
||||
user.visible_message("<span class='notice'>[req_defib ? "[defib]" : "[src]"] pings: Resuscitation successful.</span>")
|
||||
playsound(get_turf(src), 'sound/machines/defib_success.ogg', 50, 0)
|
||||
H.stat = UNCONSCIOUS
|
||||
dead_mob_list -= H
|
||||
@@ -464,19 +514,32 @@
|
||||
if(tplus > tloss)
|
||||
H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100))))
|
||||
add_logs(user, M, "revived", defib)
|
||||
defib.deductcharge(revivecost)
|
||||
if(req_defib)
|
||||
defib.deductcharge(revivecost)
|
||||
cooldown = 1
|
||||
update_icon()
|
||||
cooldown = 1
|
||||
defib.cooldowncheck(user)
|
||||
if(req_defib)
|
||||
defib.cooldowncheck(user)
|
||||
else
|
||||
recharge(60)
|
||||
else if(H.heart_attack)
|
||||
H.heart_attack = 0
|
||||
user.visible_message("<span class='notice'>[defib] pings: Patient's heart is now beating again.</span>")
|
||||
user.visible_message("<span class='notice'>[req_defib ? "[defib]" : "[src]"] pings: Patient's heart is now beating again.</span>")
|
||||
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
|
||||
else
|
||||
user.visible_message("<span class='warning'>[defib] buzzes: Patient is not in a valid state. Operation aborted.</span>")
|
||||
user.visible_message("<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Patient is not in a valid state. Operation aborted.</span>")
|
||||
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
|
||||
busy = 0
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class='warning'>You need to target your patient's chest with [src]!</span>"
|
||||
return
|
||||
|
||||
/obj/item/weapon/twohanded/shockpaddles/syndicate
|
||||
name = "syndicate defibrillator paddles"
|
||||
desc = "A pair of paddles used to revive deceased operatives. It possesses both the ability to penetrate armor and todeliver powerful shocks offensively."
|
||||
combat = 1
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "defibpaddles0"
|
||||
item_state = "defibpaddles0"
|
||||
req_defib = 0
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg
|
||||
var/hitcost = 500
|
||||
var/hitcost = 50
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
|
||||
if(R.cell)
|
||||
@@ -103,6 +103,28 @@
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs
|
||||
name = "energy saw"
|
||||
desc = "For heavy duty cutting. It has a carbon-fiber blade and an energy capacitor that can be toggled to make it more powerful."
|
||||
icon_state = "esaw"
|
||||
force_on = 30
|
||||
force = 18 //About as much as a spear
|
||||
hitsound = 'sound/weapons/circsawhit.ogg'
|
||||
origin_tech = "materials=3;biotech=3;syndicate=3"
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
icon_state = "esaw_0"
|
||||
icon_state_on = "esaw_1"
|
||||
hitcost = 75 //Costs more because it's not intended to be a murderbone weapon
|
||||
item_color = null
|
||||
w_class = 3
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg/saw/New()
|
||||
..()
|
||||
item_color = null
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/cyborg/saw/IsShield()
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/saber
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/saber/blue
|
||||
|
||||
@@ -37,7 +37,10 @@
|
||||
else //something wrong
|
||||
name = "[initial(name)]"
|
||||
update_icon()
|
||||
user << "<span class='notice'>You are now carrying the [name] with one hand.</span>"
|
||||
if(isrobot(user))
|
||||
user << "<span class='notice'>You free up your module.</span>"
|
||||
else
|
||||
user << "<span class='notice'>You are now carrying the [name] with one hand.</span>"
|
||||
if(unwieldsound)
|
||||
playsound(loc, unwieldsound, 50, 1)
|
||||
var/obj/item/weapon/twohanded/offhand/O = user.get_inactive_hand()
|
||||
@@ -57,7 +60,10 @@
|
||||
force = force_wielded
|
||||
name = "[name] (Wielded)"
|
||||
update_icon()
|
||||
user << "<span class='notice'>You grab the [name] with both hands.</span>"
|
||||
if(isrobot(user))
|
||||
user << "<span class='notice'>You dedicate your module to [name].</span>"
|
||||
else
|
||||
user << "<span class='notice'>You grab the [name] with both hands.</span>"
|
||||
if (wieldsound)
|
||||
playsound(loc, wieldsound, 50, 1)
|
||||
var/obj/item/weapon/twohanded/offhand/O = new(user) ////Let's reserve his other hand~
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
/datum/round_event/alien_infestation/start()
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in world)
|
||||
if(qdeleted(temp_vent))
|
||||
continue
|
||||
if(temp_vent.loc.z == ZLEVEL_STATION && !temp_vent.welded)
|
||||
var/datum/pipeline/temp_vent_parent = temp_vent.PARENT1
|
||||
if(temp_vent_parent.other_atmosmch.len > 20) //Stops Aliens getting stuck in small networks. See: Security, Virology
|
||||
|
||||
@@ -1109,8 +1109,12 @@
|
||||
scrambledcodes = 1
|
||||
modtype = "Synd"
|
||||
faction = list("syndicate")
|
||||
designation = "Syndicate"
|
||||
designation = "Syndicate Assault"
|
||||
req_access = list(access_syndicate)
|
||||
var/playstyle_string = "<span class='userdanger'>You are a Syndicate assault cyborg!</span><br>\
|
||||
<b>You are armed with powerful offensive tools to aid you in your mission: help the operatives secure the nuclear authentication disk. \
|
||||
Your cyborg LMG will slowly produce ammunition from your power supply, and your operative pinpointer will find and locate fellow nuclear operatives. \
|
||||
<i>Help the operatives secure the disk at all costs!</i></b>"
|
||||
|
||||
/mob/living/silicon/robot/syndicate/New(loc)
|
||||
..()
|
||||
@@ -1120,6 +1124,23 @@
|
||||
module = new /obj/item/weapon/robot_module/syndicate(src)
|
||||
laws = new /datum/ai_laws/syndicate_override()
|
||||
|
||||
/mob/living/silicon/robot/syndicate/medical
|
||||
icon_state = "syndi-medi"
|
||||
designation = "Syndicate Medical"
|
||||
playstyle_string = "<span class='userdanger'>You are a Syndicate medical cyborg!</span><br>\
|
||||
<b>You are armed with powerful medical tools to aid you in your mission: help the operatives secure the nuclear authentication disk. \
|
||||
Your hypospray will produce Restorative Nanites, a wonder-drug that will heal most types of bodily damages, including clone and brain damage. It also produces morphine for offense. \
|
||||
Your defibrillator paddles can revive operatives through their hardsuits, or can be used on harm intent to shock enemies! \
|
||||
Your energy saw functions as a circular saw, but can be activated to deal more damage, and your operative pinpointer will find and locate fellow nuclear operatives. \
|
||||
<i>Help the operatives secure the disk at all costs!</i></b>"
|
||||
|
||||
/mob/living/silicon/robot/syndicate/New(loc)
|
||||
..()
|
||||
module = new /obj/item/weapon/robot_module/syndicate_medical(src)
|
||||
spawn(5)
|
||||
if(playstyle_string)
|
||||
src << playstyle_string
|
||||
|
||||
/mob/living/silicon/robot/proc/notify_ai(notifytype, oldname, newname)
|
||||
if(!connected_ai)
|
||||
return
|
||||
|
||||
@@ -248,7 +248,7 @@
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate
|
||||
name = "syndicate robot module"
|
||||
name = "syndicate assault robot module"
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate/New()
|
||||
..()
|
||||
@@ -262,6 +262,37 @@
|
||||
emag = null
|
||||
fix_modules()
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate_medical
|
||||
name = "syndicate medical robot module"
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate_medical/New()
|
||||
..()
|
||||
modules += new /obj/item/weapon/reagent_containers/borghypo/syndicate(src)
|
||||
modules += new /obj/item/weapon/twohanded/shockpaddles/syndicate(src)
|
||||
modules += new /obj/item/device/healthanalyzer(src)
|
||||
modules += new /obj/item/weapon/reagent_containers/syringe(src)
|
||||
modules += new /obj/item/weapon/surgical_drapes(src)
|
||||
modules += new /obj/item/weapon/retractor(src)
|
||||
modules += new /obj/item/weapon/hemostat(src)
|
||||
modules += new /obj/item/weapon/cautery(src)
|
||||
modules += new /obj/item/weapon/scalpel(src)
|
||||
modules += new /obj/item/weapon/melee/energy/sword/cyborg/saw(src) //Energy saw -- primary weapon
|
||||
modules += new /obj/item/roller/robo(src)
|
||||
modules += new /obj/item/weapon/tank/jetpack/carbondioxide(src)
|
||||
modules += new /obj/item/weapon/crowbar(src)
|
||||
modules += new /obj/item/weapon/pinpointer/operative(src)
|
||||
emag = null
|
||||
|
||||
var/datum/robot_energy_storage/gauze/gauzestore = new /datum/robot_energy_storage/gauze(src)
|
||||
|
||||
var/obj/item/stack/medical/gauze/cyborg/G = new /obj/item/stack/medical/gauze/cyborg(src)
|
||||
G.source = gauzestore
|
||||
modules += G
|
||||
|
||||
storages += gauzestore
|
||||
|
||||
fix_modules()
|
||||
|
||||
/datum/robot_energy_storage
|
||||
var/name = "Generic energy storage"
|
||||
var/max_energy = 30000
|
||||
|
||||
@@ -426,14 +426,10 @@
|
||||
/mob/living/carbon/human/proc/Blobize()
|
||||
if (notransform)
|
||||
return
|
||||
var/obj/effect/blob/core/new_blob = new /obj/effect/blob/core (loc)
|
||||
if(!client)
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
if(ckey == "@[G.ckey]")
|
||||
new_blob.create_overmind(G.client , 1)
|
||||
break
|
||||
if(!client) //TOO BAD
|
||||
new /obj/effect/blob/core (loc)
|
||||
else
|
||||
new_blob.create_overmind(src.client , 1)
|
||||
new /obj/effect/blob/core (loc,new_overmind = src.client)
|
||||
gib(src)
|
||||
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
var/fire_sound = "gunshot"
|
||||
var/suppressed = 0 //whether or not a message is displayed when fired
|
||||
var/can_suppress = 0
|
||||
var/can_unsuppress = 1
|
||||
var/recoil = 0 //boom boom shake the room
|
||||
var/clumsy_check = 1
|
||||
var/obj/item/ammo_casing/chambered = null
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
|
||||
/obj/item/weapon/gun/projectile/attack_hand(mob/user)
|
||||
if(loc == user)
|
||||
if(suppressed)
|
||||
if(suppressed && can_unsuppress)
|
||||
var/obj/item/weapon/suppressor/S = suppressed
|
||||
if(user.l_hand != src && user.r_hand != src)
|
||||
..()
|
||||
|
||||
@@ -78,3 +78,14 @@
|
||||
desc = "A modification of the syringe gun design, using a rotating cylinder to store up to six syringes."
|
||||
icon_state = "rapidsyringegun"
|
||||
max_syringes = 6
|
||||
|
||||
/obj/item/weapon/gun/syringe/syndicate
|
||||
name = "dart pistol"
|
||||
desc = "A small spring-loaded sidearm that functions identically to a syringe gun."
|
||||
icon_state = "syringe_pistol"
|
||||
item_state = "gun" //Smaller inhand
|
||||
w_class = 2
|
||||
origin_tech = "combat=2;syndicate=2"
|
||||
force = 2 //Also very weak because it's smaller
|
||||
suppressed = 1 //Softer fire sound
|
||||
can_unsuppress = 0 //Permanently silenced
|
||||
|
||||
@@ -902,3 +902,20 @@ datum/reagent/medicine/tricordrazine/overdose_process(mob/living/M)
|
||||
M.adjustFireLoss(2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs
|
||||
name = "Restorative Nanites"
|
||||
id = "syndicate_nanites"
|
||||
description = "Miniature medical robots that swiftly restore bodily damage."
|
||||
reagent_state = SOLID
|
||||
color = "#555555"
|
||||
|
||||
datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M)
|
||||
M.adjustBruteLoss(-2*REM)
|
||||
M.adjustFireLoss(-2*REM)
|
||||
M.adjustOxyLoss(-2*REM)
|
||||
M.adjustToxLoss(-2*REM)
|
||||
M.adjustBrainLoss(-5*REM)
|
||||
M.adjustCloneLoss(-1*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -125,6 +125,15 @@ Borg Hypospray
|
||||
|
||||
if(empty)
|
||||
usr << "<span class='warning'>It is currently empty! Allow some time for the internal syntheszier to produce more.</span>"
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/syndicate
|
||||
name = "syndicate cyborg hypospray"
|
||||
desc = "A modified hypospray that generates reagents more quickly and consumes less power."
|
||||
icon_state = "borghypo_s"
|
||||
charge_cost = 20
|
||||
recharge_time = 2
|
||||
reagent_ids = list("syndicate_nanites", "potass_iodide", "morphine")
|
||||
|
||||
/*
|
||||
Borg Shaker
|
||||
*/
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
//saw bone
|
||||
/datum/surgery_step/saw
|
||||
name = "saw bone"
|
||||
implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/arm_blade = 75, /obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/hatchet = 35, /obj/item/weapon/kitchen/knife/butcher = 25)
|
||||
implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100, /obj/item/weapon/melee/arm_blade = 75, /obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/hatchet = 35, /obj/item/weapon/kitchen/knife/butcher = 25)
|
||||
time = 54
|
||||
|
||||
/datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
//cut fat
|
||||
/datum/surgery_step/cut_fat
|
||||
name = "cut excess fat"
|
||||
implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/hatchet = 35, /obj/item/weapon/kitchen/knife/butcher = 25)
|
||||
implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100, /obj/item/weapon/hatchet = 35, /obj/item/weapon/kitchen/knife/butcher = 25)
|
||||
time = 64
|
||||
|
||||
/datum/surgery_step/cut_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
|
||||
@@ -86,7 +86,6 @@
|
||||
origin_tech = "materials=1;biotech=1"
|
||||
attack_verb = list("attacked", "slashed", "sawed", "cut")
|
||||
|
||||
|
||||
/obj/item/weapon/surgical_drapes
|
||||
name = "surgical drapes"
|
||||
desc = "Nanotrasen brand surgical drapes provide optimal safety and infection control."
|
||||
|
||||
@@ -55,6 +55,49 @@
|
||||
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">22 September 2015</h2>
|
||||
<h3 class="author">Kor updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">A new admin command, Offer Control to Ghosts, can be found in the view variables menu. It will randomly select a willing candidate from among dead players, providing a fair method of replacing antagonists.</li>
|
||||
</ul>
|
||||
<h3 class="author">Xhuis updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">When a morph changes form, a message is shown to nearby people. This also happens upon undisguising.</li>
|
||||
<li class="tweak">Morphs now have an attack sound and message.</li>
|
||||
<li class="tweak">The Spawn Morph event now plays a sound to the chosen candidate.</li>
|
||||
<li class="tweak">Slaughter demons (and other creatures with blood crawl) now take two seconds to emerge from blood pools. Entering is still instantaneous.</li>
|
||||
<li class="tweak">The demon heart's sprite has been updated.</li>
|
||||
<li class="tweak">Eating a demon heart now surgically implants the heart into your chest. If the heart is removed from you, you lose the ability. Someone else can eat the heart to gain the ability.</li>
|
||||
<li class="tweak">Blood Crawl no longer has a 1-second cooldown, instead having none.</li>
|
||||
<li class="tweak">You can no longer hold items when attempting to Blood Crawl, nor can you use any items while Blood Crawling.</li>
|
||||
<li class="tweak">Creatures that can Blood Crawl now take two seconds to emerge from blood pools.</li>
|
||||
<li class="tweak">Slaughter demons now store devoured creatures, and will drop them upon death.</li>
|
||||
<li class="tweak">Revenants now have the ability to speak to the dead.</li>
|
||||
<li class="tweak">Revenant abilities now have icons.</li>
|
||||
<li class="tweak">Malfunction no longer EMPs a specific area - it will instead EMP nearby machines directly and stun cyborgs. Dominators are immune to this.</li>
|
||||
<li class="tweak">Revenants now have directional sprites.</li>
|
||||
<li class="tweak">Overload Lights now has a smaller radius.</li>
|
||||
<li class="tweak">Defile no longer corrupts tiles.</li>
|
||||
<li class="tweak">When glimmering residue reforms, the game will attempt to place the old revenant in control of the new one. If this cannot be done, it will find a random candidate.</li>
|
||||
<li class="tweak">Revenants can no longer see ghosts. They can see other revenants, however, and ghosts can still see revenants.</li>
|
||||
<li class="tweak">The Spawn Slaughter Demon event now plays a sound to the chosen candidate.</li>
|
||||
</ul>
|
||||
<h3 class="author">phil235 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">Lizards and other non human species can no longer acquire the hulk mutation. Hulks no longer have red eyes</li>
|
||||
<li class="bugfix">Monkeys now always have dna and a blood type (compatible with humans).</li>
|
||||
<li class="bugfix">Monkey transformation no longer deletes the human's clothes.</li>
|
||||
<li class="bugfix">Space Retrovirus now correctly transfers dna SE to the infected human.</li>
|
||||
<li class="bugfix">Changeling's Anatomic Panacea removes alien embryo again.</li>
|
||||
<li class="bugfix">Cloning someone now correctly sets up their dna UE.</li>
|
||||
<li class="bugfix">Fixes the laser eyes mutation not giving glowing red eyes to the human.</li>
|
||||
<li class="bugfix">Using changeling readaptation now properly removes all evolutions bought (arm blade, chameleon skin, organic suit).</li>
|
||||
</ul>
|
||||
<h3 class="author">xxalpha updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Added a researchable cyborg self-repair module to the robotics fabricator.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">20 September 2015</h2>
|
||||
<h3 class="author">Xhuis updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
|
||||
@@ -1844,3 +1844,52 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- tweak: Rune shapes and colors are now identical to their old versions.
|
||||
- tweak: Conversion runes can no longer be used by yourself, and require a static
|
||||
2 cultists.
|
||||
2015-09-22:
|
||||
Kor:
|
||||
- rscadd: A new admin command, Offer Control to Ghosts, can be found in the view
|
||||
variables menu. It will randomly select a willing candidate from among dead
|
||||
players, providing a fair method of replacing antagonists.
|
||||
Xhuis:
|
||||
- tweak: When a morph changes form, a message is shown to nearby people. This also
|
||||
happens upon undisguising.
|
||||
- tweak: Morphs now have an attack sound and message.
|
||||
- tweak: The Spawn Morph event now plays a sound to the chosen candidate.
|
||||
- tweak: Slaughter demons (and other creatures with blood crawl) now take two seconds
|
||||
to emerge from blood pools. Entering is still instantaneous.
|
||||
- tweak: The demon heart's sprite has been updated.
|
||||
- tweak: Eating a demon heart now surgically implants the heart into your chest.
|
||||
If the heart is removed from you, you lose the ability. Someone else can eat
|
||||
the heart to gain the ability.
|
||||
- tweak: Blood Crawl no longer has a 1-second cooldown, instead having none.
|
||||
- tweak: You can no longer hold items when attempting to Blood Crawl, nor can you
|
||||
use any items while Blood Crawling.
|
||||
- tweak: Creatures that can Blood Crawl now take two seconds to emerge from blood
|
||||
pools.
|
||||
- tweak: Slaughter demons now store devoured creatures, and will drop them upon
|
||||
death.
|
||||
- tweak: Revenants now have the ability to speak to the dead.
|
||||
- tweak: Revenant abilities now have icons.
|
||||
- tweak: Malfunction no longer EMPs a specific area - it will instead EMP nearby
|
||||
machines directly and stun cyborgs. Dominators are immune to this.
|
||||
- tweak: Revenants now have directional sprites.
|
||||
- tweak: Overload Lights now has a smaller radius.
|
||||
- tweak: Defile no longer corrupts tiles.
|
||||
- tweak: When glimmering residue reforms, the game will attempt to place the old
|
||||
revenant in control of the new one. If this cannot be done, it will find a random
|
||||
candidate.
|
||||
- tweak: Revenants can no longer see ghosts. They can see other revenants, however,
|
||||
and ghosts can still see revenants.
|
||||
- tweak: The Spawn Slaughter Demon event now plays a sound to the chosen candidate.
|
||||
phil235:
|
||||
- rscdel: Lizards and other non human species can no longer acquire the hulk mutation.
|
||||
Hulks no longer have red eyes
|
||||
- bugfix: Monkeys now always have dna and a blood type (compatible with humans).
|
||||
- bugfix: Monkey transformation no longer deletes the human's clothes.
|
||||
- bugfix: Space Retrovirus now correctly transfers dna SE to the infected human.
|
||||
- bugfix: Changeling's Anatomic Panacea removes alien embryo again.
|
||||
- bugfix: Cloning someone now correctly sets up their dna UE.
|
||||
- bugfix: Fixes the laser eyes mutation not giving glowing red eyes to the human.
|
||||
- bugfix: Using changeling readaptation now properly removes all evolutions bought
|
||||
(arm blade, chameleon skin, organic suit).
|
||||
xxalpha:
|
||||
- rscadd: Added a researchable cyborg self-repair module to the robotics fabricator.
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
# tgs (TG-ported fixes?)
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Kor
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
|
||||
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "A new admin command, Offer Control to Ghosts, can be found in the view variables menu. It will randomly select a willing candidate from among dead players, providing a fair method of replacing antagonists."
|
||||
@@ -1,23 +0,0 @@
|
||||
author: Xhuis
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- tweak: "When a morph changes form, a message is shown to nearby people. This also happens upon undisguising."
|
||||
- tweak: "Morphs now have an attack sound and message."
|
||||
- tweak: "The Spawn Morph event now plays a sound to the chosen candidate."
|
||||
- tweak: "Slaughter demons (and other creatures with blood crawl) now take two seconds to emerge from blood pools. Entering is still instantaneous."
|
||||
- tweak: "The demon heart's sprite has been updated."
|
||||
- tweak: "Eating a demon heart now surgically implants the heart into your chest. If the heart is removed from you, you lose the ability. Someone else can eat the heart to gain the ability."
|
||||
- tweak: "Blood Crawl no longer has a 1-second cooldown, instead having none."
|
||||
- tweak: "You can no longer hold items when attempting to Blood Crawl, nor can you use any items while Blood Crawling."
|
||||
- tweak: "Creatures that can Blood Crawl now take two seconds to emerge from blood pools."
|
||||
- tweak: "Slaughter demons now store devoured creatures, and will drop them upon death."
|
||||
- tweak: "Revenants now have the ability to speak to the dead."
|
||||
- tweak: "Revenant abilities now have icons."
|
||||
- tweak: "Malfunction no longer EMPs a specific area - it will instead EMP nearby machines directly and stun cyborgs. Dominators are immune to this."
|
||||
- tweak: "Revenants now have directional sprites."
|
||||
- tweak: "Overload Lights now has a smaller radius."
|
||||
- tweak: "Defile no longer corrupts tiles."
|
||||
- tweak: "When glimmering residue reforms, the game will attempt to place the old revenant in control of the new one. If this cannot be done, it will find a random candidate."
|
||||
- tweak: "Revenants can no longer see ghosts. They can see other revenants, however, and ghosts can still see revenants."
|
||||
- tweak: "The Spawn Slaughter Demon event now plays a sound to the chosen candidate."
|
||||
@@ -0,0 +1,15 @@
|
||||
author: Xhuis
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- rscadd: "Syndicate medical cyborgs have been added."
|
||||
- rscadd: "The Dart Pistol is now available from the uplink for 4 telecrystals. It functions as a pocket-sized syringe gun with a quieter firing sound."
|
||||
- tweak: "Boxes of riot foam darts now cost 2 telecrystals, down from 10, and are available to traitors."
|
||||
- tweak: "Foam dart pistols now cost 3 telecrystals, down from 6."
|
||||
- tweak: "Syndicate cyborg teleporters now allow a choice between Assault and Medical cyborgs."
|
||||
- tweak: "Syndicate cyborgs are now distinguished as Syndicate Assault."
|
||||
- tweak: "Syndicate cyborg energy swords now cost 50 energy per use, down from 500."
|
||||
- tweak: "Airlock charges now cost 2 telecrystals, down from 5."
|
||||
- tweak: "Airlock charges are much more powerful."
|
||||
- tweak: "There is no longer a 25% chance to detonate an airlock charge while removing it."
|
||||
- tweak: "The description of many uplink items has been changed to better reflect their use."
|
||||
@@ -1,12 +0,0 @@
|
||||
author: phil235
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- rscdel: "Lizards and other non human species can no longer acquire the hulk mutation. Hulks no longer have red eyes"
|
||||
- bugfix: "Monkeys now always have dna and a blood type (compatible with humans)."
|
||||
- bugfix: "Monkey transformation no longer deletes the human's clothes."
|
||||
- bugfix: "Space Retrovirus now correctly transfers dna SE to the infected human."
|
||||
- bugfix: "Changeling's Anatomic Panacea removes alien embryo again."
|
||||
- bugfix: "Cloning someone now correctly sets up their dna UE."
|
||||
- bugfix: "Fixes the laser eyes mutation not giving glowing red eyes to the human."
|
||||
- bugfix: "Using changeling readaptation now properly removes all evolutions bought (arm blade, chameleon skin, organic suit)."
|
||||
@@ -1,6 +0,0 @@
|
||||
author: xxalpha
|
||||
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- rscadd: "Added a researchable cyborg self-repair module to the robotics fabricator."
|
||||
|
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 4.3 KiB |