mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
@@ -221,10 +221,8 @@ var/list/airlock_overlays = list()
|
||||
return
|
||||
else /*if(src.justzap)*/
|
||||
return
|
||||
else if(user.hallucination > 50 && prob(10) && src.operating == 0)
|
||||
user << "<span class='userdanger'>You feel a powerful shock course through your body!</span>"
|
||||
user.staminaloss += 50
|
||||
user.stunned += 5
|
||||
else if(user.hallucination > 50 && ishuman(user) && prob(10) && src.operating == 0)
|
||||
hallucinate_shock(user)
|
||||
return
|
||||
if (cyclelinkedairlock)
|
||||
if (!shuttledocked && !emergency && !cyclelinkedairlock.shuttledocked && !cyclelinkedairlock.emergency && allowed(user))
|
||||
@@ -234,6 +232,34 @@ var/list/airlock_overlays = list()
|
||||
addtimer(CALLBACK(cyclelinkedairlock, .proc/close), 2)
|
||||
..()
|
||||
|
||||
/obj/machinery/door/airlock/proc/hallucinate_shock(mob/living/user)
|
||||
var/image/shock_image = image(user, user, dir = user.dir)
|
||||
var/image/electrocution_skeleton_anim = image('icons/mob/human.dmi', user, icon_state = "electrocuted_base", layer=ABOVE_MOB_LAYER)
|
||||
shock_image.color = rgb(0,0,0)
|
||||
shock_image.override = TRUE
|
||||
electrocution_skeleton_anim.appearance_flags = RESET_COLOR
|
||||
|
||||
user << "<span class='userdanger'>You feel a powerful shock course through your body!</span>"
|
||||
if(user.client)
|
||||
user.client.images |= shock_image
|
||||
user.client.images |= electrocution_skeleton_anim
|
||||
addtimer(CALLBACK(src, .proc/reset_hallucinate_shock_animation, user, shock_image, electrocution_skeleton_anim), 40)
|
||||
user.playsound_local(get_turf(src), "sparks", 100, 1)
|
||||
user.staminaloss += 50
|
||||
user.Stun(2)
|
||||
user.jitteriness += 1000
|
||||
user.do_jitter_animation(user.jitteriness)
|
||||
addtimer(CALLBACK(src, .proc/hallucinate_shock_drop, user), 20)
|
||||
|
||||
/obj/machinery/door/airlock/proc/reset_hallucinate_shock_animation(mob/living/user, shock_image, electrocution_skeleton_anim)
|
||||
if(user.client)
|
||||
user.client.images.Remove(shock_image)
|
||||
user.client.images.Remove(electrocution_skeleton_anim)
|
||||
|
||||
/obj/machinery/door/airlock/proc/hallucinate_shock_drop(mob/living/user)
|
||||
user.jitteriness = max(user.jitteriness - 990, 10) //Still jittery, but vastly less
|
||||
user.Stun(3)
|
||||
user.Weaken(3)
|
||||
|
||||
/obj/machinery/door/airlock/proc/isElectrified()
|
||||
if(src.secondsElectrified != 0)
|
||||
|
||||
@@ -279,14 +279,14 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
if(target.client)
|
||||
target.client.images |= fakebroken
|
||||
target.client.images |= fakerune
|
||||
target.playsound_local(wall,'sound/effects/meteorimpact.ogg', 150)
|
||||
target.playsound_local(wall,'sound/effects/meteorimpact.ogg', 150, 1)
|
||||
bubblegum = new(wall, target)
|
||||
sleep(10) //ominous wait
|
||||
var/charged = FALSE //only get hit once
|
||||
while(get_turf(bubblegum) != landing)
|
||||
bubblegum.forceMove(get_step_towards(bubblegum, landing))
|
||||
bubblegum.setDir(get_dir(bubblegum, landing))
|
||||
target.playsound_local(get_turf(bubblegum), 'sound/effects/meteorimpact.ogg', 150)
|
||||
target.playsound_local(get_turf(bubblegum), 'sound/effects/meteorimpact.ogg', 150, 1)
|
||||
shake_camera(target, 2, 1)
|
||||
if(bubblegum.Adjacent(target) && !charged)
|
||||
charged = TRUE
|
||||
@@ -351,37 +351,37 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
switch(rand(1,5))
|
||||
if(1) //Laser fight
|
||||
for(var/i=0,i<hits,i++)
|
||||
target.playsound_local(null, 'sound/weapons/Laser.ogg', 25)
|
||||
target.playsound_local(null, 'sound/weapons/Laser.ogg', 25, 1)
|
||||
if(prob(75))
|
||||
addtimer(CALLBACK(target, /atom/.proc/playsound_local, null, 'sound/weapons/sear.ogg', 25), rand(10,20))
|
||||
addtimer(CALLBACK(target, /atom/.proc/playsound_local, null, 'sound/weapons/sear.ogg', 25, 1), rand(10,20))
|
||||
else
|
||||
addtimer(CALLBACK(target, /atom/.proc/playsound_local, null, 'sound/weapons/effects/searwall.ogg', 25), rand(10,20))
|
||||
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 4))
|
||||
target.playsound_local(null, get_sfx("bodyfall"), 25)
|
||||
addtimer(CALLBACK(target, /atom/.proc/playsound_local, null, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(10,20))
|
||||
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 8))
|
||||
target.playsound_local(null, get_sfx("bodyfall"), 25, 1)
|
||||
if(2) //Esword fight
|
||||
target.playsound_local(null, 'sound/weapons/saberon.ogg',15)
|
||||
target.playsound_local(null, 'sound/weapons/saberon.ogg',15, 1)
|
||||
for(var/i=0,i<hits,i++)
|
||||
target.playsound_local(null, 'sound/weapons/blade1.ogg', 25)
|
||||
sleep(CLICK_CD_MELEE)
|
||||
target.playsound_local(null, get_sfx("bodyfall"), 25)
|
||||
target.playsound_local(null, 'sound/weapons/saberoff.ogg', 15)
|
||||
target.playsound_local(null, 'sound/weapons/blade1.ogg', 25, 1)
|
||||
sleep(rand(CLICK_CD_MELEE, CLICK_CD_MELEE + 8))
|
||||
target.playsound_local(null, get_sfx("bodyfall"), 25, 1)
|
||||
target.playsound_local(null, 'sound/weapons/saberoff.ogg', 15, 1)
|
||||
if(3) //Gun fight
|
||||
for(var/i=0,i<hits,i++)
|
||||
target.playsound_local(null, get_sfx("gunshot"), 25)
|
||||
if(prob(75))
|
||||
addtimer(CALLBACK(target, /atom/.proc/playsound_local, null, 'sound/weapons/pierce.ogg', 25), rand(10,20))
|
||||
addtimer(CALLBACK(target, /atom/.proc/playsound_local, null, 'sound/weapons/pierce.ogg', 25, 1), rand(10,20))
|
||||
else
|
||||
addtimer(CALLBACK(target, /atom/.proc/playsound_local, null, "ricochet", 25), rand(10,20))
|
||||
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 4))
|
||||
target.playsound_local(null, get_sfx("bodyfall"), 25)
|
||||
addtimer(CALLBACK(target, /atom/.proc/playsound_local, null, "ricochet", 25, 1), rand(10,20))
|
||||
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 8))
|
||||
target.playsound_local(null, get_sfx("bodyfall"), 25, 1)
|
||||
if(4) //Stunprod + cablecuff
|
||||
target.playsound_local(null, 'sound/weapons/Egloves.ogg', 40)
|
||||
target.playsound_local(null, get_sfx("bodyfall"), 25)
|
||||
target.playsound_local(null, 'sound/weapons/Egloves.ogg', 40, 1)
|
||||
target.playsound_local(null, get_sfx("bodyfall"), 25, 1)
|
||||
sleep(20)
|
||||
target.playsound_local(null, 'sound/weapons/cablecuff.ogg', 15)
|
||||
target.playsound_local(null, 'sound/weapons/cablecuff.ogg', 15, 1)
|
||||
if(5) // Tick Tock
|
||||
for(var/i=0,i<hits,i++)
|
||||
target.playsound_local(null, 'sound/items/timer.ogg', 25)
|
||||
target.playsound_local(null, 'sound/items/timer.ogg', 25, 1)
|
||||
sleep(15)
|
||||
qdel(src)
|
||||
|
||||
@@ -570,7 +570,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
step_away(src,my_target,2)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src)
|
||||
my_target.playsound_local(src, P.hitsound)
|
||||
my_target.playsound_local(src, P.hitsound, 1)
|
||||
my_target.visible_message("<span class='danger'>[my_target] flails around wildly.</span>", \
|
||||
"<span class='danger'>[my_target] has attacked [src]!</span>")
|
||||
|
||||
@@ -621,7 +621,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
else
|
||||
if(prob(15))
|
||||
if(weapon_name)
|
||||
my_target.playsound_local(my_target, weap.hitsound, weap.get_clamped_volume())
|
||||
my_target.playsound_local(my_target, weap.hitsound, weap.get_clamped_volume(), 1)
|
||||
my_target.show_message("<span class='danger'>[src.name] has attacked [my_target] with [weapon_name]!</span>", 1)
|
||||
my_target.staminaloss += 30
|
||||
if(prob(20))
|
||||
@@ -781,12 +781,12 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/ballistic, /obj/item
|
||||
//Strange audio
|
||||
//src << "Strange Audio"
|
||||
switch(rand(1,20))
|
||||
if(1) playsound_local(null,'sound/machines/airlock.ogg', 15)
|
||||
if(1) playsound_local(null,'sound/machines/airlock.ogg', 15, 1)
|
||||
if(2)
|
||||
if(prob(50)) playsound_local(null,'sound/effects/Explosion1.ogg', 50)
|
||||
else playsound_local(null, 'sound/effects/Explosion2.ogg', 50)
|
||||
if(3) playsound_local(null, 'sound/effects/explosionfar.ogg', 50)
|
||||
if(4) playsound_local(null, pick('sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg'), 50)
|
||||
if(prob(50)) playsound_local(null,'sound/effects/Explosion1.ogg', 50, 1)
|
||||
else playsound_local(null, 'sound/effects/Explosion2.ogg', 50, 1)
|
||||
if(3) playsound_local(null, 'sound/effects/explosionfar.ogg', 50, 1)
|
||||
if(4) playsound_local(null, pick('sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg'), 50, 1)
|
||||
if(5)
|
||||
playsound_local(null, 'sound/weapons/ring.ogg', 35)
|
||||
sleep(15)
|
||||
@@ -798,19 +798,19 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/ballistic, /obj/item
|
||||
if(8) playsound_local(null, 'sound/voice/bfreeze.ogg', 35, 0)
|
||||
if(9)
|
||||
//To make it more realistic, I added two gunshots (enough to kill)
|
||||
playsound_local(null, 'sound/weapons/Gunshot.ogg', 25)
|
||||
playsound_local(null, 'sound/weapons/Gunshot.ogg', 25, 1)
|
||||
spawn(rand(10,30))
|
||||
playsound_local(null, 'sound/weapons/Gunshot.ogg', 25)
|
||||
playsound_local(null, 'sound/weapons/Gunshot.ogg', 25, 1)
|
||||
sleep(rand(5,10))
|
||||
playsound_local(null, sound(get_sfx("bodyfall"), 25))
|
||||
playsound_local(null, sound(get_sfx("bodyfall"), 25), 25, 1)
|
||||
if(10) playsound_local(null, 'sound/effects/pray_chaplain.ogg', 50)
|
||||
if(11)
|
||||
//Same as above, but with tasers.
|
||||
playsound_local(null, 'sound/weapons/Taser.ogg', 25)
|
||||
playsound_local(null, 'sound/weapons/Taser.ogg', 25, 1)
|
||||
spawn(rand(10,30))
|
||||
playsound_local(null, 'sound/weapons/Taser.ogg', 25)
|
||||
playsound_local(null, 'sound/weapons/Taser.ogg', 25, 1)
|
||||
sleep(rand(5,10))
|
||||
playsound_local(null, sound(get_sfx("bodyfall"), 25))
|
||||
playsound_local(null, sound(get_sfx("bodyfall"), 25), 25, 1)
|
||||
//Rare audio
|
||||
if(12)
|
||||
//These sounds are (mostly) taken from Hidden: Source
|
||||
@@ -819,7 +819,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/ballistic, /obj/item
|
||||
'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')
|
||||
playsound_local(null, pick(creepyasssounds))
|
||||
playsound_local(null, pick(creepyasssounds), 50, 1)
|
||||
if(13)
|
||||
playsound_local(null, 'sound/effects/ratvar_rises.ogg', 100)
|
||||
sleep(150)
|
||||
@@ -830,19 +830,19 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/ballistic, /obj/item
|
||||
playsound_local(null, 'sound/AI/shuttledock.ogg', 100)
|
||||
//Deconstructing a wall
|
||||
if(15)
|
||||
playsound_local(null, 'sound/items/Welder.ogg', 15)
|
||||
playsound_local(null, 'sound/items/Welder.ogg', 15, 1)
|
||||
sleep(105)
|
||||
playsound_local(null, 'sound/items/Welder2.ogg', 15)
|
||||
playsound_local(null, 'sound/items/Welder2.ogg', 15, 1)
|
||||
sleep(15)
|
||||
playsound_local(null, 'sound/items/Ratchet.ogg', 15)
|
||||
playsound_local(null, 'sound/items/Ratchet.ogg', 15, 1)
|
||||
//Hacking a door
|
||||
if(16)
|
||||
playsound_local(null, 'sound/items/Screwdriver.ogg', 15)
|
||||
playsound_local(null, 'sound/items/Screwdriver.ogg', 15, 1)
|
||||
sleep(rand(10,30))
|
||||
for(var/i = rand(1,3), i>0, i--)
|
||||
playsound_local(null, 'sound/weapons/empty.ogg', 15)
|
||||
playsound_local(null, 'sound/weapons/empty.ogg', 15, 1)
|
||||
sleep(rand(10,30))
|
||||
playsound_local(null, 'sound/machines/airlockforced.ogg', 15)
|
||||
playsound_local(null, 'sound/machines/airlockforced.ogg', 15, 1)
|
||||
if(17)
|
||||
playsound_local(null, 'sound/weapons/saberon.ogg',35,1)
|
||||
if(18)
|
||||
@@ -850,11 +850,11 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/ballistic, /obj/item
|
||||
src << "<br><br><span class='alert'>Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.</span><br><br>"
|
||||
playsound_local(null, 'sound/AI/outbreak5.ogg')
|
||||
if(19) //Tesla loose!
|
||||
playsound_local(null, 'sound/magic/lightningbolt.ogg', 35)
|
||||
playsound_local(null, 'sound/magic/lightningbolt.ogg', 35, 1)
|
||||
sleep(20)
|
||||
playsound_local(null, 'sound/magic/lightningbolt.ogg', 65)
|
||||
playsound_local(null, 'sound/magic/lightningbolt.ogg', 65, 1)
|
||||
sleep(20)
|
||||
playsound_local(null, 'sound/magic/lightningbolt.ogg', 100)
|
||||
playsound_local(null, 'sound/magic/lightningbolt.ogg', 100, 1)
|
||||
if(20) //AI is doomsdaying!
|
||||
src << "<h1 class='alert'>Anomaly Alert</h1>"
|
||||
src << "<br><br><span class='alert'>Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.</span><br><br>"
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
var/text_output = from.generate_taste_message(taste_sensitivity)
|
||||
// We dont want to spam the same message over and over again at the
|
||||
// person. Give it a bit of a buffer.
|
||||
if(hallucination > 50 && prob(25))
|
||||
text_output = pick("spiders","[pick(wire_colors)]","dreams","nightmares","the future","the past","victory",\
|
||||
"defeat","pain","bliss","revenge","poison","time","space","death","life","truth","lies","justice","memory",\
|
||||
"regrets","your soul","suffering","music","noise","blood","hunger","the american way")
|
||||
if(text_output != last_taste_text || last_taste_time + 100 < world.time)
|
||||
src << "<span class='notice'>You can taste [text_output].</span>"
|
||||
// "somthing indescribable" -> too many tastes, not enough flavor.
|
||||
|
||||
Reference in New Issue
Block a user