mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-14 04:02:07 +00:00
Drug Expansion (#8575)
* adds drugs and means to make them * nutmeg sprite and hallucination changes * adjustments + sounds courtesy of serithi * nit nack paddy wack
This commit is contained in:
@@ -5,13 +5,13 @@
|
||||
//Illicit drugs~
|
||||
/obj/item/storage/pill_bottle/happy
|
||||
name = "bottle of Happy pills"
|
||||
desc = "Highly illegal drug. When you want to see the rainbow."
|
||||
desc = "A recreational drug. When you want to see the rainbow. Probably not work-approved..."
|
||||
wrapper_color = COLOR_PINK
|
||||
starts_with = list(/obj/item/reagent_containers/pill/happy = 7)
|
||||
|
||||
/obj/item/storage/pill_bottle/zoom
|
||||
name = "bottle of Zoom pills"
|
||||
desc = "Highly illegal drug. Trade brain for speed."
|
||||
desc = "Probably illegal. Trade brain for speed."
|
||||
wrapper_color = COLOR_BLUE
|
||||
starts_with = list(/obj/item/reagent_containers/pill/zoom = 7)
|
||||
|
||||
@@ -52,8 +52,8 @@
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "powder"
|
||||
item_state = "powder"
|
||||
amount_per_transfer_from_this = 2
|
||||
possible_transfer_amounts = 2
|
||||
amount_per_transfer_from_this = 5
|
||||
possible_transfer_amounts = 5
|
||||
w_class = ITEMSIZE_TINY
|
||||
volume = 50
|
||||
|
||||
@@ -94,4 +94,36 @@
|
||||
if(!reagents.total_volume) /// Did we use all of it?
|
||||
qdel(src)
|
||||
|
||||
////// End powder. /////////
|
||||
////// End powder. ///////////
|
||||
//////////////////////////////
|
||||
///// Drugs for loadout///////
|
||||
|
||||
/obj/item/storage/pill_bottle/bliss
|
||||
name = "unlabeled pill bottle"
|
||||
desc = "A pill bottle with its label suspiciously scratched out."
|
||||
starts_with = list(/obj/item/reagent_containers/pill/unidentified/bliss = 7)
|
||||
|
||||
/obj/item/storage/pill_bottle/snowflake
|
||||
name = "unlabeled pill bottle"
|
||||
desc = "A pill bottle with its label suspiciously scratched out."
|
||||
starts_with = list(/obj/item/reagent_containers/pill/unidentified/snowflake = 7)
|
||||
|
||||
/obj/item/storage/pill_bottle/royale
|
||||
name = "unlabeled pill bottle"
|
||||
desc = "A pill bottle with its label suspiciously scratched out."
|
||||
starts_with = list(/obj/item/reagent_containers/pill/unidentified/royale = 7)
|
||||
|
||||
/obj/item/storage/pill_bottle/sinkhole
|
||||
name = "unlabeled pill bottle"
|
||||
desc = "A pill bottle with its label suspiciously scratched out."
|
||||
starts_with = list(/obj/item/reagent_containers/pill/unidentified/sinkhole = 7)
|
||||
|
||||
/obj/item/storage/pill_bottle/colorspace
|
||||
name = "unlabeled pill bottle"
|
||||
desc = "A pill bottle with its label suspiciously scratched out."
|
||||
starts_with = list(/obj/item/reagent_containers/pill/unidentified/colorspace = 7)
|
||||
|
||||
/obj/item/storage/pill_bottle/schnappi
|
||||
name = "unlabeled pill bottle"
|
||||
desc = "A pill bottle with its label suspiciously scratched out."
|
||||
starts_with = list(/obj/item/reagent_containers/pill/unidentified/schnappi = 7)
|
||||
@@ -545,6 +545,11 @@
|
||||
desc = "Contains the seeds you need to get a little high."
|
||||
starts_with = list(/obj/item/seeds/ambrosiavulgarisseed = 7)
|
||||
|
||||
/obj/item/storage/box/ambrosia_grown
|
||||
name = "ambrosia box"
|
||||
desc = "Contains a little pick-me-up for the long work day."
|
||||
starts_with = list(/obj/item/reagent_containers/food/snacks/grown/ambrosiavulgaris = 7)
|
||||
|
||||
/obj/item/storage/box/ambrosiadeus
|
||||
name = "ambrosia deus seeds box"
|
||||
desc = "Contains the seeds you need to get a proper healthy high."
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/datum/gear/contraband
|
||||
display_name = "ambrosia box"
|
||||
description = "A box of a familiar plant."
|
||||
path = /obj/item/storage/box/ambrosia_grown
|
||||
cost = 1
|
||||
sort_category = "Contraband"
|
||||
|
||||
/datum/gear/contraband/pills
|
||||
display_name = "unlabeled pill bottle"
|
||||
description = "A pill bottle of more... recreational sorts."
|
||||
path = /obj/item/storage/pill_bottle
|
||||
cost = 2
|
||||
|
||||
/datum/gear/contraband/pills/New()
|
||||
..()
|
||||
var/drug_type = list()
|
||||
drug_type["Bliss"] = /obj/item/storage/pill_bottle/bliss
|
||||
drug_type["Snowflake"] = /obj/item/storage/pill_bottle/snowflake
|
||||
drug_type["Royale"] = /obj/item/storage/pill_bottle/royale
|
||||
drug_type["Sinkhole"] = /obj/item/storage/pill_bottle/sinkhole
|
||||
drug_type["Colorspace"] = /obj/item/storage/pill_bottle/colorspace
|
||||
drug_type["Schnappi"] = /obj/item/storage/pill_bottle/schnappi
|
||||
gear_tweaks += new/datum/gear_tweak/path(drug_type)
|
||||
|
||||
/datum/gear/contraband/rollingpaper
|
||||
display_name = "rolling papers"
|
||||
description = "Paper for rolling various smokeables. Now you just need something to roll up inside..."
|
||||
path = /obj/item/storage/rollingpapers
|
||||
cost = 1
|
||||
|
||||
/datum/gear/contraband/rollingpaper/New()
|
||||
..()
|
||||
var/paperselect = list("rolling papers" = /obj/item/storage/rollingpapers,
|
||||
"blunt wrappers" = /obj/item/storage/rollingpapers/blunt)
|
||||
gear_tweaks += new/datum/gear_tweak/path(paperselect)
|
||||
@@ -1,223 +1,71 @@
|
||||
/*
|
||||
Ideas for the subtle effects of hallucination:
|
||||
|
||||
Light up oxygen/phoron indicators (done)
|
||||
Cause health to look critical/dead, even when standing (done)
|
||||
Characters silently watching you
|
||||
Brief flashes of fire/space/bombs/c4/dangerous shit (done)
|
||||
Items that are rare/traitorous/don't exist appearing in your inventory slots (done)
|
||||
Strange audio (should be rare) (done)
|
||||
Gunshots/explosions/opening doors/less rare audio (done)
|
||||
|
||||
Hallucinations should not be oOoOoOo whacky, that's dumb.
|
||||
Room for expanding on, but let's not imagine the crew wailing on you for taking some drugs.
|
||||
*/
|
||||
|
||||
/mob/living/carbon
|
||||
var/image/halimage
|
||||
var/image/halbody
|
||||
var/obj/halitem
|
||||
var/hal_screwyhud = 0 //1 - critical, 2 - dead, 3 - oxygen indicator, 4 - toxin indicator
|
||||
var/handling_hal = 0
|
||||
var/hal_crit = 0
|
||||
var/halmob_action
|
||||
|
||||
/mob/living/carbon/proc/handle_hallucinations()
|
||||
if(handling_hal) return
|
||||
handling_hal = 1
|
||||
while(client && hallucination > 20)
|
||||
sleep(rand(200,500)/(hallucination/25))
|
||||
var/halpick = rand(1,100)
|
||||
switch(halpick)
|
||||
if(0 to 15)
|
||||
//Screwy HUD
|
||||
//to_chat(src, "Screwy HUD")
|
||||
hal_screwyhud = pick(1,2,3,3,4,4)
|
||||
spawn(rand(100,250))
|
||||
hal_screwyhud = 0
|
||||
if(16 to 25)
|
||||
//Strange items
|
||||
//to_chat(src, "Traitor Items")
|
||||
if(!halitem)
|
||||
halitem = new
|
||||
var/list/slots_free = list(ui_lhand,ui_rhand)
|
||||
if(l_hand) slots_free -= ui_lhand
|
||||
if(r_hand) slots_free -= ui_rhand
|
||||
if(istype(src,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(!H.belt) slots_free += ui_belt
|
||||
if(!H.l_store) slots_free += ui_storage1
|
||||
if(!H.r_store) slots_free += ui_storage2
|
||||
if(slots_free.len)
|
||||
halitem.screen_loc = pick(slots_free)
|
||||
halitem.hud_layerise()
|
||||
switch(rand(1,6))
|
||||
if(1) //revolver
|
||||
halitem.icon = 'icons/obj/gun.dmi'
|
||||
halitem.icon_state = "revolver"
|
||||
halitem.name = "Revolver"
|
||||
if(2) //c4
|
||||
halitem.icon = 'icons/obj/assemblies.dmi'
|
||||
halitem.icon_state = "plastic-explosive0"
|
||||
halitem.name = "Mysterious Package"
|
||||
if(prob(25))
|
||||
halitem.icon_state = "c4small_1"
|
||||
if(3) //sword
|
||||
halitem.icon = 'icons/obj/weapons.dmi'
|
||||
halitem.icon_state = "sword1"
|
||||
halitem.name = "Sword"
|
||||
if(4) //stun baton
|
||||
halitem.icon = 'icons/obj/weapons.dmi'
|
||||
halitem.icon_state = "stunbaton"
|
||||
halitem.name = "Stun Baton"
|
||||
if(5) //emag
|
||||
halitem.icon = 'icons/obj/card.dmi'
|
||||
halitem.icon_state = "emag"
|
||||
halitem.name = "Cryptographic Sequencer"
|
||||
if(6) //flashbang
|
||||
halitem.icon = 'icons/obj/grenade.dmi'
|
||||
halitem.icon_state = "flashbang1"
|
||||
halitem.name = "Flashbang"
|
||||
if(client) client.screen += halitem
|
||||
spawn(rand(100,250))
|
||||
if(client)
|
||||
client.screen -= halitem
|
||||
halitem = null
|
||||
if(26 to 40)
|
||||
//Flashes of danger
|
||||
//to_chat(src, "Danger Flash")
|
||||
if(!halimage)
|
||||
if(client && hallucination > 20)
|
||||
var/list/halpick = list()
|
||||
halpick |= list("messages", "sounds")
|
||||
if(hallucination > 40)
|
||||
halpick |= list("goodvoice", "badvoice")
|
||||
if(hallucination > 65)
|
||||
halpick |= list("ignoring", "badsounds")
|
||||
if(hallucination > 80)
|
||||
halpick |= list("dangerimage")
|
||||
var/chosenhal = pick(halpick)
|
||||
if(prob(25))
|
||||
switch(chosenhal)
|
||||
if("messages")
|
||||
var/list/msg_list = list("Everything around you feels like it's breathing...",
|
||||
"There are such strange patterns everywhere... you can't take your eyes off them.",
|
||||
"You feel in tune with your surroundings. You're part of them...",
|
||||
"What was that noise?",
|
||||
"You feel like something is crawling on you...!")
|
||||
to_chat(src, "<span class='warning'>[pick(msg_list)]</span>")
|
||||
if("sounds") /// Relatively harmless sounds to hear.
|
||||
var/list/soundlist = list('sound/items/bikehorn.ogg', 'sound/items/drink.ogg', 'sound/items/polaroid1.ogg', 'sound/items/lighter_on.ogg',
|
||||
'sound/machines/vending/vending_cans.ogg', 'sound/weapons/flash.ogg')
|
||||
src << pick(soundlist)
|
||||
if("goodvoice")
|
||||
if(prob(10))
|
||||
halmob_action = "goodvoice"
|
||||
mob_hallucinate(src)
|
||||
if("badvoice")
|
||||
if(prob(10))
|
||||
halmob_action = "badvoice"
|
||||
mob_hallucinate(src)
|
||||
if("ignoring") /// Paranoid isolation
|
||||
if(prob(10))
|
||||
halmob_action = "ignoring"
|
||||
mob_hallucinate(src)
|
||||
if("badsounds")
|
||||
var/list/soundlist = list('sound/hallucinations/serithi/creepy1.ogg', 'sound/hallucinations/serithi/creepy2.ogg','sound/hallucinations/serithi/creepy3.ogg')
|
||||
src << pick(soundlist)
|
||||
if("dangerimage") /// Dangers like fire on random tiles.
|
||||
var/list/possible_points = list()
|
||||
for(var/turf/simulated/floor/F in view(src,world.view))
|
||||
possible_points += F
|
||||
for(var/turf/simulated/floor/F in range(7, src))
|
||||
if(can_see(src, F, 7))
|
||||
possible_points += F
|
||||
if(possible_points.len)
|
||||
var/turf/simulated/floor/target = pick(possible_points)
|
||||
|
||||
switch(rand(1,3))
|
||||
switch(rand(1,2))
|
||||
if(1)
|
||||
//to_chat(src, "Space")
|
||||
halimage = image('icons/turf/space.dmi',target,"[rand(1,25)]",TURF_LAYER)
|
||||
if(2)
|
||||
//to_chat(src, "Fire")
|
||||
halimage = image('icons/effects/fire.dmi',target,"1",TURF_LAYER)
|
||||
if(3)
|
||||
//to_chat(src, "C4")
|
||||
if(2)
|
||||
halimage = image('icons/obj/assemblies.dmi',target,"plastic-explosive2",OBJ_LAYER+0.01)
|
||||
|
||||
|
||||
if(client) client.images += halimage
|
||||
if(client)
|
||||
client.images += halimage
|
||||
spawn(rand(10,50)) //Only seen for a brief moment.
|
||||
if(client) client.images -= halimage
|
||||
if(client)
|
||||
client.images -= halimage
|
||||
halimage = null
|
||||
|
||||
|
||||
if(41 to 65)
|
||||
//Strange audio
|
||||
//to_chat(src, "Strange Audio")
|
||||
switch(rand(1,12))
|
||||
if(1) src << 'sound/machines/door/old_airlock.ogg'
|
||||
if(2)
|
||||
if(prob(50))src << 'sound/effects/Explosion1.ogg'
|
||||
else src << 'sound/effects/Explosion2.ogg'
|
||||
if(3) src << 'sound/effects/explosionfar.ogg'
|
||||
if(4) src << 'sound/effects/Glassbr1.ogg'
|
||||
if(5) src << 'sound/effects/Glassbr2.ogg'
|
||||
if(6) src << 'sound/effects/Glassbr3.ogg'
|
||||
if(7) src << 'sound/machines/twobeep.ogg'
|
||||
if(8) src << 'sound/machines/door/windowdoor.ogg'
|
||||
if(9)
|
||||
//To make it more realistic, I added two gunshots (enough to kill)
|
||||
src << 'sound/weapons/Gunshot1.ogg'
|
||||
spawn(rand(10,30))
|
||||
src << 'sound/weapons/Gunshot2.ogg'
|
||||
if(10) src << 'sound/weapons/smash.ogg'
|
||||
if(11)
|
||||
//Same as above, but with tasers.
|
||||
src << 'sound/weapons/Taser.ogg'
|
||||
spawn(rand(10,30))
|
||||
src << 'sound/weapons/Taser.ogg'
|
||||
//Rare audio
|
||||
if(12)
|
||||
//These sounds are (mostly) taken from Hidden: Source
|
||||
var/list/creepyasssounds = list('sound/effects/ghost.ogg', 'sound/effects/ghost2.ogg', 'sound/effects/Heart Beat.ogg', 'sound/effects/screech.ogg',\
|
||||
'sound/hallucinations/behind_you1.ogg', 'sound/hallucinations/behind_you2.ogg', 'sound/hallucinations/far_noise.ogg', 'sound/hallucinations/growl1.ogg', 'sound/hallucinations/growl2.ogg',\
|
||||
'sound/hallucinations/growl3.ogg', 'sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg', 'sound/hallucinations/i_see_you1.ogg', 'sound/hallucinations/i_see_you2.ogg',\
|
||||
'sound/hallucinations/look_up1.ogg', 'sound/hallucinations/look_up2.ogg', 'sound/hallucinations/over_here1.ogg', 'sound/hallucinations/over_here2.ogg', 'sound/hallucinations/over_here3.ogg',\
|
||||
'sound/hallucinations/turn_around1.ogg', 'sound/hallucinations/turn_around2.ogg', 'sound/hallucinations/veryfar_noise.ogg', 'sound/hallucinations/wail.ogg')
|
||||
src << pick(creepyasssounds)
|
||||
if(66 to 70)
|
||||
//Flashes of danger
|
||||
//to_chat(src, "Danger Flash")
|
||||
if(!halbody)
|
||||
var/list/possible_points = list()
|
||||
for(var/turf/simulated/floor/F in view(src,world.view))
|
||||
possible_points += F
|
||||
if(possible_points.len)
|
||||
var/turf/simulated/floor/target = pick(possible_points)
|
||||
switch(rand(1,4))
|
||||
if(1)
|
||||
halbody = image('icons/mob/human.dmi',target,"husk_l",TURF_LAYER)
|
||||
if(2,3)
|
||||
halbody = image('icons/mob/human.dmi',target,"husk_s",TURF_LAYER)
|
||||
if(4)
|
||||
halbody = image('icons/mob/alien.dmi',target,"alienother",TURF_LAYER)
|
||||
// if(5)
|
||||
// halbody = image('xcomalien.dmi',target,"chryssalid",TURF_LAYER)
|
||||
|
||||
if(client) client.images += halbody
|
||||
spawn(rand(50,80)) //Only seen for a brief moment.
|
||||
if(client) client.images -= halbody
|
||||
halbody = null
|
||||
if(71 to 72)
|
||||
//Fake death
|
||||
// src.sleeping_willingly = 1
|
||||
SetSleeping(20)
|
||||
hal_crit = 1
|
||||
hal_screwyhud = 1
|
||||
spawn(rand(50,100))
|
||||
// src.sleeping_willingly = 0
|
||||
SetSleeping(0)
|
||||
hal_crit = 0
|
||||
hal_screwyhud = 0
|
||||
handling_hal = 0
|
||||
|
||||
|
||||
|
||||
|
||||
/*obj/machinery/proc/mockpanel(list/buttons,start_txt,end_txt,list/mid_txts)
|
||||
|
||||
if(!mocktxt)
|
||||
|
||||
mocktxt = ""
|
||||
|
||||
var/possible_txt = list("Launch Escape Pods","Self-Destruct Sequence","\[Swipe ID\]","De-Monkify",\
|
||||
"Reticulate Splines","Plasma","Open Valve","Lockdown","Nerf Airflow","Kill Traitor","Nihilism",\
|
||||
"OBJECTION!","Arrest Stephen Bowman","Engage Anti-Trenna Defenses","Increase Site Manager IQ","Retrieve Arms",\
|
||||
"Play Charades","Oxygen","Inject BeAcOs","Ninja Lizards","Limit Break","Build Sentry")
|
||||
|
||||
if(mid_txts)
|
||||
while(mid_txts.len)
|
||||
var/mid_txt = pick(mid_txts)
|
||||
mocktxt += mid_txt
|
||||
mid_txts -= mid_txt
|
||||
|
||||
while(buttons.len)
|
||||
|
||||
var/button = pick(buttons)
|
||||
|
||||
var/button_txt = pick(possible_txt)
|
||||
|
||||
mocktxt += "<a href='?src=\ref[src];[button]'>[button_txt]</a><br>"
|
||||
|
||||
buttons -= button
|
||||
possible_txt -= button_txt
|
||||
|
||||
return start_txt + mocktxt + end_txt + "</TT></BODY></HTML>"
|
||||
|
||||
/proc/check_panel(mob/M)
|
||||
if (istype(M, /mob/living/carbon/human) || istype(M, /mob/living/silicon/ai))
|
||||
if(M.hallucination < 15)
|
||||
return 1
|
||||
return 0*/
|
||||
|
||||
/obj/effect/fake_attacker
|
||||
/obj/effect/mob_hallucination
|
||||
icon = null
|
||||
icon_state = null
|
||||
name = ""
|
||||
@@ -226,8 +74,6 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
anchored = 1
|
||||
opacity = 0
|
||||
var/mob/living/carbon/human/my_target = null
|
||||
var/weapon_name = null
|
||||
var/obj/item/weap = null
|
||||
var/image/stand_icon = null
|
||||
var/image/currentimage = null
|
||||
var/icon/base = null
|
||||
@@ -236,45 +82,36 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
var/image/left
|
||||
var/image/right
|
||||
var/image/up
|
||||
var/collapse
|
||||
var/image/down
|
||||
var/halaction
|
||||
|
||||
var/health = 100
|
||||
|
||||
/obj/effect/fake_attacker/attackby(var/obj/item/P as obj, mob/user as mob)
|
||||
/obj/effect/mob_hallucination/attackby(var/obj/item/P as obj, mob/user as mob)
|
||||
step_away(src,my_target,2)
|
||||
for(var/mob/M in oviewers(world.view,my_target))
|
||||
to_chat(M, "<font color='red'><B>[my_target] flails around wildly.</B></font>")
|
||||
my_target.show_message("<font color='red'><B>[src] has been attacked by [my_target] </B></font>", 1) //Lazy.
|
||||
|
||||
src.health -= P.force
|
||||
|
||||
my_target.show_message("<font color='red'><B>[src] has been attacked by [my_target] </B></font>", 1)
|
||||
|
||||
return
|
||||
|
||||
/obj/effect/fake_attacker/Crossed(var/mob/M, somenumber)
|
||||
/obj/effect/mob_hallucination/Crossed(var/mob/M, oldloc)
|
||||
if(M == my_target)
|
||||
step_away(src,my_target,2)
|
||||
if(prob(30))
|
||||
for(var/mob/O in oviewers(world.view , my_target))
|
||||
to_chat(O, "<font color='red'><B>[my_target] stumbles around.</B></font>")
|
||||
|
||||
/obj/effect/fake_attacker/Initialize()
|
||||
/obj/effect/mob_hallucination/Initialize()
|
||||
. = ..()
|
||||
QDEL_IN(src, 30 SECONDS)
|
||||
step_away(src,my_target,2)
|
||||
spawn attack_loop()
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/effect/fake_attacker/Destroy()
|
||||
/obj/effect/mob_hallucination/Destroy()
|
||||
if(my_target)
|
||||
my_target.hallucinations -= src
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/effect/fake_attacker/proc/updateimage()
|
||||
// qdel(src.currentimage)
|
||||
|
||||
|
||||
/obj/effect/mob_hallucination/proc/updateimage()
|
||||
if(src.dir == NORTH)
|
||||
qdel(src.currentimage)
|
||||
src.currentimage = new /image(up,src)
|
||||
@@ -289,128 +126,64 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
src.currentimage = new /image(left,src)
|
||||
my_target << currentimage
|
||||
|
||||
/obj/effect/mob_hallucination/process()
|
||||
var/mob/living/carbon/human/H = my_target
|
||||
sleep(rand(5,20))
|
||||
if(get_dist(src, H) == 0)
|
||||
step_away(src, H, 2)
|
||||
if(prob(50) && get_dist(src, H) > 1 && halaction != "ignoring")
|
||||
src.set_dir(get_dir(src, H))
|
||||
step_towards(src, H)
|
||||
updateimage()
|
||||
else if(prob(5))
|
||||
if(halaction == "goodvoice")
|
||||
var/list/msg_list = list("We are all one with the cosmos.", "Wow!", "I'm glad you're here.", "We're safe here.",
|
||||
"You look amazing!", "I forgive you.", "Everything is taken care of.", "You don't need to worry.", "Follow your bliss.",
|
||||
"It's all going to turn out just fine.", "The universe understands you.", "The future is all assured.", "You are healing.",
|
||||
"In a gentle way, you can shake the world...", "Endless opportunities flow from you.", "Keep going!")
|
||||
if(name != "")
|
||||
to_chat(H, "<span class='notice'>[name] says, \"[pick(msg_list)]\"</span>")
|
||||
else
|
||||
to_chat(H, "<span class='notice'>A hazy figure says, \"[pick(msg_list)]\"</span>")
|
||||
if(halaction == "badvoice")
|
||||
var/list/msg_list = list("Your friends are lying.", "You shouldn't have done that.", "Haven't you forgotten something?",
|
||||
"Mind your own business.", "They were right, you know.", "You aren't supposed to be here.", "We're watching you.", "Don't look at me.",
|
||||
"You should be ashamed of yourself.", "Get out of here!", "You disgust me.", "The world is closing in.", "It's all your fault.",
|
||||
"They're coming for you.", "It's only a matter of time.", "You ruined it.", "Nothing you do matters.", "You're wasting their time.",
|
||||
"It wasn't an accident.")
|
||||
if(name != "")
|
||||
to_chat(H, "<span class='warning'>[name] says, \"[pick(msg_list)]\"</span>")
|
||||
else
|
||||
to_chat(H, "<span class='warning'>A hazy figure says, \"[pick(msg_list)]\"</span>")
|
||||
if(halaction == "ignoring")
|
||||
step_away(src, H, 3)
|
||||
if(prob(5))
|
||||
to_chat(H, "<span class='warning'>No one seems to know you're there...</span>")
|
||||
|
||||
/obj/effect/fake_attacker/proc/attack_loop()
|
||||
while(1)
|
||||
sleep(rand(5,10))
|
||||
if(src.health < 0)
|
||||
collapse()
|
||||
continue
|
||||
if(get_dist(src,my_target) > 1)
|
||||
src.set_dir(get_dir(src,my_target))
|
||||
step_towards(src,my_target)
|
||||
updateimage()
|
||||
else
|
||||
if(prob(15))
|
||||
if(weapon_name)
|
||||
my_target << sound(pick('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg'))
|
||||
my_target.show_message("<font color='red'><B>[my_target] has been attacked with [weapon_name] by [src.name] </B></font>", 1)
|
||||
my_target.halloss += 8
|
||||
if(prob(20)) my_target.eye_blurry += 3
|
||||
if(prob(33))
|
||||
if(!locate(/obj/effect/overlay) in my_target.loc)
|
||||
fake_blood(my_target)
|
||||
else
|
||||
my_target << sound(pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg'))
|
||||
my_target.show_message("<font color='red'><B>[src.name] has punched [my_target]!</B></font>", 1)
|
||||
my_target.halloss += 4
|
||||
if(prob(33))
|
||||
if(!locate(/obj/effect/overlay) in my_target.loc)
|
||||
fake_blood(my_target)
|
||||
|
||||
if(prob(15))
|
||||
step_away(src,my_target,2)
|
||||
|
||||
/obj/effect/fake_attacker/proc/collapse()
|
||||
collapse = 1
|
||||
updateimage()
|
||||
|
||||
/proc/fake_blood(var/mob/target)
|
||||
var/obj/effect/overlay/O = new/obj/effect/overlay(target.loc)
|
||||
O.name = "blood"
|
||||
var/image/I = image('icons/effects/blood.dmi',O,"floor[rand(1,7)]",O.dir,1)
|
||||
target << I
|
||||
spawn(300)
|
||||
qdel(O)
|
||||
return
|
||||
|
||||
var/global/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_magazine/s357,\
|
||||
/obj/item/gun/energy/crossbow, /obj/item/melee/energy/sword,\
|
||||
/obj/item/storage/box/syndicate, /obj/item/storage/box/emps,\
|
||||
/obj/item/cartridge/syndicate, /obj/item/clothing/under/chameleon,\
|
||||
/obj/item/clothing/shoes/syndigaloshes, /obj/item/card/id/syndicate,\
|
||||
/obj/item/clothing/mask/gas/voice, /obj/item/clothing/glasses/thermal,\
|
||||
/obj/item/chameleon, /obj/item/card/emag,\
|
||||
/obj/item/storage/toolbox/syndicate, /obj/item/aiModule,\
|
||||
/obj/item/radio/headset/syndicate, /obj/item/plastique,\
|
||||
/obj/item/powersink, /obj/item/storage/box/syndie_kit,\
|
||||
/obj/item/toy/syndicateballoon, /obj/item/gun/energy/captain,\
|
||||
/obj/item/hand_tele, /obj/item/rcd, /obj/item/tank/jetpack,\
|
||||
/obj/item/clothing/under/rank/captain, /obj/item/aicard,\
|
||||
/obj/item/clothing/shoes/magboots, /obj/item/blueprints, /obj/item/disk/nuclear,\
|
||||
/obj/item/clothing/suit/space/void, /obj/item/tank)
|
||||
|
||||
/proc/fake_attack(var/mob/living/target)
|
||||
/proc/mob_hallucinate(var/mob/living/carbon/target)
|
||||
var/list/possible_clones = new/list()
|
||||
var/mob/living/carbon/human/clone = null
|
||||
var/clone_weapon = null
|
||||
|
||||
for(var/mob/living/carbon/human/H in living_mob_list)
|
||||
if(H.stat || H.lying)
|
||||
continue
|
||||
possible_clones += H
|
||||
// clone = H
|
||||
// break //changed the code a bit. Less randomised, but less work to do. Should be ok, world.contents aren't stored in any particular order.
|
||||
|
||||
if(!possible_clones.len)
|
||||
return
|
||||
clone = pick(possible_clones)
|
||||
if(!clone)
|
||||
return
|
||||
|
||||
//var/obj/effect/fake_attacker/F = new/obj/effect/fake_attacker(outside_range(target))
|
||||
var/obj/effect/fake_attacker/F = new/obj/effect/fake_attacker(target.loc)
|
||||
if(clone.l_hand)
|
||||
if(!(locate(clone.l_hand) in non_fakeattack_weapons))
|
||||
clone_weapon = clone.l_hand.name
|
||||
F.weap = clone.l_hand
|
||||
else if (clone.r_hand)
|
||||
if(!(locate(clone.r_hand) in non_fakeattack_weapons))
|
||||
clone_weapon = clone.r_hand.name
|
||||
F.weap = clone.r_hand
|
||||
var/obj/effect/mob_hallucination/MH = new/obj/effect/mob_hallucination(target.loc)
|
||||
|
||||
F.name = clone.name
|
||||
F.my_target = target
|
||||
F.weapon_name = clone_weapon
|
||||
target.hallucinations += F
|
||||
MH.name = clone.name
|
||||
MH.my_target = target
|
||||
target.hallucinations += MH
|
||||
if(target.halmob_action)
|
||||
MH.halaction = target.halmob_action
|
||||
MH.left = image(clone,dir = WEST)
|
||||
MH.right = image(clone,dir = EAST)
|
||||
MH.up = image(clone,dir = NORTH)
|
||||
MH.down = image(clone,dir = SOUTH)
|
||||
|
||||
|
||||
F.left = image(clone,dir = WEST)
|
||||
F.right = image(clone,dir = EAST)
|
||||
F.up = image(clone,dir = NORTH)
|
||||
F.down = image(clone,dir = SOUTH)
|
||||
|
||||
// F.base = new /icon(clone.stand_icon)
|
||||
// F.currentimage = new /image(clone)
|
||||
|
||||
/*
|
||||
|
||||
|
||||
|
||||
F.left = new /icon(clone.stand_icon,dir=WEST)
|
||||
for(var/icon/i in clone.overlays)
|
||||
F.left.Blend(i)
|
||||
F.up = new /icon(clone.stand_icon,dir=NORTH)
|
||||
for(var/icon/i in clone.overlays)
|
||||
F.up.Blend(i)
|
||||
F.down = new /icon(clone.stand_icon,dir=SOUTH)
|
||||
for(var/icon/i in clone.overlays)
|
||||
F.down.Blend(i)
|
||||
F.right = new /icon(clone.stand_icon,dir=EAST)
|
||||
for(var/icon/i in clone.overlays)
|
||||
F.right.Blend(i)
|
||||
|
||||
target << F.up
|
||||
*/
|
||||
|
||||
F.updateimage()
|
||||
MH.updateimage()
|
||||
@@ -345,3 +345,6 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds)
|
||||
|
||||
/obj/item/seeds/wurmwoad
|
||||
seed_type = "wurmwoad"
|
||||
|
||||
/obj/item/seeds/nutmeg
|
||||
seed_type = "nutmeg"
|
||||
|
||||
20
code/modules/hydroponics/seedtypes/nutmeg.dm
Normal file
20
code/modules/hydroponics/seedtypes/nutmeg.dm
Normal file
@@ -0,0 +1,20 @@
|
||||
/datum/seed/nutmeg
|
||||
name = "nutmeg"
|
||||
seed_name = "nutmeg"
|
||||
display_name = "nutmeg"
|
||||
kitchen_tag = "nutmeg"
|
||||
chems = list("nutriment" = list(1,15), "dmt" = list(1,2))
|
||||
|
||||
/datum/seed/nutmeg/New()
|
||||
..()
|
||||
set_trait(TRAIT_HARVEST_REPEAT,1)
|
||||
set_trait(TRAIT_MATURATION,6)
|
||||
set_trait(TRAIT_PRODUCTION,5)
|
||||
set_trait(TRAIT_YIELD,3)
|
||||
set_trait(TRAIT_POTENCY,8)
|
||||
set_trait(TRAIT_PRODUCT_ICON,"nutmeg")
|
||||
set_trait(TRAIT_PRODUCT_COLOUR,"#5a382f")
|
||||
set_trait(TRAIT_PLANT_COLOUR,"#397437")
|
||||
set_trait(TRAIT_PLANT_ICON,"bush2")
|
||||
set_trait(TRAIT_IDEAL_LIGHT, 6)
|
||||
set_trait(TRAIT_WATER_CONSUMPTION, 6)
|
||||
@@ -19,7 +19,8 @@
|
||||
children = list(
|
||||
/datum/lore/codex/page/not_contraband,
|
||||
/datum/lore/codex/page/contraband_controlled,
|
||||
/datum/lore/codex/page/contraband_restricted
|
||||
/datum/lore/codex/page/contraband_restricted,
|
||||
/datum/lore/codex/page/drug_contraband
|
||||
)
|
||||
|
||||
/datum/lore/codex/page/not_contraband
|
||||
@@ -29,7 +30,6 @@
|
||||
<li><b>Blades or other Equipment</b> which the possessor needs in order to fulfil their role onboard the facility, \
|
||||
such as a kitchen knife for culinary personnel.</li>\
|
||||
<li><b>Handheld Flashes</b>, which are useful for self-defense, as well as building certain machinery.</li>\
|
||||
<li><b></b></li>\
|
||||
</ul>"
|
||||
|
||||
/datum/lore/codex/page/contraband_controlled
|
||||
@@ -41,11 +41,10 @@
|
||||
<br><br>\
|
||||
The following objects are 'controlled'.\
|
||||
<ul>\
|
||||
<li><b>Recreational Drugs</b>, which includes Ambrosia.</li>\
|
||||
<li><b>Recreational Drugs</b>, such as Ambrosia.</li>\
|
||||
<li><b>Non-Lethal Weaponry</b>, for persons not authorized to handle them, such as Security or Command Staff. This includes Stun Batons, Tasers, Pepper-Spray, \
|
||||
Flashbangs</li>\
|
||||
<li><b></b></li>\
|
||||
<li><b></b></li>\
|
||||
<li><b>Physical Restraints</b>, both makeshift and not.</li>\
|
||||
</ul>"
|
||||
|
||||
/datum/lore/codex/page/contraband_restricted
|
||||
@@ -61,10 +60,34 @@
|
||||
<li><b>Lethal Guns</b>, meaning guns which possess the capability to kill someone. Functional ballistic weaponry can be loaded \
|
||||
with ammunition that is lethal, meaning it falls under this. Energy weapons lacking a lethal mode, such as tasers, do not fall under this. \
|
||||
Weapons which emit electromagnetic pulses, sometimes called 'Ionic' weapons, are considered lethal, as they are lethal to synthetics.</li>\
|
||||
<li><b>Narcotic Drugs</b>, such as Mindbreaker.</li>\
|
||||
<li><b>Illegal Drugs</b>, such as Royale.</li>\
|
||||
<li><b>Illicit Identification Cards</b>, which includes forgeries, as well as ID cards designed to tamper with electronics.</li>\
|
||||
</ul>"
|
||||
|
||||
/datum/lore/codex/page/drug_contraband
|
||||
name = "Legal Status of Drugs"
|
||||
data = "If possession, creation, or distribution of a drug is a corporate or law violation depends entirely on the drug. The legal age for \
|
||||
recreational use of any legal drug in Vir is 18. The most commonly found drugs and their legal status are as follows: \
|
||||
<br><ul> \
|
||||
<li><b>Alcohol - Legal</b>, Use may be restricted in public areas and private properties. A license is required to sell, but not to produce.</li> \
|
||||
<li><b>Nicotine - Legal</b>, Use is unrestricted in public areas, but may be in private properties. A license is required to sell, but not to produce.</li> \
|
||||
<li><b>Bliss - Legal</b>, Use is restricted to private residence or licensed controlled environments. A license is required to produce and to sell.</li> \
|
||||
<li><b>Royale - Illegal</b>, Used in creation of other legal compounds, a license is required to produce or sell for non-recreational use. Possession is otherwise illegal.</li> \
|
||||
<li><b>Hyperzine - Legal</b>, Use is restricted to private residence or licensed controlled environments. A license is required to produce and to sell. \
|
||||
NanoTrasen facilities are licensed to distribute for work needs.</li> \
|
||||
<li><b>Ambrosia - Legal</b>, May be restricted in public areas and private properties. A license is not required to produce, but is required to sell.</li> \
|
||||
<li><b>Sinkhole - Illegal</b>, Production, possession, and distribution are all illegal in Vir.</li> \
|
||||
<li><b>Snowflake - Legal</b>, Use is restricted to private residence or licensed controlled environments. A license is required to produce and to sell.</li> \
|
||||
<li><b>DMT - Legal</b>, Also known as dimethyltryptamine, use is restricted to private residence or licensed controlled environments. A license is not required \
|
||||
to produce, but is required to sell.</li> \
|
||||
<li><b>Ayahuasca - Legal</b>, Use is restricted to private residence or licensed controlled environments. NanoTrasen facilities are a licensed controlled environment, \
|
||||
but restrict use to religious ceremony. A license is not required to produce, but is required to sell.</li> \
|
||||
<li><b>Colorspace - Legal</b>, Use is restricted to private residence or licensed controlled environments. A license is required to produce and to sell.</li> \
|
||||
<li><b>Psilocybin - Legal</b>, Use is restricted to private residence or licensed controlled environments. A license is not required to produce, but is required to sell.</li> \
|
||||
<li><b>Schnappi - Illegal</b>, Production, possession, and distribution are all illegal in Vir.</li> \
|
||||
<li><b>Mindbreaker - Illegal</b>, Used in creation of other legal compounds, a license is required to produce or sell for non-recreational use. Possession is otherwise illegal.</li> \
|
||||
</ul>"
|
||||
|
||||
/datum/lore/codex/page/corporate_punishments
|
||||
name = "Punishments (Corporate)"
|
||||
data = "Violations of Corporate Regulations can be resolved in a wide variety of ways. The Command staff on-board the facility \
|
||||
|
||||
@@ -1066,10 +1066,7 @@
|
||||
|
||||
if(hallucination)
|
||||
if(hallucination >= 20 && !(species.flags & (NO_POISON|IS_PLANT|NO_HALLUCINATION)) )
|
||||
if(prob(3))
|
||||
fake_attack(src)
|
||||
if(!handling_hal)
|
||||
spawn handle_hallucinations() //The not boring kind!
|
||||
handle_hallucinations()
|
||||
if(client && prob(5))
|
||||
client.dir = pick(2,4,8)
|
||||
spawn(rand(20,50))
|
||||
@@ -1107,7 +1104,7 @@
|
||||
if(client || sleeping > 3)
|
||||
AdjustSleeping(-1)
|
||||
throw_alert("asleep", /obj/screen/alert/asleep)
|
||||
if( prob(2) && health && !hal_crit && client )
|
||||
if( prob(2) && health && client )
|
||||
spawn(0)
|
||||
emote("snore")
|
||||
//CONSCIOUS
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
var/max_nutrition = MAX_NUTRITION
|
||||
|
||||
var/hallucination = 0 //Directly affects how long a mob will hallucinate for
|
||||
var/list/atom/hallucinations = list() //A list of hallucinated people that try to attack the mob. See /obj/effect/fake_attacker in hallucinations.dm
|
||||
var/list/atom/hallucinations = list() //A list of hallucinated people. See hallucinations.dm
|
||||
|
||||
var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out.
|
||||
var/base_attack_cooldown = DEFAULT_ATTACK_COOLDOWN
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/machinery/chem_master
|
||||
name = "ChemMaster 3000"
|
||||
desc = "Used to seperate and package chemicals in to patches, pills, or bottles. Warranty void if used to create Space Drugs."
|
||||
desc = "Used to seperate and package chemicals in to patches, pills, or bottles. Warranty void if used to create illicit drugs."
|
||||
density = 1
|
||||
anchored = 1
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
|
||||
@@ -1263,3 +1263,10 @@
|
||||
result = "fusionnaire"
|
||||
required_reagents = list("lemonjuice" = 3, "vodka" = 2, "schnapps_pep" = 1, "schnapps_lem" = 1, "rum" = 1, "ice" = 1)
|
||||
result_amount = 9
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/ayahuasca
|
||||
name = "Ayahuasca"
|
||||
id = "ayahuasca"
|
||||
result = "ayahuasca"
|
||||
required_reagents = list("water" = 1, "dmt" = 2, "honey" = 1)
|
||||
result_amount = 3
|
||||
@@ -266,11 +266,18 @@
|
||||
required_reagents = list("bicaridine" = 1, "iron" = 2, "spidertoxin" = 1)
|
||||
result_amount = 2
|
||||
|
||||
/decl/chemical_reaction/instant/royale
|
||||
name = "Royale"
|
||||
id = "royale"
|
||||
result = "royale"
|
||||
required_reagents = list("copper" = 1, "phosphorus" = 1, "sulfur" = 1)
|
||||
result_amount = 3
|
||||
|
||||
/decl/chemical_reaction/instant/hyperzine
|
||||
name = "Hyperzine"
|
||||
id = "hyperzine"
|
||||
result = "hyperzine"
|
||||
required_reagents = list("sugar" = 1, "phosphorus" = 1, "sulfur" = 1)
|
||||
required_reagents = list("royale" = 1, "sugar" = 1, "phosphorus" = 1)
|
||||
result_amount = 3
|
||||
|
||||
/decl/chemical_reaction/instant/stimm
|
||||
@@ -550,6 +557,34 @@
|
||||
required_reagents = list("hydrogen" = 2, "carbon" = 2, "ammonia" = 2)
|
||||
result_amount = 6
|
||||
|
||||
/decl/chemical_reaction/instant/snowflake
|
||||
name = "Snowflake"
|
||||
id = "snowflake"
|
||||
result = "snowflake"
|
||||
required_reagents = list("frostoil" = 1, "fuel" = 1, "sulfur" = 1)
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/sinkhole
|
||||
name = "Sinkhole"
|
||||
id = "sinkhole"
|
||||
result = "sinkhole"
|
||||
required_reagents = list("enzyme" = 1, "bicaridine" = 1, "tramadol" = 1)
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/schnappi
|
||||
name = "Schnappi"
|
||||
id = "schnappi"
|
||||
result = "schnappi"
|
||||
required_reagents = list("ammonia" = 1, "tramadol" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, "fuel" = 1)
|
||||
result_amount = 6
|
||||
|
||||
/decl/chemical_reaction/instant/colorspace
|
||||
name = "Colorspace"
|
||||
id = "colorspace"
|
||||
result = "colorspace"
|
||||
required_reagents = list("hydrogen" = 1, "ethanol" = 1, "silicon" = 1)
|
||||
result_amount = 1
|
||||
|
||||
/* Solidification */
|
||||
|
||||
/decl/chemical_reaction/instant/solidification
|
||||
|
||||
@@ -328,9 +328,8 @@
|
||||
|
||||
/obj/item/reagent_containers/pill/zoom/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("impedrezene", 10)
|
||||
reagents.add_reagent("royale", 10)
|
||||
reagents.add_reagent("synaptizine", 5)
|
||||
reagents.add_reagent("hyperzine", 5)
|
||||
color = reagents.get_color()
|
||||
|
||||
/obj/item/reagent_containers/pill/diet
|
||||
@@ -342,3 +341,39 @@
|
||||
. = ..()
|
||||
reagents.add_reagent("lipozine", 2)
|
||||
color = reagents.get_color()
|
||||
|
||||
//// Recreational drugs for loadout
|
||||
/obj/item/reagent_containers/pill/unidentified
|
||||
name = "mysterious pill"
|
||||
desc = "You're not quite sure what's in this..."
|
||||
icon_state = "pill1"
|
||||
|
||||
/obj/item/reagent_containers/pill/unidentified/bliss/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("bliss", 10)
|
||||
color = reagents.get_color()
|
||||
|
||||
/obj/item/reagent_containers/pill/unidentified/snowflake/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("snowflake", 10)
|
||||
color = reagents.get_color()
|
||||
|
||||
/obj/item/reagent_containers/pill/unidentified/royale/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("royale", 5)
|
||||
color = reagents.get_color()
|
||||
|
||||
/obj/item/reagent_containers/pill/unidentified/sinkhole/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("sinkhole", 5)
|
||||
color = reagents.get_color()
|
||||
|
||||
/obj/item/reagent_containers/pill/unidentified/colorspace/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("colorspace", 10)
|
||||
color = reagents.get_color()
|
||||
|
||||
/obj/item/reagent_containers/pill/unidentified/schnappi/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("schnappi", 5)
|
||||
color = reagents.get_color()
|
||||
@@ -109,7 +109,6 @@
|
||||
|
||||
M.adjustToxLoss(-2)
|
||||
M.druggy = max(M.druggy, drug_strength)
|
||||
M.heal_organ_damage(6)
|
||||
M.adjustOxyLoss(-3)
|
||||
M.AdjustStunned(-1)
|
||||
if(prob(5) && prob_proc == TRUE)
|
||||
@@ -144,7 +143,8 @@
|
||||
M.druggy = max(M.druggy, 30)
|
||||
|
||||
var/effective_dose = dose
|
||||
if(issmall(M)) effective_dose *= 2
|
||||
if(issmall(M))
|
||||
effective_dose *= 2
|
||||
if(effective_dose < 1 * threshold)
|
||||
M.apply_effect(3, STUTTER)
|
||||
M.make_dizzy(5)
|
||||
@@ -206,6 +206,240 @@
|
||||
color = "#181818"
|
||||
high_messages = FALSE
|
||||
|
||||
/datum/reagent/drugs/snowflake
|
||||
name = "Snowflake"
|
||||
id = "snowflake"
|
||||
description = "A recreational stimulant refined from frostoil found in certain plants."
|
||||
taste_description = "metallic and bitter"
|
||||
overdose = 15
|
||||
color = "#bbd7eb"
|
||||
high_message_list = list("You feel euphoric!",
|
||||
"You feel unstoppable.",
|
||||
"You just can't seem to stop sniffling...",
|
||||
"You feel impatient...",
|
||||
"Your eyes feel a bit dry.")
|
||||
sober_message_list = list("You feel a bit more sluggish.",
|
||||
"You feel terrible...",
|
||||
"You feel pretty dehydrated.")
|
||||
|
||||
/datum/reagent/drugs/snowflake/affect_blood(mob/living/carbon/M, alien, removed)
|
||||
..()
|
||||
|
||||
M.add_chemical_effect(CE_PAINKILLER,3)
|
||||
if(prob(12) && prob_proc == TRUE)
|
||||
M.emote(pick("shiver", "sniff"))
|
||||
prob_proc = FALSE
|
||||
|
||||
/datum/reagent/drugs/snowflake/overdose(mob/living/carbon/M, alien, removed)
|
||||
if(prob(35) && prob_proc == TRUE)
|
||||
M.vomit()
|
||||
M.adjustToxLoss(5)
|
||||
M.adjustBrainLoss(1)
|
||||
..()
|
||||
|
||||
/datum/reagent/drugs/royale
|
||||
name = "Royale"
|
||||
id = "royale"
|
||||
description = "A drug used in the process of making Hyperzine. A powerful stimulant on its own, it comes with significant drawbacks and potential for misuse."
|
||||
taste_description = "something faint and odious"
|
||||
color = "#dbd4ba"
|
||||
overdose = 10
|
||||
high_message_list = list("You feel energized!",
|
||||
"You're just not going fast enough. Faster!",
|
||||
"You could out-run the world if you tried.",
|
||||
"It's almost painful to sit still...",
|
||||
"Is everything going in slow motion?")
|
||||
sober_message_list = list("Everything is suddenly... sluggish.",
|
||||
"You feel like trash, but you can finally sit still...")
|
||||
|
||||
/datum/reagent/drugs/royale/affect_blood(mob/living/carbon/M, alien, removed)
|
||||
..()
|
||||
if(alien == IS_TAJARA) /// Similar to hyperzine...
|
||||
removed *= 1.25
|
||||
if(alien == IS_SLIME)
|
||||
M.make_jittery(4)
|
||||
if(dose >= 5)
|
||||
M.adjust_nutrition(-removed * 2)
|
||||
if(prob(5) && prob_proc == TRUE)
|
||||
M.emote(pick("twitch", "blink_r", "shiver"))
|
||||
M.add_chemical_effect(CE_PAINKILLER, 20) /// With chance of pain numbing...
|
||||
prob_proc = FALSE
|
||||
M.add_chemical_effect(CE_SPEEDBOOST, 1) /// And less speed boost.
|
||||
|
||||
/datum/reagent/drugs/royale/overdose(mob/living/carbon/M, alien, removed)
|
||||
if(prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained())
|
||||
for(var/i = 0, i < 4, i++)
|
||||
step(M, pick(cardinal))
|
||||
if(prob(5))
|
||||
M.emote("laugh")
|
||||
if(prob(5))
|
||||
M.visible_message("<span class = 'danger'>[M]'s hands flip out and flail everywhere!</span>")
|
||||
var/obj/item/I = M.get_active_hand()
|
||||
if(I)
|
||||
M.drop_item()
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustBrainLoss(pick(0.5, 0.6, 0.7, 0.8, 0.9, 1))
|
||||
..()
|
||||
|
||||
/datum/reagent/drugs/sinkhole
|
||||
name = "Sinkhole"
|
||||
id = "sinkhole"
|
||||
description = "A painkiller and recreational drug that hampers brain function."
|
||||
taste_description = "a grainy paste"
|
||||
color = "#462d35"
|
||||
high_message_list = list("You feel euphoric!",
|
||||
"You have a strange sense of calm and excitement all at once.",
|
||||
"You feel... sleepy.",
|
||||
"You feel dizzy.")
|
||||
sober_message_list = list("Your thoughts are in a fog...", "You just need to lay down and rest.")
|
||||
|
||||
/datum/reagent/drugs/sinkhole/affect_blood(mob/living/carbon/M, alien, removed)
|
||||
..()
|
||||
|
||||
M.add_chemical_effect(CE_PAINKILLER, 40)
|
||||
M.adjustBrainLoss(0.25)
|
||||
if(prob(5) && prob_proc == TRUE)
|
||||
M.emote(pick("shiver", "twitch"))
|
||||
prob_proc = FALSE
|
||||
|
||||
/datum/reagent/drugs/sinkhole/overdose(mob/living/carbon/M, alien, removed)
|
||||
if(prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained())
|
||||
for(var/i = 0, i < 4, i++)
|
||||
step(M, pick(cardinal))
|
||||
M.adjustToxLoss(2)
|
||||
M.drowsyness = max(M.drowsyness, 10)
|
||||
M.adjustBrainLoss(pick(0.5, 0.6, 0.7, 0.8, 0.9, 1))
|
||||
..()
|
||||
|
||||
/datum/reagent/drugs/dmt
|
||||
name = "Dimethyltryptamine"
|
||||
id = "dmt"
|
||||
description = "A psychedelic compound found naturally in certain plants."
|
||||
taste_description = "plastic"
|
||||
taste_mult = 1.8
|
||||
color = "#d4bc8e"
|
||||
high_message_list = list("You feel a sense of belonging.",
|
||||
"Are you being watched...?",
|
||||
"The boundaries of the universe feel limitless...")
|
||||
sober_message_list = list("You feel painfully grounded again.")
|
||||
|
||||
/datum/reagent/drugs/dmt/affect_blood(mob/living/carbon/M, alien, removed)
|
||||
..()
|
||||
|
||||
if(alien == IS_TAJARA)
|
||||
removed *= 1.25
|
||||
if(prob(15) && prob_proc == TRUE)
|
||||
M.emote(pick("deathgasp", "sigh", "smile"))
|
||||
prob_proc = FALSE
|
||||
|
||||
var/drug_strength = 30
|
||||
|
||||
if(alien == IS_SKRELL)
|
||||
drug_strength *= 0.8
|
||||
if(alien == IS_SLIME)
|
||||
drug_strength *= 1.2
|
||||
M.druggy = max(M.druggy, 5)
|
||||
M.hallucination = max(M.hallucination, drug_strength)
|
||||
|
||||
/datum/reagent/drugs/ayahuasca
|
||||
name = "Ayahuasca"
|
||||
id = "ayahuasca"
|
||||
description = "A brew of herbs known for religious use and spiritual experience."
|
||||
taste_description = "strong and bitter herbs"
|
||||
color = "#5b5f46"
|
||||
high_message_list = list("You feel at one with the universe.",
|
||||
"You feel in tune with the vibrations of the cosmos.",
|
||||
"The spirits are with you...",
|
||||
"Everything has a harmony, and you are part of it.")
|
||||
sober_message_list = list("The presence of the spirits fades.",
|
||||
"You feel grounded once again.")
|
||||
|
||||
/datum/reagent/drugs/ayahuasca/affect_blood(mob/living/carbon/M, alien, removed)
|
||||
if(alien == IS_TAJARA)
|
||||
removed *= 1.25
|
||||
..()
|
||||
if(prob(15) && prob_proc == TRUE)
|
||||
M.emote(pick("deathgasp", "moan", "smile", "groan"))
|
||||
prob_proc = FALSE
|
||||
var/drug_strength = 60
|
||||
|
||||
if(alien == IS_SKRELL)
|
||||
drug_strength *= 0.8
|
||||
|
||||
if(alien == IS_SLIME)
|
||||
drug_strength *= 1.2
|
||||
M.druggy = max(M.druggy, 10)
|
||||
M.hallucination = max(M.hallucination, drug_strength)
|
||||
|
||||
/datum/reagent/drugs/colorspace
|
||||
name = "Colorspace"
|
||||
id = "colorspace"
|
||||
description = "A psychedelic drug that alters thought and perception."
|
||||
taste_description = "flavorless paste"
|
||||
color = "#a7a6a4"
|
||||
high_message_list = list("The floor is melting...",
|
||||
"Everything is so much brighter! Wow!",
|
||||
"Everything is shifting around you.",
|
||||
"Your skin tickles.")
|
||||
sober_message_list = list("The world grows still again.", "Colors seem duller.")
|
||||
|
||||
/datum/reagent/drugs/colorspace/affect_blood(mob/living/carbon/M, alien, removed)
|
||||
..()
|
||||
|
||||
var/drug_strength = 80
|
||||
|
||||
if(alien == IS_SKRELL)
|
||||
drug_strength *= 0.8
|
||||
|
||||
if(alien == IS_SLIME)
|
||||
drug_strength *= 1.2
|
||||
|
||||
M.druggy = max(M.druggy, 15)
|
||||
M.hallucination = max(M.hallucination, drug_strength)
|
||||
|
||||
/datum/reagent/drugs/schnappi
|
||||
name = "Schnappi"
|
||||
id = "schnappi"
|
||||
description = "A dangerous and impure opiate that can cause necrosis in prolonged use."
|
||||
color = "#0264B4"
|
||||
taste_description = "a little crocodile" /// Schnee Schnii Schnappi, das kleiner krokodil...
|
||||
overdose = 15
|
||||
high_message_list = list("You feel pretty chill.",
|
||||
"Your skin feels all rough and dry.",
|
||||
"You feel too chill...!")
|
||||
sober_message_list = list("You're full of regret...", "Is it finally over?")
|
||||
|
||||
/datum/reagent/drugs/schnappi/affect_blood(mob/living/carbon/M, alien, removed)
|
||||
..()
|
||||
M.drowsyness = max(M.drowsyness, 5)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 1)
|
||||
if(prob(15) && prob_proc == TRUE)
|
||||
M.adjustToxLoss(2)
|
||||
prob_proc = FALSE
|
||||
if(prob(10) && prob_proc == TRUE)
|
||||
M.visible_message("<span class='warning'>[M] looks dazed!</span>")
|
||||
M.Stun(5)
|
||||
M.emote("drool")
|
||||
prob_proc = FALSE
|
||||
|
||||
/datum/reagent/drugs/schnappi/overdose(mob/living/carbon/M, alien, removed)
|
||||
M.drowsyness = max(M.drowsyness, 10)
|
||||
if(prob(10))
|
||||
M.visible_message("<span class='warning'>[M] looks dazed!</span>")
|
||||
M.Stun(3)
|
||||
M.emote("drool")
|
||||
else if(prob(10))
|
||||
to_chat(M, "<span class ='warning'>Your skin is cracking and bleeding!</span>")
|
||||
M.adjustBruteLoss(5)
|
||||
M.adjustToxLoss(1)
|
||||
M.emote("cry")
|
||||
else if(prob(10))
|
||||
M.visible_message("<span class ='warning'>[M] sways and falls over!</span>")
|
||||
M.adjustToxLoss(10)
|
||||
M.Weaken(8)
|
||||
M.emote("faint")
|
||||
..()
|
||||
|
||||
/*///////////////////////////////////////////////////////////////////////////
|
||||
/// PSYCHIATRIC DRUGS /////
|
||||
/// /////
|
||||
|
||||
@@ -608,7 +608,7 @@
|
||||
..()
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch", "blink_r", "shiver"))
|
||||
M.add_chemical_effect(CE_SPEEDBOOST, 1)
|
||||
M.add_chemical_effect(CE_SPEEDBOOST, 3)
|
||||
|
||||
/datum/reagent/hyperzine/overdose(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.3 KiB |
@@ -1577,6 +1577,7 @@
|
||||
#include "code\modules\client\preference_setup\loadout\gear_tweaks.dm"
|
||||
#include "code\modules\client\preference_setup\loadout\loadout.dm"
|
||||
#include "code\modules\client\preference_setup\loadout\loadout_accessories.dm"
|
||||
#include "code\modules\client\preference_setup\loadout\loadout_contraband.dm"
|
||||
#include "code\modules\client\preference_setup\loadout\loadout_cosmetics.dm"
|
||||
#include "code\modules\client\preference_setup\loadout\loadout_cyberware.dm"
|
||||
#include "code\modules\client\preference_setup\loadout\loadout_ears.dm"
|
||||
@@ -1994,6 +1995,7 @@
|
||||
#include "code\modules\hydroponics\seedtypes\malanitear.dm"
|
||||
#include "code\modules\hydroponics\seedtypes\mushrooms.dm"
|
||||
#include "code\modules\hydroponics\seedtypes\nettles.dm"
|
||||
#include "code\modules\hydroponics\seedtypes\nutmeg.dm"
|
||||
#include "code\modules\hydroponics\seedtypes\onion.dm"
|
||||
#include "code\modules\hydroponics\seedtypes\peanuts.dm"
|
||||
#include "code\modules\hydroponics\seedtypes\pineapple.dm"
|
||||
|
||||
BIN
sound/hallucinations/serithi/creepy1.ogg
Normal file
BIN
sound/hallucinations/serithi/creepy1.ogg
Normal file
Binary file not shown.
BIN
sound/hallucinations/serithi/creepy2.ogg
Normal file
BIN
sound/hallucinations/serithi/creepy2.ogg
Normal file
Binary file not shown.
BIN
sound/hallucinations/serithi/creepy3.ogg
Normal file
BIN
sound/hallucinations/serithi/creepy3.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user