Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions code/__DEFINES/~darkpack/fera/fera.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,5 @@ GLOBAL_LIST_INIT(garou_fur_colors, list(
"brown" = "brown"
))

#define STATUS_EFFECT_DELIRIUM /datum/status_effect/delirium
#define STATUS_EFFECT_SILVER_BULLET_STACKS /datum/status_effect/stacking/silver_bullets
130 changes: 130 additions & 0 deletions modular_darkpack/modules/werewolf_the_apocalypse/code/delirium.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
/datum/status_effect/delirium
id = "delirium"
status_type = STATUS_EFFECT_REFRESH
duration = 10 SECONDS
alert_type = /atom/movable/screen/alert/status_effect/delirium
COOLDOWN_DECLARE(message_cooldown)
var/static/list/willpower_levels = list(
"catatonic fear",
"panic",
"disbelief",
"beserk",
"terror",
"conciliatory",
"controlled fear",
"curiosity",
"bloodlust",
"no reaction"
)
var/willpower_dots = 1
var/datum/weakref/scary_wolf_ref
var/image/scary_static

/datum/status_effect/delirium/on_creation(mob/living/new_owner, mob/big_wolf)
scary_wolf_ref = WEAKREF(big_wolf)
. = ..()
linked_alert.desc += " You are filled with <b>[willpower_levels[willpower_dots]]</b>."

/datum/status_effect/delirium/on_apply()
. = ..()
var/mob/living/carbon/human/human_owner = astype(owner)
if(!human_owner)
return FALSE
if(!human_owner.affected_by_delirium())
return FALSE
var/mob/living/wolf = scary_wolf_ref?.resolve()
if(!wolf)
return FALSE

to_chat(owner, span_boldwarning("Something DEEP inside you fill you with <b>[willpower_levels[willpower_dots]]</b> at the sight of [wolf]"))
willpower_dots = clamp(human_owner.st_get_stat(STAT_PERMANENT_WILLPOWER), 1, 10)

if(owner.client)
// dir SOUTH is admitting i compeletly lost the fight against this stupid bullshit and cant get the image to properly mimmic the direction of the mob.
var/image/overlay_image = image(loc = wolf, dir = SOUTH)
overlay_image.appearance = wolf.appearance
overlay_image.override = TRUE
overlay_image.name = "Unknown"
overlay_image.pixel_y = 0
overlay_image.pixel_x = 0
overlay_image.pixel_w = 0
overlay_image.pixel_z = 0
SET_PLANE_EXPLICIT(overlay_image, ABOVE_GAME_PLANE, wolf)

var/mutable_appearance/static_effect = mutable_appearance('modular_darkpack/modules/werewolf_the_apocalypse/icons/garou_forms/big_static.dmi', "static_base")
static_effect.color = "#373642"
static_effect.blend_mode = BLEND_INSET_OVERLAY
overlay_image.overlays += static_effect

owner.client.images += overlay_image
scary_static = overlay_image

/datum/status_effect/delirium/on_remove()
. = ..()
to_chat(owner, span_notice("Your heightened emotions subside and you begin to calm."))
owner.client?.images -= scary_static
QDEL_NULL(scary_static)

/datum/status_effect/delirium/tick(seconds_between_ticks)
. = ..()
var/mob/living/carbon/human/human_owner = astype(owner)
if(!human_owner)
return
if(!human_owner.affected_by_delirium())
return
if(COOLDOWN_FINISHED(src, message_cooldown))
COOLDOWN_START(src, message_cooldown, rand(10, 15) SECONDS)
var/message = get_message()
if(message)
to_chat(owner, span_boldwarning(message))


/datum/status_effect/delirium/proc/get_message()
switch(willpower_dots)
// Catatonic Fear
if(1)
return pick("FEAR", "FAINT", "COLLAPSE")
// Panic
if(2)
return pick("RUN", "RUN NOW", "GET DISTANCE")
// Disbelief
if(3)
return pick("HIDE", "COWER")
// Beserk
if(4)
return pick("FIGHT", "KICK", "PUNCH", "BITE", "SWING")
// Terror
if(5)
return pick("RUN", "RUN NOW", "GET DISTANCE", "THINK")
// Conciliatory
if(6)
return pick("PLEAD", "BARGIN", "WHIMPER")
// Controlled Fear
if(7)
return "fear"
// Curiosity
if(8)
return pick("learn", "discover")
// Bloodlust
if(9)
return "anger"
// No reaction
if(10)
return


/atom/movable/screen/alert/status_effect/delirium
name = "The Delirium"
desc = "A supernatural fear."
icon_state = "fear"
icon = 'modular_darkpack/modules/deprecated/icons/hud/screen_alert.dmi'


/mob/living/carbon/human/proc/affected_by_delirium()
if(issupernatural(src))
return FALSE

if(st_get_stat(STAT_PERMANENT_WILLPOWER) >= 10)
return FALSE

