diff --git a/code/controllers/subsystem/tickets/mentor_tickets.dm b/code/controllers/subsystem/tickets/mentor_tickets.dm
new file mode 100644
index 00000000000..19ce7d32d96
--- /dev/null
+++ b/code/controllers/subsystem/tickets/mentor_tickets.dm
@@ -0,0 +1,15 @@
+GLOBAL_REAL(SSmentor_tickets, /datum/controller/subsystem/tickets/mentor_tickets)
+
+/datum/controller/subsystem/tickets/mentor_tickets/New()
+ NEW_SS_GLOBAL(SSmentor_tickets);
+ PreInit();
+
+/datum/controller/subsystem/tickets/mentor_tickets
+ name = "Mentor Tickets"
+ ticket_system_name = "Mentor Tickets"
+ ticket_name = "Mentor Ticket"
+ span_text = ""
+
+
+/datum/controller/subsystem/tickets/mentor_tickets/message_staf(var/msg)
+ message_mentorTicket(msg)
diff --git a/code/controllers/subsystem/tickets.dm b/code/controllers/subsystem/tickets/tickets.dm
similarity index 59%
rename from code/controllers/subsystem/tickets.dm
rename to code/controllers/subsystem/tickets/tickets.dm
index b8b1f8410a0..fdea7fe49fa 100644
--- a/code/controllers/subsystem/tickets.dm
+++ b/code/controllers/subsystem/tickets/tickets.dm
@@ -1,23 +1,27 @@
//Defines
//Deciseconds until ticket becomes stale if unanswered. Alerts admins.
-#define ADMIN_TICKET_TIMEOUT 6000 // 10 minutes
+#define TICKET_TIMEOUT 6000 // 10 minutes
//Decisecions before the user is allowed to open another ticket while their existing one is open.
-#define ADMIN_TICKET_DUPLICATE_COOLDOWN 3000 // 5 minutes
+#define TICKET_DUPLICATE_COOLDOWN 3000 // 5 minutes
//Status defines
-#define ADMIN_TICKET_OPEN 1
-#define ADMIN_TICKET_CLOSED 2
-#define ADMIN_TICKET_RESOLVED 3
-#define ADMIN_TICKET_STALE 4
+#define TICKET_OPEN 1
+#define TICKET_CLOSED 2
+#define TICKET_RESOLVED 3
+#define TICKET_STALE 4
SUBSYSTEM_DEF(tickets)
- name = "Tickets"
+ name = "Admin Tickets"
+ var/span_text = ""
+ var/ticket_system_name = "Admin Tickets"
+ var/ticket_name = "Admin Ticket"
+
init_order = INIT_ORDER_TICKETS
wait = 300
priority = FIRE_PRIORITY_TICKETS
-
+
flags = SS_BACKGROUND
-
+
var/list/allTickets
var/ticketCounter = 1
@@ -32,7 +36,7 @@ SUBSYSTEM_DEF(tickets)
var/report
for(var/num in stales)
report += "[num], "
- message_adminTicket("Tickets [report] have been open for over [ADMIN_TICKET_TIMEOUT / 600] minutes. Changing status to stale.")
+ message_staf("[span_text]Tickets [report] have been open for over [TICKET_TIMEOUT / 600] minutes. Changing status to stale.")
/datum/controller/subsystem/tickets/stat_entry()
..("Tickets: [LAZYLEN(allTickets)]")
@@ -40,10 +44,10 @@ SUBSYSTEM_DEF(tickets)
/datum/controller/subsystem/tickets/proc/checkStaleness()
var/stales = list()
for(var/T in allTickets)
- var/datum/admin_ticket/ticket = T
- if(!(ticket.ticketState == ADMIN_TICKET_OPEN))
+ var/datum/ticket/ticket = T
+ if(!(ticket.ticketState == TICKET_OPEN))
continue
- if(world.time > ticket.timeUntilStale && (!ticket.lastAdminResponse || !ticket.adminAssigned))
+ if(world.time > ticket.timeUntilStale && (!ticket.lastStafResponse || !ticket.stafAssigned))
var/id = ticket.makeStale()
stales += id
return stales
@@ -60,7 +64,7 @@ SUBSYSTEM_DEF(tickets)
/datum/controller/subsystem/tickets/proc/resolveAllOpenTickets() // Resolve all open tickets
for(var/i in allTickets)
- var/datum/admin_ticket/T = i
+ var/datum/ticket/T = i
resolveTicket(T.ticketNum)
//Open a new ticket and populate details then add to the list of open tickets
@@ -69,56 +73,58 @@ SUBSYSTEM_DEF(tickets)
return
//Check if the user has an open ticket already within the cooldown period, if so we don't create a new one and re-set the cooldown period
- var/datum/admin_ticket/existingTicket = checkForOpenTicket(C)
+ var/datum/ticket/existingTicket = checkForOpenTicket(C)
if(existingTicket)
existingTicket.setCooldownPeriod()
- to_chat(C.mob, "Your ticket #[existingTicket.ticketNum] remains open! Visit \"My tickets\" under the Admin Tab to view it.")
+ to_chat(C.mob, "[span_text]Your ticket #[existingTicket.ticketNum] remains open! Visit \"My tickets\" under the Admin Tab to view it.")
return
if(!title)
title = passedContent
- var/datum/admin_ticket/T = new(title, passedContent)
+ message_admins("making new ticket title: [title]; src type: [src.type]")
+ var/datum/ticket/T = new(title, passedContent, getTicketCounterAndInc())
+ allTickets += T
T.clientName = C
T.locationSent = C.mob.loc.name
T.mobControlled = C.mob
//Inform the user that they have opened a ticket
- to_chat(C, "You have opened admin ticket number #[(SStickets.getTicketCounter() - 1)]! Please be patient and we will help you soon!")
+ to_chat(C, "[span_text]You have opened [ticket_name] number #[(getTicketCounter() - 1)]! Please be patient and we will help you soon!")
//Set ticket state with key N to open
/datum/controller/subsystem/tickets/proc/openTicket(N)
- var/datum/admin_ticket/T = SStickets.allTickets[N]
- if(T.ticketState != ADMIN_TICKET_OPEN)
- T.ticketState = ADMIN_TICKET_OPEN
+ var/datum/ticket/T = allTickets[N]
+ if(T.ticketState != TICKET_OPEN)
+ T.ticketState = TICKET_OPEN
return TRUE
//Set ticket state with key N to resolved
/datum/controller/subsystem/tickets/proc/resolveTicket(N)
- var/datum/admin_ticket/T = SStickets.allTickets[N]
- if(T.ticketState != ADMIN_TICKET_RESOLVED)
- T.ticketState = ADMIN_TICKET_RESOLVED
+ var/datum/ticket/T = allTickets[N]
+ if(T.ticketState != TICKET_RESOLVED)
+ T.ticketState = TICKET_RESOLVED
return TRUE
//Set ticket state with key N to closed
/datum/controller/subsystem/tickets/proc/closeTicket(N)
- var/datum/admin_ticket/T = SStickets.allTickets[N]
- if(T.ticketState != ADMIN_TICKET_CLOSED)
- T.ticketState = ADMIN_TICKET_CLOSED
+ var/datum/ticket/T = allTickets[N]
+ if(T.ticketState != TICKET_CLOSED)
+ T.ticketState = TICKET_CLOSED
return TRUE
//Check if the user already has a ticket open and within the cooldown period.
/datum/controller/subsystem/tickets/proc/checkForOpenTicket(client/C)
- for(var/datum/admin_ticket/T in allTickets)
- if(T.clientName == C && T.ticketState == ADMIN_TICKET_OPEN && (T.ticketCooldown > world.time))
+ for(var/datum/ticket/T in allTickets)
+ if(T.clientName == C && T.ticketState == TICKET_OPEN && (T.ticketCooldown > world.time))
return T
return FALSE
//Check if the user has ANY ticket not resolved or closed.
/datum/controller/subsystem/tickets/proc/checkForTicket(client/C)
var/list/tickets = list()
- for(var/datum/admin_ticket/T in allTickets)
- if(T.clientName == C && (T.ticketState == ADMIN_TICKET_OPEN || T.ticketState == ADMIN_TICKET_STALE))
+ for(var/datum/ticket/T in allTickets)
+ if(T.clientName == C && (T.ticketState == TICKET_OPEN || T.ticketState == TICKET_STALE))
tickets += T
if(tickets.len)
return tickets
@@ -126,78 +132,77 @@ SUBSYSTEM_DEF(tickets)
//return the client of a ticket number
/datum/controller/subsystem/tickets/proc/returnClient(N)
- var/datum/admin_ticket/T = SStickets.allTickets[N]
+ var/datum/ticket/T = allTickets[N]
return T.clientName
-/datum/controller/subsystem/tickets/proc/assignAdminToTicket(client/C, var/N)
- var/datum/admin_ticket/T = SStickets.allTickets[N]
- T.assignAdmin(C)
+/datum/controller/subsystem/tickets/proc/assignStafToTicket(client/C, var/N)
+ var/datum/ticket/T = allTickets[N]
+ T.assignStaf(C)
return TRUE
-//Single admin ticket
+//Single staf ticket
-/datum/admin_ticket
+/datum/ticket
var/ticketNum // Ticket number
var/clientName // Client which opened the ticket
var/timeOpened // Time the ticket was opened
var/title //The initial message with links
- var/list/content // content of the admin help
- var/lastAdminResponse // Last admin who responded
- var/lastResponseTime // When the admin last responded
+ var/list/content // content of the staf help
+ var/lastStafResponse // Last staf member who responded
+ var/lastResponseTime // When the staf last responded
var/locationSent // Location the player was when they send the ticket
var/mobControlled // Mob they were controlling
var/ticketState // State of the ticket, open, closed, resolved etc
var/timeUntilStale // When the ticket goes stale
var/ticketCooldown // Cooldown before allowing the user to open another ticket.
- var/adminAssigned // Admin who has assigned themselves to this ticket
+ var/stafAssigned // Staf member who has assigned themselves to this ticket
-/datum/admin_ticket/New(tit, cont)
+/datum/ticket/New(tit, cont, num)
title = tit
content = list()
content += cont
timeOpened = worldtime2text()
- timeUntilStale = world.time + ADMIN_TICKET_TIMEOUT
+ timeUntilStale = world.time + TICKET_TIMEOUT
setCooldownPeriod()
- ticketNum = SStickets.getTicketCounterAndInc()
- ticketState = ADMIN_TICKET_OPEN
- SStickets.allTickets += src
+ ticketNum = num
+ ticketState = TICKET_OPEN
//Set the cooldown period for the ticket. The time when it's created plus the defined cooldown time.
-/datum/admin_ticket/proc/setCooldownPeriod()
- ticketCooldown = world.time + ADMIN_TICKET_DUPLICATE_COOLDOWN
+/datum/ticket/proc/setCooldownPeriod()
+ ticketCooldown = world.time + TICKET_DUPLICATE_COOLDOWN
-//Set the last admin who responded as the client passed as an arguement.
-/datum/admin_ticket/proc/setLastAdminResponse(client/C)
- lastAdminResponse = C
+//Set the last staf who responded as the client passed as an arguement.
+/datum/ticket/proc/setLastStafResponse(client/C)
+ lastStafResponse = C
lastResponseTime = worldtime2text()
//Return the ticket state as a colour coded text string.
-/datum/admin_ticket/proc/state2text()
+/datum/ticket/proc/state2text()
switch(ticketState)
- if(ADMIN_TICKET_OPEN)
+ if(TICKET_OPEN)
return "OPEN"
- if(ADMIN_TICKET_RESOLVED)
+ if(TICKET_RESOLVED)
return "RESOLVED"
- if(ADMIN_TICKET_CLOSED)
+ if(TICKET_CLOSED)
return "CLOSED"
- if(ADMIN_TICKET_STALE)
+ if(TICKET_STALE)
return "STALE"
-//Assign the client passed to var/adminAsssigned
-/datum/admin_ticket/proc/assignAdmin(client/C)
+//Assign the client passed to var/stafAsssigned
+/datum/ticket/proc/assignStaf(client/C)
if(!C)
return
- adminAssigned = C
+ stafAssigned = C
return TRUE
-/datum/admin_ticket/proc/addResponse(client/C, msg)
+/datum/ticket/proc/addResponse(client/C, msg)
if(C.holder)
- setLastAdminResponse(C)
+ setLastStafResponse(C)
msg = "[C]: [msg]"
content += msg
-/datum/admin_ticket/proc/makeStale()
- ticketState = ADMIN_TICKET_STALE
+/datum/ticket/proc/makeStale()
+ ticketState = TICKET_STALE
return ticketNum
/*
@@ -206,7 +211,7 @@ UI STUFF
*/
-/datum/controller/subsystem/tickets/proc/returnUI(tab = ADMIN_TICKET_OPEN)
+/datum/controller/subsystem/tickets/proc/returnUI(tab = TICKET_OPEN)
set name = "Open Ticket Interface"
set category = "Tickets"
@@ -214,36 +219,36 @@ UI STUFF
var/trStyle = "border-top:2px solid; border-bottom:2px solid; padding-top: 5px; padding-bottom: 5px;"
var/tdStyleleft = "border-top:2px solid; border-bottom:2px solid; width:150px; text-align:center;"
var/tdStyle = "border-top:2px solid; border-bottom:2px solid;"
- var/datum/admin_ticket/ticket
+ var/datum/ticket/ticket
var/dat
dat += "
"
- dat += "Admin Tickets
"
+ dat += "[ticket_system_name]
"
dat +="Refresh
Open TicketsResolved TicketsClosed Tickets"
- if(tab == ADMIN_TICKET_OPEN)
+ if(tab == TICKET_OPEN)
dat += "Open Tickets
"
dat += ""
dat +="| Control | Ticket |
"
- if(tab == ADMIN_TICKET_OPEN)
+ if(tab == TICKET_OPEN)
for(var/T in allTickets)
ticket = T
- if(ticket.ticketState == ADMIN_TICKET_OPEN || ticket.ticketState == ADMIN_TICKET_STALE)
- dat += "ResolveDetails #[ticket.ticketNum] ([ticket.timeOpened]) [ticket.ticketState == ADMIN_TICKET_STALE ? "STALE" : ""] | [ticket.title] |
"
+ if(ticket.ticketState == TICKET_OPEN || ticket.ticketState == TICKET_STALE)
+ dat += "ResolveDetails #[ticket.ticketNum] ([ticket.timeOpened]) [ticket.ticketState == TICKET_STALE ? "STALE" : ""] | [ticket.title] |
"
else
continue
- else if(tab == ADMIN_TICKET_RESOLVED)
+ else if(tab == TICKET_RESOLVED)
dat += "Resolved Tickets
"
for(var/T in allTickets)
ticket = T
- if(ticket.ticketState == ADMIN_TICKET_RESOLVED)
+ if(ticket.ticketState == TICKET_RESOLVED)
dat += "ResolveDetails #[ticket.ticketNum] ([ticket.timeOpened]) | [ticket.title] |
"
else
continue
- else if(tab == ADMIN_TICKET_CLOSED)
+ else if(tab == TICKET_CLOSED)
dat += "Closed Tickets
"
for(var/T in allTickets)
ticket = T
- if(ticket.ticketState == ADMIN_TICKET_CLOSED)
+ if(ticket.ticketState == TICKET_CLOSED)
dat += "ResolveDetails #[ticket.ticketNum] ([ticket.timeOpened]) | [ticket.title] |
"
else
continue
@@ -255,15 +260,16 @@ UI STUFF
/datum/controller/subsystem/tickets/proc/showUI(mob/user, tab)
var/dat = null
dat = returnUI(tab)
- var/datum/browser/popup = new(user, "admintickets", "Admin Tickets", 1400, 600)
+ var/datum/browser/popup = new(user, ticket_system_name, ticket_system_name, 1400, 600)
popup.set_content(dat)
popup.open()
/datum/controller/subsystem/tickets/proc/showDetailUI(mob/user, ticketID)
- var/datum/admin_ticket/T = SStickets.allTickets[ticketID]
+ message_admins("src type: [src.type]; ticketID [ticketID]; allTickets len [LAZYLEN(allTickets)]")
+ var/datum/ticket/T = allTickets[ticketID]
var/status = "[T.state2text()]"
- var/dat = "Admin Tickets
"
+ var/dat = "[ticket_system_name]
"
dat +="Show AllRefresh"
@@ -281,21 +287,21 @@ UI STUFF
dat += "
"
dat += "Re-OpenResolve
"
- if(!T.adminAssigned)
- dat += "No admin assigned to this ticket - Take Ticket
"
+ if(!T.stafAssigned)
+ dat += "No staf member assigned to this ticket - Take Ticket
"
else
- dat += "[T.adminAssigned] is assigned to this Ticket. - Take Ticket
"
+ dat += "[T.stafAssigned] is assigned to this Ticket. - Take Ticket
"
- if(T.lastAdminResponse)
- dat += "Last Admin Response: [T.lastAdminResponse] at [T.lastResponseTime]"
+ if(T.lastStafResponse)
+ dat += "Last Staf response Response: [T.lastStafResponse] at [T.lastResponseTime]"
else
- dat +="No Admin Response"
+ dat +="No Staf Response"
dat += "
"
dat += "Close Ticket"
- var/datum/browser/popup = new(user, "adminticketsdetail", "Admin Ticket #[T.ticketNum]", 1000, 600)
+ var/datum/browser/popup = new(user, "[ticket_system_name]detail", "[ticket_system_name] #[T.ticketNum]", 1000, 600)
popup.set_content(dat)
popup.open()
@@ -305,7 +311,7 @@ UI STUFF
var/dat
dat += "Your open tickets
"
dat += ""
- for(var/datum/admin_ticket/T in tickets)
+ for(var/datum/ticket/T in tickets)
dat += "Ticket #[T.ticketNum] |
"
for(var/i = 1, i <= T.content.len, i++)
dat += "| [T.content[i]] |
"
@@ -326,6 +332,10 @@ UI STUFF
to_chat(target, text)
return TRUE
+//Sends a message to the designated staf
+/datum/controller/subsystem/tickets/proc/message_staf(var/msg)
+ message_adminTicket(msg)
+
/datum/controller/subsystem/tickets/Topic(href, href_list)
if(href_list["refresh"])
@@ -338,13 +348,13 @@ UI STUFF
return
if(href_list["showopen"])
- showUI(usr, ADMIN_TICKET_OPEN)
+ showUI(usr, TICKET_OPEN)
return
if(href_list["showresolved"])
- showUI(usr, ADMIN_TICKET_RESOLVED)
+ showUI(usr, TICKET_RESOLVED)
return
if(href_list["showclosed"])
- showUI(usr, ADMIN_TICKET_CLOSED)
+ showUI(usr, TICKET_CLOSED)
return
if(href_list["details"])
@@ -354,40 +364,41 @@ UI STUFF
if(href_list["resolve"])
var/indexNum = text2num(href_list["resolve"])
- if(SStickets.resolveTicket(indexNum))
- message_adminTicket("[usr.client] / ([usr]) resolved admin ticket number [indexNum]")
- to_chat_safe(returnClient(indexNum), "Your admin ticket has now been resolved.")
+ if(resolveTicket(indexNum))
+ message_staf("[usr.client] / ([usr]) resolved [ticket_name] number [indexNum]")
+ to_chat_safe(returnClient(indexNum), "[span_text]Your [ticket_name] has now been resolved.")
showUI(usr)
if(href_list["detailresolve"])
var/indexNum = text2num(href_list["detailresolve"])
- if(SStickets.resolveTicket(indexNum))
- message_adminTicket("[usr.client] / ([usr]) resolved admin ticket number [indexNum]")
- to_chat_safe(returnClient(indexNum), "Your admin ticket has now been resolved.")
+ if(resolveTicket(indexNum))
+ message_staf("[usr.client] / ([usr]) resolved [ticket_name] number [indexNum]")
+ to_chat_safe(returnClient(indexNum), "[span_text]Your [ticket_name] has now been resolved.")
showDetailUI(usr, indexNum)
if(href_list["detailclose"])
var/indexNum = text2num(href_list["detailclose"])
if(alert("Are you sure? This will send a negative message.",,"Yes","No") != "Yes")
return
- if(SStickets.closeTicket(indexNum))
- message_adminTicket("[usr.client] / ([usr]) closed admin ticket number [indexNum]")
+ if(closeTicket(indexNum))
+ message_staf("[usr.client] / ([usr]) closed [ticket_name] number [indexNum]")
to_chat_safe(returnClient(indexNum), list(
- "- AdminHelp Rejected! -",
- "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting. If you asked a question, please ensure it was clear what you were asking.",
- "Your ticket has now been closed."
+ "- [ticket_name] Rejected! -",
+ "Please try to be calm, clear, and descriptive in admin helps, do not assume the staf member has seen any related events, and clearly state the names of anybody you are reporting. If you asked a question, please ensure it was clear what you were asking.",
+ "[span_text]Your ticket has now been closed."
))
showDetailUI(usr, indexNum)
if(href_list["detailreopen"])
var/indexNum = text2num(href_list["detailreopen"])
- if(SStickets.openTicket(indexNum))
- message_adminTicket("[usr.client] / ([usr]) re-opened admin ticket number [indexNum]")
+ if(openTicket(indexNum))
+ message_staf("[usr.client] / ([usr]) re-opened [ticket_name] number [indexNum]")
showDetailUI(usr, indexNum)
- if(href_list["assignadmin"])
- var/indexNum = text2num(href_list["assignadmin"])
- if(SStickets.assignAdminToTicket(usr.client, indexNum))
- message_adminTicket("[usr.client] / ([usr]) has taken ticket number [indexNum]")
- to_chat_safe(returnClient(indexNum), "Your ticket is being handled by [usr.client].")
+ if(href_list["assignstaf"])
+ var/indexNum = text2num(href_list["assignstaf"])
+ if(assignStafToTicket(usr.client, indexNum))
+ message_staf("[usr.client] / ([usr]) has taken ticket number [indexNum]")
+ to_chat_safe(returnClient(indexNum), "[span_text]Your ticket is being handled by [usr.client].")
showDetailUI(usr, indexNum)
+
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 175743e79aa..f13ba0b660a 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -28,6 +28,11 @@ var/global/nologevent = 0
if(C.prefs && !(C.prefs.toggles & CHAT_NO_TICKETLOGS))
to_chat(C, msg)
+/proc/message_mentorTicket(var/msg)
+ for(var/client/C in GLOB.admins)
+ if(check_rights(R_ADMIN | R_MENTOR | R_MOD, 0, C.mob))
+ if(C.prefs && !(C.prefs.toggles & CHAT_NO_TICKETLOGS))
+ to_chat(C, msg)
/proc/admin_ban_mobsearch(var/mob/M, var/ckey_to_find, var/mob/admin_to_notify)
if(!M || !M.ckey)
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 03d2940b32d..8f8a29f5236 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -32,6 +32,12 @@
var/ticketID = text2num(href_list["openadminticket"])
SStickets.showDetailUI(usr, ticketID)
+ if(href_list["openmentorticket"])
+ if(!check_rights(R_MENTOR|R_MOD|R_ADMIN))
+ return
+ var/ticketID = text2num(href_list["openmentorticket"])
+ SSmentor_tickets.showDetailUI(usr, ticketID)
+
if(href_list["stickyban"])
stickyban(href_list["stickyban"],href_list)
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 1baf6bf0ee8..d1397e9679a 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -106,7 +106,18 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
switch(selected_type)
if("Mentorhelp")
- msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) : [msg]"
+ var/ticketNum // Holder for the ticket number
+ var/prunedmsg ="[usr.client]: [msg]" // Message without links
+ if(SSmentor_tickets.checkForOpenTicket(usr)) // If user already has an open ticket
+ var/datum/ticket/T = SSmentor_tickets.checkForOpenTicket(usr) // Make T equal to the ticket they have open
+ ticketNum = T.ticketNum // ticketNum is the number of their ticket.
+ T.addResponse(usr.client, msg)
+ message_admins("open Mticket found num [ticketNum]")
+ else
+ ticketNum = SSmentor_tickets.getTicketCounter() // ticketNum is the ticket ready to be assigned.
+ msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""] (TAKE) : [msg]"
+ //Open a new adminticket and inform the user.
+ SSmentor_tickets.newTicket(src, prunedmsg, msg)
for(var/client/X in mentorholders + modholders + adminholders)
if(X.prefs.sound & SOUND_MENTORHELP)
X << 'sound/effects/adminhelp.ogg'
@@ -115,9 +126,11 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
var/ticketNum // Holder for the ticket number
var/prunedmsg ="[usr.client]: [msg]" // Message without links
if(SStickets.checkForOpenTicket(usr)) // If user already has an open ticket
- var/datum/admin_ticket/T = SStickets.checkForOpenTicket(usr) // Make T equal to the ticket they have open
+ message_admins("open ticket found")
+ var/datum/ticket/T = SStickets.checkForOpenTicket(usr) // Make T equal to the ticket they have open
ticketNum = T.ticketNum // ticketNum is the number of their ticket.
T.addResponse(usr.client, msg)
+ message_admins("open Aticket found num [ticketNum]")
else
ticketNum = SStickets.getTicketCounter() // ticketNum is the ticket ready to be assigned.
msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) : [msg]"
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 5303480e905..8a563750a16 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -189,14 +189,14 @@
var/tickets = list()
tickets = SStickets.checkForTicket(C)
if(tickets)
- for(var/datum/admin_ticket/i in tickets)
+ for(var/datum/ticket/i in tickets)
i.addResponse(src, msg) // Add this response to their open tickets.
return
if(check_rights(R_ADMIN|R_MOD, 0, C.mob)) //Is the person being pm'd an admin? If so we check if the pm'er has open tickets
tickets = SStickets.checkForTicket(src)
if(tickets)
- for(var/datum/admin_ticket/i in tickets)
+ for(var/datum/ticket/i in tickets)
i.addResponse(src, msg)
return
diff --git a/paradise.dme b/paradise.dme
index 094e49a99f0..ead5273f202 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -225,10 +225,11 @@
#include "code\controllers\subsystem\spacedrift.dm"
#include "code\controllers\subsystem\sun.dm"
#include "code\controllers\subsystem\throwing.dm"
-#include "code\controllers\subsystem\tickets.dm"
#include "code\controllers\subsystem\timer.dm"
#include "code\controllers\subsystem\weather.dm"
#include "code\controllers\subsystem\processing\processing.dm"
+#include "code\controllers\subsystem\tickets\mentor_tickets.dm"
+#include "code\controllers\subsystem\tickets\tickets.dm"
#include "code\datums\action.dm"
#include "code\datums\ai_law_sets.dm"
#include "code\datums\ai_laws.dm"