AI, PDA, and Other changes

This commit is contained in:
Fox-McCloud
2014-11-26 01:18:49 -05:00
parent 0ce4086215
commit 261157cb58
21 changed files with 325 additions and 100 deletions
+16 -8
View File
@@ -260,9 +260,9 @@ var/list/uplink_items = list()
gamemodes = list("nuclear emergency")
/datum/uplink_item/dangerous/emp
name = "5 EMP Grenades"
desc = "A box that contains 5 EMP grenades. Useful to disrupt communication and silicon lifeforms."
item = /obj/item/weapon/storage/box/emps
name = "EMP Kit"
desc = "A box that contains two EMP grenades, an EMP implant and a short ranged recharging device disguised as a flashlight. Useful to disrupt communication and silicon lifeforms."
item = /obj/item/weapon/storage/box/syndie_kit/emp
cost = 5
/datum/uplink_item/dangerous/syndicate_minibomb
@@ -473,6 +473,12 @@ var/list/uplink_items = list()
cost = 9
gamemodes = list("nuclear emergency")
/datum/uplink_item/badass/syndiecigs
name = "Syndicate Smokes"
desc = "Strong flavor, dense smoke, infused with Doctor's Delight."
item = /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate
cost = 4
/datum/uplink_item/device_tools/space_suit
name = "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."
@@ -485,6 +491,7 @@ var/list/uplink_items = list()
item = /obj/item/clothing/glasses/thermal/syndi
cost = 6
/*
/datum/uplink_item/device_tools/surveillance
name = "Camera Surveillance Kit"
desc = "This kit contains 5 Camera bugs and one mobile receiver. Attach camera bugs to a camera to enable remote viewing."
@@ -496,6 +503,7 @@ var/list/uplink_items = list()
desc = "This is a Camera bug resupply giving you 5 more camera bugs."
item = /obj/item/weapon/storage/box/surveillance
cost = 4
*/ //commented out until porting over TG's camera bug
/datum/uplink_item/device_tools/binary
name = "Binary Translator Key"
@@ -504,10 +512,10 @@ var/list/uplink_items = list()
cost = 5
/datum/uplink_item/device_tools/cipherkey
name = "Centcomm Encryption Key"
desc = "A key, that when inserted into a radio headset, allows you to listen to and talk on all known radio channels."
item = /obj/item/device/encryptionkey/syndicate/hacked
cost = 4
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."
item = /obj/item/device/encryptionkey/syndicate
cost = 5
/datum/uplink_item/device_tools/hacked_module
name = "Hacked AI Upload Module"
@@ -622,7 +630,7 @@ var/list/uplink_items = list()
/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 10 telecrystals, but you do not know which specialisation you will receive."
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."
item = /obj/item/weapon/storage/box/syndicate
cost = 20
excludefrom = list("nuclear emergency")
+2 -2
View File
@@ -9,11 +9,11 @@
idtype = /obj/item/weapon/card/id/silver
req_admin_notify = 1
access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
access_tox_storage, access_teleporter, access_sec_doors,
access_tox_storage, access_tech_storage, access_teleporter, access_sec_doors,
access_research, access_robotics, access_xenobiology, access_ai_upload,
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch)
minimal_access = list(access_eva, access_rd, access_heads, access_tox, access_genetics, access_morgue,
access_tox_storage, access_teleporter, access_sec_doors,
access_tox_storage, access_tech_storage, access_teleporter, access_sec_doors,
access_research, access_robotics, access_xenobiology, access_ai_upload,
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_maint_tunnels)
minimal_player_age = 21
+24 -22
View File
@@ -38,6 +38,7 @@ var/global/list/autolathe_recipes = list( \
new /obj/item/device/radio/off(), \
new /obj/item/device/assembly/infra(), \
new /obj/item/device/assembly/timer(), \
new /obj/item/device/assembly/prox_sensor(), \
new /obj/item/device/assembly/voice(), \
new /obj/item/weapon/light/tube(), \
new /obj/item/weapon/light/bulb(), \
@@ -45,10 +46,7 @@ var/global/list/autolathe_recipes = list( \
new /obj/item/weapon/rcd_ammo(), \
new /obj/item/ammo_casing/shotgun/beanbag(), \
new /obj/item/weapon/storage/box/blanks(), \
new /obj/item/weapon/storage/box/gauge(), \
new /obj/item/ammo_casing/shotgun/incendiary(), \
new /obj/item/ammo_box/c38(), \
new /obj/item/ammo_box/a357(), \
new /obj/item/clothing/ears/earmuffs/tribblemuffs(), \
new /obj/item/clothing/gloves/furgloves(), \
new /obj/item/clothing/head/furcap(), \
@@ -64,6 +62,10 @@ var/global/list/autolathe_recipes_hidden = list( \
new /obj/item/weapon/weldingtool/largetank(), \
new /obj/item/weapon/handcuffs(), \
new /obj/item/weapon/hatchet(), \
new /obj/item/ammo_box/a357(), \
new /obj/item/ammo_casing/shotgun(), \
new /obj/item/ammo_casing/shotgun/buck(), \
new /obj/item/ammo_casing/shotgun/incendiary(), \
/*new /obj/item/ammo_casing/shotgun/dart(), \
new /obj/item/weapon/shield/riot(), */ \
)
@@ -107,7 +109,7 @@ var/global/list/autolathe_recipes_hidden = list( \
SetLuminosity(2)
else
SetLuminosity(0)
/obj/machinery/autolathe/New()
..()
component_parts = list()
@@ -122,7 +124,7 @@ var/global/list/autolathe_recipes_hidden = list( \
wires = new(src)
src.L = autolathe_recipes
src.LL = autolathe_recipes_hidden
/obj/machinery/autolathe/proc/wires_win(mob/user as mob)
var/dat as text
dat += "Autolathe Wires:<BR>"
@@ -180,36 +182,36 @@ var/global/list/autolathe_recipes_hidden = list( \
/obj/machinery/autolathe/interact(mob/user as mob)
if(..())
return
if (src.shocked)
src.shock(user,50)
if (src.panel_open)
wires_win(user,50)
return
if (src.disabled)
user << "\red You press the button, but nothing happens."
return
regular_win(user)
return
/obj/machinery/autolathe/attackby(var/obj/item/O as obj, var/mob/user as mob)
if (stat)
return 1
if (busy)
user << "\red The autolathe is busy. Please wait for completion of previous operation."
return 1
if (istype(O, /obj/item/weapon/screwdriver))
default_deconstruction_screwdriver(user, "autolathe_t", "autolathe", O)
return 1
if(exchange_parts(user, O))
return
return
if (panel_open)
//Don't eat multitools or wirecutters used on an open lathe.
if(istype(O, /obj/item/device/multitool) || istype(O, /obj/item/weapon/wirecutters))
@@ -304,7 +306,7 @@ var/global/list/autolathe_recipes_hidden = list( \
usr.set_machine(src)
src.add_fingerprint(usr)
if (!busy)
if(href_list["make"])
if(href_list["make"])
var/coeff = 2 ** prod_coeff
var/turf/T = get_step(src.loc, get_dir(src,usr))
@@ -355,7 +357,7 @@ var/global/list/autolathe_recipes_hidden = list( \
src.m_amount -= template.m_amt*multiplier
src.g_amount -= template.g_amt*multiplier
src.f_amount -= template.f_amt*multiplier
var/obj/new_item = new template.type(T)
var/obj/new_item = new template.type(T)
var/obj/item/stack/S = new_item
S.amount = multiplier
else
@@ -364,16 +366,16 @@ var/global/list/autolathe_recipes_hidden = list( \
src.f_amount -= template.f_amt/coeff
var/obj/item/new_item = new template.type(T)
new_item.m_amt /= coeff
new_item.g_amt /= coeff
new_item.f_amt /= coeff
new_item.g_amt /= coeff
new_item.f_amt /= coeff
if(src.m_amount < 0)
src.m_amount = 0
if(src.g_amount < 0)
src.g_amount = 0
if(src.f_amount < 0)
src.f_amount = 0
busy = 0
busy = 0
if(href_list["act"])
var/temp_wire = href_list["wire"]
if(href_list["act"] == "pulse")
@@ -422,8 +424,8 @@ var/global/list/autolathe_recipes_hidden = list( \
max_g_amount = tot_rating
max_f_amount = tot_rating
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
prod_coeff += M.rating - 1
prod_coeff += M.rating - 1
/obj/machinery/autolathe/RefreshParts()
..()
var/tot_rating = 0
+6 -6
View File
@@ -219,7 +219,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
return
var/selected = plist[c]
aiPDA.create_message(user, selected)
/mob/living/silicon/ai/proc/cmd_show_message_log(mob/user as mob)
if(user.stat == 2)
user << "You can't do that because you are dead!"
@@ -247,7 +247,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
return
var/selected = plist[c]
create_message(usr, selected)
/obj/item/device/pda/ai/verb/cmd_show_message_log()
set category = "AI IM"
set name = "Show Message Log"
@@ -918,18 +918,18 @@ var/global/list/obj/item/device/pda/PDAs = list()
useMS.send_pda_message("[P.owner]","[owner]","[t]")
tnote.Add(list(list("sent" = 1, "owner" = "[P.owner]", "job" = "[P.ownjob]", "message" = "[t]", "target" = "\ref[P]")))
P.tnote.Add(list(list("sent" = 0, "owner" = "[owner]", "job" = "[ownjob]", "message" = "[t]", "target" = "\ref[src]")))
for(var/mob/M in player_list)
/* for(var/mob/M in player_list)
if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTEARS)) // src.client is so that ghosts don't have to listen to mice
if(istype(M, /mob/new_player))
continue
M.show_message("<span class='game say'>PDA Message - <span class='name'>[owner]</span> -> <span class='name'>[P.owner]</span>: <span class='message'>[t]</span></span>")
M.show_message("<span class='game say'>PDA Message - <span class='name'>[owner]</span> -> <span class='name'>[P.owner]</span>: <span class='message'>[t]</span></span>") */
investigate_log("<span class='game say'>PDA Message - <span class='name'>[U.key] - [owner]</span> -> <span class='name'>[P.owner]</span>: <span class='message'>[t]</span></span>", "pda")
if(!conversations.Find("\ref[P]"))
conversations.Add("\ref[P]")
if(!P.conversations.Find("\ref[src]"))
P.conversations.Add("\ref[src]")
/*
if (prob(15)) //Give the AI a chance of intercepting the message
var/who = src.owner
if(prob(50))
@@ -938,7 +938,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
// Allows other AIs to intercept the message but the AI won't intercept their own message.
if(ai.aiPDA != P && ai.aiPDA != src)
ai.show_message("<i>Intercepted message from <b>[who]</b>: [t]</i>")
*/
if (!P.silent)
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
+44 -1
View File
@@ -193,4 +193,47 @@
icon_state = initial(icon_state)
/obj/item/device/flashlight/slime/attack_self(mob/user)
return //Bio-luminescence does not toggle.
return //Bio-luminescence does not toggle.
/obj/item/device/flashlight/emp
origin_tech = "magnets=4;syndicate=5"
var/emp_max_charges = 4
var/emp_cur_charges = 4
var/charge_tick = 0
/obj/item/device/flashlight/emp/New()
..()
processing_objects.Add(src)
/obj/item/device/flashlight/emp/Destroy()
processing_objects.Remove(src)
..()
/obj/item/device/flashlight/emp/process()
charge_tick++
if(charge_tick < 10) return 0
charge_tick = 0
emp_cur_charges = min(emp_cur_charges+1, emp_max_charges)
return 1
/obj/item/device/flashlight/emp/attack(mob/living/M as mob, mob/living/user as mob)
if(on && user.zone_sel.selecting == "eyes") // call original attack proc only if aiming at the eyes
..()
return
/obj/item/device/flashlight/emp/afterattack(atom/A as mob|obj, mob/user, proximity)
if(!proximity) return
if (emp_cur_charges > 0)
emp_cur_charges -= 1
A.visible_message("<span class='danger'>[user] blinks \the [src] at \the [A].", \
"<span class='userdanger'>[user] blinks \the [src] at \the [A].")
if(ismob(A))
var/mob/M = A
add_logs(user, M, "attacked", object="EMP-light")
user << "\The [src] now has [emp_cur_charges] charge\s."
A.emp_act(1)
else
user << "<span class='warning'>\The [src] needs time to recharge!</span>"
return
+2 -2
View File
@@ -409,9 +409,9 @@
/obj/item/weapon/twohanded/dualsaber/toy/IsShield()
return 0
/*
/obj/item/weapon/twohanded/dualsaber/toy/IsReflect()//Stops Toy Dualsabers from reflecting energy projectiles
return 0 */ //uncomment this once reflecting is ported
return 0
/obj/item/toy/katana
name = "replica katana"
@@ -326,6 +326,18 @@ CIGARETTE PACKETS ARE IN FANCY.DM
return
if(location)
location.hotspot_expose(700, 5)
if(reagents && reagents.total_volume) // check if it has any reagents at all
if(iscarbon(loc) && (src == loc:wear_mask)) // if it's in the human/monkey mouth, transfer reagents to the mob
if(istype(loc, /mob/living/carbon/human))
var/mob/living/carbon/human/H = loc
if(H.species.flags & IS_SYNTHETIC)
return
var/mob/living/carbon/C = loc
if(prob(15)) // so it's not an instarape in case of acid
reagents.reaction(C, INGEST)
reagents.trans_to(C, REAGENTS_METABOLISM)
else // else just remove some of the reagents
reagents.remove_any(REAGENTS_METABOLISM)
return
/obj/item/clothing/mask/cigarette/pipe/attack_self(mob/user as mob) //Refills the pipe. Can be changed to an attackby later, if loose tobacco is added to vendors or something.
@@ -267,6 +267,11 @@
block = TELEBLOCK
..()
/obj/item/weapon/dnainjector/telemut/darkbundle
name = "DNA injector"
desc = "Good. Let the hate flow through you."
/obj/item/weapon/dnainjector/antitele
name = "DNA-Injector (Anti-Tele.)"
desc = "Will make you not able to control your mind."
@@ -567,3 +567,28 @@ the implant may become unstable and either pre-maturely inject the subject or si
name = "cortical stack"
desc = "A fist-sized mass of biocircuits and chips."
icon_state = "implant_evil"
/obj/item/weapon/implant/emp
name = "emp implant"
desc = "Triggers an EMP."
var/activation_emote = "chuckle"
var/uses = 2
/obj/item/weapon/implant/emp/New()
activation_emote = pick("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "smile", "pale", "sniff", "whimper", "wink")
..()
return
/obj/item/weapon/implant/emp/trigger(emote, mob/living/carbon/source as mob)
if (src.uses < 1) return 0
if (emote == src.activation_emote)
src.uses--
empulse(source, 3, 5)
return
/obj/item/weapon/implant/emp/implanted(mob/living/carbon/source)
source.mind.store_memory("EMP implant can be activated [uses] time\s by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.", 0, 0)
source << "The implanted EMP implant can be activated [uses] time\s by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
return 1
@@ -170,3 +170,12 @@
..()
update()
return
/obj/item/weapon/implanter/emp
name = "implanter-EMP"
New()
src.imp = new /obj/item/weapon/implant/emp(src)
..()
update()
return
@@ -214,6 +214,17 @@
var/new_name = pick("evil", "suspicious", "ominous", "donk-flavored", "robust", "sneaky")
name = "[new_name] cigarette packet"
/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate
name = "cigarette packet"
desc = "An obscure brand of cigarettes."
icon_state = "syndiepacket"
item_state = "syndiepacket"
/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate/New()
..()
for(var/i = 1 to storage_slots)
reagents.add_reagent("doctorsdelight",15)
/*
* Vial Box
*/
@@ -1,11 +1,12 @@
/obj/item/weapon/storage/box/syndicate/
New()
..()
switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "freedom" = 1, "hacker" = 1, "lordsingulo" = 1, "smoothoperator" = 1)))
switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "bond" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "implant" = 1, "hacker" = 1, "lordsingulo" = 1, "darklord" = 1)))
if("bloodyspai")
new /obj/item/clothing/under/chameleon(src)
new /obj/item/clothing/mask/gas/voice(src)
new /obj/item/weapon/card/id/syndicate(src)
new /obj/item/weapon/card/id/syndicate(src)
new /obj/item/clothing/shoes/syndigaloshes(src)
return
@@ -15,12 +16,20 @@
new /obj/item/device/chameleon(src)
return
if("bond")
new /obj/item/weapon/gun/projectile/automatic/pistol(src)
new /obj/item/weapon/silencer(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/clothing/under/chameleon(src)
new /obj/item/weapon/card/id/syndicate(src)
if("screwed")
new /obj/effect/spawner/newbomb/timer/syndicate(src)
new /obj/effect/spawner/newbomb/timer/syndicate(src)
new /obj/item/device/radio/beacon/syndicate/bomb(src)
new /obj/item/weapon/grenade/syndieminibomb(src)
new /obj/item/device/powersink(src)
new /obj/item/clothing/suit/space/syndicate(src)
new /obj/item/clothing/head/helmet/space/syndicate(src)
new /obj/item/clothing/suit/space/syndicate/black/red(src)
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
return
if("guns")
@@ -37,11 +46,18 @@
new /obj/item/clothing/shoes/syndigaloshes(src)
return
if("freedom")
if("implant")
var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(src)
O.imp = new /obj/item/weapon/implant/freedom(O)
var/obj/item/weapon/implanter/U = new /obj/item/weapon/implanter(src)
U.imp = new /obj/item/weapon/implant/uplink(U)
var/obj/item/weapon/implanter/C = new /obj/item/weapon/implanter(src)
C.imp = new /obj/item/weapon/implant/emp(C)
var/obj/item/weapon/implanter/K = new /obj/item/weapon/implanter(src)
K.imp = new /obj/item/weapon/implant/adrenalin(K)
var/obj/item/weapon/implanter/S = new /obj/item/weapon/implanter(src)
S.imp = new /obj/item/weapon/implant/explosive(S)
S.name += " (explosive)"
return
if("hacker")
@@ -52,19 +68,18 @@
if("lordsingulo")
new /obj/item/device/radio/beacon/syndicate(src)
new /obj/item/clothing/suit/space/syndicate(src)
new /obj/item/clothing/head/helmet/space/syndicate(src)
new /obj/item/clothing/suit/space/syndicate/black/red(src)
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
new /obj/item/weapon/card/emag(src)
return
if("smoothoperator")
new /obj/item/weapon/gun/projectile/automatic/pistol(src)
new /obj/item/weapon/silencer(src)
new /obj/item/weapon/soap/syndie(src)
new /obj/item/weapon/storage/bag/trash(src)
new /obj/item/bodybag(src)
new /obj/item/clothing/under/suit_jacket(src)
new /obj/item/clothing/shoes/laceup(src)
if("darklord")
new /obj/item/weapon/melee/energy/sword(src)
new /obj/item/weapon/melee/energy/sword(src)
new /obj/item/weapon/dnainjector/telemut/darkbundle(src)
new /obj/item/clothing/head/chaplain_hood(src)
new /obj/item/clothing/suit/chaplain_hoodie(src)
new /obj/item/weapon/card/id/syndicate(src)
return
/obj/item/weapon/storage/box/syndie_kit
@@ -165,4 +180,14 @@
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
/obj/item/weapon/storage/box/syndie_kit/emp
name = "boxed EMP kit"
New()
..()
new /obj/item/weapon/grenade/empgrenade(src)
new /obj/item/weapon/grenade/empgrenade(src)
new /obj/item/weapon/implanter/emp/(src)
new /obj/item/device/flashlight/emp/(src)
+1 -1
View File
@@ -24,7 +24,7 @@
var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","psilocybin","lube",
"plantbgone","banana","anti_toxin","space_drugs","hyperzine","holywater","ethanol","hot_coco","pacid",
"blood","stoxin","fluorine","ryetalyn","mutagen","oxycodone","fuel","cryptobiolin",
"impedrezene","mindbreaker","nanites","xenomicrobes","lipozine","frostoil","alchdranine","beepskysmash",
"impedrezene","mindbreaker","nanites","xenomicrobes","lipozine","frostoil","doctorsdelight","beepskysmash",
"tricordrazine", "amatoxin", "adminordrazine", "neurotoxin", "zombiepowder", "synaptizine")
var/datum/reagents/R = new/datum/reagents(50)
R.my_atom = vent
@@ -153,6 +153,6 @@
for(counter=0, counter<=powerlevel, counter++)
var/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice(src.loc)
S.reagents.add_reagent("mushroomhallucinogen", powerlevel)
S.reagents.add_reagent("alchdranine", powerlevel)
S.reagents.add_reagent("doctorsdelight", powerlevel)
S.reagents.add_reagent("synaptizine", powerlevel)
del(src)
+98 -29
View File
@@ -1717,8 +1717,6 @@ datum
description = "Alchdranine is an extremely strange chemical substance that can be used to treat almost any injury with a high level of effectiveness "
reagent_state = LIQUID
color = "#07a4d1" // rgb: 7, 164, 209
toxod = OVERDOSE/3
burnod = OVERDOSE/3
on_mob_life(var/mob/living/M as mob, var/alien)
if(M.stat == 2.0)
@@ -1913,6 +1911,21 @@ datum
..()
return
inacusiate
name = "Inacusiate"
id = "inacusiate"
description = "Heals ear damage."
reagent_state = LIQUID
color = "#6600FF" // rgb: 100, 165, 255
toxod = OVERDOSE
scannable = 1
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.ear_damage = 0
M.ear_deaf = 0
..()
return
peridaxon
name = "Peridaxon"
@@ -1986,9 +1999,9 @@ datum
if(!M) M = holder.my_atom
if(M.bodytemperature < 170)
M.adjustCloneLoss(-1)
M.adjustOxyLoss(-2)
M.heal_organ_damage(2,2)
M.adjustToxLoss(-2)
M.adjustOxyLoss(-3)
M.heal_organ_damage(3,3)
M.adjustToxLoss(-3)
..()
return
@@ -2003,7 +2016,11 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(M.bodytemperature < 170)
M.adjustCloneLoss(-4)
M.adjustCloneLoss(-3)
M.adjustOxyLoss(-3)
M.heal_organ_damage(3,3)
M.adjustToxLoss(-3)
M.status_flags &= ~DISFIGURED
..()
return
@@ -2272,6 +2289,7 @@ datum
M.drowsyness = 0
M.stuttering = 0
M.confused = 0
M.reagents.remove_all_type(/datum/reagent/ethanol, 1*REM, 0, 1)
..()
return
@@ -2309,9 +2327,9 @@ datum
M.sleeping += 1
if(51 to INFINITY)
M.sleeping += 1
M:toxloss += (data - 50)
M.adjustToxLoss((data - 50)*REM)
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
..()
return
beer2 //copypasta of chloral hydrate, disguised as normal beer for use by emagged brobots
@@ -2515,27 +2533,37 @@ datum
return
else if ( mouth_covered ) // Reduced effects if partially protected
victim << "\red Your [safe_thing] protect you from most of the pepperspray!"
victim.eye_blurry = max(M.eye_blurry, 15)
victim.eye_blind = max(M.eye_blind, 5)
victim.Stun(5)
victim.Weaken(5)
//victim.Paralyse(10)
//victim.drop_item()
if(prob(5))
victim.emote("scream")
victim.eye_blurry = max(M.eye_blurry, 3)
victim.eye_blind = max(M.eye_blind, 1)
victim.confused = max(M.confused, 3)
victim.damageoverlaytemp = 60
victim.Weaken(3)
victim.drop_item()
return
else if ( eyes_covered ) // Eye cover is better than mouth cover
victim << "\red Your [safe_thing] protects your eyes from the pepperspray!"
victim.emote("scream")
victim.eye_blurry = max(M.eye_blurry, 5)
victim.eye_blurry = max(M.eye_blurry, 3)
victim.damageoverlaytemp = 30
return
else // Oh dear :D
victim.emote("scream")
if(prob(5))
victim.emote("scream")
victim << "\red You're sprayed directly in the eyes with pepperspray!"
victim.eye_blurry = max(M.eye_blurry, 25)
victim.eye_blind = max(M.eye_blind, 10)
victim.Stun(5)
victim.eye_blurry = max(M.eye_blurry, 5)
victim.eye_blind = max(M.eye_blind, 2)
victim.confused = max(M.confused, 6)
victim.damageoverlaytemp = 75
victim.Weaken(5)
//victim.Paralyse(10)
//victim.drop_item()
victim.drop_item()
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(prob(5))
M.visible_message("<span class='warning'>[M] [pick("dry heaves!","coughs!","splutters!")]</span>")
..()
return
frostoil
name = "Frost Oil"
@@ -2917,7 +2945,7 @@ datum
on_mob_life(var/mob/living/M as mob)
..()
if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1*REM)
if(M.getOxyLoss() && prob(30)) M.adjustOxyLoss(-1*REM)
return
tomatojuice
@@ -2967,15 +2995,16 @@ datum
id = "doctorsdelight"
description = "A gulp a day keeps the MediBot away. That's probably for the best."
reagent_state = LIQUID
nutriment_factor = 1 * FOOD_METABOLISM
color = "#664300" // rgb: 102, 67, 0
color = "#FF8CFF" // rgb: 255, 140, 255
on_mob_life(var/mob/living/M as mob)
M:nutrition += nutriment_factor
holder.remove_reagent(src.id, FOOD_METABOLISM)
if(!M) M = holder.my_atom
if(M:getToxLoss() && prob(80)) M:adjustToxLoss(-1)
if(M.getOxyLoss() && prob(80)) M.adjustOxyLoss(-2)
if(M.getBruteLoss() && prob(80)) M.heal_organ_damage(2,0)
if(M.getFireLoss() && prob(80)) M.heal_organ_damage(0,2)
if(M.getToxLoss() && prob(80)) M.adjustToxLoss(-2)
if(M.dizziness !=0) M.dizziness = max(0,M.dizziness-15)
if(M.confused !=0) M.confused = max(0,M.confused - 5)
..()
return
@@ -3014,11 +3043,31 @@ datum
description = "The raw essence of a banana."
color = "#863333" // rgb: 175, 175, 0
on_mob_life(var/mob/living/M as mob)
M.nutrition += nutriment_factor
if(istype(M, /mob/living/carbon/human) && M.job in list("Clown"))
if(!M) M = holder.my_atom
M.heal_organ_damage(1,1)
M.nutrition += nutriment_factor
..()
return
..()
nothing
name = "Nothing"
id = "nothing"
description = "Absolutely nothing."
on_mob_life(var/mob/living/M as mob)
M.nutrition += nutriment_factor
if(istype(M, /mob/living/carbon/human) && M.job in list("Mime"))
if(!M) M = holder.my_atom
M.heal_organ_damage(1,1)
M.nutrition += nutriment_factor
..()
return
..()
potato_juice
name = "Potato Juice"
id = "potato"
@@ -3938,6 +3987,16 @@ datum
nutriment_factor = 1 * FOOD_METABOLISM
color = "#664300" // rgb: 102, 67, 0
on_mob_life(var/mob/living/M as mob)
M.nutrition += nutriment_factor
if(istype(M, /mob/living/carbon/human) && M.job in list("Clown"))
if(!M) M = holder.my_atom
M.heal_organ_damage(1,1)
M.nutrition += nutriment_factor
..()
return
..()
silencer
name = "Silencer"
id = "silencer"
@@ -3945,6 +4004,16 @@ datum
nutriment_factor = 1 * FOOD_METABOLISM
color = "#664300" // rgb: 102, 67, 0
on_mob_life(var/mob/living/M as mob)
M.nutrition += nutriment_factor
if(istype(M, /mob/living/carbon/human) && M.job in list("Mime"))
if(!M) M = holder.my_atom
M.heal_organ_damage(1,1)
M.nutrition += nutriment_factor
..()
return
..()
changelingsting
name = "Changeling Sting"
id = "changelingsting"
+8 -1
View File
@@ -319,6 +319,13 @@ datum
required_reagents = list("carbon" = 1, "hydrogen" = 1, "anti_toxin" = 1)
result_amount = 2
inacusiate
name = "inacusiate"
id = "inacusiate"
result = "inacusiate"
required_reagents = list("water" = 1, "carbon" = 1, "anti_toxin" = 1)
result_amount = 2
ethylredoxrazine
name = "Ethylredoxrazine"
id = "ethylredoxrazine"
@@ -1769,7 +1776,7 @@ datum
name = "The Doctor's Delight"
id = "doctordelight"
result = "doctorsdelight"
required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1)
required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1, "tricordrazine" = 1)
result_amount = 5
irish_cream
@@ -15,14 +15,14 @@
var/recharge_time = 5 //Time it takes for shots to recharge (in seconds)
var/list/datum/reagents/reagent_list = list()
var/list/reagent_ids = list("tricordrazine", "inaprovaline", "spaceacillin")
var/list/reagent_ids = list("doctorsdelight", "inaprovaline", "spaceacillin")
//var/list/reagent_ids = list("dexalin", "kelotane", "bicaridine", "anti_toxin", "inaprovaline", "spaceacillin")
/obj/item/weapon/reagent_containers/borghypo/surgeon
reagent_ids = list("bicaridine", "inaprovaline", "dexalin")
/obj/item/weapon/reagent_containers/borghypo/crisis
reagent_ids = list("tricordrazine", "inaprovaline", "tramadol")
reagent_ids = list("doctorsdelight", "inaprovaline", "tramadol")
/obj/item/weapon/reagent_containers/borghypo/New()
..()
@@ -1276,7 +1276,7 @@
New()
..()
reagents.add_reagent("nutriment", 4)
reagents.add_reagent("alchdranine", 5)
reagents.add_reagent("doctorsdelight", 5)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato
@@ -2205,7 +2205,7 @@
New()
..()
reagents.add_reagent("nutriment", 8)
reagents.add_reagent("alchdranine", 5)
reagents.add_reagent("doctorsdelight", 5)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/appletart
@@ -20,7 +20,7 @@
/obj/item/weapon/reagent_containers/hypospray/New() //comment this to make hypos start off empty
..()
reagents.add_reagent("tricordrazine", 30)
reagents.add_reagent("doctorsdelight", 30)
return
/obj/item/weapon/reagent_containers/hypospray/attack(mob/M as mob, mob/user as mob)
@@ -64,7 +64,7 @@
/obj/item/weapon/reagent_containers/hypospray/combat/New()
..()
reagents.remove_reagent("tricordrazine", 30)
reagents.remove_reagent("doctorsdelight", 30)
reagents.add_reagent("synaptizine", 30)
@@ -76,10 +76,11 @@
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(5)
volume = 5
var/emagged = 0
/obj/item/weapon/reagent_containers/hypospray/autoinjector/New()
..()
reagents.remove_reagent("tricordrazine", 30)
reagents.remove_reagent("doctorsdelight", 30)
reagents.add_reagent("tramadol", 4)
reagents.add_reagent("hyperzine", 1)
update_icon()
@@ -87,8 +88,9 @@
/obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M as mob, mob/user as mob)
..()
if(reagents.total_volume <= 0) //Prevents autoinjectors to be refilled.
flags &= ~OPENCONTAINER
if(!emagged)
if(reagents.total_volume <= 0) //Prevents autoinjectors to be refilled.
flags &= ~OPENCONTAINER
update_icon()
return
@@ -105,6 +107,13 @@
else
usr << "\blue It is spent."
/obj/item/weapon/reagent_containers/hypospray/autoinjector/attackby(var/obj/item/weapon/D as obj, var/mob/user as mob)
if(istype(D, /obj/item/weapon/card/emag) && !emagged)
emagged = 1
user << "<span class='notice'>You bypass the electronic child-safety lock on the reagent storage.</span>"
else
..()
return
/obj/item/weapon/reagent_containers/hypospray/hyperzine
name = "emergency stimulant autoinjector"
+1 -1
View File
@@ -207,7 +207,7 @@ datum/tech/bluespace
name = "'Blue-space' Research"
desc = "Research into the sub-reality known as 'blue-space'"
id = "bluespace"
max_level=4
max_level=6
datum/tech/biotech
name = "Biological Technology"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB