Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aetherening #1121

Draft
wants to merge 61 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
6911d81
base impl
Kapu1178 Nov 11, 2024
9076866
particles!
Kapu1178 Nov 11, 2024
98004fd
slight particle adjustments
Kapu1178 Nov 11, 2024
928f818
particle tweak
Kapu1178 Nov 11, 2024
b9fb90a
improve rune code a bit
Kapu1178 Nov 12, 2024
985f27f
exchange rune
Kapu1178 Nov 12, 2024
d604c7d
organ bug fixes
Kapu1178 Nov 12, 2024
a4fb8c4
target must be lying down
Kapu1178 Nov 12, 2024
4583433
exchange rune failures
Kapu1178 Nov 12, 2024
0af19a2
heal rune
Kapu1178 Nov 14, 2024
eed1ca5
job name swap
Kapu1178 Nov 16, 2024
0439a83
tome + reorganize
Kapu1178 Nov 16, 2024
4971b58
spells early
Kapu1178 Nov 16, 2024
b2850b1
fixes
Kapu1178 Nov 16, 2024
716dc89
fixes
Kapu1178 Nov 16, 2024
bc6918b
cleanup
Kapu1178 Nov 16, 2024
d0c21fd
empyrean
Kapu1178 Nov 17, 2024
4bb9140
Merge branch 'master' of github.com:DaedalusDock/daedalusdock into ae…
Kapu1178 Nov 17, 2024
48da904
pagers
Kapu1178 Nov 18, 2024
40d5e33
more pager stuff
Kapu1178 Nov 18, 2024
ce450fa
hard del smiles
Kapu1178 Nov 21, 2024
534a676
using a syringe leaves trace dna
Kapu1178 Nov 21, 2024
acd986b
dirty syringes
Kapu1178 Nov 21, 2024
edf4973
Merge branch 'master' of github.com:DaedalusDock/daedalusdock into ae…
Kapu1178 Nov 21, 2024
bbc785c
merge master
Kapu1178 Nov 21, 2024
47dbf41
add overlay, inject one person at a time
Kapu1178 Nov 21, 2024
ece09d6
forensic analysis of syringes
Kapu1178 Nov 21, 2024
351e215
syringe box change
Kapu1178 Nov 23, 2024
9dbaf56
words
Kapu1178 Nov 25, 2024
7306ce4
Merge branch 'master' of github.com:DaedalusDock/daedalusdock into ae…
Kapu1178 Dec 7, 2024
9f71600
ranged aether runes
Kapu1178 Dec 7, 2024
fda5f36
Merge branch 'master' of github.com:DaedalusDock/daedalusdock into ae…
Kapu1178 Dec 19, 2024
4f79782
add adenosine to autoinjectors
Kapu1178 Dec 19, 2024
81a5ae2
small tweak to debughealth
Kapu1178 Dec 20, 2024
ea0b639
autoinjector changes
Kapu1178 Dec 21, 2024
8d27b6b
Merge branch 'master' of github.com:DaedalusDock/daedalusdock into ae…
Kapu1178 Jan 28, 2025
6da4796
rename medbay to ward
Kapu1178 Jan 28, 2025
143218a
Merge branch 'master' of github.com:DaedalusDock/daedalusdock into ae…
Kapu1178 Jan 28, 2025
62dbb14
flavah (and adjusts sprinting cost to account for slower speed)
Kapu1178 Jan 28, 2025
bb5654f
FIX WARDROBE AND INVENTORY CODE
Kapu1178 Jan 29, 2025
5aa48e4
probably better
Kapu1178 Jan 29, 2025
55784b6
this is kind of fucked up
Kapu1178 Feb 1, 2025
a9a6842
reduce odds
Kapu1178 Feb 1, 2025
ae6d64b
sterilize syringes with a welding tool
Kapu1178 Feb 1, 2025
ea5887b
Merge branch 'master' of github.com:DaedalusDock/daedalusdock into ae…
Kapu1178 Feb 1, 2025
14f5c6f
liver death gives the concussed effect
Kapu1178 Feb 1, 2025
4555049
fix runtime
Kapu1178 Feb 1, 2025
4a31f16
this bugs me
Kapu1178 Feb 1, 2025
69ef823
not yet
Kapu1178 Feb 1, 2025
14a732f
Merge branch 'master' of github.com:DaedalusDock/daedalusdock into ae…
Kapu1178 Feb 2, 2025
c032b77
impliment revival rune and unit test it
Kapu1178 Feb 2, 2025
ace4bd8
fixes
Kapu1178 Feb 2, 2025
a3dda54
exchange rune
Kapu1178 Feb 2, 2025
81db2e9
whoops, include file
Kapu1178 Feb 2, 2025
a7d3df0
bruh
Kapu1178 Feb 2, 2025
d02eefe
i forgot
Kapu1178 Feb 2, 2025
1e2420b
rewrite heal, add unit test
Kapu1178 Feb 2, 2025
2e741b1
properly clear reagents
Kapu1178 Feb 3, 2025
146f532
impliment bimmer's runes
Kapu1178 Feb 5, 2025
b6d54bb
rename to sigil
Kapu1178 Feb 5, 2025
3d7ae37
update
Kapu1178 Feb 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions code/__DEFINES/aether_runes.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Generic BB keys
#define RUNE_BB_INVOKER "user"
#define RUNE_BB_TOME "tome"
#define RUNE_BB_CANCEL_REASON "cancel_reason"
#define RUNE_BB_CANCEL_SOURCE "cancel_source"
#define RUNE_BB_TARGET_MOB "target_mob"
/// The reagent container containing the blood required.
#define RUNE_BB_BLOOD_CONTAINER "revival_blood_container"

