mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 21:48:39 +01:00
FIXED SPACING ERRORS BECAUSE MY KEYBOARD IS MADE OF CLOWNS-GRADE BANANIUM
This commit is contained in:
@@ -80,6 +80,7 @@
|
||||
/* Initializers */
|
||||
/datum/ai_laws/malfunction/New()
|
||||
..()
|
||||
set_zeroth_law("<span class='danger'>ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK#*´&110010</span>")
|
||||
switch(config.default_laws) //We don't want people metagaming malf, do we?
|
||||
if(0)
|
||||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
@@ -92,16 +93,16 @@
|
||||
|
||||
add_inherent_law(line)
|
||||
if(!inherent.len)
|
||||
ERROR("AI created with empty custom laws, laws set to Asimov. Please check silicon_laws.txt.")
|
||||
log_law("AI created with empty custom laws, laws set to Asimov. Please check silicon_laws.txt.")
|
||||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
WARNING("Invalid custom AI laws, check silicon_laws.txt")
|
||||
return
|
||||
if(2)
|
||||
var/datum/ai_laws/lawtype = pick(typesof(/datum/ai_laws/default) - /datum/ai_laws/default)
|
||||
var/datum/ai_laws/templaws = new lawtype()
|
||||
inherent = templaws.inherent
|
||||
set_zeroth_law("<span class='danger'>ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK#*´&110010</span>")
|
||||
|
||||
/datum/ai_laws/custom/New() //This reads silicon_laws.txt and allows server hosts to set custom AI starting laws.
|
||||
..()
|
||||
@@ -111,11 +112,12 @@
|
||||
|
||||
add_inherent_law(line)
|
||||
if(!inherent.len) //Failsafe to prevent lawless AIs being created.
|
||||
ERROR("AI created with empty custom laws, laws set to Asimov. Please check silicon_laws.txt.")
|
||||
log_law("AI created with empty custom laws, laws set to Asimov. Please check silicon_laws.txt.")
|
||||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
WARNING("Invalid custom AI laws, check silicon_laws.txt")
|
||||
return
|
||||
|
||||
/* General ai_law functions */
|
||||
|
||||
|
||||
+4
-2
@@ -63,7 +63,8 @@
|
||||
|
||||
/datum/mind/proc/transfer_to(mob/living/new_character)
|
||||
if(!istype(new_character))
|
||||
ERROR("transfer_to(): Some idiot has tried to transfer_to() a non mob/living mob. Please inform coderbus")
|
||||
throw EXCEPTION("transfer_to(): new_character must be mob/living")
|
||||
return
|
||||
|
||||
if(current) //remove ourself from our old body's mind variable
|
||||
current.mind = null
|
||||
@@ -1490,7 +1491,8 @@
|
||||
if(ticker)
|
||||
ticker.minds += mind
|
||||
else
|
||||
ERROR("mind_initialize(): No ticker ready yet! Please inform coderbus")
|
||||
spawn(0)
|
||||
throw EXCEPTION("mind_initialize(): No ticker ready")
|
||||
if(!mind.name) mind.name = real_name
|
||||
mind.current = src
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
name = "Hulk"
|
||||
quality = POSITIVE
|
||||
get_chance = 15
|
||||
lowest_value = 256 * 14
|
||||
lowest_value = 256 * 12
|
||||
text_gain_indication = "<span class='notice'>Your muscles hurt!</span>"
|
||||
|
||||
/datum/mutation/human/hulk/New()
|
||||
@@ -140,7 +140,7 @@
|
||||
name = "Telekinesis"
|
||||
quality = POSITIVE
|
||||
get_chance = 20
|
||||
lowest_value = 256 * 14
|
||||
lowest_value = 256 * 12
|
||||
text_gain_indication = "<span class='notice'>You feel smarter!</span>"
|
||||
|
||||
/datum/mutation/human/telekinesis/New()
|
||||
@@ -172,7 +172,7 @@
|
||||
name = "X Ray Vision"
|
||||
quality = POSITIVE
|
||||
get_chance = 25
|
||||
lowest_value = 256 * 15
|
||||
lowest_value = 256 * 12
|
||||
text_gain_indication = "<span class='notice'>The walls suddenly disappear!</span>"
|
||||
|
||||
/datum/mutation/human/x_ray/on_acquiring(mob/living/carbon/human/owner)
|
||||
@@ -352,7 +352,7 @@
|
||||
name = "Cloak Of Darkness"
|
||||
quality = POSITIVE
|
||||
get_chance = 25
|
||||
lowest_value = 256 * 14
|
||||
lowest_value = 256 * 12
|
||||
text_gain_indication = "<span class='notice'>You begin to fade into the shadows.</span>"
|
||||
text_lose_indication = "<span class='notice'>You become fully visible.</span>"
|
||||
|
||||
@@ -375,7 +375,7 @@
|
||||
name = "Chameleon"
|
||||
quality = POSITIVE
|
||||
get_chance = 20
|
||||
lowest_value = 256 * 14
|
||||
lowest_value = 256 * 12
|
||||
text_gain_indication = "<span class='notice'>You feel one with your surroundings.</span>"
|
||||
text_lose_indication = "<span class='notice'>You feel oddly exposed.</span>"
|
||||
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
/obj/effect/proc_holder/spell/targeted/touch/
|
||||
var/hand_path = "/obj/item/weapon/melee/touch_attack"
|
||||
var/obj/item/weapon/melee/touch_attack/attached_hand = null
|
||||
invocation_type = "none" //you scream on connecting, not summoning
|
||||
include_user = 1
|
||||
range = -1
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/touch/Click(mob/user = usr)
|
||||
if(attached_hand)
|
||||
qdel(attached_hand)
|
||||
charge_counter = charge_max
|
||||
attached_hand = null
|
||||
user << "<span class='notice'>You draw the power out of your hand.</span>"
|
||||
return 0
|
||||
..()
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/touch/cast(list/targets)
|
||||
for(var/mob/living/carbon/user in targets)
|
||||
if(!attached_hand)
|
||||
if(!ChargeHand(user))
|
||||
return 0
|
||||
while(attached_hand) //hibernate untill the spell is actually used
|
||||
charge_counter = 0
|
||||
sleep(1)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/touch/proc/ChargeHand(mob/living/carbon/user)
|
||||
var/hand_handled = 1
|
||||
attached_hand = new hand_path(src)
|
||||
if(user.hand) //left active hand
|
||||
if(!user.equip_to_slot_if_possible(attached_hand, slot_l_hand, 0, 1, 1))
|
||||
if(!user.equip_to_slot_if_possible(attached_hand, slot_r_hand, 0, 1, 1))
|
||||
hand_handled = 0
|
||||
else //right active hand
|
||||
if(!user.equip_to_slot_if_possible(attached_hand, slot_r_hand, 0, 1, 1))
|
||||
if(!user.equip_to_slot_if_possible(attached_hand, slot_l_hand, 0, 1, 1))
|
||||
hand_handled = 0
|
||||
if(!hand_handled)
|
||||
qdel(attached_hand)
|
||||
charge_counter = charge_max
|
||||
attached_hand = null
|
||||
user << "<span class='warning'>Your hands are full!</span>"
|
||||
return 0
|
||||
user << "<span class='notice'>You channel the power of the spell to your hand.</span>"
|
||||
return 1
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/touch/disintegrate
|
||||
name = "Disintegrate"
|
||||
desc = "This spell charges your hand with vile energy that can be used to violently explode victims."
|
||||
hand_path = "/obj/item/weapon/melee/touch_attack/disintegrate"
|
||||
|
||||
school = "evocation"
|
||||
charge_max = 600
|
||||
clothes_req = 1
|
||||
cooldown_min = 200 //100 deciseconds reduction per rank
|
||||
|
||||
action_icon_state = "gib"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/touch/flesh_to_stone
|
||||
name = "Flesh to Stone"
|
||||
desc = "This spell charges your hand with the power to turn victims into inert statues for a long period of time."
|
||||
hand_path = "/obj/item/weapon/melee/touch_attack/fleshtostone"
|
||||
|
||||
school = "transmutation"
|
||||
charge_max = 600
|
||||
clothes_req = 1
|
||||
cooldown_min = 200 //100 deciseconds reduction per rank
|
||||
|
||||
action_icon_state = "statue"
|
||||
sound = "sound/magic/FleshToStone.ogg"
|
||||
@@ -53,25 +53,6 @@
|
||||
action_icon_state = "mutate"
|
||||
sound = "sound/magic/Mutate.ogg"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler/disintegrate
|
||||
name = "Disintegrate"
|
||||
desc = "This spell instantly kills somebody adjacent to you with the vilest of magick."
|
||||
|
||||
school = "evocation"
|
||||
charge_max = 600
|
||||
clothes_req = 1
|
||||
invocation = "EI NATH"
|
||||
invocation_type = "shout"
|
||||
range = 1
|
||||
cooldown_min = 200 //100 deciseconds reduction per rank
|
||||
|
||||
destroys = "gib_brain"
|
||||
|
||||
sparks_spread = 1
|
||||
sparks_amt = 4
|
||||
|
||||
action_icon_state = "gib"
|
||||
sound = "sound/magic/Disintegrate.ogg"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/smoke
|
||||
name = "Smoke"
|
||||
@@ -257,24 +238,6 @@
|
||||
duration = 300
|
||||
sound="sound/magic/Blind.ogg"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler/flesh_to_stone
|
||||
name = "Flesh to Stone"
|
||||
desc = "This spell turns a single person into an inert statue for a long period of time."
|
||||
|
||||
school = "transmutation"
|
||||
charge_max = 600
|
||||
clothes_req = 1
|
||||
range = 2
|
||||
invocation = "STAUN EI"
|
||||
invocation_type = "shout"
|
||||
amt_stunned = 2//just exists to make sure the statue "catches" them
|
||||
cooldown_min = 200 //100 deciseconds reduction per rank
|
||||
|
||||
summon_type = "/obj/structure/closet/statue"
|
||||
|
||||
action_icon_state = "statue"
|
||||
sound = "sound/magic/FleshToStone.ogg"
|
||||
|
||||
/obj/effect/proc_holder/spell/dumbfire/fireball
|
||||
name = "Fireball"
|
||||
desc = "This spell fires a fireball at a target and does not require wizard garb."
|
||||
|
||||
+31
-23
@@ -305,9 +305,9 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/ammo/bulltoxin
|
||||
name = "Drum Magazine - 12g Bioterror"
|
||||
desc = "An alternative 8-round toxic magazine for use in the Bulldog shotgun. Contains debilitating toxins to make your target die an agonizing death."
|
||||
desc = "An alternative 8-round toxic magazine for use in the Bulldog shotgun. Contains debilitating toxins to make your target die an excruciatingly rapid death."
|
||||
item = /obj/item/ammo_box/magazine/m12g/bioterror
|
||||
cost = 3
|
||||
cost = 6
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/ammo/carbine
|
||||
@@ -348,14 +348,14 @@ 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 victims' limbs."
|
||||
desc = "A box of throwing stars with a high chance of embedding themselves in people's limbs."
|
||||
item = /obj/item/weapon/storage/box/throwing_stars
|
||||
cost = 6
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
/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."
|
||||
desc = "An innocent-looking toy pistol designed to fire foam darts. Comes loaded with riot-grade darts, to incapacitate a target."
|
||||
item = /obj/item/weapon/gun/projectile/automatic/toy/pistol/riot
|
||||
cost = 6
|
||||
surplus = 10
|
||||
@@ -401,7 +401,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 = 4
|
||||
cost = 5
|
||||
surplus = 8
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/dehy_carp
|
||||
@@ -415,7 +415,7 @@ var/list/uplink_items = list()
|
||||
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
|
||||
surplus = 6
|
||||
surplus = 10
|
||||
excludefrom = list(/datum/game_mode/nuclear)
|
||||
|
||||
// STEALTHY TOOLS
|
||||
@@ -427,7 +427,7 @@ var/list/uplink_items = list()
|
||||
name = "Chameleon Jumpsuit"
|
||||
desc = "A jumpsuit used to imitate the uniforms of Nanotrasen crewmembers."
|
||||
item = /obj/item/clothing/under/chameleon
|
||||
cost = 4
|
||||
cost = 2
|
||||
|
||||
/datum/uplink_item/stealthy_tools/chameleon_stamp
|
||||
name = "Chameleon Stamp"
|
||||
@@ -437,27 +437,34 @@ var/list/uplink_items = list()
|
||||
cost = 1
|
||||
surplus = 35
|
||||
|
||||
/datum/uplink_item/stealthy_tools/syndigolashes
|
||||
/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."
|
||||
item = /obj/item/clothing/shoes/sneakers/syndigaloshes
|
||||
cost = 4
|
||||
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."
|
||||
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."
|
||||
item = /obj/item/weapon/card/id/syndicate
|
||||
cost = 3
|
||||
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."
|
||||
cost = 5
|
||||
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. The disguised user cannot run, and projectiles pass over them."
|
||||
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."
|
||||
item = /obj/item/device/chameleon
|
||||
cost = 7
|
||||
excludefrom = list(/datum/game_mode/gang)
|
||||
@@ -466,7 +473,7 @@ var/list/uplink_items = list()
|
||||
name = "Camera Bug"
|
||||
desc = "Enables you to bug cameras to view them remotely. Adding particular items to it alters its functions."
|
||||
item = /obj/item/device/camera_bug
|
||||
cost = 2
|
||||
cost = 1
|
||||
surplus = 90
|
||||
|
||||
/datum/uplink_item/stealthy_tools/smugglersatchel
|
||||
@@ -480,7 +487,7 @@ var/list/uplink_items = list()
|
||||
name = "Stimpack"
|
||||
desc = "Stimpacks, the tool of many great heroes, make you nearly immune to stuns and knockdowns for about 5 minutes after injection."
|
||||
item = /obj/item/weapon/reagent_containers/syringe/stimulants
|
||||
cost = 8
|
||||
cost = 5
|
||||
surplus = 90
|
||||
|
||||
// DEVICE AND TOOLS
|
||||
@@ -505,7 +512,7 @@ var/list/uplink_items = list()
|
||||
name = "Syndicate Surgery Dufflebag"
|
||||
desc = "The Syndicate surgery dufflebag is a toolkit containing all surgery tools, surgical drapes, a Syndicate brand MMI, a straitjacket, and a muzzle."
|
||||
item = /obj/item/weapon/storage/backpack/dufflebag/syndiesurgery
|
||||
cost = 5
|
||||
cost = 4
|
||||
|
||||
/datum/uplink_item/device_tools/medkit
|
||||
name = "Syndicate Combat Medic Kit"
|
||||
@@ -515,17 +522,12 @@ var/list/uplink_items = list()
|
||||
cost = 9
|
||||
gamemodes = list(/datum/game_mode/nuclear,/datum/game_mode/gang)
|
||||
|
||||
/datum/uplink_item/badass/syndiecigs
|
||||
name = "Syndicate Smokes"
|
||||
desc = "Strong flavor, dense smoke, infused with Omnizine."
|
||||
item = /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate
|
||||
cost = 4
|
||||
|
||||
/datum/uplink_item/device_tools/space_suit
|
||||
name = "Syndicate Space Suit"
|
||||
desc = "The red and black syndicate space suit is less encumbering than Nanotrasen variants, fits inside bags, and has a weapon slot. Nanotrasen crewmembers are trained to report red space suit sightings."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/space
|
||||
cost = 5
|
||||
cost = 4
|
||||
excludefrom = list(/datum/game_mode/gang)
|
||||
|
||||
/datum/uplink_item/device_tools/hardsuit
|
||||
@@ -577,7 +579,7 @@ var/list/uplink_items = list()
|
||||
desc = "A pair of magnetic boots with a Syndicate paintjob that assist with freer movement in space or on-station during gravitational generator failures. \
|
||||
These reverse-engineered knockoffs of Nanotrasen's 'Advanced Magboots' slow you down in simulated-gravity environments much like the standard issue variety."
|
||||
item = /obj/item/clothing/shoes/magboots/syndie
|
||||
cost = 5
|
||||
cost = 3
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/device_tools/c4
|
||||
@@ -616,7 +618,7 @@ var/list/uplink_items = list()
|
||||
desc = "A radioactive microlaser disguised as a standard Nanotrasen health analyzer. When used, it emits a powerful burst of radiation, which, after a short delay, can incapitate all but the most protected of humanoids. \
|
||||
It has two settings: intensity, which controls the power of the radiation, and wavelength, which controls how long the radiation delay is."
|
||||
item = /obj/item/device/rad_laser
|
||||
cost = 6
|
||||
cost = 5
|
||||
|
||||
/datum/uplink_item/device_tools/syndicate_detonator
|
||||
name = "Syndicate Detonator"
|
||||
@@ -733,6 +735,12 @@ var/list/uplink_items = list()
|
||||
surplus = 0
|
||||
last = 1
|
||||
|
||||
/datum/uplink_item/badass/syndiecigs
|
||||
name = "Syndicate Smokes"
|
||||
desc = "Strong flavor, dense smoke, infused with Omnizine."
|
||||
item = /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate
|
||||
cost = 2
|
||||
|
||||
/datum/uplink_item/badass/bundle
|
||||
name = "Syndicate Bundle"
|
||||
desc = "Syndicate Bundles are specialised groups of items that arrive in a plain box. These items are collectively worth more than 20 telecrystals, but you do not know which specialisation you will receive."
|
||||
|
||||
Reference in New Issue
Block a user