Skip to content
Draft
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
13 changes: 10 additions & 3 deletions code/__DEFINES/~darkpack/traits/declarations.dm
Original file line number Diff line number Diff line change
Expand Up @@ -124,16 +124,23 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_WTA_GAROU_AUSPICE "wta_garou_auspice"
// This mob has fur!
#define TRAIT_FERA_FUR "fera_fur"
/// If the fera is wyrm tainted. Affects their sprite.
/// If the fera is wyrm tainted.
#define TRAIT_WYRMTAINTED "wyrm_tainted"
/// If the fera is wyrm tainted. Affects their sprite.
#define TRAIT_WYRMTAINTED_SPRITE "wyrm_tainted_sprite"
/// For living mobs to prevent adjustments to their lying angle. Used primarly for fera.
#define TRAIT_NO_LYING_ANGLE "no_lying_angle"
// Expensive but allows us to ensure there resting gets updated.
#define TRAIT_TRANSFORM_UPDATES_ICON "transform_updates_icon"
// Massivly boosts the range of your howl emote.
#define TRAIT_LOUD_HOWLER "loud_howler"
/// Prevents the mob from picking up items larger then small
#define TRAIT_SMALL_HANDS "small_hands"
// Traits granted via gifts
// Massivly boosts the range of your howl emote.
#define TRAIT_LOUD_HOWLER "loud_howler"
#define TRAIT_RAZOR_CLAWS "razor_claws"

/// Sixth sense restricted to view range
#define TRAIT_LOCAL_SIXTHSENSE "local_sixth_sense"

// BELOW ARE ALL MERITS/FLAWS
#define TRAIT_ILLEGAL_IDENTITY "illegal_identity" // GOVERNMENT
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/~darkpack/traits/sources.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
#define CLAN_TRAIT "clan"
#define DISCIPLINE_TRAIT "discipline"

#define GIFT_TRAIT "gift"

#define STAKE_TRAIT "stake"
#define DAMAGE_TRAIT "damage"