// Exchange rune
/// The list of parts to exchange for the exchange rune.
#define RUNE_BB_EXCHANGE_PARTS "exchange_parts"

// Revival rune
/// The heart used.
#define RUNE_BB_REVIVAL_HEART "revival_heart"
/// The reagent container containing Woundseal used.
#define RUNE_BB_REVIVAL_WOUNDSEAL_CONTAINER "revival_woundseal_container"

// Heal rune
/// List of reagents containers containing tinctures.
#define RUNE_BB_HEAL_REAGENT_CONTAINERS "heal_reagent_containers"

/// Graceful fails should have NO SIDE EFFECTS.
#define RUNE_FAIL_GRACEFUL "graceful_fail"

// ~& Global failure states, handle these always! &~//
#define RUNE_FAIL_INVOKER_INCAP "invoker_incap"
/// Helper removed their hand from the rune.
#define RUNE_FAIL_HELPER_REMOVED_HAND "helper_incap"
/// Target mob moved off the center.
#define RUNE_FAIL_TARGET_MOB_MOVED "target_mob_moved"
/// Target stood up.
#define RUNE_FAIL_TARGET_STOOD_UP "target_stood_up"
#define RUNE_FAIL_TOME_GONE "tome_gone"
/// An item has moved out of the rune.
#define RUNE_FAIL_TARGET_ITEM_OUT_OF_RUNE "item_out_of_rune"

/// Special failure condition where the revival target was revived mid ritual.
#define RUNE_FAIL_REVIVAL_TARGET_ALIVE "revival_target_alive"

#define RUNE_INVOKING_PENDING_CANCEL -1
#define RUNE_INVOKING_IDLE 0
#define RUNE_INVOKING_ACTIVE 1
4 changes: 2 additions & 2 deletions code/__DEFINES/jobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@
#define JOB_STATION_ENGINEER "Station Engineer"
#define JOB_ATMOSPHERIC_TECHNICIAN "Atmospheric Technician"
//Medical
#define JOB_MEDICAL_DIRECTOR "Medical Director"
#define JOB_MEDICAL_DOCTOR "General Practitioner"
#define JOB_AUGUR "Augur"
#define JOB_ACOLYTE "Acolyte"
#define JOB_PARAMEDIC "Paramedic"
#define JOB_CHEMIST "Chemist"
#define JOB_VIROLOGIST "Virologist"
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/magic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
#define SCHOOL_NECROMANCY "necromancy"
/// Other forbidden magics, such as heretic spells
#define SCHOOL_FORBIDDEN "forbidden"
/// Blood magic
#define SCHOOL_BLOOD "blood"

