Revert "god why am i doing it this way instead of just looking at end changes"
This reverts commit aa6402427b.
This commit is contained in:
@@ -110,9 +110,3 @@ GLOBAL_LIST_EMPTY(living_heart_cache) //A list of all living hearts in existance
|
||||
#define BLOB_SPREAD_COST 4
|
||||
#define BLOB_ATTACK_REFUND 2 //blob refunds this much if it attacks and doesn't spread
|
||||
#define BLOB_REFLECTOR_COST 15
|
||||
|
||||
//Objectives-Ambitions Panel
|
||||
#define REQUEST_NEW_OBJECTIVE "new_objective"
|
||||
#define REQUEST_DEL_OBJECTIVE "del_objective"
|
||||
#define REQUEST_WIN_OBJECTIVE "win_objective"
|
||||
#define REQUEST_LOSE_OBJECTIVE "lose_objective"
|
||||
|
||||
@@ -454,45 +454,21 @@
|
||||
if(!length(antag_datum.objectives))
|
||||
output += "<li><i><b>NONE</b></i>"
|
||||
else
|
||||
for(var/uid in antag_datum.requested_objective_changes)
|
||||
var/list/objectives_info = antag_datum.requested_objective_changes[uid]
|
||||
var/obj_request = objectives_info["request"]
|
||||
switch(obj_request)
|
||||
if(REQUEST_NEW_OBJECTIVE)
|
||||
var/datum/objective/type_cast_objective = objectives_info["target"]
|
||||
var/objective_text = objectives_info["text"]
|
||||
output += "<li><B>Request #[uid]</B>: ADD [initial(type_cast_objective.name)] - [objective_text]"
|
||||
if(is_admin)
|
||||
output += " <a href='?src=[REF(antag_datum.owner)];req_obj_accept=[REF(antag_datum)];req_obj_id=[uid]'>Accept</a> <a href='?src=[REF(antag_datum.owner)];req_obj_edit=[REF(antag_datum)];req_obj_id=[uid]'>Edit</a> <a href='?src=[REF(antag_datum.owner)];req_obj_deny=[REF(antag_datum)];req_obj_id=[uid]'>Deny</a>"
|
||||
if(REQUEST_DEL_OBJECTIVE)
|
||||
var/datum/objective/objective_ref = locate(objectives_info["target"]) in antag_datum.objectives
|
||||
if(QDELETED(objective_ref))
|
||||
stack_trace("Objective request found with deleted reference. UID: [uid] | Antag: [antag_datum] | Mind: [src] | User: [usr]")
|
||||
antag_datum.remove_objective_change(uid)
|
||||
continue
|
||||
output += "<li><B>Request #[uid]</B>: DEL [objective_ref.name] - [objective_ref.explanation_text] - [objectives_info["text"]]"
|
||||
if(is_admin)
|
||||
output += " <a href='?src=[REF(antag_datum.owner)];req_obj_accept=[REF(antag_datum)];req_obj_id=[uid]'>Accept</a> <a href='?src=[REF(antag_datum.owner)];req_obj_deny=[REF(antag_datum)];req_obj_id=[uid]'>Deny</a>"
|
||||
if(REQUEST_WIN_OBJECTIVE, REQUEST_LOSE_OBJECTIVE)
|
||||
var/datum/objective/objective_ref = locate(objectives_info["target"]) in antag_datum.objectives
|
||||
if(QDELETED(objective_ref))
|
||||
stack_trace("Objective request found with deleted reference. UID: [uid] | Antag: [antag_datum] | Mind: [src] | User: [usr]")
|
||||
antag_datum.remove_objective_change(uid)
|
||||
continue
|
||||
output += "<li><B>Request #[uid]</B>: [obj_request == REQUEST_WIN_OBJECTIVE ? "WIN" : "LOSE"] [objective_ref.name] - [objective_ref.explanation_text] - [objectives_info["text"]]"
|
||||
if(is_admin)
|
||||
output += " <a href='?src=[REF(antag_datum.owner)];req_obj_accept=[REF(antag_datum)];req_obj_id=[uid]'>Accept</a> <a href='?src=[REF(antag_datum.owner)];req_obj_deny=[REF(antag_datum)];req_obj_id=[uid]'>Deny</a>"
|
||||
else
|
||||
stack_trace("Objective request found with no request index. UID: [uid] | Antag: [antag_datum] | Mind: [src] | User: [usr]")
|
||||
continue
|
||||
for(var/count in 1 to length(antag_datum.objectives))
|
||||
var/datum/objective/objective = antag_datum.objectives[count]
|
||||
output += "<li><B>[count]</B>: [objective.explanation_text]"
|
||||
if(self_mind)
|
||||
output += " <a href='?src=[REF(antag_datum.owner)];req_obj_delete=[REF(objective)]'>Request Remove</a> <a href='?src=[REF(antag_datum.owner)];req_obj_completed=[REF(objective)]'><font color=[objective.completed ? "green" : "red"]>[objective.completed ? "Request incompletion" : "Request completion"]</font></a><br>"
|
||||
if(is_admin)
|
||||
output += " <a href='?src=[REF(antag_datum.owner)];obj_edit=[REF(objective)]'>Edit</a> <a href='?src=[REF(antag_datum.owner)];obj_panel_delete=[REF(objective)]'>Remove</a> <a href='?src=[REF(antag_datum.owner)];obj_panel_complete_toggle=[REF(objective)]'><font color=[objective.completed ? "green" : "red"]>[objective.completed ? "Mark as incomplete" : "Mark as complete"]</font></a><br>"
|
||||
output += "</ul>"
|
||||
if(is_admin)
|
||||
output += "<a href='?src=[REF(antag_datum.owner)];obj_announce=1;ambition_panel=1'>Announce objectives</a><br>"
|
||||
output += "<br><i><b>Requested Objective Changes</b></i>:"
|
||||
output += "<br><i><b>Requested Objectives</b></i>:"
|
||||
if(self_mind)
|
||||
output += " <a href='?src=[REF(antag_datum.owner)];req_obj_add=1;target_antag=[REF(antag_datum)]'>Request objective</a>"
|
||||
output += "<ul>"
|
||||
if(!length(antag_datum.requested_objective_changes))
|
||||
if(!length(antag_datum.requested_objectives))
|
||||
output += "<li><i><b>NONE</b></i>"
|
||||
else
|
||||
for(var/uid in antag_datum.requested_objectives)
|
||||
@@ -517,7 +493,7 @@
|
||||
|
||||
|
||||
/mob/proc/edit_ambitions()
|
||||
set name = "Objectives and Ambitions"
|
||||
set name = "Ambitions"
|
||||
set category = "IC"
|
||||
set desc = "View and edit your character's ambitions."
|
||||
mind.do_edit_ambitions()
|
||||
@@ -529,28 +505,6 @@
|
||||
popup.open()
|
||||
|
||||
GLOBAL_VAR_INIT(requested_objective_uid, 0)
|
||||
|
||||
|
||||
GLOBAL_LIST(objective_player_choices)
|
||||
|
||||
/proc/populate_objective_player_choices()
|
||||
GLOB.objective_player_choices = list()
|
||||
var/list/allowed_types = list(
|
||||
/datum/objective/custom,
|
||||
/datum/objective/assassinate/once,
|
||||
/datum/objective/protect,
|
||||
/datum/objective/escape,
|
||||
/datum/objective/survive,
|
||||
/datum/objective/martyr,
|
||||
/datum/objective/steal,
|
||||
/datum/objective/download,
|
||||
)
|
||||
|
||||
for(var/t in allowed_types)
|
||||
var/datum/objective/type_cast = t
|
||||
GLOB.objective_player_choices[initial(type_cast.name)] = t
|
||||
|
||||
|
||||
GLOBAL_LIST(objective_choices)
|
||||
|
||||
/proc/populate_objective_choices()
|
||||
@@ -742,14 +696,14 @@ GLOBAL_LIST(objective_choices)
|
||||
to_chat(usr, "<span class='warning'>You must wait [round(OBJECTIVES_COOLDOWN_TIME / 600, 0.1)] minutes between requests.</span>")
|
||||
return
|
||||
var/datum/antagonist/target_antag = locate(href_list["target_antag"]) in antag_datums
|
||||
if(QDELETED(target_antag))
|
||||
if(!istype(target_antag))
|
||||
to_chat(usr, "<span class='warning'>No antagonist found for this objective.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
if(!GLOB.objective_player_choices)
|
||||
populate_objective_player_choices()
|
||||
var/choice = input("Select desired objective type:", "Objective type") as null|anything in GLOB.objective_player_choices
|
||||
var/selected_type = GLOB.objective_player_choices[choice]
|
||||
if(!GLOB.objective_choices)
|
||||
populate_objective_choices()
|
||||
var/choe = input("Select desired objective type:", "Objective type") as null|anything in GLOB.objective_choices
|
||||
var/selected_type = GLOB.objective_choices[choe]
|
||||
if(!selected_type)
|
||||
return
|
||||
var/new_objective = stripped_multiline_input(usr,\
|
||||
@@ -770,10 +724,11 @@ GLOBAL_LIST(objective_choices)
|
||||
return
|
||||
COOLDOWN_START(src, COOLDOWN_OBJECTIVES, OBJECTIVES_COOLDOWN_TIME)
|
||||
var/uid = "[GLOB.requested_objective_uid++]"
|
||||
target_antag.add_objective_change(uid, list("request" = REQUEST_NEW_OBJECTIVE, "target" = selected_type, "text" = new_objective))
|
||||
log_admin("Objectives request [uid] - [key_name(usr)] has requested a [choice] objective: [new_objective]")
|
||||
target_antag.notify_admins_of_request("<span class='adminhelp'>[ADMIN_TPMONTY(usr)] has requested a [choice] objective. (<a href='?_src_=holder;[HrefToken(TRUE)];ObjectiveRequest=[REF(src)]'>RPLY</a>)</span>")
|
||||
to_chat(usr
|
||||
LAZYADD(target_antag.requested_objectives, uid)
|
||||
target_antag.requested_objectives[uid] = list("type" = selected_type, "text" = new_objective)
|
||||
log_admin("[key_name(usr)] has requested a [choe] objective: [new_objective]")
|
||||
message_admins("[ADMIN_TPMONTY(usr)] has requested a [choe] objective. (<a href='?_src_=holder;[HrefToken(TRUE)];ObjectiveRequest=[REF(src)]'>RPLY</a>)")
|
||||
to_chat(usr, "<span class='notice'>The admins have been notified of your request!</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
|
||||
@@ -783,18 +738,12 @@ GLOBAL_LIST(objective_choices)
|
||||
if(COOLDOWN_CHECK(src, COOLDOWN_OBJECTIVES))
|
||||
to_chat(usr, "<span class='warning'>You must wait [round(OBJECTIVES_COOLDOWN_TIME / 600, 0.1)] minutes between requests.</span>")
|
||||
return
|
||||
var/datum/antagonist/target_antag = locate(href_list["target_antag"]) in antag_datums
|
||||
if(QDELETED(target_antag))
|
||||
to_chat(usr, "<span class='warning'>No antagonist found for this objective.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
var/objective_reference = href_list["req_obj_delete"]
|
||||
var/datum/objective/objective_to_delete = locate(objective_reference) in target_antag.objectives
|
||||
var/datum/objective/objective_to_delete = locate(href_list["req_obj_delete"])
|
||||
if(!istype(objective_to_delete) || QDELETED(objective_to_delete))
|
||||
to_chat(usr, "<span class='warning'>No objective found. Perhaps it was already deleted?</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
var/justification = stripped_multiline_input(usr,
|
||||
var/justifation = stripped_multiline_input(usr,
|
||||
"Justify your request for a deleting this objective to the admins.\
|
||||
There's a 10 minutes cooldown between requests, so try to think it through before sending it. Cancelling does not trigger the cooldown.",
|
||||
"Objective Deletion", max_length = MAX_MESSAGE_LEN)
|
||||
@@ -805,21 +754,13 @@ GLOBAL_LIST(objective_choices)
|
||||
if(COOLDOWN_CHECK(src, COOLDOWN_OBJECTIVES))
|
||||
to_chat(usr, "<span class='warning'>You must wait [round(OBJECTIVES_COOLDOWN_TIME / 600, 0.1)] minutes between requests.</span>")
|
||||
return
|
||||
if(QDELETED(objective_to_delete) || QDELETED(target_antag))
|
||||
if(QDELETED(objective_to_delete))
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
for(var/index in target_antag.requested_objective_changes)
|
||||
var/list/change_request = target_antag.requested_objective_changes[index]
|
||||
if(change_request["target"] != objective_reference)
|
||||
continue
|
||||
to_chat(usr, "<span class='warning'>There is already a change request tied to this objective waiting to be processed. Ahelp or wait for it to be resolved before adding a new one.</span>")
|
||||
return
|
||||
COOLDOWN_START(src, COOLDOWN_OBJECTIVES, OBJECTIVES_COOLDOWN_TIME)
|
||||
var/uid = "[GLOB.requested_objective_uid++]"
|
||||
target_antag.add_objective_change(uid, list("request" = REQUEST_DEL_OBJECTIVE, "target" = objective_reference, "text" = justification))
|
||||
log_admin("Objectives request [uid] - [key_name(usr)] has requested the deletion of the following objective: [objective_to_delete.explanation_text].\nTheir justification is as follows: [justification]")
|
||||
target_antag.notify_admins_of_request("<span class='adminhelp'>[ADMIN_TPMONTY(usr)] has requested the deletion of an objective: (<a href='?_src_=holder;[HrefToken(TRUE)];ObjectiveRequest=[REF(src)]'>RPLY</a>)</span>")
|
||||
to_chat(usr, "<span class='boldnotice'>The admins have been notified of your request!</span>")
|
||||
log_admin("[key_name(usr)] has requested the deletion of the following objective: [objective_to_delete.explanation_text].\nTheir justifation is as follows: [justifation]")
|
||||
message_admins("[ADMIN_TPMONTY(usr)] has requested the deletion of the following objective: [objective_to_delete.explanation_text].\nTheir justifation is as follows: [justifation]\n(<a href='?_src_=holder;[HrefToken(TRUE)];ObjectiveRequest=[REF(src)]'>RPLY</a>)")
|
||||
to_chat(usr, "<span class='notice'>The admins have been notified of your request!</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
else if (href_list["req_obj_completed"])
|
||||
@@ -828,43 +769,29 @@ GLOBAL_LIST(objective_choices)
|
||||
if(COOLDOWN_CHECK(src, COOLDOWN_OBJECTIVES))
|
||||
to_chat(usr, "<span class='warning'>You must wait [round(OBJECTIVES_COOLDOWN_TIME / 600, 0.1)] minutes between requests.</span>")
|
||||
return
|
||||
var/datum/antagonist/target_antag = locate(href_list["target_antag"]) in antag_datums
|
||||
if(QDELETED(target_antag))
|
||||
to_chat(usr, "<span class='warning'>No antagonist found for this objective.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
var/objective_reference = href_list["req_obj_completed"]
|
||||
var/datum/objective/objective_to_complete = locate(objective_reference) in target_antag.objectives
|
||||
var/datum/objective/objective_to_complete = locate(href_list["req_obj_completed"])
|
||||
if(!istype(objective_to_complete) || QDELETED(objective_to_complete))
|
||||
to_chat(usr, "<span class='warning'>No objective found. Perhaps it was already deleted?</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
var/justification = stripped_multiline_input(usr,
|
||||
"Justify to the admins your request to mark this objective as [objective_to_complete.completed ? "incomplete" : "completed"].\
|
||||
var/justifation = stripped_multiline_input(usr,
|
||||
"Justify your request for the [objective_to_complete.completed ? "completion" : "incompletion"] of this objective to the admins.\
|
||||
There's a 10 minutes cooldown between requests, so try to think it through before sending it. Cancelling does not trigger the cooldown.",
|
||||
"Objective [objective_to_complete.completed ? "Incompletion" : "Completion"]", max_length = MAX_MESSAGE_LEN)
|
||||
if(isnull(justification))
|
||||
"Objective [objective_to_complete.completed ? "Completion" : "Incompletion"]", max_length = MAX_MESSAGE_LEN)
|
||||
if(isnull(justifation))
|
||||
return
|
||||
if(usr != current)
|
||||
return
|
||||
if(COOLDOWN_CHECK(src, COOLDOWN_OBJECTIVES))
|
||||
to_chat(usr, "<span class='warning'>You must wait [round(OBJECTIVES_COOLDOWN_TIME / 600, 0.1)] minutes between requests.</span>")
|
||||
return
|
||||
if(QDELETED(objective_to_complete) || QDELETED(target_antag))
|
||||
if(QDELETED(objective_to_complete))
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
for(var/index in target_antag.requested_objective_changes)
|
||||
var/list/change_request = target_antag.requested_objective_changes[index]
|
||||
if(change_request["target"] != objective_reference)
|
||||
continue
|
||||
to_chat(usr, "<span class='warning'>There is already a change request tied to this objective waiting to be processed. Ahelp or wait for it to be resolved before adding a new one.</span>")
|
||||
return
|
||||
COOLDOWN_START(src, COOLDOWN_OBJECTIVES, OBJECTIVES_COOLDOWN_TIME)
|
||||
var/uid = "[GLOB.requested_objective_uid++]"
|
||||
target_antag.add_objective_change(uid, list("request" = (objective_to_complete.completed ? REQUEST_LOSE_OBJECTIVE : REQUEST_WIN_OBJECTIVE), "target" = objective_reference, "text" = justification))
|
||||
log_admin("Objectives request [uid] - [key_name(usr)] has requested the [objective_to_complete.completed ? "incompletion" : "completion"] of the following objective: [objective_to_complete.explanation_text].\nTheir justification is as follows: [justification]")
|
||||
target_antag.notify_admins_of_request("<span class='adminhelp'>[ADMIN_TPMONTY(usr)] has requested the [objective_to_complete.completed ? "incompletion" : "completion"] of an objective: (<a href='?_src_=holder;[HrefToken(TRUE)];ObjectiveRequest=[REF(src)]'>RPLY</a>)</span>")
|
||||
to_chat(usr, "<span class='boldnotice'>The admins have been notified of your request!</span>")
|
||||
log_admin("[key_name(usr)] has requested the [objective_to_complete.completed ? "completion" : "incompletion"] of the following objective: [objective_to_complete.explanation_text].\nTheir justifation is as follows: [justifation]")
|
||||
message_admins("[ADMIN_TPMONTY(usr)] has requested the [objective_to_complete.completed ? "completion" : "incompletion"] of the following objective: [objective_to_complete.explanation_text].\nTheir justifation is as follows: [justifation]\n(<a href='?_src_=holder;[HrefToken(TRUE)];ObjectiveRequest=[REF(src)]'>RPLY</a>)")
|
||||
to_chat(usr, "<span class='notice'>The admins have been notified of your request!</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
if(!check_rights(R_ADMIN))
|
||||
@@ -881,7 +808,7 @@ GLOBAL_LIST(objective_choices)
|
||||
return
|
||||
|
||||
else if (href_list["req_obj_edit"])
|
||||
var/datum/antagonist/antag_datum = locate(href_list["req_obj_edit"]) in antag_datums
|
||||
var/datum/antagonist/antag_datum = locate(href_list["req_obj_edit"])
|
||||
if(QDELETED(antag_datum))
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
@@ -891,15 +818,12 @@ GLOBAL_LIST(objective_choices)
|
||||
to_chat(usr, "<span class='warning'>Invalid antag reference.</span>")
|
||||
return
|
||||
var/uid = href_list["req_obj_id"]
|
||||
var/list/requested_obj_change = LAZYACCESS(antag_datum.requested_objective_changes, uid)
|
||||
if(!requested_obj_change)
|
||||
var/list/requested_objective = LAZYACCESS(antag_datum.requested_objectives, uid)
|
||||
if(!requested_objective)
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective reference.</span>")
|
||||
return
|
||||
if(requested_obj_change["request"] != REQUEST_NEW_OBJECTIVE)
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>This is not an editable request. How did you even got here?</span>")
|
||||
return
|
||||
|
||||
switch(alert(usr, "Do you want to edit the requested objective type or text?", "Edit requested objective", "Type", "Text", "Cancel"))
|
||||
if("Type")
|
||||
if(!check_rights(R_ADMIN))
|
||||
@@ -908,11 +832,11 @@ GLOBAL_LIST(objective_choices)
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
if(!LAZYACCESS(antag_datum.requested_objective_changes, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective change reference.</span>")
|
||||
if(!LAZYACCESS(antag_datum.requested_objectives, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective reference.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
var/datum/objective/type_cast = requested_obj_change["target"]
|
||||
var/datum/objective/type_cast = requested_objective["type"]
|
||||
var/selected_type = input("Select new requested objective type:", "Requested Objective type", initial(type_cast.name)) as null|anything in GLOB.objective_choices
|
||||
selected_type = GLOB.objective_choices[selected_type]
|
||||
if(!selected_type)
|
||||
@@ -923,13 +847,13 @@ GLOBAL_LIST(objective_choices)
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
if(!LAZYACCESS(antag_datum.requested_objective_changes, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective change reference.</span>")
|
||||
if(!LAZYACCESS(antag_datum.requested_objectives, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective reference.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
log_admin("[key_name(usr)] has edited the requested objective type for [current], of UID [uid], from [requested_obj_change["target"]] to [selected_type]")
|
||||
message_admins("[key_name_admin(usr)] has edited the requested objective type for [current], of UID [uid], from [requested_obj_change["target"]] to [selected_type]")
|
||||
requested_obj_change["target"] = selected_type
|
||||
log_admin("[key_name(usr)] has edited the requested objective type for [current], of UID [uid], from [requested_objective["type"]] to [selected_type]")
|
||||
message_admins("[key_name_admin(usr)] has edited the requested objective type for [current], of UID [uid], from [requested_objective["type"]] to [selected_type]")
|
||||
requested_objective["type"] = selected_type
|
||||
if("Text")
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
@@ -937,11 +861,11 @@ GLOBAL_LIST(objective_choices)
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
if(!LAZYACCESS(antag_datum.requested_objective_changes, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective change reference.</span>")
|
||||
if(!LAZYACCESS(antag_datum.requested_objectives, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective reference.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
var/new_text = stripped_multiline_input(usr, "Input new requested objective text", "Requested Objective Text", requested_obj_change["text"], MAX_MESSAGE_LEN)
|
||||
var/new_text = stripped_multiline_input(usr, "Input new requested objective text", "Requested Objective Text", requested_objective["text"], MAX_MESSAGE_LEN)
|
||||
if (isnull(new_text))
|
||||
return
|
||||
if(!check_rights(R_ADMIN))
|
||||
@@ -950,18 +874,18 @@ GLOBAL_LIST(objective_choices)
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
if(!LAZYACCESS(antag_datum.requested_objective_changes, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective change reference.</span>")
|
||||
if(!LAZYACCESS(antag_datum.requested_objectives, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective reference.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
log_admin("[key_name(usr)] has edited the requested objective text for [current], of UID [uid], from [requested_obj_change["text"]] to [new_text]")
|
||||
message_admins("[key_name_admin(usr)] has edited the requested objective text for [current], of UID [uid], from [requested_obj_change["text"]] to [new_text]")
|
||||
requested_obj_change["text"] = new_text
|
||||
log_admin("[key_name(usr)] has edited the requested objective text for [current], of UID [uid], from [requested_objective["text"]] to [new_text]")
|
||||
message_admins("[key_name_admin(usr)] has edited the requested objective text for [current], of UID [uid], from [requested_objective["text"]] to [new_text]")
|
||||
requested_objective["text"] = new_text
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
|
||||
else if (href_list["req_obj_accept"])
|
||||
var/datum/antagonist/antag_datum = locate(href_list["req_obj_accept"]) in antag_datums
|
||||
var/datum/antagonist/antag_datum = locate(href_list["req_obj_accept"])
|
||||
if(QDELETED(antag_datum))
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
@@ -971,29 +895,12 @@ GLOBAL_LIST(objective_choices)
|
||||
to_chat(usr, "<span class='warning'>Invalid antag reference.</span>")
|
||||
return
|
||||
var/uid = href_list["req_obj_id"]
|
||||
var/list/requested_obj_change = LAZYACCESS(antag_datum.requested_objective_changes, uid)
|
||||
if(!requested_obj_change)
|
||||
var/list/requested_objective = LAZYACCESS(antag_datum.requested_objectives, uid)
|
||||
if(!requested_objective)
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective reference.</span>")
|
||||
return
|
||||
|
||||
var/datum/objective/request_target
|
||||
var/request_type = requested_obj_change["request"]
|
||||
switch(request_type)
|
||||
if(REQUEST_NEW_OBJECTIVE)
|
||||
request_target = requested_obj_change["target"]
|
||||
if(!ispath(request_target, /datum/objective))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective target path.</span>")
|
||||
return
|
||||
if(REQUEST_DEL_OBJECTIVE, REQUEST_WIN_OBJECTIVE, REQUEST_LOSE_OBJECTIVE)
|
||||
request_target = locate(requested_obj_change["target"]) in antag_datum.objectives
|
||||
if(QDELETED(request_target))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective target reference.</span>")
|
||||
return
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Invalid request type.</span>")
|
||||
return
|
||||
if(alert(usr, "Are you sure you want to approve this objective change?", "Approve objective change", "Yes", "No") != "Yes")
|
||||
if(alert(usr, "Are you sure you want to approve this objective?", "Approve objective", "Yes", "No") != "Yes")
|
||||
return
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
@@ -1001,53 +908,27 @@ GLOBAL_LIST(objective_choices)
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
if(!LAZYACCESS(antag_datum.requested_objective_changes, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective change reference.</span>")
|
||||
if(!LAZYACCESS(antag_datum.requested_objectives, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective reference.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
switch(request_type) //Last checks
|
||||
if(REQUEST_NEW_OBJECTIVE)
|
||||
if(!ispath(request_target, /datum/objective))
|
||||
stack_trace("Invalid target on objective change request: [request_target]")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
if(REQUEST_DEL_OBJECTIVE, REQUEST_WIN_OBJECTIVE, REQUEST_LOSE_OBJECTIVE)
|
||||
if(QDELETED(request_target))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective target reference.</span>")
|
||||
return
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Invalid request type.</span>")
|
||||
return
|
||||
antag_datum.remove_objective_change(uid)
|
||||
switch(request_type) //All is clear, let get things done.
|
||||
if(REQUEST_NEW_OBJECTIVE)
|
||||
request_target = new request_target()
|
||||
request_target.owner = src
|
||||
if(istype(request_target, /datum/objective/custom))
|
||||
request_target.explanation_text = requested_obj_change["text"]
|
||||
else
|
||||
request_target.admin_edit(usr)
|
||||
antag_datum.objectives += request_target
|
||||
message_admins("[key_name_admin(usr)] approved a requested objective from [current]: [request_target.explanation_text]")
|
||||
log_admin("[key_name(usr)] approved a requested objective from [current]: [request_target.explanation_text]")
|
||||
if(REQUEST_DEL_OBJECTIVE)
|
||||
message_admins("[key_name_admin(usr)] approved the request to delete an objective from [current]: [request_target.explanation_text]")
|
||||
log_admin("[key_name(usr)] approved the request to delete an objective from [current]: [request_target.explanation_text]")
|
||||
qdel(request_target)
|
||||
if(REQUEST_WIN_OBJECTIVE)
|
||||
message_admins("[key_name_admin(usr)] approved the victory request for an objective from [current]: [request_target.explanation_text]")
|
||||
log_admin("[key_name(usr)] approved the victory request for an objective from [current]: [request_target.explanation_text]")
|
||||
request_target.completed = TRUE
|
||||
if(REQUEST_LOSE_OBJECTIVE)
|
||||
message_admins("[key_name_admin(usr)] approved the defeat request for an objective from [current]: [request_target.explanation_text]")
|
||||
log_admin("[key_name(usr)] approved the defeat request for an objective from [current]: [request_target.explanation_text]")
|
||||
request_target.completed = FALSE
|
||||
to_chat(current, "<span class='boldnotice'>Your objective change request has been approved.</span>")
|
||||
var/objective_path = requested_objective["type"]
|
||||
var/datum/objective/new_objective = new objective_path
|
||||
new_objective.owner = src
|
||||
if(istype(new_objective, /datum/objective/custom))
|
||||
new_objective.explanation_text = requested_objective["text"]
|
||||
else
|
||||
new_objective.admin_edit(usr)
|
||||
antag_datum.objectives += new_objective
|
||||
LAZYREMOVE(antag_datum.requested_objectives, uid)
|
||||
message_admins("[key_name_admin(usr)] approved a requested objective from [current]: [new_objective.explanation_text]")
|
||||
log_admin("[key_name(usr)] approved a requested objective from [current]: [new_objective.explanation_text]")
|
||||
to_chat(current, "<span class='boldnotice'>Your objective request has been approved.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
|
||||
else if (href_list["req_obj_deny"])
|
||||
var/datum/antagonist/antag_datum = locate(href_list["req_obj_deny"]) in antag_datums
|
||||
var/datum/antagonist/antag_datum = locate(href_list["req_obj_deny"])
|
||||
if(QDELETED(antag_datum))
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
@@ -1057,13 +938,13 @@ GLOBAL_LIST(objective_choices)
|
||||
to_chat(usr, "<span class='warning'>Invalid antag reference.</span>")
|
||||
return
|
||||
var/uid = href_list["req_obj_id"]
|
||||
var/list/requested_obj_change = LAZYACCESS(antag_datum.requested_objective_changes, uid)
|
||||
if(!requested_obj_change)
|
||||
var/list/requested_objective = LAZYACCESS(antag_datum.requested_objectives, uid)
|
||||
if(!requested_objective)
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective change reference.</span>")
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective reference.</span>")
|
||||
return
|
||||
var/justification = stripped_multiline_input(usr, "Justify why you are denying this objective request change.", "Deny", memory, MAX_MESSAGE_LEN)
|
||||
if(isnull(justification))
|
||||
var/justifation = stripped_multiline_input(usr, "Justify why you are denying this objective request.", "Deny", memory, MAX_MESSAGE_LEN)
|
||||
if(isnull(justifation))
|
||||
return
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
@@ -1071,31 +952,22 @@ GLOBAL_LIST(objective_choices)
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
if(!LAZYACCESS(antag_datum.requested_objective_changes, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective change reference.</span>")
|
||||
if(!LAZYACCESS(antag_datum.requested_objectives, uid))
|
||||
to_chat(usr, "<span class='warning'>Invalid requested objective reference.</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
var/datum/objective/type_cast = requested_obj_change["target"]
|
||||
var/datum/objective/type_cast = requested_objective["type"]
|
||||
var/objective_name = initial(type_cast.name)
|
||||
message_admins("[key_name_admin(usr)] denied a requested [objective_name] objective from [current]: [requested_obj_change["text"]]")
|
||||
log_admin("[key_name(usr)] denied a requested [objective_name] objective from [current]: [requested_obj_change["text"]]")
|
||||
to_chat(current, "<span class='boldwarning'>Your objective request has been denied for the following reason: [justification]</span>")
|
||||
antag_datum.remove_objective_change(uid)
|
||||
message_admins("[key_name_admin(usr)] denied a requested [objective_name] objective from [current]: [requested_objective["text"]]")
|
||||
log_admin("[key_name(usr)] denied a requested [objective_name] objective from [current]: [requested_objective["text"]]")
|
||||
to_chat(current, "<span class='boldwarning'>Your objective request has been denied for the following reason: [justifation]</span>")
|
||||
LAZYREMOVE(antag_datum.requested_objectives, uid)
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
|
||||
else if (href_list["obj_panel_complete_toggle"])
|
||||
var/datum/antagonist/antag_datum = locate(href_list["target_antag"]) in antag_datums
|
||||
if(QDELETED(antag_datum))
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
return
|
||||
if(antag_datum.owner != src)
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>Invalid antag reference.</span>")
|
||||
return
|
||||
var/datum/objective/objective_to_toggle = locate(href_list["obj_panel_complete_toggle"]) in antag_datum.objectives
|
||||
if(QDELETED(objective_to_toggle))
|
||||
var/datum/objective/objective_to_toggle = locate(href_list["obj_panel_complete_toggle"])
|
||||
if(!istype(objective_to_toggle) || QDELETED(objective_to_toggle))
|
||||
to_chat(usr, "<span class='warning'>No objective found. Perhaps it was already deleted?</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
@@ -1112,17 +984,8 @@ GLOBAL_LIST(objective_choices)
|
||||
return
|
||||
|
||||
else if (href_list["obj_panel_delete"])
|
||||
var/datum/antagonist/antag_datum = locate(href_list["target_antag"]) in antag_datums
|
||||
if(QDELETED(antag_datum))
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
return
|
||||
if(antag_datum.owner != src)
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>Invalid antag reference.</span>")
|
||||
return
|
||||
var/datum/objective/objective_to_delete = locate(href_list["obj_panel_delete"]) in antag_datum.objectives
|
||||
if(QDELETED(objective_to_delete))
|
||||
var/datum/objective/objective_to_delete = locate(href_list["obj_panel_delete"])
|
||||
if(!istype(objective_to_delete) || QDELETED(objective_to_delete))
|
||||
to_chat(usr, "<span class='warning'>No objective found. Perhaps it was already deleted?</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
@@ -1143,17 +1006,8 @@ GLOBAL_LIST(objective_choices)
|
||||
return
|
||||
|
||||
else if (href_list["obj_panel_edit"])
|
||||
var/datum/antagonist/antag_datum = locate(href_list["target_antag"]) in antag_datums
|
||||
if(QDELETED(antag_datum))
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>No antag found.</span>")
|
||||
return
|
||||
if(antag_datum.owner != src)
|
||||
do_edit_objectives_ambitions()
|
||||
to_chat(usr, "<span class='warning'>Invalid antag reference.</span>")
|
||||
return
|
||||
var/datum/objective/objective_to_edit = locate(href_list["obj_panel_edit"]) in antag_datum.objectives
|
||||
if(QDELETED(objective_to_edit))
|
||||
var/datum/objective/objective_to_edit = locate(href_list["obj_panel_edit"])
|
||||
if(!istype(objective_to_edit) || QDELETED(objective_to_edit))
|
||||
to_chat(usr, "<span class='warning'>No objective found. Perhaps it was already deleted?</span>")
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
@@ -1365,7 +1219,7 @@ GLOBAL_LIST(objective_choices)
|
||||
if(href_list["ambition_panel"])
|
||||
do_edit_objectives_ambitions()
|
||||
return
|
||||
//ambition port
|
||||
//ambition port end
|
||||
|
||||
|
||||
//Something in here might have changed your mob
|
||||
|
||||
@@ -27,7 +27,7 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
var/threat = 0 // Amount of threat this antag poses, for dynamic mode
|
||||
//ambition port start
|
||||
/// Lazy list for antagonists to request the admins objectives.
|
||||
var/list/requested_objective_changes
|
||||
var/list/requested_objectives
|
||||
//ambition port end
|
||||
|
||||
var/show_to_ghosts = FALSE // Should this antagonist be shown as antag to ghosts? Shouldn't be used for stealthy antagonists like traitors
|
||||
@@ -302,44 +302,3 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
else
|
||||
return
|
||||
..()
|
||||
|
||||
///Sends a message to the admins notifying them of a change request. Is a bit more insistent if there's pending requests.
|
||||
/datum/antagonist/proc/notify_admins_of_request(notification_message)
|
||||
if(LAZYLEN(requested_objective_changes) > 1) //Not the first unprocessed request, be a bit more insistent.
|
||||
for(var/a in GLOB.admins)
|
||||
var/client/admin_client = a
|
||||
if(admin_client.prefs.toggles & SOUND_ADMINHELP)
|
||||
SEND_SOUND(admin_client, sound('sound/effects/adminhelp.ogg'))
|
||||
window_flash(admin_client)
|
||||
message_admins(notification_message)
|
||||
|
||||
|
||||
///Clears change requests from deleted objectives to avoid broken references.
|
||||
/datum/antagonist/proc/clean_request_from_del_objective(datum/objective/source, force)
|
||||
var/objective_reference = REF(source)
|
||||
for(var/uid in requested_objective_changes)
|
||||
var/list/change_request = requested_objective_changes[uid]
|
||||
if(change_request["target"] != objective_reference)
|
||||
continue
|
||||
LAZYREMOVE(requested_objective_changes, uid)
|
||||
|
||||
|
||||
/datum/antagonist/proc/add_objective_change(uid, list/additions)
|
||||
LAZYADD(requested_objective_changes, uid)
|
||||
var/datum/objective/request_target = additions["target"]
|
||||
if(!ispath(request_target))
|
||||
request_target = locate(request_target) in objectives
|
||||
if(istype(request_target))
|
||||
RegisterSignal(request_target, COMSIG_PARENT_QDELETING, .proc/clean_request_from_del_objective)
|
||||
requested_objective_changes[uid] = additions
|
||||
|
||||
|
||||
/datum/antagonist/proc/remove_objective_change(uid)
|
||||
if(!LAZYACCESS(requested_objective_changes, uid))
|
||||
return
|
||||
var/datum/objective/request_target = requested_objective_changes[uid]["target"]
|
||||
if(!ispath(request_target))
|
||||
request_target = locate(request_target) in objectives
|
||||
if(istype(request_target))
|
||||
UnregisterSignal(request_target, COMSIG_PARENT_QDELETING)
|
||||
LAZYREMOVE(requested_objective_changes, uid)
|
||||
|
||||
Reference in New Issue
Block a user