Skip to content
Open
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
2,370 changes: 1,466 additions & 904 deletions _maps/map_files/cove_world/bandit_fortress.dmm

Large diffs are not rendered by default.

40 changes: 33 additions & 7 deletions code/game/objects/items/devices/flashlight.dm
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@
. = ..()

/obj/item/flashlight/flare/torch/process() //CC Note: This proc basically just... deals with fuel stuff, isn't needed for static torches!
//open_flame(heat) CC Edit THIS DOES NOTHING!!
open_flame(heat) //CC Edit - Actually this does do something, it looks like if it's on a mob, or on the ground, it will attempt to light that turf on fire.
if(!fuel || !on)
turn_off()
//STOP_PROCESSING(SSobj, src) CC Edit: turn_off already stops processing
Expand Down Expand Up @@ -244,21 +244,47 @@
return TRUE
return ..()

//Caustic Edit - Thrown Torches light things on fire! Code pretty much borrowed from above.
/obj/item/flashlight/flare/torch/afterattack(atom/movable/A, mob/user, proximity)
. = ..()
if (!proximity)
return
if (on && (prob(50) || (user.used_intent.type == /datum/intent/use)))
if (ismob(A))
A.spark_act()
if(ismob(A))
if(prob(50))
A.spark_act()
else
A.fire_act(1,5)
else
A.fire_act(3,3)

if (should_self_destruct) // check if self-destruct
times_used += 1
if (times_used >= 8) //amount used before burning out
handle_useage(user)

/obj/item/flashlight/flare/torch/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
..()
if(istype(src, /obj/item/flashlight/flare/torch/lantern)) //Only let exposed flame torches actually light people on fire!
return
if(hit_atom && on && prob(50))
if(ismob(hit_atom))
if(prob(50))
hit_atom.spark_act()
else
hit_atom.fire_act(2,5)
else
hit_atom.fire_act(3,3)

handle_useage()

/obj/item/flashlight/flare/torch/proc/handle_useage(mob/user = null)
if(should_self_destruct) // check if self-destruct
times_used += 1
if (times_used >= 8) //amount used before burning out
if(user)
user.visible_message("<span class='warning'>[src] has burnt out and falls apart!</span>")
qdel(src)
else
src.visible_message("<span class='warning'>[src] has burnt out and falls apart!</span>")
qdel(src)
//Caustic Edit End

/obj/item/flashlight/flare/torch/spark_act()
fire_act()
Expand Down
5 changes: 4 additions & 1 deletion code/game/objects/items/rogueitems/bombs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,10 @@
/obj/item/bomb/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
..()
sleep(1)
explode()
//Caustic Edit - Only explode if it's already lit.
if(lit)
explode()
//Caustic Edit End

/obj/item/bomb/process()
fuze--
Expand Down
70 changes: 69 additions & 1 deletion code/game/objects/structures/mineral_doors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
. = ..()
. += span_info("Right clicking the door with a key will attempt to lock it.")
. += span_info("Left clicking the door with a key will attempt to unlock it.")
. += span_info("Similarly, doing the same but with an empty hand, and a keyring with a valid key in or on your belt, or on your wrist will also lock/unlock the door.") //Caustic Edit - Adding in this QOL bit!
. += span_info("Kicking an unlocked door will open or close it. Kicking a locked door, if sufficiently strong, can force it open!")

/obj/structure/mineral_door/onkick(mob/user)
Expand Down Expand Up @@ -226,7 +227,7 @@
last_bump = world.time
if(ismob(AM))
var/mob/user = AM
if(HAS_TRAIT(user, TRAIT_BASHDOORS))
if(HAS_TRAIT(user, TRAIT_BASHDOORS) && user.cmode) //Caustic Edit - Tweak so that door bashing only happens when in combat mode. Otherwise you are being careful enough.
if(locked)
user.visible_message(span_warning("[user] bashes into [src]!"))
take_damage(200, "brute", "blunt", 1)
Expand All @@ -249,6 +250,14 @@
else
addtimer(CALLBACK(src, PROC_REF(Close), FALSE), 25)

//Caustic Edit - Add helper proc for just iterating through contents of storage items for a key/keyring.
/obj/structure/mineral_door/proc/check_for_key_in_storage(var/obj/item/storage/bag, mob/user)
for(var/obj/item/I in bag.contents)
if(istype(I, /obj/item/roguekey) || istype(I, /obj/item/storage/keyring))
trykeylock(I, user)
return TRUE
return FALSE
//Caustic Edit End

