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
14 changes: 5 additions & 9 deletions code/modules/missions/dynamic/_dynamic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -105,13 +105,9 @@
can_turn_in = TRUE
break

var/location_x
var/location_y
var/location_name
var/datum/overmap/mission_location = mission_local_weakref.resolve()
if(mission_location)
location_x = mission_location.x
location_y = mission_location.y
location_name = mission_location.name
update_mission_info(mission_location)

. += list(
"ref" = REF(src),
Expand All @@ -120,9 +116,9 @@
"desc" = src.desc,
"reward" = src.reward_flavortext(),
"faction" = SSfactions.faction_name(src.faction),
"location" = "X[location_x]/Y[location_y]: [location_name]",
"x" = location_x,
"y" = location_y,
"location" = "X[local_x]/Y[local_y]: [local_name]",
"x" = local_x,
"y" = local_y,
"timeIssued" = time2text(station_time() - time_issued, "mm"),
"duration" = src.duration,
"remaining" = time_remaining,
Expand Down
10 changes: 2 additions & 8 deletions code/modules/missions/dynamic/signaled.dm
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
/datum/mission/ruin/signaled
var/registered_type
var/atom/movable/registered_item
/// What signal will spawn the required item
var/mission_main_signal

/datum/mission/ruin/signaled/spawn_main_piece(obj/effect/landmark/mission_poi/mission_poi)
registered_item = mission_poi.use_poi(registered_type, src)
var/atom/movable/registered_item = mission_poi.use_poi(registered_type, src)
if(isatom(registered_item))
registered_item = set_bound(registered_item, null, FALSE, TRUE)
set_bound(registered_item, null, FALSE, TRUE)
RegisterSignal(registered_item, mission_main_signal, PROC_REF(on_signaled))
else
stack_trace("[src] did not generate a required item.")
Expand All @@ -21,11 +20,6 @@
UnregisterSignal(registered_item, mission_main_signal)
remove_bound(registered_item)

/datum/mission/ruin/signaled/remove_bound(atom/movable/bound)
if(bound == setpiece_item)
setpiece_item = null
return ..()

/obj/effect/landmark/mission_poi/main/drill

/datum/mission/ruin/signaled/drill
Expand Down
27 changes: 23 additions & 4 deletions code/modules/missions/mission.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@

var/location_specific = FALSE
/// The location the mission is relient on, often pulling varibles from it or will delete itself if the mission_location is deleted. Passed in New().
var/datum/overmap/mission_location
var/datum/weakref/mission_local_weakref
var/local_name
var/local_x
var/local_y
/// If location specific, if it run times when the planet has no pois
var/requires_poi = TRUE

Expand Down Expand Up @@ -59,7 +62,9 @@
mission_index = _mission_index

if(location_specific)
mission_location = _location
var/datum/overmap/mission_location = _location
mission_local_weakref = WEAKREF(mission_location)
update_mission_info(mission_location)
RegisterSignal(mission_location, COMSIG_PARENT_QDELETING, PROC_REF(on_vital_delete))
RegisterSignal(mission_location, COMSIG_OVERMAP_LOADED, PROC_REF(on_planet_load))
if(active)
Expand All @@ -74,7 +79,9 @@
/datum/mission/Destroy()
//UnregisterSignal(source_outpost, COMSIG_PARENT_QDELETING)
if(location_specific)
UnregisterSignal(mission_location, COMSIG_PARENT_QDELETING, COMSIG_OVERMAP_LOADED)
var/datum/overmap/mission_location = mission_local_weakref.resolve()
if(mission_location)
UnregisterSignal(mission_location, COMSIG_PARENT_QDELETING, COMSIG_OVERMAP_LOADED)
if(active)
SSmissions.active_ruin_missions -= src
else
Expand Down Expand Up @@ -107,6 +114,16 @@
mission_reward = pick(mission_reward)
return

/datum/mission/proc/update_mission_info(datum/overmap/mission_location)
if(!istype(mission_location))
local_name = "missing location"
local_x = "???"
local_y = "???"
return
local_name = mission_location.name
local_x = mission_location.x
local_y = mission_location.y

/datum/mission/proc/regex_mission_text()
name = mission_regexs(name)
desc = mission_regexs(desc)
Expand Down Expand Up @@ -139,7 +156,7 @@
SIGNAL_HANDLER

// Status of mission is handled by items spawned in mission after this
UnregisterSignal(mission_location, list(COMSIG_PARENT_QDELETING, COMSIG_OVERMAP_LOADED))
UnregisterSignal(planet, list(COMSIG_PARENT_QDELETING, COMSIG_OVERMAP_LOADED))
if(!active)
qdel(src)
return
Expand Down Expand Up @@ -172,6 +189,7 @@
do_sparks(3, FALSE, get_turf(item_to_turn_in))
SSmissions.active_ruin_missions -= src
active = FALSE
var/datum/overmap/mission_location = mission_local_weakref.resolve()
if(istype(mission_location, /datum/overmap/dynamic))
var/datum/overmap/dynamic/dynamic_location = mission_location
dynamic_location.start_countdown(30 SECONDS)
Expand Down Expand Up @@ -252,6 +270,7 @@
/datum/mission/proc/bound_z_change(atom/movable/bound, new_virtual_z, previous_virtual_z)
SIGNAL_HANDLER

var/datum/overmap/mission_location = mission_local_weakref.resolve()
if(istype(mission_location, /datum/overmap/dynamic))
var/datum/overmap/dynamic/dynamic_location = mission_location
if(!dynamic_location.mapzone.is_in_bounds(bound))
Expand Down
2 changes: 1 addition & 1 deletion code/modules/missions/outpost/_outpost.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

/datum/mission/outpost/New(_outpost)
source_outpost = _outpost
RegisterSignal(mission_location, COMSIG_PARENT_QDELETING, PROC_REF(on_vital_delete))
RegisterSignal(source_outpost, COMSIG_PARENT_QDELETING, PROC_REF(on_vital_delete))
return ..()

/datum/mission/outpost/Destroy()
Expand Down
Loading