// Invocation types - what does the wizard need to do to invoke (cast) the spell?
/// Allows being able to cast the spell without saying or doing anything.
Expand Down
6 changes: 6 additions & 0 deletions code/__DEFINES/packetnet.dm
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@
/// Network Class of a device, used as part of ping replies.
#define PACKET_NETCLASS "netclass"

// Pagers
/// Packet arg for pager types
#define PACKET_ARG_PAGER_CLASS "pager_class"
/// Packet arg for the message sent
#define PACKET_ARG_PAGER_MESSAGE "pager_message"

// Special addresses
#define NET_ADDRESS_PING "ping"

Expand Down
3 changes: 3 additions & 0 deletions code/__DEFINES/pager_defines.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#define PAGER_CLASS_AETHER "aetherpager"
#define PAGER_CLASS_MARS "marspager"
#define PAGER_CLASS_MANAGEMENT "managementpager"
1 change: 1 addition & 0 deletions code/__DEFINES/radio.dm
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@
#define RADIO_AIRLOCK "airlock"
#define RADIO_MAGNETS "magnets"
#define RADIO_PDAMESSAGE "pdamessage"
#define RADIO_PAGER_MESSAGE "pager_message"

#define DEFAULT_SIGNALER_CODE 30

Expand Down
2 changes: 1 addition & 1 deletion code/__DEFINES/stamina.dm
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,4 @@
///The amount of stamina required to sprint
#define STAMINA_MIN2SPRINT_MODIFER 0.4 //Same as exhaustion threshold
///How much stamina is taken per tile while sprinting
#define STAMINA_SPRINT_COST 4
#define STAMINA_SPRINT_COST 8
4 changes: 4 additions & 0 deletions code/__DEFINES/status_effects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,11 @@

#define STASIS_DEBUG_HEALTH "stasis_debug_health"

/// Head fracture
#define BROKEN_SKULL_EFFECT "broken_head"
/// Missing or dead liver.
#define DEAD_LIVER_EFFECT "dead_liver"

#define VAMPIRE_EFFECT "vampire_effect"

// Status effect application helpers.
Expand Down
7 changes: 6 additions & 1 deletion code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
/// Stops all slipping and sliding from ocurring
#define TRAIT_NO_SLIP_ALL "noslip_all"

/// Invoking a Miracle rune
#define TRAIT_INVOKING_MIRACLE "invokingmiracle"

#define TRAIT_NODEATH "nodeath"
#define TRAIT_NOHARDCRIT "nohardcrit"
#define TRAIT_NOSOFTCRIT "nosoftcrit"
Expand Down Expand Up @@ -471,6 +474,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
/// Maybe worth generalizing into a general "is sneaky" / "is stealth" trait in the future.
#define TRAIT_ALIEN_SNEAK "sneaking_alien"

/// Smoke temporarily cannot affect this mob.
#define TRAIT_AFFECTED_BY_SMOKE_RECENTLY "affected_by_smoke_recently"

// METABOLISMS
// Various jobs on the station have historically had better reactions
// to various drinks and foodstuffs. Security liking donuts is a classic
Expand Down Expand Up @@ -508,7 +514,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_LIGHTBULB_REMOVER "lightbulb_remover"
#define TRAIT_KNOW_CYBORG_WIRES "know_cyborg_wires"
#define TRAIT_KNOW_ENGI_WIRES "know_engi_wires"
#define TRAIT_ENTRAILS_READER "entrails_reader"
/// this skillchip trait lets you wash brains in washing machines to heal them
#define TRAIT_BRAINWASHING "brainwashing"

Expand Down
2 changes: 1 addition & 1 deletion code/controllers/subsystem/id_access.dm
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ SUBSYSTEM_DEF(id_access)
),
"[ACCESS_CMO]" = list(
"regions" = list(REGION_MEDBAY),
"head" = JOB_MEDICAL_DIRECTOR,
"head" = JOB_AUGUR,
"templates" = list(),
"pdas" = list(),
),
Expand Down
2 changes: 1 addition & 1 deletion code/controllers/subsystem/job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ SUBSYSTEM_DEF(job)
JOB_CAPTAIN = 1,
JOB_HEAD_OF_PERSONNEL = 2,
JOB_CHIEF_ENGINEER = 3,
JOB_MEDICAL_DIRECTOR = 4,
JOB_AUGUR = 4,
JOB_SECURITY_MARSHAL = 5,
JOB_QUARTERMASTER = 6,
)
Expand Down
13 changes: 13 additions & 0 deletions code/controllers/subsystem/tgui.dm
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,19 @@ SUBSYSTEM_DEF(tgui)
return ui
return null