/obj/structure/mineral_door/attack_paw(mob/user)
return attack_hand(user)
Expand All @@ -269,6 +278,35 @@
if(L.m_intent == MOVE_INTENT_SNEAK)
to_chat(user, span_warning("This door is locked."))
return
//Caustic Edit - Add in QOL to open doors when the keyring is in or on your belt, or on your wrist!
if(ishuman(user))
var/mob/living/carbon/human/humanuser = user
if(humanuser.beltl)
if(istype(humanuser.beltl, /obj/item/roguekey) || istype(humanuser.beltl, /obj/item/storage/keyring))
src.attackby(humanuser.beltl, user)
return
if(istype(humanuser.beltl, /obj/item/storage))
if(check_for_key_in_storage(humanuser.beltl, humanuser))
return
if(humanuser.beltr)
if(istype(humanuser.beltr, /obj/item/roguekey) || istype(humanuser.beltr, /obj/item/storage/keyring))
src.attackby(humanuser.beltr, user)
return
if(istype(humanuser.beltr, /obj/item/storage))
if(check_for_key_in_storage(humanuser.beltr, humanuser))
return
if(humanuser.belt)
if(istype(humanuser.belt, /obj/item/storage))
if(check_for_key_in_storage(humanuser.belt, humanuser))
return
if(humanuser.wear_wrists)
if(istype(humanuser.wear_wrists, /obj/item/roguekey) || istype(humanuser.wear_wrists, /obj/item/storage/keyring))
src.attackby(humanuser.wear_wrists, user)
return
if(istype(humanuser.wear_wrists, /obj/item/storage))
if(check_for_key_in_storage(humanuser.wear_wrists, humanuser))
return
//Caustic Edit End
if(world.time >= last_bump+20)
last_bump = world.time
playsound(src, 'sound/foley/doors/knocking.ogg', 100)
Expand Down Expand Up @@ -488,6 +526,36 @@
door_rattle()
return
trykeylock(item, user)
//Caustic Edit - Add in QOL to open doors when the keyring is in or on your belt, or on your wrist!
else if(!item && !locked)
if(ishuman(user))
var/mob/living/carbon/human/humanuser = user
if(humanuser.beltl)
if(istype(humanuser.beltl, /obj/item/roguekey) || istype(humanuser.beltl, /obj/item/storage/keyring))
trykeylock(humanuser.beltl, user)
return
if(istype(humanuser.beltl, /obj/item/storage))
if(check_for_key_in_storage(humanuser.beltl, humanuser))
return
if(humanuser.beltr)
if(istype(humanuser.beltr, /obj/item/roguekey) || istype(humanuser.beltr, /obj/item/storage/keyring))
trykeylock(humanuser.beltr, user)
return
if(istype(humanuser.beltr, /obj/item/storage))
if(check_for_key_in_storage(humanuser.beltr, humanuser))
return
if(humanuser.belt)
if(istype(humanuser.belt, /obj/item/storage))
if(check_for_key_in_storage(humanuser.belt, humanuser))
return
if(humanuser.wear_wrists)
if(istype(humanuser.wear_wrists, /obj/item/roguekey) || istype(humanuser.wear_wrists, /obj/item/storage/keyring))
trykeylock(humanuser.wear_wrists, user)
return
if(istype(humanuser.wear_wrists, /obj/item/storage))
if(check_for_key_in_storage(humanuser.wear_wrists, humanuser))
return
//Caustic Edit End
else
return ..()

Expand Down
4 changes: 2 additions & 2 deletions code/modules/clothing/rogueclothes/shirts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -682,7 +682,7 @@
body_parts_covered = CHEST
boobed = TRUE
sewrepair = TRUE
flags_inv = null
flags_inv = HIDEBOOB //Caustic Edit - This was null for some reason?
slot_flags = ITEM_SLOT_SHIRT
salvage_result = /obj/item/natural/silk
salvage_amount = 2
Expand All @@ -696,7 +696,7 @@
body_parts_covered = CHEST
boobed = FALSE
sewrepair = TRUE
flags_inv = null
flags_inv = HIDEBOOB //Caustic Edit - This was null for some reason?
slot_flags = ITEM_SLOT_SHIRT
salvage_result = /obj/item/natural/fibers
salvage_amount = 3
Expand Down
2 changes: 1 addition & 1 deletion code/modules/events/antagonist/migrant_waves/assassins.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "Assassin Migration"
typepath = /datum/round_event/migrant_wave/assassins
wave_type = /datum/migrant_wave/assassin
max_occurrences = 2
max_occurrences = 0 //Caustic Edit - Turn off Assassins (again)

weight = 10

Expand Down
2 changes: 1 addition & 1 deletion code/modules/events/antagonist/solo/assassins.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
maximum_antags = 2

