diff --git a/code/datums/character_flaw/_character_flaw.dm b/code/datums/character_flaw/_character_flaw.dm
index 20fa7d4e6b3..5d81b7e648b 100644
--- a/code/datums/character_flaw/_character_flaw.dm
+++ b/code/datums/character_flaw/_character_flaw.dm
@@ -32,6 +32,7 @@ GLOBAL_LIST_INIT(character_flaws, list(
//Caustic edit
"Bottomless"=/datum/charflaw/bottomless,
"Asundered Mind"=/datum/charflaw/mind_broken,
+ "Combat Adverse"=/datum/charflaw/combat_adverse,
//Caustic edit end
"Hunted"=/datum/charflaw/hunted,
/datum/charflaw/mind_broken::name = /datum/charflaw/mind_broken,
diff --git a/code/game/objects/structures/crates_lockers/roguetown.dm b/code/game/objects/structures/crates_lockers/roguetown.dm
index 347ecda5e6e..070198f4e6a 100644
--- a/code/game/objects/structures/crates_lockers/roguetown.dm
+++ b/code/game/objects/structures/crates_lockers/roguetown.dm
@@ -70,6 +70,39 @@
var/I = pickweight(loot)
new I(src)
+//Caustic Edit
+/obj/structure/closet/crate/chest/gravechest
+
+/obj/structure/closet/crate/chest/gravechest/PopulateContents()
+ var/list/loot = list(/obj/item/rogueweapon/huntingknife/idagger/steel=10,
+ /obj/item/rogueweapon/mace/steel=10,
+ /obj/item/rogueweapon/pick=20,
+ /obj/item/rogueweapon/shovel=20,
+ /obj/item/clothing/suit/roguetown/armor/gambeson=15,
+ /obj/item/clothing/suit/roguetown/armor/leather=15,
+ /obj/item/ingot/iron=20,
+ /obj/item/ingot/gold=5,
+ /obj/item/ingot/silver=3,
+ /obj/item/riddleofsteel=1,
+ /obj/item/roguegem/ruby=2,
+ /obj/item/roguegem/blue=3,
+ /obj/item/roguegem/violet=4,
+ /obj/item/roguegem/green=6,
+ /obj/item/roguegem/yellow=10,
+ /obj/item/roguecoin/silver/pile=2,
+ /obj/item/roguecoin/gold/pile=6,
+ /obj/item/storage/belt/rogue/pouch/coins/mid=8,
+ /obj/item/storage/belt/rogue/pouch/coins/rich=8,
+ /obj/item/storage/backpack/rogue/satchel/otavan=30,
+ /obj/item/roguestatue/gold/loot=1,
+ /obj/item/clothing/neck/roguetown/talkstone=2)
+
+ var/i
+ for(i=0, i<3, i++)
+ var/I = pickweight(loot)
+ new I(src)
+//Caustic Edit End
+
/obj/structure/closet/crate/roguecloset
name = "closet"
desc = "A simple wooden closet, used to store whatever it is you would like out of sight."
diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm
index 12af9d1630f..4b9bfcb9023 100644
--- a/code/modules/client/preferences_toggles.dm
+++ b/code/modules/client/preferences_toggles.dm
@@ -49,16 +49,16 @@
else
to_chat(src, "Screen shake disabled.")
-/client/verb/masked_examine()
+/client/verb/masked_examine() //Caustic Edit - Just... fixing this up everywhere it's used to be consistent. And not stupidly inversed? If this is true, it's ALLOWING the info.
set category = "Options"
set name = "Toggle Masked Examine"
if(prefs)
prefs.masked_examine = !prefs.masked_examine
prefs.save_preferences()
- if(!prefs.masked_examine)
+ if(prefs.masked_examine)
to_chat(src, "Your character information will be viewable when masked.")
else
- to_chat(src, "Your character information will no longer be viewable when masked.")
+ to_chat(src, "Your character information will no longer be viewable when masked.") //Caustic Edit End
/client/verb/mute_animal_emotes()
set category = "Options"
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index 95540fc883d..4b4573f736f 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -195,3 +195,7 @@
var/can_do_sex = TRUE
fovangle = FOV_DEFAULT
+
+ //Caustic Edit
+ var/time_of_last_move = 0
+ //Caustic Edit End
diff --git a/code/modules/mob/living/carbon/human/human_topic.dm b/code/modules/mob/living/carbon/human/human_topic.dm
index a992df2b4f3..fe9dd217c13 100644
--- a/code/modules/mob/living/carbon/human/human_topic.dm
+++ b/code/modules/mob/living/carbon/human/human_topic.dm
@@ -215,7 +215,7 @@ GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013???
// NEXT ROW
dat += "
"
dat += ""
- if(intellectual && (!obscured_name || !H.client?.prefs.masked_examine))
+ if(intellectual && (!obscured_name || H.client?.prefs.masked_examine))
dat += "STATS:
"
if(!is_guarded)
dat +=("STR: \Roman [H.STASTR] ")
@@ -366,7 +366,7 @@ GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013???
dat += " | "
dat += ""
- if(!is_guarded && !is_stupid && (!obscured_name || !H.client?.prefs.masked_examine)) //We don't see Guarded people's skills at all.
+ if(!is_guarded && !is_stupid && (!obscured_name || H.client?.prefs.masked_examine)) //We don't see Guarded people's skills at all.
dat += "SKILLS:
"
var/list/wornstuff = list(H.backr, H.backl, H.beltl, H.beltr)
if(!is_normal && !is_smart) //At minimum we get to see the skills of the weapons the person is holding, if we have them.
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 22b40c5c8d1..f1f1b8e126f 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -104,6 +104,9 @@
//Caustic Edit - Adding an on_moved call for flaws!
/mob/living/carbon/human/Moved(atom/OldLoc, Dir)
. = ..()
+ if(mind)
+ time_of_last_move = world.time //This keeps track of the tick count since the human mob last moved, to be referenced later at any time! Only bothering to track it if the mob has a mind, IE a player (for stopping hunger and thirst loss currently!)
+
if(charflaw && !charflaw.ephemeral && mind)
charflaw.flaw_on_moved(src, OldLoc, Dir)
//Caustic Edit End
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 137330014c5..2456048b5ae 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -976,7 +976,8 @@ GLOBAL_LIST_EMPTY(roundstart_races)
H.Jitter(5)
hunger_rate = 10 * HUNGER_FACTOR*/
// hunger_rate *= H.physiology.hunger_mod
- H.adjust_nutrition(-hunger_rate)
+ if(!H.mind || world.time < H.time_of_last_move + 10 MINUTES)
+ H.adjust_nutrition(-hunger_rate)
var/obj/item/organ/breasts/breasts = H.has_breasts()
if(breasts)
@@ -994,7 +995,8 @@ GLOBAL_LIST_EMPTY(roundstart_races)
// THEY HUNGER
var/hunger_rate = HUNGER_FACTOR
// hunger_rate *= H.physiology.hunger_mod
- H.adjust_hydration(-hunger_rate)
+ if(!H.mind || world.time < H.time_of_last_move + 10 MINUTES)
+ H.adjust_hydration(-hunger_rate)
if (H.nutrition > NUTRITION_LEVEL_FULL)
diff --git a/code/modules/mob/living/simple_animal/rogue/creacher/undead_animal_helpers.dm b/code/modules/mob/living/simple_animal/rogue/creacher/undead_animal_helpers.dm
index 13776b281b7..8f120753a60 100644
--- a/code/modules/mob/living/simple_animal/rogue/creacher/undead_animal_helpers.dm
+++ b/code/modules/mob/living/simple_animal/rogue/creacher/undead_animal_helpers.dm
@@ -43,8 +43,11 @@ GLOBAL_LIST_INIT(animal_to_undead, list(
/datum/component/deadite_animal_reanimation
var/reanimation_timer
var/undead_to_spawn
+ var/attempt_later_reanimate //Caustic Edit - Var to only attempt a loop of the timer this many times
/datum/component/deadite_animal_reanimation/Initialize()
+ attempt_later_reanimate = 3 //Caustic Edit - Init the loop counter
+
if(!istype(parent, /mob/living/simple_animal))
return COMPONENT_INCOMPATIBLE
@@ -59,6 +62,21 @@ GLOBAL_LIST_INIT(animal_to_undead, list(
/datum/component/deadite_animal_reanimation/proc/reanimate()
var/mob/living/simple_animal/mob = parent
+
+ //Caustic Edit - Add a prevention and loop the timer if someone living is nearby
+ if(attempt_later_reanimate > 0)
+ var/client_mobs = get_hearers_in_range(6, mob, SPATIAL_GRID_CONTENTS_TYPE_CLIENTS)
+ if(length(client_mobs))
+ for(var/mob/living/player_mob as anything in client_mobs)
+ if(player_mob.stat == CONSCIOUS)
+ attempt_later_reanimate--
+ if(attempt_later_reanimate >= 0)
+ reanimation_timer = addtimer(CALLBACK(src, PROC_REF(reanimate)), 1.5 MINUTES, TIMER_STOPPABLE)
+ else
+ UnregisterFromParent()
+ return
+ //Caustic Edit End
+
if(!prob(get_reanimation_chance()) || QDELETED(mob) || mob.stat != DEAD)
UnregisterFromParent()
return
diff --git a/code/modules/roguetown/roguejobs/gravedigger/hole.dm b/code/modules/roguetown/roguejobs/gravedigger/hole.dm
index 8011b590335..dc78288cfe3 100644
--- a/code/modules/roguetown/roguejobs/gravedigger/hole.dm
+++ b/code/modules/roguetown/roguejobs/gravedigger/hole.dm
@@ -66,12 +66,14 @@
/obj/structure/closet/dirthole/closed/loot/Initialize()
. = ..()
- lootroll = rand(1,4)
+ lootroll = rand(1,10) //Caustic Edit - Make the loot a bit more interesting. 1 - Skeleton, 2 - Buried Loot
+ //3 - 5 - Bones, small chance of decrepit item, 6 - 8 - Commoner Body, 9 - Noble Body, 10 - Nothing
/obj/structure/closet/dirthole/closed/loot
var/looted = FALSE
var/lootroll = 0
+//Caustic Edit - Making the drops more interesting!
/obj/structure/closet/dirthole/closed/loot/open()
if(!looted)
looted = TRUE
@@ -79,9 +81,258 @@
if(1)
new /mob/living/carbon/human/species/skeleton/npc(mastert)
if(2)
- new /obj/structure/closet/crate/chest/lootbox(mastert)
+ new /obj/structure/closet/crate/chest/gravechest(mastert)
+ if(3)
+ corpse_bones()
+ decrepit_chance()
+ if(4)
+ corpse_bones()
+ decrepit_chance()
+ if(5)
+ corpse_bones()
+ decrepit_chance()
+ if(6)
+ corpse_bones()
+ towner_chance()
+ if(7)
+ corpse_bones()
+ towner_chance()
+ if(8)
+ corpse_bones()
+ towner_chance()
+ if(9)
+ corpse_bones()
+ noble_chance()
..()
+/obj/structure/closet/dirthole/closed/loot/proc/corpse_bones()
+ new /obj/item/skull(mastert)
+ var/num_bones = rand(2,5)
+
+ var/i
+ for(i=0, i 6)
+ break
+ if(cnt > 6)
+ user.add_stress(/datum/stressevent/cablood)
+
+ var/mob/living/carbon/human/human_user = user //Cast to human!
+ if(!istype(human_user))
+ return
+
+ if(human_user.cmode) //Check if the player is in combat mode, and increment the ticker...
+ if(combat_mode_ticks < 3)
+ combat_mode_ticks++
+ else
+ user.add_stress(/datum/stressevent/caincombat) //If it hits 3 ticks, IE 30 seconds in combat mode, you are considered in the heat of battle!
+ else
+ combat_mode_ticks = 0 //Reset the counter when cmode is turned off!
+
+ if(world.time < last_gear_check + 30 SECONDS) //Run the gear check every 30 seconds instead of every 10, so for every 3 checks of the prior two, this one is checked 1 time
+ return
+ last_gear_check = world.time
+ cnt = 0
+ var/equipped = human_user.get_equipped_items()
+ for(var/obj/item/gear in equipped) //Check all worn gear (not held!) for if it currently has blood on it! If so, add a stack up to 3.
+ var/datum/component/decal/blood/bloodcomp = gear.GetComponent(/datum/component/decal/blood)
+ if(bloodcomp)
+ cnt++
+ user.add_stress(/datum/stressevent/cawornblood)
+ if(cnt > 2)
+ break
diff --git a/roguetown.dme b/roguetown.dme
index aea436f04d4..47eb6304e03 100644
--- a/roguetown.dme
+++ b/roguetown.dme
@@ -3062,6 +3062,7 @@
#include "modular_causticcove\code\modules\spells\components\temper_clothing.dm"
#include "modular_causticcove\code\modules\taurs\taur_bodyparts.dm"
#include "modular_causticcove\code\modules\taurs\taur_markings.dm"
+#include "modular_causticcove\code\modules\vices\combat_adverse.dm"
#include "modular_causticcove\code\modules\vices\mind_broken.dm"
#include "modular_causticcove\code\modules\vices\bottomless\bottomless.dm"
#include "modular_causticcove\code\modules\vices\bottomless\maxfood.dm"
|