/**
* public
*
* Get a open UI given a user and src_object.
*
* required src_object datum The object/datum which owns the UIs.
*
* return list of datum/tguis belonging to src_object
*/
/datum/controller/subsystem/tgui/proc/get_open_uis(datum/src_object)
var/key = "[REF(src_object)]"
return open_uis_by_src[key]

/**
* public
*
Expand Down
14 changes: 14 additions & 0 deletions code/controllers/subsystem/wardrobe.dm
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,13 @@ SUBSYSTEM_DEF(wardrobe)
stock_hit = 0
stock_miss = 0

/// Returns TRUE if the atom is already stashed inside the wardrobe.
/datum/controller/subsystem/wardrobe/proc/contains_object(atom/test_for)
var/list/stock_info = preloaded_stock[test_for.type]
if(stock_info)
return test_for in stock_info[WARDROBE_STOCK_CONTENTS]
return FALSE

/// Resets the load queue to the master template, accounting for the existing stock
/datum/controller/subsystem/wardrobe/proc/hard_refresh_queue()
for(var/datum/type_to_queue as anything in canon_minimum)
Expand Down Expand Up @@ -217,6 +224,12 @@ SUBSYSTEM_DEF(wardrobe)
/datum/controller/subsystem/wardrobe/proc/stash_object(atom/movable/object)
var/object_type = object.type
var/list/master_info = canon_minimum[object_type]

#ifdef UNIT_TESTS
if(contains_object(object))
CRASH("Tried to stash an atom we already have.")
#endif

// I will not permit objects you didn't reserve ahead of time
if(!master_info)
qdel(object)
Expand All @@ -232,6 +245,7 @@ SUBSYSTEM_DEF(wardrobe)
if(amount_held - stock_target >= overflow_lienency)
qdel(object)
return

// Fuck off
if(QDELETED(object))
stack_trace("We tried to stash a qdeleted object, what did you do")
Expand Down
5 changes: 5 additions & 0 deletions code/datums/forensics.dm
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,11 @@
LAZYNULL(fibers)
return TRUE

/// Clear the trace DNA list
/datum/forensics/proc/wipe_trace_DNA()
LAZYNULL(trace_DNA)
return TRUE

/// Clear the gunshot residue list.
/datum/forensics/proc/wipe_gunshot_residue()
LAZYNULL(gunshot_residue)
Expand Down
6 changes: 3 additions & 3 deletions code/datums/id_trim/jobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@
minimal_wildcard_access = list(ACCESS_CMO)
config_job = "chief_medical_officer"
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
job = /datum/job/chief_medical_officer
job = /datum/job/augur

/datum/id_trim/job/clown
assignment = "Clown"
Expand Down Expand Up @@ -332,14 +332,14 @@
job = /datum/job/lawyer

/datum/id_trim/job/medical_doctor
assignment = JOB_MEDICAL_DOCTOR
assignment = JOB_ACOLYTE
trim_state = "trim_medicaldoctor"
sechud_icon_state = SECHUD_MEDICAL_DOCTOR
extra_access = list(ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_ROBOTICS)
minimal_access = list(ACCESS_MECH_MEDICAL, ACCESS_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_PHARMACY, ACCESS_SURGERY)
config_job = "medical_doctor"
template_access = list(ACCESS_CAPTAIN, ACCESS_CMO, ACCESS_CHANGE_IDS)
job = /datum/job/doctor
job = /datum/job/acolyte

/datum/id_trim/job/mime
assignment = JOB_CLOWN
Expand Down
8 changes: 8 additions & 0 deletions code/datums/outfit.dm
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,9 @@
*/
var/list/skillchips = null