return TRUE
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@
var/fallback_icon
/// Speed mod applied and removed upon gaining this species
var/speed_mod
/// Causes delerium, which if the user is affected by, does not cause breaches
var/causes_delerium
/// Causes delirium, which if the user is affected by, does not cause breaches
var/causes_delirium
/// IF this form can be witnessed, causes masqurade breaches
var/veil_breaching_form = FALSE

Expand Down Expand Up @@ -206,7 +206,7 @@
TRAIT_NO_LYING_ANGLE,
TRAIT_TRANSFORM_UPDATES_ICON,
)
causes_delerium = TRUE
causes_delirium = TRUE
veil_breaching_form = TRUE

mutanttongue = /obj/item/organ/tongue/fera
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,13 @@
COOLDOWN_START(src, passive_healing_cd, 1 TURNS)
var/datum/species/human/shifter/shifter_species = owner.dna.species
if(istype(shifter_species))
if(shifter_species.is_veil_breaching_form(owner) && (!shifter_species.causes_delerium || HAS_TRAIT(owner, TRAIT_PIERCED_VEIL)))
if(shifter_species.is_veil_breaching_form(owner) && (!shifter_species.causes_delirium || HAS_TRAIT(owner, TRAIT_PIERCED_VEIL)))
SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION)
if(shifter_species.causes_delirium)
for(var/mob/living/carbon/human/guy in oviewers(owner, DEFAULT_SIGHT_DISTANCE))
if(!guy.affected_by_delirium())
continue
guy.apply_status_effect(STATUS_EFFECT_DELIRIUM, owner)

// Being used to represent meditating in your caern
/datum/splat/werewolf/shifter/proc/regain_gnosis_process(seconds_per_tick)
Expand Down
Binary file not shown.
1 change: 1 addition & 0 deletions tgstation.dme
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// DM Environment file for tgstation.dme.

Check failure on line 1 in tgstation.dme

View workflow job for this annotation

GitHub Actions / Run Linters / linters

Ticked File Enforcement

Missing include for modular_darkpack\modules\dwelling\code\objs\dwelling_window_defs.dm.

Check failure on line 1 in tgstation.dme

View workflow job for this annotation

GitHub Actions / Run Linters / linters

Ticked File Enforcement

Missing include for modular_darkpack\modules\dwelling\code\areas\area_dwelling_instances.dm.

Check failure on line 1 in tgstation.dme

View workflow job for this annotation

GitHub Actions / Run Linters / linters

Ticked File Enforcement

Missing include for modular_darkpack\modules\dwelling\code\area_dwelling.dm.

Check failure on line 1 in tgstation.dme

View workflow job for this annotation

GitHub Actions / Run Linters / linters

Ticked File Enforcement

Missing include for modular_darkpack\modules\dwelling\code\obj_dwelling.dm.

Check failure on line 1 in tgstation.dme

View workflow job for this annotation

GitHub Actions / Run Linters / linters

Ticked File Enforcement

Missing include for modular_darkpack\modules\dwelling\code\_dwelling_gvars_defines.dm.

Check failure on line 1 in tgstation.dme

View workflow job for this annotation

GitHub Actions / Run Linters / linters

Ticked File Enforcement

Missing include for modular_darkpack\modules\latejoin_antagonists\code\latejoin_subsystem.dm.

Check failure on line 1 in tgstation.dme

View workflow job for this annotation

GitHub Actions / Run Linters / linters

Ticked File Enforcement

Missing include for modular_darkpack\modules\economy\code\stocks_license.dm.

Check failure on line 1 in tgstation.dme

View workflow job for this annotation

GitHub Actions / Run Linters / linters

Ticked File Enforcement

Missing include for modular_darkpack\modules\powers\code\discipline\mytherceria.dm.

Check failure on line 1 in tgstation.dme

View workflow job for this annotation

GitHub Actions / Run Linters / linters

Ticked File Enforcement

Missing include for modular_darkpack\modules\powers\code\discipline\healer_valeren.dm.

Check failure on line 1 in tgstation.dme

View workflow job for this annotation

GitHub Actions / Run Linters / linters

Ticked File Enforcement

Missing include for modular_darkpack\modules\drugs\code\bloodpacks\bloodpack_adulteration.dm.
// All manual changes should be made outside the BEGIN_ and END_ blocks.
// New source code should be placed in .dm files: choose File/New --> Code File.

Expand Down Expand Up @@ -7845,6 +7845,7 @@
#include "modular_darkpack\modules\weapons\code\sheath.dm"
#include "modular_darkpack\modules\weapons\code\stake.dm"
#include "modular_darkpack\modules\weather\code\effects.dm"
#include "modular_darkpack\modules\werewolf_the_apocalypse\code\delirium.dm"
#include "modular_darkpack\modules\werewolf_the_apocalypse\code\emotes.dm"
#include "modular_darkpack\modules\werewolf_the_apocalypse\code\garou_languages.dm"
#include "modular_darkpack\modules\werewolf_the_apocalypse\code\gauntlet.dm"
Expand Down
Loading