diff --git a/code/datums/gamemodes/_game_mode.dm b/code/datums/gamemodes/_game_mode.dm index 0de7a051b96..e8ea958d4b3 100644 --- a/code/datums/gamemodes/_game_mode.dm +++ b/code/datums/gamemodes/_game_mode.dm @@ -78,6 +78,10 @@ GLOBAL_VAR(common_report) //Contains common part of roundend report ///if fun tads are enabled by default var/enable_fun_tads = FALSE + var/xeno_damage_taking_multiplier = 1 + var/human_damage_taking_multiplier = 1 + var/living_damage_taking_multiplier = 1 + /datum/game_mode/New() initialize_emergency_calls() diff --git a/code/datums/gamemodes/distress.dm b/code/datums/gamemodes/distress.dm index 3357f2720c6..3ad85641a8d 100644 --- a/code/datums/gamemodes/distress.dm +++ b/code/datums/gamemodes/distress.dm @@ -33,6 +33,7 @@ /datum/job/xenomorph/queen = 1, /datum/job/survivor/rambo = 1, ) + var/siloless_hive_timer /datum/game_mode/infestation/distress/post_setup() diff --git a/code/datums/gamemodes/x2damage.dm b/code/datums/gamemodes/x2damage.dm new file mode 100644 index 00000000000..de4d4a014cf --- /dev/null +++ b/code/datums/gamemodes/x2damage.dm @@ -0,0 +1,8 @@ +/datum/game_mode/infestation/distress/x2damage + name = "Distress Signal (X2 damage)" + config_tag = "X2damage" + xenorespawn_time = 2 MINUTES + + xeno_damage_taking_multiplier = 1.6 + human_damage_taking_multiplier = 1.6 + living_damage_taking_multiplier = 1.6 diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index fa7b869fe0d..0b236b67385 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -340,6 +340,9 @@ This function restores all limbs. if(status_flags & (GODMODE)) return + if(SSticker.mode) + damage *= SSticker.mode.xeno_damage_taking_multiplier + last_damage_source = usr //where my cause_data??? no cause_data? https://media.discordapp.net/attachments/1059662710217908245/1128315728081211412/65939r.png?width=842&height=917 return species.apply_damage(damage, damagetype, def_zone, blocked, sharp, edge, updating_health, penetration, src) diff --git a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm index df6e2761f49..d8b28f88d33 100644 --- a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm @@ -61,6 +61,10 @@ return if(damagetype != BRUTE && damagetype != BURN) return + + if(SSticker.mode) + damage *= SSticker.mode.xeno_damage_taking_multiplier + if(isnum(blocked)) damage -= clamp(damage * (blocked - penetration) * 0.01, 0, damage) else diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 77a7a1da5ff..e63215b39fc 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -17,6 +17,10 @@ /mob/living/proc/apply_damage(damage = 0, damagetype = BRUTE, def_zone, blocked = 0, sharp = FALSE, edge = FALSE, updating_health = FALSE, penetration) if(status_flags & (GODMODE)) return + + if(SSticker.mode) + damage *= SSticker.mode.living_damage_taking_multiplier + if(isnum(blocked)) damage -= clamp(damage * (blocked - penetration) * 0.01, 0, damage) else diff --git a/config/modes.txt b/config/modes.txt index b63ea0c69b6..aec6a7e55ed 100644 --- a/config/modes.txt +++ b/config/modes.txt @@ -16,6 +16,10 @@ mode Extended votable 0 endmode +mode X2damage + requiredplayers 30 +endmode + mode Combat Patrol requiredplayers 2 endmode diff --git a/tgmc.dme b/tgmc.dme index 76026e5cf25..4956663dff4 100644 --- a/tgmc.dme +++ b/tgmc.dme @@ -496,6 +496,7 @@ #include "code\datums\gamemodes\objective.dm" #include "code\datums\gamemodes\objective_items.dm" #include "code\datums\gamemodes\points_defence.dm" +#include "code\datums\gamemodes\x2damage.dm" #include "code\datums\greyscale\_greyscale_config.dm" #include "code\datums\greyscale\greyscale_configs.dm" #include "code\datums\greyscale\layer.dm"