mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Adds Red-Eye & a gateway to traitor chemistry (#19441)
* start * see you space cowboy * a * red eye * woopsie * bad * can_synth = false so no you cant duplicate redspace * misplaced * examine but its prolly a little messy * s
This commit is contained in:
@@ -246,6 +246,11 @@
|
||||
#define set_confusion(duration) set_timed_status_effect(duration, /datum/status_effect/confusion)
|
||||
#define set_confusion_if_lower(duration) set_timed_status_effect(duration, /datum/status_effect/confusion, TRUE)
|
||||
|
||||
#define adjust_red_eye(duration) adjust_timed_status_effect(duration, /datum/status_effect/red_eye)
|
||||
#define adjust_red_eye_up_to(duration, up_to) adjust_timed_status_effect(duration, /datum/status_effect/red_eye, up_to)
|
||||
#define set_red_eye(duration) set_timed_status_effect(duration, /datum/status_effect/red_eye)
|
||||
#define set_red_eye_if_lower(duration) set_timed_status_effect(duration, /datum/status_effect/red_eye, TRUE)
|
||||
|
||||
#define adjust_drugginess(duration) adjust_timed_status_effect(duration, /datum/status_effect/drugginess)
|
||||
#define adjust_drugginess_up_to(duration, up_to) adjust_timed_status_effect(duration, /datum/status_effect/drugginess, up_to)
|
||||
#define set_drugginess(duration) set_timed_status_effect(duration, /datum/status_effect/drugginess)
|
||||
|
||||
@@ -211,6 +211,11 @@
|
||||
blend_mode = BLEND_ADD
|
||||
show_when_dead = TRUE
|
||||
|
||||
/atom/movable/screen/fullscreen/red_eye
|
||||
icon_state = "red_eye"
|
||||
plane = FULLSCREEN_PLANE
|
||||
layer = CURSE_LAYER
|
||||
|
||||
//Triggered by übercharge activation
|
||||
/atom/movable/screen/fullscreen/uber
|
||||
icon_state = "uberoverlay"
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
mood_change = 6
|
||||
description = "<span class='nicegreen'>Woooow duudeeeeee...I'm tripping baaalls...</span>\n"
|
||||
|
||||
/datum/mood_event/red_eye
|
||||
mood_change = 10
|
||||
description = "<span class='nicegreen'>Keep those eyes open...</span>\n"
|
||||
|
||||
/datum/mood_event/smoked
|
||||
description = "<span class='nicegreen'>I have had a smoke recently.</span>\n"
|
||||
mood_change = 2
|
||||
|
||||
35
code/datums/status_effects/debuffs/red_eye.dm
Normal file
35
code/datums/status_effects/debuffs/red_eye.dm
Normal file
@@ -0,0 +1,35 @@
|
||||
/// Red eye effect, makes your screen a swirling red
|
||||
/datum/status_effect/red_eye
|
||||
id = "red_eye"
|
||||
alert_type = /atom/movable/screen/alert/status_effect/red_eye
|
||||
remove_on_fullheal = TRUE
|
||||
examine_text = "Their eyes are bright red and bulging out their skull!"
|
||||
|
||||
/datum/status_effect/red_eye/on_creation(mob/living/new_owner, duration = 10 SECONDS)
|
||||
src.duration = duration
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/red_eye/on_apply()
|
||||
RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(remove_red_eye))
|
||||
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, id, /datum/mood_event/high)
|
||||
owner.overlay_fullscreen(id, /atom/movable/screen/fullscreen/red_eye)
|
||||
return TRUE
|
||||
|
||||
/datum/status_effect/red_eye/on_remove()
|
||||
UnregisterSignal(owner, COMSIG_LIVING_DEATH)
|
||||
|
||||
SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, id)
|
||||
owner.clear_fullscreen(id)
|
||||
|
||||
/// Removes all of our red_eye (self delete) on signal
|
||||
/datum/status_effect/red_eye/proc/remove_red_eye(datum/source, admin_revive)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
qdel(src)
|
||||
|
||||
/atom/movable/screen/alert/status_effect/red_eye
|
||||
name = "Red-Eye"
|
||||
desc = "DRAKHARFR PLEGH-WE GALBARTOK USINAR"
|
||||
icon = 'yogstation/icons/mob/screen_alert.dmi'
|
||||
icon_state = "red_eye"
|
||||
@@ -7,6 +7,7 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
max_amount = 50
|
||||
item_flags = NOBLUDGEON
|
||||
grind_results = list(/datum/reagent/redspace = 20)
|
||||
|
||||
/obj/item/stack/telecrystal/attack_self(mob/user)
|
||||
if(!isliving(user))
|
||||
@@ -23,7 +24,7 @@
|
||||
new /obj/effect/particle_effect/sparks(loc)
|
||||
playsound(loc, "sparks", 50, 1)
|
||||
|
||||
if(!do_teleport(L, destination, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE))
|
||||
if(!do_teleport(L, destination, asoundin = 'sound/effects/phaseinred.ogg', channel = TELEPORT_CHANNEL_BLUESPACE))
|
||||
L.visible_message(span_warning("[src] refuses to be crushed by [L]! There must be something interfering!"), span_danger("[src] suddenly hardens in your hand! There must be something interfering!"))
|
||||
return
|
||||
|
||||
|
||||
@@ -537,6 +537,120 @@
|
||||
M.adjust_dizzy(4)
|
||||
..()
|
||||
|
||||
//traitor only drug made with telecrystals
|
||||
/datum/reagent/drug/red_eye
|
||||
name = "Red-Eye" //i love cowboy bebop
|
||||
description = "An experimental drug developed by the Syndicate in attempt to recreate wizards"
|
||||
reagent_state = GAS
|
||||
color = "#fd1a5e"
|
||||
addiction_threshold = 20
|
||||
overdose_threshold = 40
|
||||
metabolization_rate = 1.5 * REAGENTS_METABOLISM
|
||||
can_synth = FALSE
|
||||
|
||||
//Teleport like normal telecrystals
|
||||
/datum/reagent/drug/red_eye/proc/tele_teleport(mob/living/L)
|
||||
var/turf/destination = get_teleport_loc(L.loc, L, rand(3,6))
|
||||
if(!istype(destination))
|
||||
return
|
||||
new /obj/effect/particle_effect/sparks(L.loc)
|
||||
playsound(L.loc, "sparks", 50, 1)
|
||||
if(!do_teleport(L, destination, asoundin = 'sound/effects/phaseinred.ogg', channel = TELEPORT_CHANNEL_BLUESPACE))
|
||||
return
|
||||
L.throw_at(get_edge_target_turf(L, L.dir), 1, 3, spin = FALSE, diagonals_first = TRUE)
|
||||
if(iscarbon(L))
|
||||
var/mob/living/carbon/C = L
|
||||
C.adjust_disgust(15)
|
||||
|
||||
/datum/reagent/drug/red_eye/on_mob_metabolize(mob/living/L)
|
||||
L.next_move_modifier *= 0.8
|
||||
L.action_speed_modifier *= 0.5
|
||||
tele_teleport(L)
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/red_eye/on_mob_end_metabolize(mob/living/L)
|
||||
L.next_move_modifier *= 1.25
|
||||
L.action_speed_modifier *= 2
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/red_eye/on_mob_life(mob/living/carbon/M)
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.eye_color = "fd1a5e"
|
||||
H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK)
|
||||
H.update_body()
|
||||
|
||||
M.adjust_red_eye_up_to(15,40)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(0,1))
|
||||
M.AdjustKnockdown(-15, FALSE)
|
||||
M.adjustStaminaLoss(-4, 0)
|
||||
M.AdjustUnconscious(-5, FALSE)
|
||||
M.AdjustParalyzed(-20, FALSE)
|
||||
M.adjust_jitter(2 SECONDS)
|
||||
if(prob(10))
|
||||
to_chat(M, span_notice("[pick("TOK-LYR RQA-NAP", "BAPR NTNVA", "ZL-YVTUG FUVARF", "MAH'WEYH PLEGGH AT E'NTRATH", "TARCOL MINTI ZHERI.", "G'OLT-ULOFT")]"))
|
||||
if(prob(5))
|
||||
M.visible_message(span_danger("[M]'s eyes start bulging out of [M.p_their()] skull!"))
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch","drool","moan","giggle"))
|
||||
if(prob(1))
|
||||
tele_teleport(M)
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/red_eye/overdose_process(mob/living/M)
|
||||
M.adjustToxLoss(2, 0)
|
||||
if(isturf(M.loc) && !isspaceturf(M.loc) && prob(10))
|
||||
if(M.mobility_flags & MOBILITY_MOVE)
|
||||
step(M, pick(GLOB.cardinals))
|
||||
if(prob(8))
|
||||
M.visible_message(span_danger("[M]'s fingers curl into occult shapes!"))
|
||||
M.drop_all_held_items()
|
||||
if(prob(4))
|
||||
M.adjustToxLoss(1, 0)
|
||||
tele_teleport(M)
|
||||
if(prob(1))
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(1,4))
|
||||
M.adjustToxLoss(4, 0)
|
||||
tele_teleport(M)
|
||||
tele_teleport(M)
|
||||
..()
|
||||
/datum/reagent/drug/red_eye/addiction_act_stage1(mob/living/M)
|
||||
M.adjust_jitter(5 SECONDS)
|
||||
if(prob(20))
|
||||
M.emote(pick("twitch","drool","moan","giggle"))
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/red_eye/addiction_act_stage2(mob/living/M)
|
||||
M.adjust_jitter(10 SECONDS)
|
||||
M.adjust_dizzy(10)
|
||||
if(prob(30))
|
||||
M.emote(pick("twitch","drool","moan","giggle"))
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/red_eye/addiction_act_stage3(mob/living/M)
|
||||
if((M.mobility_flags & MOBILITY_MOVE) && !ismovable(M.loc))
|
||||
for(var/i = 0, i < 4, i++)
|
||||
step(M, pick(GLOB.cardinals))
|
||||
M.adjust_jitter(12 SECONDS)
|
||||
M.adjust_dizzy(12)
|
||||
if(prob(40))
|
||||
M.emote(pick("twitch","drool","moan","giggle"))
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/red_eye/addiction_act_stage4(mob/living/carbon/human/M)
|
||||
if((M.mobility_flags & MOBILITY_MOVE) && !ismovable(M.loc))
|
||||
for(var/i = 0, i < 8, i++)
|
||||
step(M, pick(GLOB.cardinals))
|
||||
M.adjust_jitter(15 SECONDS)
|
||||
M.adjust_dizzy(15)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(1,4))
|
||||
M.adjustToxLoss(2, 0)
|
||||
if(prob(50))
|
||||
M.emote(pick("twitch","drool","moan","giggle"))
|
||||
..()
|
||||
if(prob(10))
|
||||
M.visible_message(span_danger("[M]'s fingers curl into occult shapes!"))
|
||||
M.drop_all_held_items()
|
||||
. = 1
|
||||
/datum/reagent/drug/pumpup
|
||||
name = "Pump-Up"
|
||||
description = "Take on the world! A fast acting, hard hitting drug that pushes the limit on what you can handle."
|
||||
|
||||
@@ -1086,7 +1086,32 @@
|
||||
|
||||
/mob/living/proc/bluespace_shuffle()
|
||||
do_teleport(src, get_turf(src), 5, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE)
|
||||
|
||||
|
||||
//Gateway to traitor chemistry, want a drug to be traitor only? use this
|
||||
/datum/reagent/redspace
|
||||
name = "Redspace Dust"
|
||||
description = "A sinister looking dust composed of grinded Syndicate telecrystals, the red colouration a result of impurities within their manufacturing process."
|
||||
reagent_state = SOLID
|
||||
color = "#db0735"
|
||||
taste_description = "bitter evil"
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
metabolization_rate = 0.2 * REAGENTS_METABOLISM
|
||||
can_synth = FALSE
|
||||
|
||||
//Teleport like normal telecrystals
|
||||
/datum/reagent/redspace/on_mob_metabolize(mob/living/L)
|
||||
var/turf/destination = get_teleport_loc(L.loc, L, rand(3,6))
|
||||
if(!istype(destination))
|
||||
return
|
||||
new /obj/effect/particle_effect/sparks(L.loc)
|
||||
playsound(L.loc, "sparks", 50, 1)
|
||||
if(!do_teleport(L, destination, asoundin = 'sound/effects/phaseinred.ogg', channel = TELEPORT_CHANNEL_BLUESPACE))
|
||||
return
|
||||
L.throw_at(get_edge_target_turf(L, L.dir), 1, 3, spin = FALSE, diagonals_first = TRUE)
|
||||
if(iscarbon(L))
|
||||
var/mob/living/carbon/C = L
|
||||
C.adjust_disgust(15)
|
||||
|
||||
/datum/reagent/aluminium
|
||||
name = "Aluminium"
|
||||
description = "A silvery white and ductile member of the boron group of chemical elements."
|
||||
|
||||
@@ -63,6 +63,12 @@
|
||||
required_reagents = list(/datum/reagent/nitrous_oxide = 2, /datum/reagent/medicine/epinephrine = 1, /datum/reagent/consumable/ethanol = 1)
|
||||
required_catalysts = list(/datum/reagent/toxin/plasma = 5)
|
||||
|
||||
/datum/chemical_reaction/red_eye
|
||||
name = "Red-Eye"
|
||||
id = /datum/reagent/drug/red_eye
|
||||
results = list(/datum/reagent/drug/red_eye = 4) //1tc = 40u of red_eye
|
||||
required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/redspace = 2, /datum/reagent/iodine = 1, /datum/reagent/hydrogen = 1, /datum/reagent/consumable/sugar = 1)
|
||||
|
||||
/datum/chemical_reaction/pumpup
|
||||
name = "Pump-Up"
|
||||
id = /datum/reagent/drug/pumpup
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.7 MiB After Width: | Height: | Size: 5.0 MiB |
BIN
sound/effects/phaseinred.ogg
Normal file
BIN
sound/effects/phaseinred.ogg
Normal file
Binary file not shown.
@@ -731,6 +731,7 @@
|
||||
#include "code\datums\status_effects\debuffs\hallucination.dm"
|
||||
#include "code\datums\status_effects\debuffs\jitteriness.dm"
|
||||
#include "code\datums\status_effects\debuffs\knuckleroot.dm"
|
||||
#include "code\datums\status_effects\debuffs\red_eye.dm"
|
||||
#include "code\datums\status_effects\debuffs\speech_debuffs.dm"
|
||||
#include "code\datums\traits\_quirk.dm"
|
||||
#include "code\datums\traits\good.dm"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 99 KiB |
Reference in New Issue
Block a user