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
31 changes: 24 additions & 7 deletions code/modules/missions/dynamic/_dynamic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,31 @@
return ..()

/datum/mission/ruin/can_turn_in(atom/movable/item_to_check)
if(istype(required_item) && specific_item)
if(item_to_check == required_item)
return TRUE
else
if(istype(item_to_check, setpiece_item))
return TRUE
else if(istype(required_item) && istype(item_to_check, required_item.type))
// PENTEST FIX - START - If specific_item is TRUE, only accept the exact item instance
if(specific_item)
if(istype(required_item) && item_to_check == required_item)
return TRUE
// If specific_item is TRUE but required_item doesn't exist, no item can be turned in
return FALSE

// If specific_item is FALSE, accept any item of the matching type
if(istype(item_to_check, setpiece_item))
// If the setpiece item is a mob type, only accept dead mobs
if(isliving(item_to_check))
var/mob/living/living_check = item_to_check
if(living_check.stat != DEAD)
return FALSE
return TRUE
else if(istype(required_item) && istype(item_to_check, required_item.type))
// If the required item is a mob type, only accept dead mobs
if(isliving(item_to_check))
var/mob/living/living_check = item_to_check
if(living_check.stat != DEAD)
return FALSE
return TRUE

return FALSE
// PENTEST FIX - END

/datum/mission/ruin/get_tgui_info(list/items_on_pad = list())
. = ..()
Expand Down
7 changes: 4 additions & 3 deletions code/modules/missions/mission_board.dm
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,10 @@
for(var/atom/movable/item_on_pad as anything in pad.get_other_atoms())
if(item_on_pad == pad)
continue
if(mission.can_turn_in(item_on_pad))
mission.turn_in(item_on_pad)
return TRUE
if(!mission.can_turn_in(item_on_pad)) // PENTEST FIX - START
continue
mission.turn_in(item_on_pad)
return TRUE // PENTEST FIX - END

/// Return all items on pad
/obj/machinery/computer/mission/proc/recalc()
Expand Down
Loading