mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
-Added a config option, which defaults to off, which will let the gamemodes Wizard, Malf and Rev carry on playing without round interruption. Meaning...
The wizard round will carry on even if the wizard dies The malf round will carry on even if the AI dies. When the AI dies the shuttle will become callable. If the AI takesover the station or causes the station to explode, the round will end like normal. Rev will carry on playing even when all heads or all rev heads die. The shuttle will become callable when this is true. -Properly fixed the PDA runtime without adding special snowflakes. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5489 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -31,6 +31,7 @@
|
|||||||
var/feature_object_spell_system = 0 //spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard
|
var/feature_object_spell_system = 0 //spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard
|
||||||
var/traitor_scaling = 0 //if amount of traitors scales based on amount of players
|
var/traitor_scaling = 0 //if amount of traitors scales based on amount of players
|
||||||
var/protect_roles_from_antagonist = 0// If security and such can be tratior/cult/other
|
var/protect_roles_from_antagonist = 0// If security and such can be tratior/cult/other
|
||||||
|
var/continous_rounds = 0 // Gamemodes which end instantly will instead keep on going until the round ends by escape shuttle or nuke.
|
||||||
var/allow_Metadata = 0 // Metadata is supported.
|
var/allow_Metadata = 0 // Metadata is supported.
|
||||||
var/popup_admin_pm = 0 //adminPMs to non-admins show in a pop-up 'reply' window when set to 1.
|
var/popup_admin_pm = 0 //adminPMs to non-admins show in a pop-up 'reply' window when set to 1.
|
||||||
var/Ticklag = 0.9
|
var/Ticklag = 0.9
|
||||||
@@ -349,6 +350,9 @@
|
|||||||
if("gateway_delay")
|
if("gateway_delay")
|
||||||
config.gateway_delay = text2num(value)
|
config.gateway_delay = text2num(value)
|
||||||
|
|
||||||
|
if("continuous_rounds")
|
||||||
|
config.continous_rounds = 1
|
||||||
|
|
||||||
else
|
else
|
||||||
diary << "Unknown setting in configuration: '[name]'"
|
diary << "Unknown setting in configuration: '[name]'"
|
||||||
|
|
||||||
|
|||||||
@@ -20,18 +20,22 @@ datum/shuttle_controller
|
|||||||
var/timelimit //important when the shuttle gets called for more than shuttlearrivetime
|
var/timelimit //important when the shuttle gets called for more than shuttlearrivetime
|
||||||
//timeleft = 360 //600
|
//timeleft = 360 //600
|
||||||
var/fake_recall = 0 //Used in rounds to prevent "ON NOES, IT MUST [INSERT ROUND] BECAUSE SHUTTLE CAN'T BE CALLED"
|
var/fake_recall = 0 //Used in rounds to prevent "ON NOES, IT MUST [INSERT ROUND] BECAUSE SHUTTLE CAN'T BE CALLED"
|
||||||
|
var/always_fake_recall = 0
|
||||||
|
|
||||||
|
|
||||||
// call the shuttle
|
// call the shuttle
|
||||||
// if not called before, set the endtime to T+600 seconds
|
// if not called before, set the endtime to T+600 seconds
|
||||||
// otherwise if outgoing, switch to incoming
|
// otherwise if outgoing, switch to incoming
|
||||||
proc/incall(coeff = 1)
|
proc/incall(coeff = 1)
|
||||||
|
|
||||||
if(endtime)
|
if(endtime)
|
||||||
if(direction == -1)
|
if(direction == -1)
|
||||||
setdirection(1)
|
setdirection(1)
|
||||||
else
|
else
|
||||||
settimeleft(SHUTTLEARRIVETIME*coeff)
|
settimeleft(SHUTTLEARRIVETIME*coeff)
|
||||||
online = 1
|
online = 1
|
||||||
|
if(always_fake_recall)
|
||||||
|
fake_recall = rand(300,500)
|
||||||
|
|
||||||
proc/recall()
|
proc/recall()
|
||||||
if(direction == 1)
|
if(direction == 1)
|
||||||
@@ -216,7 +220,7 @@ datum/shuttle_controller
|
|||||||
|
|
||||||
else if((fake_recall != 0) && (timeleft <= fake_recall))
|
else if((fake_recall != 0) && (timeleft <= fake_recall))
|
||||||
recall()
|
recall()
|
||||||
|
fake_recall = 0
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
/* --- Shuttle has docked with the station - begin countdown to transit --- */
|
/* --- Shuttle has docked with the station - begin countdown to transit --- */
|
||||||
|
|||||||
@@ -65,6 +65,8 @@
|
|||||||
if(alert(AI_mind.current,"Do you want to use an alternative sprite for your real core?",,"Yes","No")=="Yes")
|
if(alert(AI_mind.current,"Do you want to use an alternative sprite for your real core?",,"Yes","No")=="Yes")
|
||||||
AI_mind.current.icon_state = "ai-malf2"
|
AI_mind.current.icon_state = "ai-malf2"
|
||||||
*/
|
*/
|
||||||
|
if(emergency_shuttle)
|
||||||
|
emergency_shuttle.always_fake_recall = 1
|
||||||
spawn (rand(waittime_l, waittime_h))
|
spawn (rand(waittime_l, waittime_h))
|
||||||
send_intercept()
|
send_intercept()
|
||||||
..()
|
..()
|
||||||
@@ -131,7 +133,11 @@
|
|||||||
if (station_captured && !to_nuke_or_not_to_nuke)
|
if (station_captured && !to_nuke_or_not_to_nuke)
|
||||||
return 1
|
return 1
|
||||||
if (is_malf_ai_dead())
|
if (is_malf_ai_dead())
|
||||||
return 1
|
if(config.continous_rounds)
|
||||||
|
if(emergency_shuttle)
|
||||||
|
emergency_shuttle.always_fake_recall = 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
return ..() //check for shuttle and nuke
|
return ..() //check for shuttle and nuke
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -89,6 +89,8 @@
|
|||||||
for(var/datum/mind/rev_mind in head_revolutionaries)
|
for(var/datum/mind/rev_mind in head_revolutionaries)
|
||||||
greet_revolutionary(rev_mind)
|
greet_revolutionary(rev_mind)
|
||||||
modePlayer += head_revolutionaries
|
modePlayer += head_revolutionaries
|
||||||
|
if(emergency_shuttle)
|
||||||
|
emergency_shuttle.always_fake_recall = 1
|
||||||
spawn (rand(waittime_l, waittime_h))
|
spawn (rand(waittime_l, waittime_h))
|
||||||
send_intercept()
|
send_intercept()
|
||||||
..()
|
..()
|
||||||
@@ -165,6 +167,11 @@
|
|||||||
//Checks if the round is over//
|
//Checks if the round is over//
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
/datum/game_mode/revolution/check_finished()
|
/datum/game_mode/revolution/check_finished()
|
||||||
|
if(config.continous_rounds)
|
||||||
|
if(finished != 0)
|
||||||
|
if(emergency_shuttle)
|
||||||
|
emergency_shuttle.always_fake_recall = 0
|
||||||
|
return ..()
|
||||||
if(finished != 0)
|
if(finished != 0)
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -15,5 +15,7 @@
|
|||||||
M.CanBuild()
|
M.CanBuild()
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/datum/game_mode/sandbox/check_finished()
|
/datum/game_mode/sandbox/post_setup()
|
||||||
return 0
|
..()
|
||||||
|
if(emergency_shuttle)
|
||||||
|
emergency_shuttle.always_fake_recall = 1
|
||||||
|
|||||||
@@ -182,6 +182,10 @@
|
|||||||
|
|
||||||
|
|
||||||
/datum/game_mode/wizard/check_finished()
|
/datum/game_mode/wizard/check_finished()
|
||||||
|
|
||||||
|
if(config.continous_rounds)
|
||||||
|
return ..()
|
||||||
|
|
||||||
var/wizards_alive = 0
|
var/wizards_alive = 0
|
||||||
for(var/datum/mind/wizard in wizards)
|
for(var/datum/mind/wizard in wizards)
|
||||||
if(!istype(wizard.current,/mob/living/carbon))
|
if(!istype(wizard.current,/mob/living/carbon))
|
||||||
@@ -197,6 +201,7 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/datum/game_mode/wizard/declare_completion()
|
/datum/game_mode/wizard/declare_completion()
|
||||||
if(finished)
|
if(finished)
|
||||||
feedback_set_details("round_end_result","loss - wizard killed")
|
feedback_set_details("round_end_result","loss - wizard killed")
|
||||||
|
|||||||
@@ -442,10 +442,6 @@
|
|||||||
user << "The emergency shuttle is already on its way."
|
user << "The emergency shuttle is already on its way."
|
||||||
return
|
return
|
||||||
|
|
||||||
if(ticker.mode.name == "revolution" || ticker.mode.name == "AI malfunction" || ticker.mode.name == "sandbox")
|
|
||||||
//New version pretends to call the shuttle but cause the shuttle to return after a random duration.
|
|
||||||
emergency_shuttle.fake_recall = rand(300,500)
|
|
||||||
|
|
||||||
if(ticker.mode.name == "blob")
|
if(ticker.mode.name == "blob")
|
||||||
user << "Under directive 7-10, [station_name()] is quarantined until further notice."
|
user << "Under directive 7-10, [station_name()] is quarantined until further notice."
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
// TODO: Split everything into easy to manage procs.
|
// TODO: Split everything into easy to manage procs.
|
||||||
|
|
||||||
/obj/item/device/detective_scanner
|
/obj/item/device/detective_scanner
|
||||||
name = "Scanner"
|
name = "scanner"
|
||||||
desc = "Used to scan objects for DNA and fingerprints. Can print a report of the findings."
|
desc = "Used to scan objects for DNA and fingerprints. Can print a report of the findings."
|
||||||
icon_state = "forensic1"
|
icon_state = "forensic1"
|
||||||
w_class = 3.0
|
w_class = 3.0
|
||||||
@@ -17,7 +17,10 @@
|
|||||||
if(log.len && !scanning)
|
if(log.len && !scanning)
|
||||||
scanning = 1
|
scanning = 1
|
||||||
user << "<span class='notice'>Printing report, please wait...</span>"
|
user << "<span class='notice'>Printing report, please wait...</span>"
|
||||||
|
|
||||||
spawn(100)
|
spawn(100)
|
||||||
|
|
||||||
|
// Create our paper
|
||||||
var/obj/item/weapon/paper/P = new(get_turf(src))
|
var/obj/item/weapon/paper/P = new(get_turf(src))
|
||||||
P.name = "paper- 'Scanner Report'"
|
P.name = "paper- 'Scanner Report'"
|
||||||
P.info = "<center><font size='6'><B>Scanner Report</B></font></center><HR><BR>"
|
P.info = "<center><font size='6'><B>Scanner Report</B></font></center><HR><BR>"
|
||||||
@@ -25,143 +28,139 @@
|
|||||||
P.info += "<HR><B>Notes:</B><BR>"
|
P.info += "<HR><B>Notes:</B><BR>"
|
||||||
P.info_links = P.info
|
P.info_links = P.info
|
||||||
|
|
||||||
user.put_in_hands(P)
|
if(ismob(loc))
|
||||||
|
var/mob/M = loc
|
||||||
|
M.put_in_hands(P)
|
||||||
|
M << "<span class='notice'>Report printed. Log cleared.<span>"
|
||||||
|
|
||||||
|
// Clear the logs
|
||||||
log = list()
|
log = list()
|
||||||
scanning = 0
|
scanning = 0
|
||||||
if(user)
|
|
||||||
user << "<span class='notice'>Report printed. Log cleared.<span>"
|
|
||||||
else
|
else
|
||||||
user << "<span class='notice'>The scanner has no logs or is in use.</span>"
|
user << "<span class='notice'>The scanner has no logs or is in use.</span>"
|
||||||
|
|
||||||
/obj/item/device/detective_scanner/attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
/obj/item/device/detective_scanner/attack(mob/living/M as mob, mob/user as mob)
|
||||||
if(!scanning)
|
scan(M, user)
|
||||||
scanning = 1
|
|
||||||
spawn(0)
|
|
||||||
|
|
||||||
var/found_something = 0
|
|
||||||
user << "<span class='notice'>You scan [M]. The scanner is analysing the results...</span>"
|
|
||||||
add_log(null, "<B>[time2text(world.time + 432000, "hh:mm:ss")] - [M]</B>")
|
|
||||||
// Fingerprints
|
|
||||||
if(ishuman(M))
|
|
||||||
if (istype(M.dna, /datum/dna) && !M.gloves)
|
|
||||||
sleep(30)
|
|
||||||
add_log(user, "<span class='info'><B>Prints:</B></span>")
|
|
||||||
add_log(user, "[md5(M.dna.uni_identity)]")
|
|
||||||
found_something = 1
|
|
||||||
|
|
||||||
// Blood
|
|
||||||
if ( !M.blood_DNA || !M.blood_DNA.len )
|
|
||||||
if(M.blood_DNA)
|
|
||||||
del(M.blood_DNA)
|
|
||||||
else
|
|
||||||
sleep(30)
|
|
||||||
add_log(user, "<span class='info'><B>Blood:</B></span>")
|
|
||||||
found_something = 1
|
|
||||||
for(var/blood in M.blood_DNA)
|
|
||||||
add_log(user, "Type: <font color='red'>[M.blood_DNA[blood]]</font> DNA: <font color='red'>[blood]</font>")
|
|
||||||
|
|
||||||
//Reagents
|
|
||||||
if(M.reagents && M.reagents.reagent_list.len)
|
|
||||||
sleep(30)
|
|
||||||
add_log(user, "<span class='info'><B>Reagents:</B></span>")
|
|
||||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
|
||||||
add_log(user, "Reagent: <font color='red'>[R.name]</font> Volume: <font color='red'>[R.volume]</font>")
|
|
||||||
found_something = 1
|
|
||||||
|
|
||||||
if(!found_something)
|
|
||||||
add_log(null, "<I># No forensic traces found #</I>")
|
|
||||||
user.visible_message("\The [user] scans \the [M] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
|
|
||||||
"<span class='notice'>Unable to locate any fingerprints, materials, fibers, or blood on [M]!</span>",\
|
|
||||||
"You hear a faint hum of electrical equipment.")
|
|
||||||
else
|
|
||||||
user.visible_message("\The [user] scans \the [M] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
|
|
||||||
"<span class='notice'>You finish scanning \the [M].</span>",\
|
|
||||||
"You hear a faint hum of electrical equipment.")
|
|
||||||
add_log(null, "---------------------------------------------------------")
|
|
||||||
scanning = 0
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/device/detective_scanner/afterattack(atom/A as obj|turf|area, mob/user as mob)
|
/obj/item/device/detective_scanner/afterattack(atom/A as obj|turf|area, mob/user as mob)
|
||||||
// Note, don't add formating, such as <span class>, as it won't show up in the logs.
|
|
||||||
if(!in_range(A,user))
|
if(!in_range(A,user))
|
||||||
return
|
return
|
||||||
if(!isturf(A) && !isobj(A))
|
if(!isturf(A) && !isobj(A))
|
||||||
return
|
return
|
||||||
if(loc != user)
|
if(loc != user)
|
||||||
return
|
return
|
||||||
|
scan(A, user)
|
||||||
|
|
||||||
|
/obj/item/device/detective_scanner/proc/scan(var/atom/A, var/mob/user)
|
||||||
|
|
||||||
if(!scanning)
|
if(!scanning)
|
||||||
scanning = 1
|
scanning = 1
|
||||||
add_fingerprint(user)
|
|
||||||
|
user.visible_message("\The [user] scans \the [A] with \the [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]")
|
||||||
|
user << "<span class='notice'>You scan [A]. The scanner is analysing the results...</span>"
|
||||||
|
|
||||||
|
|
||||||
|
// GATHER INFORMATION
|
||||||
|
|
||||||
|
//Make our lists
|
||||||
|
var/list/fingerprints = list()
|
||||||
|
var/list/blood = list()
|
||||||
|
var/list/fibers = list()
|
||||||
|
var/list/reagents = list()
|
||||||
|
|
||||||
|
var/target_name = A.name
|
||||||
|
|
||||||
|
// Start gathering
|
||||||
|
|
||||||
|
if(ishuman(A))
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H = A
|
||||||
|
if (istype(H.dna, /datum/dna) && !H.gloves)
|
||||||
|
fingerprints += md5(H.dna.uni_identity)
|
||||||
|
|
||||||
|
if(H.blood_DNA && H.blood_DNA.len)
|
||||||
|
blood = H.blood_DNA.Copy()
|
||||||
|
else
|
||||||
|
|
||||||
|
if(A.fingerprints && A.fingerprints.len)
|
||||||
|
fingerprints = A.fingerprints.Copy()
|
||||||
|
|
||||||
|
if(A.blood_DNA && A.blood_DNA.len)
|
||||||
|
blood = A.blood_DNA.Copy()
|
||||||
|
|
||||||
|
if(A.reagents && A.reagents.reagent_list.len)
|
||||||
|
for(var/datum/reagent/R in A.reagents.reagent_list)
|
||||||
|
reagents[R.name] = R.volume
|
||||||
|
|
||||||
|
if(A.suit_fibers && A.suit_fibers.len)
|
||||||
|
fibers = A.suit_fibers.Copy()
|
||||||
|
|
||||||
|
// We gathered everything. Create a fork and slowly display the results to the holder of the scanner.
|
||||||
|
|
||||||
spawn(0)
|
spawn(0)
|
||||||
|
|
||||||
var/found_something = 0
|
var/found_something = 0
|
||||||
user << "<span class='notice'>You scan [A]. The scanner is analysing the results...</span>"
|
add_log("<B>[get_timestamp()] - [target_name]</B>", 0)
|
||||||
add_log(null, "<B>[time2text(world.time + 432000, "hh:mm:ss")] - [capitalize(A.name)]</B>")
|
|
||||||
//PRINTS
|
|
||||||
if(!A.fingerprints || !A.fingerprints.len)
|
|
||||||
if(A.fingerprints)
|
|
||||||
del(A.fingerprints)
|
|
||||||
else
|
|
||||||
var/list/completed_prints = list()
|
|
||||||
// Bah this looks awful but basically it loop throught the last 15 entries.
|
|
||||||
for(var/i in A.fingerprints)
|
|
||||||
var/print = A.fingerprints[i]
|
|
||||||
completed_prints += print
|
|
||||||
|
|
||||||
if(completed_prints.len)
|
// Fingerprints
|
||||||
|
if(fingerprints && fingerprints.len)
|
||||||
sleep(30)
|
|
||||||
add_log(user, "<span class='info'><B>Prints:</B></span>")
|
|
||||||
for(var/i in completed_prints)
|
|
||||||
add_log(user, "[i]")
|
|
||||||
found_something = 1
|
|
||||||
|
|
||||||
//FIBERS
|
|
||||||
if(A.suit_fibers && A.suit_fibers.len)
|
|
||||||
sleep(30)
|
sleep(30)
|
||||||
add_log(user, "<span class='info'><B>Fibers:</B></span>")
|
add_log("<span class='info'><B>Prints:</B></span>")
|
||||||
for(var/fiber in A.suit_fibers)
|
for(var/finger in fingerprints)
|
||||||
add_log(user, "[fiber]")
|
add_log("[finger]")
|
||||||
found_something = 1
|
found_something = 1
|
||||||
|
|
||||||
//Blood
|
// Blood
|
||||||
if (A.blood_DNA && A.blood_DNA.len)
|
if (blood && blood.len)
|
||||||
sleep(30)
|
sleep(30)
|
||||||
add_log(user, "<span class='info'><B>Blood:</B></span>")
|
add_log("<span class='info'><B>Blood:</B></span>")
|
||||||
for(var/blood in A.blood_DNA)
|
found_something = 1
|
||||||
add_log(user, "Type: <font color='red'>[A.blood_DNA[blood]]</font> DNA: <font color='red'>[blood]</font>")
|
for(var/B in blood)
|
||||||
|
add_log("Type: <font color='red'>[blood[B]]</font> DNA: <font color='red'>[B]</font>")
|
||||||
|
|
||||||
|
//Fibers
|
||||||
|
if(fibers && fibers.len)
|
||||||
|
sleep(30)
|
||||||
|
add_log("<span class='info'><B>Fibers:</B></span>")
|
||||||
|
for(var/fiber in fibers)
|
||||||
|
add_log("[fiber]")
|
||||||
found_something = 1
|
found_something = 1
|
||||||
|
|
||||||
//Reagents
|
//Reagents
|
||||||
if(A.reagents && A.reagents.reagent_list.len)
|
if(reagents && reagents.len)
|
||||||
sleep(30)
|
sleep(30)
|
||||||
add_log(user, "<span class='info'><B>Reagents:</B></span>")
|
add_log("<span class='info'><B>Reagents:</B></span>")
|
||||||
for(var/datum/reagent/R in A.reagents.reagent_list)
|
for(var/R in reagents)
|
||||||
add_log(user, "Reagent: <font color='red'>[R.name]</font> Volume: <font color='red'>[R.volume]</font>")
|
add_log("Reagent: <font color='red'>[R]</font> Volume: <font color='red'>[reagents[R]]</font>")
|
||||||
found_something = 1
|
found_something = 1
|
||||||
|
|
||||||
//General
|
// Get a new user
|
||||||
if (!found_something)
|
var/mob/holder = null
|
||||||
add_log(null, "<I># No forensic traces found #</I>")
|
if(ismob(src.loc))
|
||||||
user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
|
holder = src.loc
|
||||||
"<span class='notice'>Unable to locate any fingerprints, materials, fibers, or blood on [A]!</span>",\
|
|
||||||
"You hear a faint hum of electrical equipment.")
|
if(!found_something)
|
||||||
|
add_log("<I># No forensic traces found #</I>", 0) // Don't display this to the holder user
|
||||||
|
if(holder)
|
||||||
|
holder << "<span class='notice'>Unable to locate any fingerprints, materials, fibers, or blood on [target_name]!</span>"
|
||||||
else
|
else
|
||||||
user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
|
if(holder)
|
||||||
"<span class='notice'>You finish analysing \the [A].</span>",\
|
holder << "<span class='notice'>You finish scanning \the [target_name].</span>"
|
||||||
"You hear a faint hum of electrical equipment.")
|
|
||||||
|
|
||||||
add_log(null, "---------------------------------------------------------")
|
add_log("---------------------------------------------------------", 0)
|
||||||
scanning = 0
|
scanning = 0
|
||||||
return 0
|
return
|
||||||
|
|
||||||
/obj/item/device/detective_scanner/proc/add_log(var/mob/user, var/msg)
|
/obj/item/device/detective_scanner/proc/add_log(var/msg, var/broadcast = 1)
|
||||||
if(scanning)
|
if(scanning)
|
||||||
if(user)
|
if(broadcast && ismob(loc))
|
||||||
user << msg
|
var/mob/M = loc
|
||||||
|
M << msg
|
||||||
log += " [msg]"
|
log += " [msg]"
|
||||||
else
|
else
|
||||||
CRASH("[src] \ref[src] is adding a log when it was never put in scanning mode!")
|
CRASH("[src] \ref[src] is adding a log when it was never put in scanning mode!")
|
||||||
|
|
||||||
|
/obj/item/device/detective_scanner/proc/get_timestamp()
|
||||||
|
return time2text(world.time + 432000, "hh:mm:ss")
|
||||||
@@ -270,15 +270,11 @@
|
|||||||
var/criminal = "None"
|
var/criminal = "None"
|
||||||
|
|
||||||
if(wear_id)
|
if(wear_id)
|
||||||
if (istype(wear_id, /obj/item/weapon/card/id))
|
var/obj/item/weapon/card/id/I = wear_id.GetID()
|
||||||
var/obj/item/weapon/card/id/I = wear_id
|
if(I)
|
||||||
perpname = I.registered_name
|
perpname = I.registered_name
|
||||||
else if (istype(wear_id, /obj/item/device/pda))
|
else
|
||||||
var/obj/item/device/pda/P = wear_id
|
perpname = name
|
||||||
perpname = P.owner
|
|
||||||
else if (istype(wear_id, /obj/item/weapon/storage/wallet))
|
|
||||||
var/obj/item/weapon/storage/wallet/W = wear_id
|
|
||||||
perpname = W.front_id
|
|
||||||
else
|
else
|
||||||
perpname = name
|
perpname = name
|
||||||
|
|
||||||
|
|||||||
@@ -185,4 +185,8 @@ HUMANS_NEED_SURNAMES
|
|||||||
GATEWAY_DELAY 18000
|
GATEWAY_DELAY 18000
|
||||||
|
|
||||||
## Remove the # to give assistants maint access.
|
## Remove the # to give assistants maint access.
|
||||||
#ASSISTANT_MAINT
|
#ASSISTANT_MAINT
|
||||||
|
|
||||||
|
## Remove the # to make rounds which end instantly (Rev, Wizard, Malf) to continue until the shuttle is called or the station is nuked.
|
||||||
|
## Malf and Rev will let the shuttle be called when the antags/protags are dead.
|
||||||
|
#CONTINUOUS_ROUNDS
|
||||||
Reference in New Issue
Block a user