Expand Down
4 changes: 4 additions & 0 deletions code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,10 @@ GLOBAL_LIST_INIT(skin_tone_names, list(
override = TRUE
if(HAS_TRAIT(M, TRAIT_SIXTHSENSE) && message_type == DEADCHAT_REGULAR)
override = TRUE
// DARKPACK EDIT ADD START
if(HAS_TRAIT(M, TRAIT_LOCAL_SIXTHSENSE) && (message_type == DEADCHAT_REGULAR) && (source in orange(DEFAULT_MESSAGE_RANGE, M)))
override = TRUE
// DARKPACK EDIT ADD END
if(SSticker.current_state == GAME_STATE_FINISHED)
override = TRUE
if(isnewplayer(M) && !override)
Expand Down
5 changes: 4 additions & 1 deletion code/_globalvars/traits/_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -692,6 +692,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_WING_BUFFET_TIRED" = TRAIT_WING_BUFFET_TIRED,
"TRAIT_WOUND_LICKER" = TRAIT_WOUND_LICKER,
"TRAIT_WYRMTAINTED" = TRAIT_WYRMTAINTED, // DARKPACK EDIT ADD
"TRAIT_WYRMTAINTED_SPRITE" = TRAIT_WYRMTAINTED_SPRITE, // DARKPACK EDIT ADD
"TRAIT_XENO_HOST" = TRAIT_XENO_HOST,
"TRAIT_XENO_IMMUNE" = TRAIT_XENO_IMMUNE,
"TRAIT_XRAY_HEARING" = TRAIT_XRAY_HEARING,
Expand Down Expand Up @@ -731,9 +732,11 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_ILLEGAL_IDENTITY" = TRAIT_ILLEGAL_IDENTITY, // DARKPACK EDIT ADD - GOVERMENT
"TRAIT_NO_LYING_ANGLE" = TRAIT_NO_LYING_ANGLE, // DARKPACK EDIT ADD - WEREWOLF
"TRAIT_TRANSFORM_UPDATES_ICON" = TRAIT_TRANSFORM_UPDATES_ICON, // DARKPACK EDIT ADD - WEREWOLF
"TRAIT_LOUD_HOWLER" = TRAIT_LOUD_HOWLER, // DARKPACK EDIT ADD - WEREWOLF
"TRAIT_FERA_FUR" = TRAIT_FERA_FUR, // DARKPACK EDIT ADD - WEREWOLF
"TRAIT_SMALL_HANDS" = TRAIT_SMALL_HANDS, // DARKPACK EDIT ADD - WEREWOLF
"TRAIT_LOUD_HOWLER" = TRAIT_LOUD_HOWLER, // DARKPACK EDIT ADD - WEREWOLF
"TRAIT_RAZOR_CLAWS" = TRAIT_RAZOR_CLAWS, // DARKPACK EDIT ADD - WEREWOLF
"TRAIT_LOCAL_SIXTHSENSE" = TRAIT_LOCAL_SIXTHSENSE, // DARKPACK EDIT ADD
"TRAIT_NECROPOLIS_WORSHIP" = TRAIT_NECROPOLIS_WORSHIP,
),
/mob/living/carbon = list(
Expand Down
9 changes: 6 additions & 3 deletions code/_globalvars/traits/admin_tooling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -355,9 +355,12 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_LEFT_EYE_SCAR" = TRAIT_LEFT_EYE_SCAR,
"TRAIT_RIGHT_EYE_SCAR" = TRAIT_RIGHT_EYE_SCAR,
"TRAIT_CARPOTOXIN_IMMUNE" = TRAIT_CARPOTOXIN_IMMUNE,
"TRAIT_THAUMATURGY_KNOWLEDGE" = TRAIT_THAUMATURGY_KNOWLEDGE, // DARKPACK EDIT ADD
"TRAIT_VICISSITUDE_KNOWLEDGE" = TRAIT_VICISSITUDE_KNOWLEDGE, // DARKPACK EDIT ADD
"TRAIT_MYSTICISM_KNOWLEDGE" = TRAIT_MYSTICISM_KNOWLEDGE, // DARKPACK EDIT ADD
"TRAIT_WYRMTAINTED" = TRAIT_WYRMTAINTED, // DARKPACK EDIT ADD - WEREWOLF
"TRAIT_WYRMTAINTED_SPRITE" = TRAIT_WYRMTAINTED_SPRITE, // DARKPACK EDIT ADD - WEREWOLF
"TRAIT_THAUMATURGY_KNOWLEDGE" = TRAIT_THAUMATURGY_KNOWLEDGE, // DARKPACK EDIT ADD - POWERS
"TRAIT_VICISSITUDE_KNOWLEDGE" = TRAIT_VICISSITUDE_KNOWLEDGE, // DARKPACK EDIT ADD - POWERS
"TRAIT_MYSTICISM_KNOWLEDGE" = TRAIT_MYSTICISM_KNOWLEDGE, // DARKPACK EDIT ADD - POWERS
"TRAIT_LOCAL_SIXTHSENSE" = TRAIT_LOCAL_SIXTHSENSE, // DARKPACK EDIT ADD
),
/obj/item = list(
"TRAIT_APC_SHOCKING" = TRAIT_APC_SHOCKING,
Expand Down
Binary file removed icons/effects/mouse_pointers/discipline.dmi
Binary file not shown.
4 changes: 4 additions & 0 deletions modular_darkpack/modules/areas/code/__vtm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
outdoors = TRUE
var/zone_type = ZONE_MASQUERADE

// 7 is an average city street.
/// The rating of the gauntlet, the Gauntlet is strongest near certain types of environments
var/gauntlet_rating = 7 // WEREWOLF

/area/vtm/powered(chan)
if (!requires_power)
return TRUE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
zone_type = ZONE_NO_MASQUERADE
music_index = MUSIC_FOREST
fire_controled = FALSE
gauntlet_rating = 8

/area/vtm/interior/endron_facility/restricted
name = MAIN_EVIL_COMPANY + " Facility Restricted"
Expand All @@ -23,6 +24,7 @@
icon_state = "supply"
zone_type = ZONE_NO_MASQUERADE
fire_controled = TRUE
gauntlet_rating = 6

/area/vtm/interior/endron_facility/plant
name = "Endron Processing Plant"
Expand Down
1 change: 1 addition & 0 deletions modular_darkpack/modules/areas/code/interiors/garou.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
name = "Children of Gaia Caern"
icon_state = "cog_caern"
zone_type = ZONE_ELYSIUM
gauntlet_rating = 5

/area/vtm/interior/cog/pantry
name = "Earth's Bounty Food Pantry"
Expand Down
1 change: 1 addition & 0 deletions modular_darkpack/modules/areas/code/outsides/forest.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
icon_state = "park"
zone_type = ZONE_NO_MASQUERADE
sound_environment = SOUND_ENVIRONMENT_FOREST
gauntlet_rating = 6
2 changes: 2 additions & 0 deletions modular_darkpack/modules/areas/code/random_gen.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
icon_state = "park"
outdoors = TRUE
map_generator = /datum/map_generator/jungle_generator
gauntlet_rating = 6


/area/vtm/planetgeneration/woodland
name = "woodland generation area"
icon_state = "cog_caern"
outdoors = TRUE
map_generator = /datum/map_generator/jungle_generator/woodland
gauntlet_rating = 6
Binary file not shown.
12 changes: 12 additions & 0 deletions modular_darkpack/modules/doors/code/vampdoor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@

AddElement(/datum/element/contextual_screentip_bare_hands, rmb_text = "Try lock")

var/static/list/loc_connections = list(
COMSIG_ATOM_MAGICALLY_UNLOCKED = PROC_REF(on_magic_unlock),
)
AddElement(/datum/element/connect_loc, loc_connections)

/obj/structure/vampdoor/CanAStarPass(to_dir, datum/can_pass_info/pass_info)
return !density || !locked

Expand Down Expand Up @@ -162,6 +167,13 @@
closed = FALSE
SEND_SIGNAL(src, COMSIG_AIRLOCK_OPEN)

/// Signal proc for [COMSIG_ATOM_MAGICALLY_UNLOCKED]. Unlock and open up when we get knock casted.
/obj/structure/vampdoor/proc/on_magic_unlock(datum/source, datum/action/cooldown/spell/aoe/knock/spell, atom/caster)
SIGNAL_HANDLER

locked = FALSE
INVOKE_ASYNC(src, PROC_REF(open_door))

/obj/structure/vampdoor/proc/close_door(mob/user, force)
if(!force)
for(var/mob/living/L in src.loc)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
/datum/discipline_power/animalism
name = "Animalism power name"
desc = "Animalism power description"
effect_sound = 'modular_darkpack/modules/deprecated/sounds/wolves.ogg'
effect_sound = 'modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/wolves.ogg'

/datum/discipline_power/animalism/activate()
. = ..()
Expand Down
9 changes: 9 additions & 0 deletions modular_darkpack/modules/splats/code/human_dummies.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// mimmics /mob/living/carbon/human/species to allow for quick testing
/mob/living/carbon/human/splat
abstract_type = /mob/living/carbon/human/splat
var/auto_splats = list()

/mob/living/carbon/human/splat/Initialize(mapload)
. = ..()
for(var/splat in auto_splats)
add_splat(splat)
37 changes: 37 additions & 0 deletions modular_darkpack/modules/splats/code/powers/_power.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,40 @@
// Not used presently but good future proofing incase behavoirs care.
/// Means that this action is not a real power, but some sort of innate ability we represent as a power/disc/gift mechnaicly.
var/innate_ability = FALSE

/// How much temporary willpower is required to use this ability
var/willpower_cost = 0

/datum/action/cooldown/power/IsAvailable(feedback)
. = ..()

if(!can_afford(feedback))
return FALSE

/datum/action/cooldown/power/Activate(atom/target)
. = ..()

spend_resources()


/**
* Returns a boolean of if the caster can afford
* this power's cost cost.
*/
/datum/action/cooldown/power/proc/can_afford(feedback)
if(willpower_cost && isliving(owner))
var/mob/living/living_owner = owner
if(willpower_cost > living_owner.st_get_stat(STAT_TEMPORARY_WILLPOWER))
if(feedback)
to_chat(owner, span_warning("You don't have enough willpower to do that!"))
return FALSE
return TRUE

/**
* Overridable proc handling the spending of resources (willpower/vitae/rage/etc)
* when casting the power.
*/
/datum/action/cooldown/power/proc/spend_resources()
if(willpower_cost && isliving(owner))
var/mob/living/living_owner = owner
living_owner.st_change_stat(STAT_TEMPORARY_WILLPOWER, -willpower_cost)
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@ SUBSYSTEM_DEF(roll)
dice_roll.numerical = numerical
return dice_roll.st_roll(roller, roller, dice)

/datum/controller/subsystem/roll/proc/storyteller_roll_stats(applic_stats = list(), bonus = 0, difficulty = 6, mob/living/roller = null, numerical = FALSE)
var/datum/storyteller_roll/dice_roll = new()
dice_roll.applicable_stats = applic_stats
dice_roll.difficulty = difficulty
dice_roll.numerical = numerical
return dice_roll.st_roll(roller, roller, bonus)

//Config datums for exploding dice
/datum/config_entry/flag/on_crit_additional_success

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,15 @@
var/datum/st_stat/given_stat = storyteller_stats["[stat_path]"]
return given_stat?.set_score(amount)

/// Changes a specific mob's stat from its stats list by the given amount.
/mob/living/proc/st_change_stat(stat_path, amount)
var/datum/st_stat/given_stat = storyteller_stats["[stat_path]"]
if(amount > 0)
return given_stat?.increase_score(amount)
else
return given_stat?.decrease_score(amount)


/mob/living/proc/st_add_stat_mod(stat_path, amount, source)
var/datum/st_stat/given_stat = storyteller_stats["[stat_path]"]
return given_stat?.add_stat_mod(amount, source)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
button_icon_state = "vitae"
background_icon = 'modular_darkpack/master_files/icons/mob/actions/backgrounds.dmi'
background_icon_state = "bg_discipline"
ranged_mousepointer = 'icons/effects/mouse_pointers/discipline.dmi'
ranged_mousepointer = 'modular_darkpack/modules/deprecated/icons/effects/mouse_pointers/discipline.dmi'
cooldown_time = 10 SECONDS
vampiric = TRUE

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
RETURN_TYPE(/datum/splat/vampire/ghoul)

return add_splat(/datum/splat/vampire/ghoul, domitor)

/mob/living/carbon/human/splat/ghoul
auto_splats = list(/datum/splat/vampire/ghoul)
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,6 @@
childe_clan = GLOB.vampire_clans[/datum/vampire_clan/caitiff]

return make_kindred(sire_splat.generation + 1, childe_clan, FALSE, sire)

/mob/living/carbon/human/splat/kindred
auto_splats = list(/datum/splat/vampire/kindred)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/atom/proc/get_gauntlet_rating()
var/area/vtm/my_area = astype(get_area(src))
if(my_area)
return my_area.gauntlet_rating
return 7

Original file line number Diff line number Diff line change
Expand Up @@ -7,49 +7,64 @@

check_flags = AB_CHECK_IMMOBILE|AB_CHECK_CONSCIOUS

var/default_activate_message = TRUE

var/rage_req = 0
var/gnosis_req = 0
var/rage_cost = 0
var/gnosis_cost = 0

/datum/action/cooldown/power/gift/IsAvailable(feedback)
. = ..()

if(!ishuman(owner))
var/datum/splat/werewolf/casting_splat = iswerewolfsplat(owner)
if(!casting_splat)
if(feedback)
owner.balloon_alert(owner, "not human!")
owner.balloon_alert(owner, "not a gift user!")
return FALSE

/datum/action/cooldown/power/gift/Activate(atom/target)
. = ..()

if(default_activate_message)
to_chat(owner, span_notice("You activate the [name]..."))

/datum/action/cooldown/power/gift/can_afford(feedback)
. = ..()
var/datum/splat/werewolf/casting_splat = iswerewolfsplat(owner)

if(get_rage_cost())
if(!casting_splat)
return FALSE
if(casting_splat.rage < get_rage_cost())
if(feedback)
to_chat(owner, span_warning("You don't have enough <b>RAGE</b> to do that!"))
SEND_SOUND(owner, sound('modular_darkpack/modules/werewolf_the_apocalypse/sounds/werewolf_cast_failed.ogg', volume = 50))
return FALSE
if(gnosis_req)
if(casting_splat.gnosis < gnosis_req)
if(gnosis_cost)
if(!casting_splat)
return FALSE
if(casting_splat.gnosis < gnosis_cost)
if(feedback)
to_chat(owner, span_warning("You don't have enough <b>GNOSIS</b> to do that!"))
SEND_SOUND(owner, sound('modular_darkpack/modules/werewolf_the_apocalypse/sounds/werewolf_cast_failed.ogg', volume = 50))
return FALSE


/datum/action/cooldown/power/gift/Activate(atom/target)
/datum/action/cooldown/power/gift/spend_resources()
. = ..()
if(!ishuman(owner))
return FALSE

var/datum/splat/werewolf/casting_splat = iswerewolfsplat(owner)

if(get_rage_cost())
casting_splat.adjust_rage(-get_rage_cost(), owner, FALSE)
casting_splat?.adjust_rage(-get_rage_cost(), owner, FALSE)
if(get_gnosis_cost())
casting_splat.adjust_gnosis(-get_gnosis_cost(), owner, FALSE)
to_chat(owner, span_notice("You activate the [name]..."))
casting_splat?.adjust_gnosis(-get_gnosis_cost(), owner, FALSE)


/datum/action/cooldown/power/gift/proc/get_rage_cost()
return rage_req
return rage_cost

/datum/action/cooldown/power/gift/proc/get_gnosis_cost()
return gnosis_req
return gnosis_cost


/atom/movable/screen/alert/status_effect/gift
icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/werewolf_abilities.dmi'
icon_state = "bg_gift"
overlay_icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/werewolf_abilities.dmi'
Loading
Loading