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
|
return
|
||||||
else /*if(src.justzap)*/
|
else /*if(src.justzap)*/
|
||||||
return
|
return
|
||||||
else if(user.hallucination > 50 && prob(10) && src.operating == 0)
|
else if(user.hallucination > 50 && ishuman(user) && prob(10) && src.operating == 0)
|
||||||
user << "<span class='userdanger'>You feel a powerful shock course through your body!</span>"
|
hallucinate_shock(user)
|
||||||
user.staminaloss += 50
|
|
||||||
user.stunned += 5
|
|
||||||
return
|
return
|
||||||
if (cyclelinkedairlock)
|
if (cyclelinkedairlock)
|
||||||
if (!shuttledocked && !emergency && !cyclelinkedairlock.shuttledocked && !cyclelinkedairlock.emergency && allowed(user))
|
if (!shuttledocked && !emergency && !cyclelinkedairlock.shuttledocked && !cyclelinkedairlock.emergency && allowed(user))
|
||||||
@@ -234,6 +232,34 @@ var/list/airlock_overlays = list()
|
|||||||
addtimer(CALLBACK(cyclelinkedairlock, .proc/close), 2)
|
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()
|
/obj/machinery/door/airlock/proc/isElectrified()
|
||||||
if(src.secondsElectrified != 0)
|
if(src.secondsElectrified != 0)
|
||||||
|
|||||||
@@ -279,14 +279,14 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
|||||||
if(target.client)
|
if(target.client)
|
||||||
target.client.images |= fakebroken
|
target.client.images |= fakebroken
|
||||||
target.client.images |= fakerune
|
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)
|
bubblegum = new(wall, target)
|
||||||
sleep(10) //ominous wait
|
sleep(10) //ominous wait
|
||||||
var/charged = FALSE //only get hit once
|
var/charged = FALSE //only get hit once
|
||||||
while(get_turf(bubblegum) != landing)
|
while(get_turf(bubblegum) != landing)
|
||||||
bubblegum.forceMove(get_step_towards(bubblegum, landing))
|
bubblegum.forceMove(get_step_towards(bubblegum, landing))
|
||||||
bubblegum.setDir(get_dir(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)
|
shake_camera(target, 2, 1)
|
||||||
if(bubblegum.Adjacent(target) && !charged)
|
if(bubblegum.Adjacent(target) && !charged)
|
||||||
charged = TRUE
|
charged = TRUE
|
||||||
@@ -351,37 +351,37 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
|||||||
switch(rand(1,5))
|
switch(rand(1,5))
|
||||||
if(1) //Laser fight
|
if(1) //Laser fight
|
||||||
for(var/i=0,i<hits,i++)
|
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))
|
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
|
else
|
||||||
addtimer(CALLBACK(target, /atom/.proc/playsound_local, null, 'sound/weapons/effects/searwall.ogg', 25), rand(10,20))
|
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 + 4))
|
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 8))
|
||||||
target.playsound_local(null, get_sfx("bodyfall"), 25)
|
target.playsound_local(null, get_sfx("bodyfall"), 25, 1)
|
||||||
if(2) //Esword fight
|
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++)
|
for(var/i=0,i<hits,i++)
|
||||||
target.playsound_local(null, 'sound/weapons/blade1.ogg', 25)
|
target.playsound_local(null, 'sound/weapons/blade1.ogg', 25, 1)
|
||||||
sleep(CLICK_CD_MELEE)
|
sleep(rand(CLICK_CD_MELEE, CLICK_CD_MELEE + 8))
|
||||||
target.playsound_local(null, get_sfx("bodyfall"), 25)
|
target.playsound_local(null, get_sfx("bodyfall"), 25, 1)
|
||||||
target.playsound_local(null, 'sound/weapons/saberoff.ogg', 15)
|
target.playsound_local(null, 'sound/weapons/saberoff.ogg', 15, 1)
|
||||||
if(3) //Gun fight
|
if(3) //Gun fight
|
||||||
for(var/i=0,i<hits,i++)
|
for(var/i=0,i<hits,i++)
|
||||||
target.playsound_local(null, get_sfx("gunshot"), 25)
|
target.playsound_local(null, get_sfx("gunshot"), 25)
|
||||||
if(prob(75))
|
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
|
else
|
||||||
addtimer(CALLBACK(target, /atom/.proc/playsound_local, null, "ricochet", 25), rand(10,20))
|
addtimer(CALLBACK(target, /atom/.proc/playsound_local, null, "ricochet", 25, 1), rand(10,20))
|
||||||
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 4))
|
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 8))
|
||||||
target.playsound_local(null, get_sfx("bodyfall"), 25)
|
target.playsound_local(null, get_sfx("bodyfall"), 25, 1)
|
||||||
if(4) //Stunprod + cablecuff
|
if(4) //Stunprod + cablecuff
|
||||||
target.playsound_local(null, 'sound/weapons/Egloves.ogg', 40)
|
target.playsound_local(null, 'sound/weapons/Egloves.ogg', 40, 1)
|
||||||
target.playsound_local(null, get_sfx("bodyfall"), 25)
|
target.playsound_local(null, get_sfx("bodyfall"), 25, 1)
|
||||||
sleep(20)
|
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
|
if(5) // Tick Tock
|
||||||
for(var/i=0,i<hits,i++)
|
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)
|
sleep(15)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
@@ -570,7 +570,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
|||||||
step_away(src,my_target,2)
|
step_away(src,my_target,2)
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
user.changeNext_move(CLICK_CD_MELEE)
|
||||||
user.do_attack_animation(src)
|
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>", \
|
my_target.visible_message("<span class='danger'>[my_target] flails around wildly.</span>", \
|
||||||
"<span class='danger'>[my_target] has attacked [src]!</span>")
|
"<span class='danger'>[my_target] has attacked [src]!</span>")
|
||||||
|
|
||||||
@@ -621,7 +621,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
|||||||
else
|
else
|
||||||
if(prob(15))
|
if(prob(15))
|
||||||
if(weapon_name)
|
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.show_message("<span class='danger'>[src.name] has attacked [my_target] with [weapon_name]!</span>", 1)
|
||||||
my_target.staminaloss += 30
|
my_target.staminaloss += 30
|
||||||
if(prob(20))
|
if(prob(20))
|
||||||
@@ -781,12 +781,12 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/ballistic, /obj/item
|
|||||||
//Strange audio
|
//Strange audio
|
||||||
//src << "Strange Audio"
|
//src << "Strange Audio"
|
||||||
switch(rand(1,20))
|
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(2)
|
||||||
if(prob(50)) playsound_local(null,'sound/effects/Explosion1.ogg', 50)
|
if(prob(50)) playsound_local(null,'sound/effects/Explosion1.ogg', 50, 1)
|
||||||
else playsound_local(null, 'sound/effects/Explosion2.ogg', 50)
|
else playsound_local(null, 'sound/effects/Explosion2.ogg', 50, 1)
|
||||||
if(3) playsound_local(null, 'sound/effects/explosionfar.ogg', 50)
|
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)
|
if(4) playsound_local(null, pick('sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg'), 50, 1)
|
||||||
if(5)
|
if(5)
|
||||||
playsound_local(null, 'sound/weapons/ring.ogg', 35)
|
playsound_local(null, 'sound/weapons/ring.ogg', 35)
|
||||||
sleep(15)
|
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(8) playsound_local(null, 'sound/voice/bfreeze.ogg', 35, 0)
|
||||||
if(9)
|
if(9)
|
||||||
//To make it more realistic, I added two gunshots (enough to kill)
|
//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))
|
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))
|
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(10) playsound_local(null, 'sound/effects/pray_chaplain.ogg', 50)
|
||||||
if(11)
|
if(11)
|
||||||
//Same as above, but with tasers.
|
//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))
|
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))
|
sleep(rand(5,10))
|
||||||
playsound_local(null, sound(get_sfx("bodyfall"), 25))
|
playsound_local(null, sound(get_sfx("bodyfall"), 25), 25, 1)
|
||||||
//Rare audio
|
//Rare audio
|
||||||
if(12)
|
if(12)
|
||||||
//These sounds are (mostly) taken from Hidden: Source
|
//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/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/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')
|
'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)
|
if(13)
|
||||||
playsound_local(null, 'sound/effects/ratvar_rises.ogg', 100)
|
playsound_local(null, 'sound/effects/ratvar_rises.ogg', 100)
|
||||||
sleep(150)
|
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)
|
playsound_local(null, 'sound/AI/shuttledock.ogg', 100)
|
||||||
//Deconstructing a wall
|
//Deconstructing a wall
|
||||||
if(15)
|
if(15)
|
||||||
playsound_local(null, 'sound/items/Welder.ogg', 15)
|
playsound_local(null, 'sound/items/Welder.ogg', 15, 1)
|
||||||
sleep(105)
|
sleep(105)
|
||||||
playsound_local(null, 'sound/items/Welder2.ogg', 15)
|
playsound_local(null, 'sound/items/Welder2.ogg', 15, 1)
|
||||||
sleep(15)
|
sleep(15)
|
||||||
playsound_local(null, 'sound/items/Ratchet.ogg', 15)
|
playsound_local(null, 'sound/items/Ratchet.ogg', 15, 1)
|
||||||
//Hacking a door
|
//Hacking a door
|
||||||
if(16)
|
if(16)
|
||||||
playsound_local(null, 'sound/items/Screwdriver.ogg', 15)
|
playsound_local(null, 'sound/items/Screwdriver.ogg', 15, 1)
|
||||||
sleep(rand(10,30))
|
sleep(rand(10,30))
|
||||||
for(var/i = rand(1,3), i>0, i--)
|
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))
|
sleep(rand(10,30))
|
||||||
playsound_local(null, 'sound/machines/airlockforced.ogg', 15)
|
playsound_local(null, 'sound/machines/airlockforced.ogg', 15, 1)
|
||||||
if(17)
|
if(17)
|
||||||
playsound_local(null, 'sound/weapons/saberon.ogg',35,1)
|
playsound_local(null, 'sound/weapons/saberon.ogg',35,1)
|
||||||
if(18)
|
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>"
|
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')
|
playsound_local(null, 'sound/AI/outbreak5.ogg')
|
||||||
if(19) //Tesla loose!
|
if(19) //Tesla loose!
|
||||||
playsound_local(null, 'sound/magic/lightningbolt.ogg', 35)
|
playsound_local(null, 'sound/magic/lightningbolt.ogg', 35, 1)
|
||||||
sleep(20)
|
sleep(20)
|
||||||
playsound_local(null, 'sound/magic/lightningbolt.ogg', 65)
|
playsound_local(null, 'sound/magic/lightningbolt.ogg', 65, 1)
|
||||||
sleep(20)
|
sleep(20)
|
||||||
playsound_local(null, 'sound/magic/lightningbolt.ogg', 100)
|
playsound_local(null, 'sound/magic/lightningbolt.ogg', 100, 1)
|
||||||
if(20) //AI is doomsdaying!
|
if(20) //AI is doomsdaying!
|
||||||
src << "<h1 class='alert'>Anomaly Alert</h1>"
|
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>"
|
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)
|
var/text_output = from.generate_taste_message(taste_sensitivity)
|
||||||
// We dont want to spam the same message over and over again at the
|
// We dont want to spam the same message over and over again at the
|
||||||
// person. Give it a bit of a buffer.
|
// 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)
|
if(text_output != last_taste_text || last_taste_time + 100 < world.time)
|
||||||
src << "<span class='notice'>You can taste [text_output].</span>"
|
src << "<span class='notice'>You can taste [text_output].</span>"
|
||||||
// "somthing indescribable" -> too many tastes, not enough flavor.
|
// "somthing indescribable" -> too many tastes, not enough flavor.
|
||||||
|
|||||||
Reference in New Issue
Block a user