earliest_start = 0 SECONDS
max_occurrences = 2
max_occurrences = 0 //Caustic Edit - Turn off Assassins (again)

weight = 10

Expand Down
31 changes: 17 additions & 14 deletions code/modules/mob/living/death.dm
Original file line number Diff line number Diff line change
Expand Up @@ -160,22 +160,25 @@ GLOBAL_LIST_EMPTY(last_words)
// AZURE EDIT BEGIN: necra acolyte/priest deathsight trait
// this was a player that just died, so do the honors
if (client)
//Cove edit start
if (!istype(src.loc, /obj/belly))
if(istype(src, /mob/living/simple_animal))
//Caustic Edit Start - Only send whispers for deaths _not_ in a Player's Belly. NPC ones we do want to send.
if(istype(src.loc, /obj/belly))
var/mob/living/belly_owner = src.loc.loc //The loc of the belly is the one who has it in them.blockscharging
if(belly_owner && belly_owner.client) //Just verify that it cast properly and then check for a client present, then it was likely a death in a scene.
return
//Cove edit end
if(istype(src, /mob/living/simple_animal))
return
//Caustic Edit End
// Stop necrans from freaking out from digestion and unrevivable simplemob deaths
if (!gibbed)
var/locale = prepare_deathsight_message()
for (var/mob/living/player in GLOB.player_list)
if (player.stat == DEAD || isbrain(player))
continue
if (HAS_TRAIT(player, TRAIT_DEATHSIGHT))
if (HAS_TRAIT(player, TRAIT_CABAL))
to_chat(player, span_warning("I feel the faint passage of disjointed life essence as it flees [locale]."))
else
to_chat(player, span_warning("Veiled whispers herald the Undermaiden's gaze in my mind's eye as it turn towards [locale] for but a brief, singular moment."))
if (!gibbed)
var/locale = prepare_deathsight_message()
for (var/mob/living/player in GLOB.player_list)
if (player.stat == DEAD || isbrain(player))
continue
if (HAS_TRAIT(player, TRAIT_DEATHSIGHT))
if (HAS_TRAIT(player, TRAIT_CABAL))
to_chat(player, span_warning("I feel the faint passage of disjointed life essence as it flees [locale]."))
else
to_chat(player, span_warning("Veiled whispers herald the Undermaiden's gaze in my mind's eye as it turn towards [locale] for but a brief, singular moment."))
// AZURE EDIT END

return TRUE
Expand Down
2 changes: 1 addition & 1 deletion code/modules/roguetown/roguejobs/blacksmith/anvil.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@

// Pick up ingot with tongs
if(istype(current_workpiece, /obj/item/ingot))
if(T.hingot)
if(T.hingot || T.ore) //Caustic Edit - Allow picking up of Ores with Tongs
to_chat(user, span_warning("You're already holding something with your tongs!"))
return
current_workpiece.forceMove(T)
Expand Down
18 changes: 14 additions & 4 deletions code/modules/roguetown/roguejobs/blacksmith/smelter.dm
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,20 @@
/obj/machinery/light/rogue/smelter/attackby(obj/item/attacking_item, mob/living/user, params)
if(istype(attacking_item, /obj/item/rogueweapon/tongs))
var/obj/item/rogueweapon/tongs/tongs = attacking_item
if(tongs.hingot)
//Caustic Edit - Add Tongs ability to put ore in Smelters
if(tongs.hingot || tongs.ore)
if(length(contained_items) >= max_contained_items)
to_chat(user, span_warn("\The [src] is already full!"))
return
add_item(tongs.hingot, user)
tongs.hingot = null
if(tongs.hingot)
add_item(tongs.hingot, user)
tongs.hingot = null
else
add_item(tongs.ore, user)
tongs.ore = null

tongs.update_icon()
//Caustic Edit End
else
if(actively_smelting) // Prevents an exp gain exploit. - Foxtrot
to_chat(user, span_warning("\The [src] is currently smelting. Wait for it to finish, or douse it with water to retrieve items from it."))
Expand All @@ -69,7 +76,10 @@
var/obj/item/item_to_remove = contained_items[contained_items.len]
contained_items -= item_to_remove
item_to_remove.forceMove(tongs)
tongs.hingot = item_to_remove
if(istype(item_to_remove, /obj/item/ingot))
tongs.hingot = item_to_remove
else
tongs.ore = item_to_remove
if(user.mind && isliving(user) && tongs.hingot?.smeltresult) // Prevents an exploit with coal and runtimes with everything else
if(!istype(tongs.hingot, /obj/item/rogueore) && tongs.hingot?.smelted) // Burning items to ash won't level smelting.
var/mob/living/L = user
Expand Down
Loading
Loading