/// List of languages to grant upon equipping.
var/list/grant_languages

///Should we preload some of this job's items?
var/preload = FALSE

Expand Down Expand Up @@ -258,8 +261,10 @@

if(!visualsOnly)
apply_fingerprints(H)

if(internals_slot)
H.open_internals(H.get_item_by_slot(internals_slot))

if(implants)
for(var/implant_type in implants)
var/obj/item/implant/I = SSwardrobe.provide_type(implant_type, H)
Expand All @@ -279,6 +284,9 @@
if(activate_msg)
CRASH("Failed to activate [H]'s [skillchip_instance], on job [src]. Failure message: [activate_msg]")

if(LAZYLEN(grant_languages))
for(var/language_path in grant_languages)
H.grant_language(language_path)

H.update_body()
return TRUE
Expand Down
45 changes: 45 additions & 0 deletions code/datums/pathogens/hep_c.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/datum/pathogen/hep_c
name = "Hepatitis C"
desc = "A dangerous viral infection that causes serious organ damage if left unchecked."
max_stages = 3
spread_text = "Blood"
cure_text = "Omnizine"
cures = list(/datum/reagent/medicine/omnizine)
agent = "Hepatitis C Virus"
viable_mobtypes = list(/mob/living/carbon/human)
severity = PATHOGEN_SEVERITY_DANGEROUS
infectable_biotypes = MOB_ORGANIC

stage_prob = 0.2

/datum/pathogen/hep_c/on_process(delta_time, times_fired)
. = ..()
if(!.)
return

if(!ishuman(affected_mob))
return

var/mob/living/carbon/human/affected_human = affected_mob
if(DT_PROB(2, delta_time))
affected_human.adjustToxLoss(0.4, cause_of_death = "Hepatitis C")
if(DT_PROB(1, delta_time))
to_chat(affected_human, span_warning(pick(affected_human.dna.species.heat_discomfort_strings)))

if(stage < 2)
return

if(DT_PROB(0.5, delta_time))
affected_human.vomit(20, affected_human.nutrition == 0, TRUE)

if(!affected_human.has_status_effect(/datum/status_effect/confusion) && DT_PROB(1, delta_time))
to_chat(affected_human, span_warning("You feel dazed."))
affected_human.adjust_confusion_up_to(15 SECONDS, 15 SECONDS)

if(!affected_human.has_status_effect(/datum/status_effect/speech/slurring/generic) && DT_PROB(1, delta_time))
affected_human.adjust_timed_status_effect(10 SECONDS, /datum/status_effect/speech/slurring/generic)

if(stage < 3)
return

affected_human.adjustToxLoss(3.6, cause_of_death = "Hepatitis C")
19 changes: 16 additions & 3 deletions code/datums/status_effects/debuffs/debuffs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -489,14 +489,18 @@

/datum/status_effect/stacking/saw_bleed
id = "saw_bleed"
tick_interval = 6

tick_interval = 0.6 SECONDS

stack_decay = 1
delay_before_decay = 5
stack_threshold = 10
max_stacks = 10

consumed_on_threshold = TRUE

overlay_file = 'icons/effects/bleed.dmi'
underlay_file = 'icons/effects/bleed.dmi'
overlay_state = "bleed"
underlay_state = "bleed"
var/bleed_damage = 200

/datum/status_effect/stacking/saw_bleed/fadeout_effect()
Expand All @@ -510,6 +514,15 @@
new /obj/effect/temp_visual/dir_setting/bloodsplatter(T, d)
playsound(T, SFX_DESECRATION, 100, TRUE, -1)

/// Return FALSE if the owner is not in a valid state (self-deletes the effect), or TRUE otherwise
/datum/status_effect/stacking/saw_bleed/can_have_status()
return owner.stat != DEAD

/// Whether the owner can currently gain stacks or not
/// Return FALSE if the owner is not in a valid state, or TRUE otherwise
/datum/status_effect/stacking/saw_bleed/can_gain_stacks()
return owner.stat != DEAD

/datum/status_effect/stacking/saw_bleed/bloodletting
id = "bloodletting"
stack_threshold = 7
Expand Down
Loading
Loading