Replaces the default output with the to_chat wrapper.

This commit is contained in:
Lzimann
2017-03-10 01:32:05 -03:00
parent ffbb492a43
commit 5a618297ce
1034 changed files with 7617 additions and 7680 deletions

View File

@@ -1,5 +1,5 @@
//A set of constants used to determine which type of mute an admin wishes to apply:
//Please read and understand the muting/automuting stuff before changing these. MUTE_IC_AUTO etc = (MUTE_IC << 1)
//Please read and understand the muting/automuting stuff before changing these. MUTE_IC_AUTO etc = (to_chat(MUTE_IC, 1))
//Therefore there needs to be a gap between the flags for the automute flags
#define MUTE_IC 1
#define MUTE_OOC 2

View File

@@ -325,8 +325,8 @@ var/global/list/ghost_others_options = list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
#define SHELTER_DEPLOY_ANCHORED_OBJECTS "anchored objects"
//debug printing macros
#define debug_world(msg) if (Debug2) world << "DEBUG: [msg]"
#define debug_admins(msg) if (Debug2) admins << "DEBUG: [msg]"
#define debug_world(msg) if (Debug2) to_chat(world, "DEBUG: [msg]")
#define debug_admins(msg) if (Debug2) to_chat(admins, "DEBUG: [msg]")
#define debug_world_log(msg) if (Debug2) log_world("DEBUG: [msg]")
#define COORD(A) "([A.x],[A.y],[A.z])"

View File

@@ -12,7 +12,7 @@
//print a testing-mode debug message to world.log and world
#ifdef TESTING
#define testing(msg) log_world("## TESTING: [msg]"); world << "## TESTING: [msg]"
#define testing(msg) log_world("## TESTING: [msg]"); to_chat(world, "## TESTING: [msg]")
#else
#define testing(msg)
#endif

View File

@@ -39,7 +39,7 @@
var/extension = copytext(path,-4,0)
if( !fexists(path) || !(extension in valid_extensions) )
src << "<font color='red'>Error: browse_files(): File not found/Invalid file([path]).</font>"
to_chat(src, "<font color='red'>Error: browse_files(): File not found/Invalid file([path]).</font>")
return
return path
@@ -53,7 +53,7 @@
/client/proc/file_spam_check()
var/time_to_wait = fileaccess_timer - world.time
if(time_to_wait > 0)
src << "<font color='red'>Error: file_spam_check(): Spam. Please wait [round(time_to_wait/10)] seconds.</font>"
to_chat(src, "<font color='red'>Error: file_spam_check(): Spam. Please wait [round(time_to_wait/10)] seconds.</font>")
return 1
fileaccess_timer = world.time + FTPDELAY
return 0

View File

@@ -422,20 +422,20 @@
window_flash(G.client)
switch(ignore_category ? askuser(G,Question,"Please answer in [poll_time/10] seconds!","Yes","No","Never for this round", StealFocus=0, Timeout=poll_time) : askuser(G,Question,"Please answer in [poll_time/10] seconds!","Yes","No", StealFocus=0, Timeout=poll_time))
if(1)
G << "<span class='notice'>Choice registered: Yes.</span>"
to_chat(G, "<span class='notice'>Choice registered: Yes.</span>")
if((world.time-time_passed)>poll_time)
G << "<span class='danger'>Sorry, you were too late for the consideration!</span>"
to_chat(G, "<span class='danger'>Sorry, you were too late for the consideration!</span>")
G << 'sound/machines/buzz-sigh.ogg'
else
candidates += G
if(2)
G << "<span class='danger'>Choice registered: No.</span>"
to_chat(G, "<span class='danger'>Choice registered: No.</span>")
if(3)
var/list/L = poll_ignore[ignore_category]
if(!L)
poll_ignore[ignore_category] = list()
poll_ignore[ignore_category] += G.ckey
G << "<span class='danger'>Choice registered: Never for this round.</span>"
to_chat(G, "<span class='danger'>Choice registered: Never for this round.</span>")
/proc/pollCandidates(var/Question, var/jobbanType, var/datum/game_mode/gametypeCheck, var/be_special_flag = 0, var/poll_time = 300, var/ignore_category = null, flashwindow = TRUE)
var/list/mob/dead/observer/candidates = list()
@@ -498,10 +498,10 @@
return new_character
/proc/send_to_playing_players(thing) //sends a whatever to all playing players; use instead of world << where needed
/proc/send_to_playing_players(thing) //sends a whatever to all playing players; use instead of to_chat(world, where needed)
for(var/M in player_list)
if(M && !isnewplayer(M))
M << thing
to_chat(M, thing)
/proc/window_flash(client/C, ignorepref = FALSE)
if(ismob(C))

View File

@@ -68,7 +68,7 @@
var/list/L = chemical_reactions_list[reaction]
for(var/t in L)
. += " has: [t]\n"
world << .
to_chat(world, .)
*/
//creates every subtype of prototype (excluding prototype) and adds it to list L.

View File

@@ -71,9 +71,9 @@
AM = find_type_in_direction(A, direction)
if(AM == NULLTURF_BORDER)
if((A.smooth & SMOOTH_BORDER))
adjacencies |= 1 << direction
adjacencies |= to_chat(1, direction)
else if( (AM && !istype(AM)) || (istype(AM) && AM.anchored) )
adjacencies |= 1 << direction
adjacencies |= to_chat(1, direction)
if(adjacencies & N_NORTH)
if(adjacencies & N_WEST)
@@ -259,7 +259,7 @@
A.cut_overlay(A.bottom_left_corner)
A.bottom_left_corner = se
LAZYADD(New, se)
if(New)
A.add_overlay(New)

View File

@@ -333,26 +333,26 @@ world
--digits
switch(which)
if(0)
r = (r << 4) | ch
r = (to_chat(r, 4) | ch)
if(single)
r |= r << 4
r |= to_chat(r, 4)
++which
else if(!(digits & 1)) ++which
if(1)
g = (g << 4) | ch
g = (to_chat(g, 4) | ch)
if(single)
g |= g << 4
g |= to_chat(g, 4)
++which
else if(!(digits & 1)) ++which
if(2)
b = (b << 4) | ch
b = (to_chat(b, 4) | ch)
if(single)
b |= b << 4
b |= to_chat(b, 4)
++which
else if(!(digits & 1)) ++which
if(3)
alpha = (alpha << 4) | ch
if(single) alpha |= alpha << 4
alpha = (to_chat(alpha, 4) | ch)
if(single) alpha |= to_chat(alpha, 4)
. = list(r, g, b)
if(usealpha) . += alpha
@@ -382,16 +382,16 @@ world
--digits
switch(which)
if(0)
hue = (hue << 4) | ch
hue = (to_chat(hue, 4) | ch)
if(digits == (usealpha ? 6 : 4)) ++which
if(1)
sat = (sat << 4) | ch
sat = (to_chat(sat, 4) | ch)
if(digits == (usealpha ? 4 : 2)) ++which
if(2)
val = (val << 4) | ch
val = (to_chat(val, 4) | ch)
if(digits == (usealpha ? 2 : 0)) ++which
if(3)
alpha = (alpha << 4) | ch
alpha = (to_chat(alpha, 4) | ch)
. = list(hue, sat, val)
if(usealpha) . += alpha

View File

@@ -405,4 +405,4 @@ Proc for attack log creation, because really why not
else if(turf_target)
var/turf_link = TURF_LINK(M, turf_target)
message = "[turf_link] [message]"
M << "[message]"
to_chat(M, "[message]")

View File

@@ -266,7 +266,7 @@ var/datum/sortInstance/sortInstance = new()
var/maxOffset = len - hint
while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint+offset)) > 0)
lastOffset = offset
offset = (offset << 1) + 1
offset = (to_chat(offset, 1) + 1)
if(offset > maxOffset)
offset = maxOffset
@@ -278,7 +278,7 @@ var/datum/sortInstance/sortInstance = new()
var/maxOffset = hint + 1
while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint-offset)) <= 0)
lastOffset = offset
offset = (offset << 1) + 1
offset = (to_chat(offset, 1) + 1)
if(offset > maxOffset)
offset = maxOffset
@@ -325,7 +325,7 @@ var/datum/sortInstance/sortInstance = new()
var/maxOffset = hint + 1 //therefore we want to insert somewhere in the range [base,base+hint] = [base+,base+(hint+1))
while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint-offset)) < 0) //we are iterating backwards
lastOffset = offset
offset = (offset << 1) + 1 //1 3 7 15
offset = (to_chat(offset, 1) + 1 )
//if(offset <= 0) //int overflow, not an issue here since we are using floats
// offset = maxOffset
@@ -340,7 +340,7 @@ var/datum/sortInstance/sortInstance = new()
var/maxOffset = len - hint //therefore we want to insert somewhere in the range (base+hint,base+len) = [base+hint+1, base+hint+(len-hint))
while(offset < maxOffset && call(cmp)(key, fetchElement(L,base+hint+offset)) >= 0)
lastOffset = offset
offset = (offset << 1) + 1
offset = (to_chat(offset, 1) + 1)
//if(offset <= 0) //int overflow, not an issue here since we are using floats
// offset = maxOffset

View File

@@ -834,20 +834,20 @@ var/list/WALLITEMS_INVERSE = typecacheof(list(
var/pressure = air_contents.return_pressure()
var/total_moles = air_contents.total_moles()
user << "<span class='notice'>Results of analysis of \icon[icon] [target].</span>"
to_chat(user, "<span class='notice'>Results of analysis of \icon[icon] [target].</span>")
if(total_moles>0)
user << "<span class='notice'>Pressure: [round(pressure,0.1)] kPa</span>"
to_chat(user, "<span class='notice'>Pressure: [round(pressure,0.1)] kPa</span>")
var/list/cached_gases = air_contents.gases
for(var/id in cached_gases)
var/gas_concentration = cached_gases[id][MOLES]/total_moles
if(id in hardcoded_gases || gas_concentration > 0.001) //ensures the four primary gases are always shown.
user << "<span class='notice'>[cached_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] %</span>"
to_chat(user, "<span class='notice'>[cached_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] %</span>")
user << "<span class='notice'>Temperature: [round(air_contents.temperature-T0C)] &deg;C</span>"
to_chat(user, "<span class='notice'>Temperature: [round(air_contents.temperature-T0C)] &deg;C</span>")
else
user << "<span class='notice'>[target] is empty!</span>"
to_chat(user, "<span class='notice'>[target] is empty!</span>")
return
/proc/check_target_facings(mob/living/initator, mob/living/target)
@@ -1420,3 +1420,6 @@ var/valid_HTTPSGet = FALSE
fdel(temp_file)
#define UNTIL(X) while(!(X)) stoplag()
/proc/to_chat(target, message)
target << message

View File

@@ -597,7 +597,7 @@ so as to remain in compliance with the most up-to-date laws."
return
var/paramslist = params2list(params)
if(paramslist["shift"]) // screen objects don't do the normal Click() stuff so we'll cheat
usr << "<span class='boldnotice'>[name]</span> - <span class='info'>[desc]</span>"
to_chat(usr, "<span class='boldnotice'>[name]</span> - <span class='info'>[desc]</span>")
return
if(master)
return usr.client.Click(master, location, control, params)

View File

@@ -244,9 +244,9 @@
if(hud_used && client)
hud_used.show_hud() //Shows the next hud preset
usr << "<span class ='info'>Switched HUD mode. Press F12 to toggle.</span>"
to_chat(usr, "<span class ='info'>Switched HUD mode. Press F12 to toggle.</span>")
else
usr << "<span class ='warning'>This mob type does not use a HUD.</span>"
to_chat(usr, "<span class ='warning'>This mob type does not use a HUD.</span>")
//(re)builds the hand ui slots, throwing away old ones

View File

@@ -206,7 +206,7 @@
screenmob.client.screen += module_store_icon //"store" icon
if(!R.module.modules)
usr << "<span class='danger'>Selected module has no modules to select</span>"
to_chat(usr, "<span class='danger'>Selected module has no modules to select</span>")
return
if(!R.robot_modules_background)

View File

@@ -80,7 +80,7 @@
return 1
var/area/A = get_area(usr)
if(!A.outdoors)
usr << "<span class='warning'>There is already a defined structure here.</span>"
to_chat(usr, "<span class='warning'>There is already a defined structure here.</span>")
return 1
create_area(usr)
@@ -241,49 +241,49 @@
if(C.internal)
C.internal = null
C << "<span class='notice'>You are no longer running on internals.</span>"
to_chat(C, "<span class='notice'>You are no longer running on internals.</span>")
icon_state = "internal0"
else
if(!C.getorganslot("breathing_tube"))
if(!istype(C.wear_mask, /obj/item/clothing/mask))
C << "<span class='warning'>You are not wearing an internals mask!</span>"
to_chat(C, "<span class='warning'>You are not wearing an internals mask!</span>")
return 1
else
var/obj/item/clothing/mask/M = C.wear_mask
if(M.mask_adjusted) // if mask on face but pushed down
M.adjustmask(C) // adjust it back
if( !(M.flags & MASKINTERNALS) )
C << "<span class='warning'>You are not wearing an internals mask!</span>"
to_chat(C, "<span class='warning'>You are not wearing an internals mask!</span>")
return
var/obj/item/I = C.is_holding_item_of_type(/obj/item/weapon/tank)
if(I)
C << "<span class='notice'>You are now running on internals from the [I] on your [C.get_held_index_name(C.get_held_index_of_item(I))].</span>"
to_chat(C, "<span class='notice'>You are now running on internals from the [I] on your [C.get_held_index_name(C.get_held_index_of_item(I))].</span>")
C.internal = I
else if(ishuman(C))
var/mob/living/carbon/human/H = C
if(istype(H.s_store, /obj/item/weapon/tank))
H << "<span class='notice'>You are now running on internals from the [H.s_store] on your [H.wear_suit].</span>"
to_chat(H, "<span class='notice'>You are now running on internals from the [H.s_store] on your [H.wear_suit].</span>")
H.internal = H.s_store
else if(istype(H.belt, /obj/item/weapon/tank))
H << "<span class='notice'>You are now running on internals from the [H.belt] on your belt.</span>"
to_chat(H, "<span class='notice'>You are now running on internals from the [H.belt] on your belt.</span>")
H.internal = H.belt
else if(istype(H.l_store, /obj/item/weapon/tank))
H << "<span class='notice'>You are now running on internals from the [H.l_store] in your left pocket.</span>"
to_chat(H, "<span class='notice'>You are now running on internals from the [H.l_store] in your left pocket.</span>")
H.internal = H.l_store
else if(istype(H.r_store, /obj/item/weapon/tank))
H << "<span class='notice'>You are now running on internals from the [H.r_store] in your right pocket.</span>"
to_chat(H, "<span class='notice'>You are now running on internals from the [H.r_store] in your right pocket.</span>")
H.internal = H.r_store
//Seperate so CO2 jetpacks are a little less cumbersome.
if(!C.internal && istype(C.back, /obj/item/weapon/tank))
C << "<span class='notice'>You are now running on internals from the [C.back] on your back.</span>"
to_chat(C, "<span class='notice'>You are now running on internals from the [C.back] on your back.</span>")
C.internal = C.back
if(C.internal)
icon_state = "internal1"
else
C << "<span class='warning'>You don't have an oxygen tank!</span>"
to_chat(C, "<span class='warning'>You don't have an oxygen tank!</span>")
return
C.update_action_buttons_icon()

View File

@@ -21,7 +21,7 @@
if(user.a_intent == INTENT_HARM && stat == DEAD && butcher_results) //can we butcher it?
var/sharpness = I.is_sharp()
if(sharpness)
user << "<span class='notice'>You begin to butcher [src]...</span>"
to_chat(user, "<span class='notice'>You begin to butcher [src]...</span>")
playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1)
if(do_mob(user, src, 80/sharpness))
harvest(user)

View File

@@ -71,13 +71,13 @@
if(awaygate)
user.forceMove(awaygate.loc)
else
user << "[src] has no destination."
to_chat(user, "[src] has no destination.")
/obj/machinery/gateway/centeraway/attack_ghost(mob/user)
if(stationgate)
user.forceMove(stationgate.loc)
else
user << "[src] has no destination."
to_chat(user, "[src] has no destination.")
/obj/item/weapon/storage/attack_ghost(mob/user)
orient2hud(user)

View File

@@ -7,7 +7,7 @@
/mob/living/carbon/human/UnarmedAttack(atom/A, proximity)
if(!has_active_hand()) //can't attack without a hand.
src << "<span class='notice'>You look at your arm and sigh.</span>"
to_chat(src, "<span class='notice'>You look at your arm and sigh.</span>")
return
// Special glove functions:

View File

@@ -152,7 +152,7 @@ var/const/tk_maxrange = 15
if(focus)
d = max(d,get_dist(user,focus)) // whichever is further
if(d > tk_maxrange)
user << "<span class ='warning'>Your mind won't reach that far.</span>"
to_chat(user, "<span class ='warning'>Your mind won't reach that far.</span>")
return 0
return 1

View File

@@ -10,7 +10,7 @@
if(var_name in banned_views)
return debug_variable(var_name, "SECRET", 0, src)
return ..()
/datum/configuration/vv_edit_var(var_name, var_value)
var/static/list/banned_edits = list("cross_address", "cross_allowed", "autoadmin", "autoadmin_rank")
if(var_name in banned_edits)
@@ -861,7 +861,7 @@
var/list/datum/game_mode/runnable_modes = new
for(var/T in gamemode_cache)
var/datum/game_mode/M = new T()
//world << "DEBUG: [T], tag=[M.config_tag], prob=[probabilities[M.config_tag]]"
//to_chat(world, "DEBUG: [T], tag=[M.config_tag], prob=[probabilities[M.config_tag]]")
if(!(M.config_tag in modes))
qdel(M)
continue
@@ -874,7 +874,7 @@
M.maximum_players = max_pop[M.config_tag]
if(M.can_start())
runnable_modes[M] = probabilities[M.config_tag]
//world << "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]"
//to_chat(world, "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]")
return runnable_modes
/datum/configuration/proc/get_runnable_midround_modes(crew)

View File

@@ -53,23 +53,23 @@ var/datum/controller/failsafe/Failsafe
if(4,5)
--defcon
if(3)
admins << "<span class='adminnotice'>Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks."
to_chat(admins, "<span class='adminnotice'>Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks.")
--defcon
if(2)
admins << "<span class='boldannounce'>Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.</span>"
to_chat(admins, "<span class='boldannounce'>Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.</span>")
--defcon
if(1)
admins << "<span class='boldannounce'>Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting...</span>"
to_chat(admins, "<span class='boldannounce'>Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting...</span>")
--defcon
var/rtn = Recreate_MC()
if(rtn > 0)
defcon = 4
master_iteration = 0
admins << "<span class='adminnotice'>MC restarted successfully</span>"
to_chat(admins, "<span class='adminnotice'>MC restarted successfully</span>")
else if(rtn < 0)
log_game("FailSafe: Could not restart MC, runtime encountered. Entering defcon 0")
admins << "<span class='boldannounce'>ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.</span>"
to_chat(admins, "<span class='boldannounce'>ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.</span>")
//if the return number was 0, it just means the mc was restarted too recently, and it just needs some time before we try again
//no need to handle that specially when defcon 0 can handle it
if(0) //DEFCON 0! (mc failed to restart)
@@ -77,7 +77,7 @@ var/datum/controller/failsafe/Failsafe
if(rtn > 0)
defcon = 4
master_iteration = 0
admins << "<span class='adminnotice'>MC restarted successfully</span>"
to_chat(admins, "<span class='adminnotice'>MC restarted successfully</span>")
else
defcon = min(defcon + 1,5)
master_iteration = Master.iteration

View File

@@ -111,7 +111,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
subsystems = Master.subsystems
StartProcessing(10)
else
world << "<span class='boldannounce'>The Master Controller is having some issues, we will need to re-initialize EVERYTHING</span>"
to_chat(world, "<span class='boldannounce'>The Master Controller is having some issues, we will need to re-initialize EVERYTHING</span>")
Initialize(20, TRUE)
@@ -126,7 +126,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
if(init_sss)
init_subtypes(/datum/controller/subsystem, subsystems)
world << "<span class='boldannounce'>Initializing subsystems...</span>"
to_chat(world, "<span class='boldannounce'>Initializing subsystems...</span>")
// Sort subsystems by init_order, so they initialize in the correct order.
sortTim(subsystems, /proc/cmp_subsystem_init)
@@ -143,7 +143,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
var/time = (REALTIMEOFDAY - start_timeofday) / 10
var/msg = "Initializations complete within [time] second[time == 1 ? "" : "s"]!"
world << "<span class='boldannounce'>[msg]</span>"
to_chat(world, "<span class='boldannounce'>[msg]</span>")
log_world(msg)
// Sort subsystems by display setting for easy access.

View File

@@ -147,7 +147,7 @@
/datum/controller/subsystem/Initialize(start_timeofday)
var/time = (REALTIMEOFDAY - start_timeofday) / 10
var/msg = "Initialized [name] subsystem within [time] second[time == 1 ? "" : "s"]!"
world << "<span class='boldannounce'>[msg]</span>"
to_chat(world, "<span class='boldannounce'>[msg]</span>")
log_world(msg)
return time

View File

@@ -318,7 +318,7 @@ var/datum/controller/subsystem/air/SSair
CHECK_TICK
var/msg = "HEY! LISTEN! [(world.timeofday - timer)/10] Seconds were wasted processing [starting_ats] turf(s) (connected to [ending_ats] other turfs) with atmos differences at round start."
world << "<span class='boldannounce'>[msg]</span>"
to_chat(world, "<span class='boldannounce'>[msg]</span>")
warning(msg)
/turf/open/proc/resolve_active_graph()

View File

@@ -67,13 +67,13 @@ var/datum/controller/subsystem/augury/SSaugury
/datum/action/innate/augury/Activate()
SSaugury.watchers += owner
owner << "<span class='notice'>You are now auto-following debris.</span>"
to_chat(owner, "<span class='notice'>You are now auto-following debris.</span>")
active = TRUE
UpdateButtonIcon()
/datum/action/innate/augury/Deactivate()
SSaugury.watchers -= owner
owner << "<span class='notice'>You are no longer auto-following debris.</span>"
to_chat(owner, "<span class='notice'>You are no longer auto-following debris.</span>")
active = FALSE
UpdateButtonIcon()

View File

@@ -28,7 +28,7 @@ var/datum/controller/subsystem/job/SSjob
occupations = list()
var/list/all_jobs = subtypesof(/datum/job)
if(!all_jobs.len)
world << "<span class='boldannounce'>Error setting up jobs, no job datums found</span>"
to_chat(world, "<span class='boldannounce'>Error setting up jobs, no job datums found</span>")
return 0
for(var/J in all_jobs)
@@ -40,7 +40,7 @@ var/datum/controller/subsystem/job/SSjob
if(!job.config_check())
continue
if(!job.map_check()) //Even though we initialize before mapping, this is fine because the config is loaded at new
testing("Removed [job.type] due to map config");
testing("Removed [job.type] due to map config");
continue
occupations += job
name_occupations[job.title] = job
@@ -414,13 +414,13 @@ var/datum/controller/subsystem/job/SSjob
else
M = H
M << "<b>You are the [rank].</b>"
M << "<b>As the [rank] you answer directly to [job.supervisors]. Special circumstances may change this.</b>"
M << "<b>To speak on your departments radio, use the :h button. To see others, look closely at your headset.</b>"
to_chat(M, "<b>You are the [rank].</b>")
to_chat(M, "<b>As the [rank] you answer directly to [job.supervisors]. Special circumstances may change this.</b>")
to_chat(M, "<b>To speak on your departments radio, use the :h button. To see others, look closely at your headset.</b>")
if(job.req_admin_notify)
M << "<b>You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp.</b>"
to_chat(M, "<b>You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp.</b>")
if(config.minimal_access_threshold)
M << "<FONT color='blue'><B>As this station was initially staffed with a [config.jobs_have_minimal_access ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.</B></font>"
to_chat(M, "<FONT color='blue'><B>As this station was initially staffed with a [config.jobs_have_minimal_access ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.</B></font>")
if(job && H)
job.after_spawn(H, M)
@@ -503,7 +503,7 @@ var/datum/controller/subsystem/job/SSjob
return
if(PopcapReached())
Debug("Popcap overflow Check observer located, Player: [player]")
player << "<b>You have failed to qualify for any job you desired.</b>"
to_chat(player, "<b>You have failed to qualify for any job you desired.</b>")
unassigned -= player
player.ready = 0

View File

@@ -34,7 +34,7 @@ var/datum/controller/subsystem/mapping/SSmapping
/datum/controller/subsystem/mapping/Initialize(timeofday)
if(config.defaulted)
world << "<span class='boldannounce'>Unable to load next map config, defaulting to Box Station</span>"
to_chat(world, "<span class='boldannounce'>Unable to load next map config, defaulting to Box Station</span>")
loadWorld()
SortAreas()
process_teleport_locs() //Sets up the wizard teleport locations
@@ -106,7 +106,7 @@ var/datum/controller/subsystem/mapping/SSmapping
if(last)
QDEL_NULL(loader)
#define INIT_ANNOUNCE(X) world << "<span class='boldannounce'>[X]</span>"; log_world(X)
#define INIT_ANNOUNCE(X) to_chat(world, "<span class='boldannounce'>[X]</span>"); log_world(X)
/datum/controller/subsystem/mapping/proc/loadWorld()
//if any of these fail, something has gone horribly, HORRIBLY, wrong
var/list/FailedZs = list()
@@ -172,9 +172,9 @@ var/datum/controller/subsystem/mapping/SSmapping
message_admins("Randomly rotating map to [VM.map_name]")
. = changemap(VM)
if (. && VM.map_name != config.map_name)
world << "<span class='boldannounce'>Map rotation has chosen [VM.map_name] for next round!</span>"
to_chat(world, "<span class='boldannounce'>Map rotation has chosen [VM.map_name] for next round!</span>")
/datum/controller/subsystem/mapping/proc/changemap(var/datum/map_config/VM)
/datum/controller/subsystem/mapping/proc/changemap(var/datum/map_config/VM)
if(!VM.MakeNextMap())
next_map_config = new(default_to_box = TRUE)
message_admins("Failed to set new map with next_map.json for [VM.map_name]! Using default as backup!")

View File

@@ -25,18 +25,18 @@ var/datum/controller/subsystem/minimap/SSminimap
fdel(hash_path())
text2file(hash, hash_path())
else
world << "<span class='boldannounce'>Minimap generation disabled. Loading from cache...</span>"
to_chat(world, "<span class='boldannounce'>Minimap generation disabled. Loading from cache...</span>")
var/fileloc = 0
if(check_files(0)) //Let's first check if we have maps cached in the data folder. NOTE: This will override the backup files even if this map is older.
if(hash != trim(file2text(hash_path())))
world << "<span class='boldannounce'>Loaded cached minimap is outdated. There may be minor discrepancies in layout.</span>" //Disclaimer against players saying map is wrong.
to_chat(world, "<span class='boldannounce'>Loaded cached minimap is outdated. There may be minor discrepancies in layout.</span>" )
fileloc = 0
else
if(!check_files(1))
world << "<span class='boldannounce'>Failed to load backup minimap file. Aborting.</span>" //We couldn't find something. Bail to prevent issues with null files
to_chat(world, "<span class='boldannounce'>Failed to load backup minimap file. Aborting.</span>" )
return
fileloc = 1 //No map image cached with the current map, and we have a backup. Let's fall back to it.
world << "<span class='boldannounce'>No cached minimaps detected. Backup files loaded.</span>"
to_chat(world, "<span class='boldannounce'>No cached minimaps detected. Backup files loaded.</span>")
for(var/z in z_levels)
register_asset("minimap_[z].png", fcopy_rsc(map_path(z,fileloc)))
..()

View File

@@ -155,7 +155,7 @@ var/list/obj/item/device/paicard/pai_card_list = list()
if(!(ROLE_PAI in G.client.prefs.be_special))
continue
//G << 'sound/misc/server-ready.ogg' //Alerting them to their consideration
G << "<span class='ghostalert'>Someone is requesting a pAI personality! Use the pAI button to submit yourself as one.</span>"
to_chat(G, "<span class='ghostalert'>Someone is requesting a pAI personality! Use the pAI button to submit yourself as one.</span>")
addtimer(CALLBACK(src, .proc/spam_again), spam_delay)
var/list/available = list()
for(var/datum/paiCandidate/c in SSpai.candidates)

View File

@@ -20,7 +20,7 @@ var/datum/controller/subsystem/server_maint/SSserver
if(C.is_afk(INACTIVITY_KICK))
if(!istype(C.mob, /mob/dead))
log_access("AFK: [key_name(C)]")
C << "<span class='danger'>You have been inactive for more than 10 minutes and have been disconnected.</span>"
to_chat(C, "<span class='danger'>You have been inactive for more than 10 minutes and have been disconnected.</span>")
qdel(C)
if(config.sql_enabled)

View File

@@ -176,33 +176,33 @@ var/datum/controller/subsystem/shuttle/SSshuttle
emergency = backup_shuttle
if(world.time - round_start_time < config.shuttle_refuel_delay)
user << "The emergency shuttle is refueling. Please wait another [abs(round(((world.time - round_start_time) - config.shuttle_refuel_delay)/600))] minutes before trying again."
to_chat(user, "The emergency shuttle is refueling. Please wait another [abs(round(((world.time - round_start_time) - config.shuttle_refuel_delay)/600))] minutes before trying again.")
return
switch(emergency.mode)
if(SHUTTLE_RECALL)
user << "The emergency shuttle may not be called while returning to Centcom."
to_chat(user, "The emergency shuttle may not be called while returning to Centcom.")
return
if(SHUTTLE_CALL)
user << "The emergency shuttle is already on its way."
to_chat(user, "The emergency shuttle is already on its way.")
return
if(SHUTTLE_DOCKED)
user << "The emergency shuttle is already here."
to_chat(user, "The emergency shuttle is already here.")
return
if(SHUTTLE_IGNITING)
user << "The emergency shuttle is firing its engines to leave."
to_chat(user, "The emergency shuttle is firing its engines to leave.")
return
if(SHUTTLE_ESCAPE)
user << "The emergency shuttle is moving away to a safe distance."
to_chat(user, "The emergency shuttle is moving away to a safe distance.")
return
if(SHUTTLE_STRANDED)
user << "The emergency shuttle has been disabled by Centcom."
to_chat(user, "The emergency shuttle has been disabled by Centcom.")
return
call_reason = trim(html_encode(call_reason))
if(length(call_reason) < CALL_SHUTTLE_REASON_LENGTH && seclevel2num(get_security_level()) > SEC_LEVEL_GREEN)
user << "You must provide a reason."
to_chat(user, "You must provide a reason.")
return
var/area/signal_origin = get_area(user)
@@ -368,7 +368,7 @@ var/datum/controller/subsystem/shuttle/SSshuttle
transit_width += M.height
transit_height += M.width
/*
world << "The attempted transit dock will be [transit_width] width, and \
to_chat(world, "The attempted transit dock will be [transit_width] width, and \)
[transit_height] in height. The travel dir is [travel_dir]."
*/
@@ -398,17 +398,17 @@ var/datum/controller/subsystem/shuttle/SSshuttle
continue base
if(!(T.flags & UNUSED_TRANSIT_TURF))
continue base
//world << "[COORD(topleft)] and [COORD(bottomright)]"
//to_chat(world, "[COORD(topleft)] and [COORD(bottomright)]")
break base
if((!proposed_zone) || (!proposed_zone.len))
return FALSE
var/turf/topleft = proposed_zone[1]
//world << "[COORD(topleft)] is TOPLEFT"
//to_chat(world, "[COORD(topleft)] is TOPLEFT")
// Then create a transit docking port in the middle
var/coords = M.return_coords(0, 0, dock_dir)
//world << json_encode(coords)
//to_chat(world, json_encode(coords))
/* 0------2
| |
| |
@@ -429,7 +429,7 @@ var/datum/controller/subsystem/shuttle/SSshuttle
var/turf/low_point = locate(lowx, lowy, topleft.z)
new /obj/effect/landmark/stationary(low_point)
world << "Starting at the low point, we go [x2],[y2]"
to_chat(world, "Starting at the low point, we go [x2],[y2]")
*/
// Then invert the numbers
var/transit_x = topleft.x + SHUTTLE_TRANSIT_BORDER + abs(x2)
@@ -446,11 +446,11 @@ var/datum/controller/subsystem/shuttle/SSshuttle
if(WEST)
transit_path = /turf/open/space/transit/west
//world << "Docking port at [transit_x], [transit_y], [topleft.z]"
//to_chat(world, "Docking port at [transit_x], [transit_y], [topleft.z]")
var/turf/midpoint = locate(transit_x, transit_y, topleft.z)
if(!midpoint)
return FALSE
//world << "Making transit dock at [COORD(midpoint)]"
//to_chat(world, "Making transit dock at [COORD(midpoint)]")
var/area/shuttle/transit/A = new()
A.parallax_movedir = travel_dir
var/obj/docking_port/stationary/transit/new_transit_dock = new(midpoint)

View File

@@ -62,7 +62,7 @@ var/datum/controller/subsystem/ticker/ticker
/datum/controller/subsystem/ticker/Initialize(timeofday)
var/list/music = file2list(ROUND_START_MUSIC_LIST, "\n")
login_music = pick(music)
if(!syndicate_code_phrase)
syndicate_code_phrase = generate_code_phrase()
if(!syndicate_code_response)
@@ -77,7 +77,7 @@ var/datum/controller/subsystem/ticker/ticker
start_at = world.time + (config.lobby_countdown * 10)
for(var/client/C in clients)
window_flash(C, ignorepref = TRUE) //let them know lobby has opened up.
world << "<span class='boldnotice'>Welcome to [station_name()]!</span>"
to_chat(world, "<span class='boldnotice'>Welcome to [station_name()]!</span>")
current_state = GAME_STATE_PREGAME
fire()
if(GAME_STATE_PREGAME)
@@ -125,7 +125,7 @@ var/datum/controller/subsystem/ticker/ticker
declare_completion(force_ending)
/datum/controller/subsystem/ticker/proc/setup()
world << "<span class='boldannounce'>Starting game...</span>"
to_chat(world, "<span class='boldannounce'>Starting game...</span>")
var/init_start = world.timeofday
//Create and announce mode
var/list/datum/game_mode/runnable_modes
@@ -143,14 +143,14 @@ var/datum/controller/subsystem/ticker/ticker
if(!mode)
if(!runnable_modes.len)
world << "<B>Unable to choose playable game mode.</B> Reverting to pre-game lobby."
to_chat(world, "<B>Unable to choose playable game mode.</B> Reverting to pre-game lobby.")
return 0
mode = pickweight(runnable_modes)
else
mode = config.pick_mode(master_mode)
if(!mode.can_start())
world << "<B>Unable to start [mode.name].</B> Not enough players, [mode.required_players] players and [mode.required_enemies] eligible antagonists needed. Reverting to pre-game lobby."
to_chat(world, "<B>Unable to start [mode.name].</B> Not enough players, [mode.required_players] players and [mode.required_enemies] eligible antagonists needed. Reverting to pre-game lobby.")
qdel(mode)
mode = null
SSjob.ResetOccupations()
@@ -168,7 +168,7 @@ var/datum/controller/subsystem/ticker/ticker
if(!can_continue)
qdel(mode)
mode = null
world << "<B>Error setting up [master_mode].</B> Reverting to pre-game lobby."
to_chat(world, "<B>Error setting up [master_mode].</B> Reverting to pre-game lobby.")
SSjob.ResetOccupations()
return 0
else
@@ -180,8 +180,7 @@ var/datum/controller/subsystem/ticker/ticker
for (var/datum/game_mode/M in runnable_modes)
modes += M.name
modes = sortList(modes)
world << "<b>The gamemode is: secret!\n\
Possibilities:</B> [english_list(modes)]"
to_chat(world, "<b>The gamemode is: secret!\nPossibilities:</B> [english_list(modes)]")
else
mode.announce()
@@ -205,16 +204,16 @@ var/datum/controller/subsystem/ticker/ticker
log_world("Game start took [(world.timeofday - init_start)/10]s")
round_start_time = world.time
world << "<FONT color='blue'><B>Welcome to [station_name()], enjoy your stay!</B></FONT>"
to_chat(world, "<FONT color='blue'><B>Welcome to [station_name()], enjoy your stay!</B></FONT>")
world << sound('sound/AI/welcome.ogg')
current_state = GAME_STATE_PLAYING
if(SSevent.holidays)
world << "<font color='blue'>and...</font>"
to_chat(world, "<font color='blue'>and...</font>")
for(var/holidayname in SSevent.holidays)
var/datum/holiday/holiday = SSevent.holidays[holidayname]
world << "<h4>[holiday.greet()]</h4>"
to_chat(world, "<h4>[holiday.greet()]</h4>")
PostSetup()
@@ -350,7 +349,7 @@ var/datum/controller/subsystem/ticker/ticker
if(mode)
mode.explosion_in_progress = 0
world << "<B>The station was destoyed by the nuclear blast!</B>"
to_chat(world, "<B>The station was destoyed by the nuclear blast!</B>")
mode.station_was_nuked = (station_missed<2) //station_missed==1 is a draw. the station becomes irradiated and needs to be evacuated.
addtimer(CALLBACK(src, .proc/finish_cinematic, bombloc, actually_blew_up), 300)
@@ -393,7 +392,7 @@ var/datum/controller/subsystem/ticker/ticker
if(captainless)
for(var/mob/new_player/N in player_list)
if(N.new_character)
N << "Captainship not forced on anyone."
to_chat(N, "Captainship not forced on anyone.")
CHECK_TICK
/datum/controller/subsystem/ticker/proc/transfer_characters()
@@ -404,7 +403,7 @@ var/datum/controller/subsystem/ticker/ticker
qdel(player)
living.notransform = TRUE
if(living.client)
var/obj/screen/splash/S = new(living.client, TRUE)
var/obj/screen/splash/S = new(living.client, TRUE)
S.Fade(TRUE)
livings += living
if(livings.len)
@@ -413,7 +412,7 @@ var/datum/controller/subsystem/ticker/ticker
/datum/controller/subsystem/ticker/proc/release_characters(list/livings)
for(var/I in livings)
var/mob/living/L = I
L.notransform = FALSE
L.notransform = FALSE
/datum/controller/subsystem/ticker/proc/declare_completion()
set waitfor = FALSE
@@ -422,7 +421,7 @@ var/datum/controller/subsystem/ticker/ticker
var/num_escapees = 0
var/num_shuttle_escapees = 0
world << "<BR><BR><BR><FONT size=3><B>The round has ended.</B></FONT>"
to_chat(world, "<BR><BR><BR><FONT size=3><B>The round has ended.</B></FONT>")
//Player status report
for(var/mob/Player in mob_list)
@@ -434,16 +433,16 @@ var/datum/controller/subsystem/ticker/ticker
if(SSshuttle && SSshuttle.emergency)
shuttle_area = SSshuttle.emergency.areaInstance
if(!Player.onCentcom() && !Player.onSyndieBase())
Player << "<font color='blue'><b>You managed to survive, but were marooned on [station_name()]...</b></FONT>"
to_chat(Player, "<font color='blue'><b>You managed to survive, but were marooned on [station_name()]...</b></FONT>")
else
num_escapees++
Player << "<font color='green'><b>You managed to survive the events on [station_name()] as [Player.real_name].</b></FONT>"
to_chat(Player, "<font color='green'><b>You managed to survive the events on [station_name()] as [Player.real_name].</b></FONT>")
if(get_area(Player) == shuttle_area)
num_shuttle_escapees++
else
Player << "<font color='green'><b>You managed to survive the events on [station_name()] as [Player.real_name].</b></FONT>"
to_chat(Player, "<font color='green'><b>You managed to survive the events on [station_name()] as [Player.real_name].</b></FONT>")
else
Player << "<font color='red'><b>You did not survive the events on [station_name()]...</b></FONT>"
to_chat(Player, "<font color='red'><b>You did not survive the events on [station_name()]...</b></FONT>")
CHECK_TICK
@@ -452,50 +451,50 @@ var/datum/controller/subsystem/ticker/ticker
end_state.count()
var/station_integrity = min(PERCENT(start_state.score(end_state)), 100)
world << "<BR>[TAB]Shift Duration: <B>[round(world.time / 36000)]:[add_zero("[world.time / 600 % 60]", 2)]:[world.time / 100 % 6][world.time / 100 % 10]</B>"
world << "<BR>[TAB]Station Integrity: <B>[mode.station_was_nuked ? "<font color='red'>Destroyed</font>" : "[station_integrity]%"]</B>"
to_chat(world, "<BR>[TAB]Shift Duration: <B>[round(world.time / 36000)]:[add_zero("[world.time / 600 % 60]", 2)]:[world.time / 100 % 6][world.time / 100 % 10]</B>")
to_chat(world, "<BR>[TAB]Station Integrity: <B>[mode.station_was_nuked ? "<font color='red'>Destroyed</font>" : "[station_integrity]%"]</B>")
if(mode.station_was_nuked)
ticker.news_report = STATION_DESTROYED_NUKE
var/total_players = joined_player_list.len
if(joined_player_list.len)
world << "<BR>[TAB]Total Population: <B>[total_players]</B>"
to_chat(world, "<BR>[TAB]Total Population: <B>[total_players]</B>")
if(station_evacuated)
world << "<BR>[TAB]Evacuation Rate: <B>[num_escapees] ([PERCENT(num_escapees/total_players)]%)</B>"
world << "<BR>[TAB](on emergency shuttle): <B>[num_shuttle_escapees] ([PERCENT(num_shuttle_escapees/total_players)]%)</B>"
to_chat(world, "<BR>[TAB]Evacuation Rate: <B>[num_escapees] ([PERCENT(num_escapees/total_players)]%)</B>")
to_chat(world, "<BR>[TAB](on emergency shuttle): <B>[num_shuttle_escapees] ([PERCENT(num_shuttle_escapees/total_players)]%)</B>")
news_report = STATION_EVACUATED
if(SSshuttle.emergency.is_hijacked())
news_report = SHUTTLE_HIJACK
world << "<BR>[TAB]Survival Rate: <B>[num_survivors] ([PERCENT(num_survivors/total_players)]%)</B>"
world << "<BR>"
to_chat(world, "<BR>[TAB]Survival Rate: <B>[num_survivors] ([PERCENT(num_survivors/total_players)]%)</B>")
to_chat(world, "<BR>")
CHECK_TICK
//Silicon laws report
for (var/mob/living/silicon/ai/aiPlayer in mob_list)
if (aiPlayer.stat != 2 && aiPlayer.mind)
world << "<b>[aiPlayer.name] (Played by: [aiPlayer.mind.key])'s laws at the end of the round were:</b>"
to_chat(world, "<b>[aiPlayer.name] (Played by: [aiPlayer.mind.key])'s laws at the end of the round were:</b>")
aiPlayer.show_laws(1)
else if (aiPlayer.mind) //if the dead ai has a mind, use its key instead
world << "<b>[aiPlayer.name] (Played by: [aiPlayer.mind.key])'s laws when it was deactivated were:</b>"
to_chat(world, "<b>[aiPlayer.name] (Played by: [aiPlayer.mind.key])'s laws when it was deactivated were:</b>")
aiPlayer.show_laws(1)
world << "<b>Total law changes: [aiPlayer.law_change_counter]</b>"
to_chat(world, "<b>Total law changes: [aiPlayer.law_change_counter]</b>")
if (aiPlayer.connected_robots.len)
var/robolist = "<b>[aiPlayer.real_name]'s minions were:</b> "
for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots)
if(robo.mind)
robolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.mind.key]), ":" (Played by: [robo.mind.key]), "]"
world << "[robolist]"
to_chat(world, "[robolist]")
CHECK_TICK
for (var/mob/living/silicon/robot/robo in mob_list)
if (!robo.connected_ai && robo.mind)
if (robo.stat != 2)
world << "<b>[robo.name] (Played by: [robo.mind.key]) survived as an AI-less borg! Its laws were:</b>"
to_chat(world, "<b>[robo.name] (Played by: [robo.mind.key]) survived as an AI-less borg! Its laws were:</b>")
else
world << "<b>[robo.name] (Played by: [robo.mind.key]) was unable to survive the rigors of being a cyborg without an AI. Its laws were:</b>"
to_chat(world, "<b>[robo.name] (Played by: [robo.mind.key]) was unable to survive the rigors of being a cyborg without an AI. Its laws were:</b>")
if(robo) //How the hell do we lose robo between here and the world messages directly above this?
robo.laws.show_laws(world)
@@ -552,7 +551,7 @@ var/datum/controller/subsystem/ticker/ticker
else
borertext += "failed"
borertext += ")"
world << borertext
to_chat(world, borertext)
var/total_borers = 0
for(var/mob/living/simple_animal/borer/B in borers)
@@ -567,12 +566,12 @@ var/datum/controller/subsystem/ticker/ticker
total_borer_hosts++
if(total_borer_hosts_needed <= total_borer_hosts)
borerwin = TRUE
world << "<b>There were [total_borers] borers alive at round end!</b>"
world << "<b>A total of [total_borer_hosts] borers with hosts escaped on the shuttle alive. The borers needed [total_borer_hosts_needed] hosts to escape.</b>"
to_chat(world, "<b>There were [total_borers] borers alive at round end!</b>")
to_chat(world, "<b>A total of [total_borer_hosts] borers with hosts escaped on the shuttle alive. The borers needed [total_borer_hosts_needed] hosts to escape.</b>")
if(borerwin)
world << "<b><font color='green'>The borers were successful!</font></b>"
to_chat(world, "<b><font color='green'>The borers were successful!</font></b>")
else
world << "<b><font color='red'>The borers have failed!</font></b>"
to_chat(world, "<b><font color='red'>The borers have failed!</font></b>")
CHECK_TICK
@@ -618,8 +617,7 @@ var/datum/controller/subsystem/ticker/ticker
m = pick(memetips)
if(m)
world << "<font color='purple'><b>Tip of the round: \
</b>[html_encode(m)]</font>"
to_chat(world, "<font color='purple'><b>Tip of the round: </b>[html_encode(m)]</font>")
/datum/controller/subsystem/ticker/proc/check_queue()
if(!queued_players.len || !config.hard_popcap)
@@ -632,14 +630,14 @@ var/datum/controller/subsystem/ticker/ticker
if(5) //every 5 ticks check if there is a slot available
if(living_player_count() < config.hard_popcap)
if(next_in_line && next_in_line.client)
next_in_line << "<span class='userdanger'>A slot has opened! You have approximately 20 seconds to join. <a href='?src=\ref[next_in_line];late_join=override'>\>\>Join Game\<\<</a></span>"
to_chat(next_in_line, "<span class='userdanger'>A slot has opened! You have approximately 20 seconds to join. <a href='?src=\ref[next_in_line];late_join=override'>\>\>Join Game\<\<</a></span>")
next_in_line << sound('sound/misc/notice1.ogg')
next_in_line.LateChoices()
return
queued_players -= next_in_line //Client disconnected, remove he
queue_delay = 0 //No vacancy: restart timer
if(25 to INFINITY) //No response from the next in line when a vacancy exists, remove he
next_in_line << "<span class='danger'>No response recieved. You have been removed from the line.</span>"
to_chat(next_in_line, "<span class='danger'>No response recieved. You have been removed from the line.</span>")
queued_players -= next_in_line
queue_delay = 0
@@ -760,4 +758,4 @@ var/datum/controller/subsystem/ticker/ticker
start_at = world.time + newtime
else
timeLeft = newtime

View File

@@ -108,7 +108,7 @@ var/datum/controller/subsystem/vote/SSvote
text += "<b>Vote Result: Inconclusive - No Votes!</b>"
log_vote(text)
remove_action_buttons()
world << "\n<font color='purple'>[text]</font>"
to_chat(world, "\n<font color='purple'>[text]</font>")
return .
/datum/controller/subsystem/vote/proc/result()
@@ -135,7 +135,7 @@ var/datum/controller/subsystem/vote/SSvote
if(!active_admins)
world.Reboot("Restart vote successful.", "end_error", "restart vote")
else
world << "<span style='boldannounce'>Notice:Restart vote will not restart the server automatically because there are active admins on.</span>"
to_chat(world, "<span style='boldannounce'>Notice:Restart vote will not restart the server automatically because there are active admins on.</span>")
message_admins("A restart vote has passed, but there are active admins on with +server, so it has been canceled. If you wish, you may restart the server.")
return .
@@ -156,7 +156,7 @@ var/datum/controller/subsystem/vote/SSvote
if(started_time)
var/next_allowed_time = (started_time + config.vote_delay)
if(mode)
usr << "<span class='warning'>There is already a vote in progress! please wait for it to finish.</span>"
to_chat(usr, "<span class='warning'>There is already a vote in progress! please wait for it to finish.</span>")
return 0
var/admin = FALSE
@@ -165,7 +165,7 @@ var/datum/controller/subsystem/vote/SSvote
admin = TRUE
if(next_allowed_time > world.time && !admin)
usr << "<span class='warning'>A vote was initiated recently, you must wait roughly [(next_allowed_time-world.time)/10] seconds before a new vote can be started!</span>"
to_chat(usr, "<span class='warning'>A vote was initiated recently, you must wait roughly [(next_allowed_time-world.time)/10] seconds before a new vote can be started!</span>")
return 0
reset()
@@ -192,7 +192,7 @@ var/datum/controller/subsystem/vote/SSvote
if(mode == "custom")
text += "\n[question]"
log_vote(text)
world << "\n<font color='purple'><b>[text]</b>\nType <b>vote</b> or click <a href='?src=\ref[src]'>here</a> to place your votes.\nYou have [config.vote_period/10] seconds to vote.</font>"
to_chat(world, "\n<font color='purple'><b>[text]</b>\nType <b>vote</b> or click <a href='?src=\ref[src]'>here</a> to place your votes.\nYou have [config.vote_period/10] seconds to vote.</font>")
time_remaining = round(config.vote_period/10)
for(var/c in clients)
var/client/C = c

View File

@@ -345,7 +345,7 @@
owner.research_scanner++
else
owner.research_scanner--
owner << "<span class='notice'>[target] research scanner has been [active ? "activated" : "deactivated"].</span>"
to_chat(owner, "<span class='notice'>[target] research scanner has been [active ? "activated" : "deactivated"].</span>")
return 1
/datum/action/item_action/toggle_research_scanner/Remove(mob/M)

View File

@@ -382,28 +382,28 @@
if (devillaws && devillaws.len) //Yes, devil laws go in FRONT of zeroth laws, as the devil must still obey it's ban/obligation.
for(var/i in devillaws)
who << "666. [i]"
to_chat(who, "666. [i]")
if (zeroth)
who << "0. [zeroth]"
to_chat(who, "0. [zeroth]")
for (var/index = 1, index <= ion.len, index++)
var/law = ion[index]
var/num = ionnum()
who << "[num]. [law]"
to_chat(who, "[num]. [law]")
var/number = 1
for (var/index = 1, index <= inherent.len, index++)
var/law = inherent[index]
if (length(law) > 0)
who << "[number]. [law]"
to_chat(who, "[number]. [law]")
number++
for (var/index = 1, index <= supplied.len, index++)
var/law = supplied[index]
if (length(law) > 0)
who << "[number]. [law]"
to_chat(who, "[number]. [law]")
number++
/datum/ai_laws/proc/clear_zeroth_law(force) //only removes zeroth from antag ai if force is 1

View File

@@ -29,7 +29,7 @@
/datum/antagonist/proc/on_gain() //on initial gain of antag datum, do this. should only be called once per datum
apply_innate_effects()
if(!silent_update && some_flufftext)
owner << some_flufftext
to_chat(owner, some_flufftext)
/datum/antagonist/proc/apply_innate_effects() //applies innate effects to the owner, may be called multiple times due to mind transferral, but should only be called once per mob
//antag huds would go here if antag huds were less completely unworkable as-is

View File

@@ -20,20 +20,20 @@
/datum/antagonist/clockcultist/give_to_body(mob/living/new_body)
if(!silent_update)
if(issilicon(new_body))
new_body << "<span class='heavy_brass'>You are unable to compute this truth. Your vision glows a brilliant yellow, and all at once it comes to you. Ratvar, the Clockwork Justiciar, \
lies in exile, derelict and forgotten in an unseen realm.</span>"
to_chat(new_body, "<span class='heavy_brass'>You are unable to compute this truth. Your vision glows a brilliant yellow, and all at once it comes to you. Ratvar, the Clockwork Justiciar, \
lies in exile, derelict and forgotten in an unseen realm.</span>")
else
new_body << "<span class='heavy_brass'>[iscarbon(new_body) ? "Your mind is racing! Your body feels incredibly light! ":""]Your world glows a brilliant yellow! All at once it comes to you. \
Ratvar, the Clockwork Justiciar, lies in exile, derelict and forgotten in an unseen realm.</span>"
to_chat(new_body, "<span class='heavy_brass'>[iscarbon(new_body) ? "Your mind is racing! Your body feels incredibly light! ":""]Your world glows a brilliant yellow! All at once it comes to you. \
Ratvar, the Clockwork Justiciar, lies in exile, derelict and forgotten in an unseen realm.</span>")
. = ..()
if(!silent_update && new_body)
if(.)
new_body.visible_message("<span class='heavy_brass'>[new_body]'s eyes glow a blazing yellow!</span>")
new_body << "<span class='heavy_brass'>Assist your new companions in their righteous efforts. Your goal is theirs, and theirs yours. You serve the Clockwork Justiciar above all else. \
Perform his every whim without hesitation.</span>"
to_chat(new_body, "<span class='heavy_brass'>Assist your new companions in their righteous efforts. Your goal is theirs, and theirs yours. You serve the Clockwork Justiciar above all else. \
Perform his every whim without hesitation.</span>")
else
new_body.visible_message("<span class='boldwarning'>[new_body] seems to resist an unseen force!</span>")
new_body << "<span class='userdanger'>And yet, you somehow push it all away.</span>"
to_chat(new_body, "<span class='userdanger'>And yet, you somehow push it all away.</span>")
/datum/antagonist/clockcultist/on_gain()
if(ticker && ticker.mode && owner.mind)
@@ -47,13 +47,13 @@
if(issilicon(owner))
var/mob/living/silicon/S = owner
if(iscyborg(S) && !silent_update)
S << "<span class='boldwarning'>You have been desynced from your master AI.\n\
In addition, your onboard camera is no longer active and you have gained additional equipment, including a limited clockwork slab.</span>"
to_chat(S, "<span class='boldwarning'>You have been desynced from your master AI.\n\
In addition, your onboard camera is no longer active and you have gained additional equipment, including a limited clockwork slab.</span>")
if(isAI(S))
S << "<span class='boldwarning'>You are able to use your cameras to listen in on conversations.</span>"
S << "<span class='heavy_brass'>You can communicate with other servants by using the Hierophant Network action button in the upper left.</span>"
to_chat(S, "<span class='boldwarning'>You are able to use your cameras to listen in on conversations.</span>")
to_chat(S, "<span class='heavy_brass'>You can communicate with other servants by using the Hierophant Network action button in the upper left.</span>")
else if(isbrain(owner) || isclockmob(owner))
owner << "<span class='nezbere'>You can communicate with other servants by using the Hierophant Network action button in the upper left.</span>"
to_chat(owner, "<span class='nezbere'>You can communicate with other servants by using the Hierophant Network action button in the upper left.</span>")
..()
if(istype(ticker.mode, /datum/game_mode/clockwork_cult))
var/datum/game_mode/clockwork_cult/C = ticker.mode
@@ -89,7 +89,7 @@
R.visible_message("<span class='heavy_brass'>[R]'s eyes glow a blazing yellow!</span>", \
"<span class='heavy_brass'>Assist your new companions in their righteous efforts. Your goal is theirs, and theirs yours. You serve the Clockwork Justiciar above all else. Perform his every \
whim without hesitation.</span>")
R << "<span class='boldwarning'>Your onboard camera is no longer active and you have gained additional equipment, including a limited clockwork slab.</span>"
to_chat(R, "<span class='boldwarning'>Your onboard camera is no longer active and you have gained additional equipment, including a limited clockwork slab.</span>")
add_servant_of_ratvar(R, TRUE)
S.laws = new/datum/ai_laws/ratvar
S.laws.associate(S)
@@ -156,5 +156,5 @@
owner.mind.special_role = null
owner.log_message("<font color=#BE8700>Has renounced the cult of Ratvar!</font>", INDIVIDUAL_ATTACK_LOG)
if(iscyborg(owner))
owner << "<span class='warning'>Despite your freedom from Ratvar's influence, you are still irreparably damaged and no longer possess certain functions such as AI linking.</span>"
to_chat(owner, "<span class='warning'>Despite your freedom from Ratvar's influence, you are still irreparably damaged and no longer possess certain functions such as AI linking.</span>")
..()

View File

@@ -43,7 +43,7 @@
if(ticker && ticker.mode)
ticker.mode.cult -= owner.mind
ticker.mode.update_cult_icons_removed(owner.mind)
owner << "<span class='userdanger'>An unfamiliar white light flashes through your mind, cleansing the taint of the Dark One and all your memories as its servant.</span>"
to_chat(owner, "<span class='userdanger'>An unfamiliar white light flashes through your mind, cleansing the taint of the Dark One and all your memories as its servant.</span>")
owner.log_message("<font color=#960000>Has renounced the cult of Nar'Sie!</font>", INDIVIDUAL_ATTACK_LOG)
if(!silent_update)
owner.visible_message("<span class='big'>[owner] looks like [owner.p_they()] just reverted to their old faith!</span>")

View File

@@ -249,7 +249,7 @@
winset(user, windowid, "on-close=\".windowclose [param]\"")
//world << "OnClose [user]: [windowid] : ["on-close=\".windowclose [param]\""]"
//to_chat(world, "OnClose [user]: [windowid] : ["on-close=\".windowclose [param]\""]")
// the on-close client verb
@@ -261,12 +261,12 @@
set hidden = 1 // hide this verb from the user's panel
set name = ".windowclose" // no autocomplete on cmd line
//world << "windowclose: [atomref]"
//to_chat(world, "windowclose: [atomref]")
if(atomref!="null") // if passed a real atomref
var/hsrc = locate(atomref) // find the reffed atom
var/href = "close=1"
if(hsrc)
//world << "[src] Topic [href] [hsrc]"
//to_chat(world, "[src] Topic [href] [hsrc]")
usr = src.mob
src.Topic(href, params2list(href), hsrc) // this will direct to the atom's
return // Topic() proc via client.Topic()
@@ -274,6 +274,6 @@
// no atomref specified (or not found)
// so just reset the user mob's machine var
if(src && src.mob)
//world << "[src] was [src.mob.machine], setting to null"
//to_chat(world, "[src] was [src.mob.machine], setting to null")
src.mob.unset_machine()
return

View File

@@ -37,7 +37,7 @@
var/static/cookieoffset = rand(1, 9999) //to force cookies to reset after the round.
if(!usr.client || !usr.client.holder)
usr << "<span class='danger'>You need to be an administrator to access this.</span>"
to_chat(usr, "<span class='danger'>You need to be an administrator to access this.</span>")
return
if(!D)
@@ -482,7 +482,7 @@
var/mob/M = locate(href_list["mob_player_panel"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
src.holder.show_player_panel(M)
@@ -494,7 +494,7 @@
var/mob/M = locate(href_list["godmode"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
src.cmd_admin_godmode(M)
@@ -506,7 +506,7 @@
var/datum/D = locate(href_list["mark_object"])
if(!istype(D))
usr << "This can only be done to instances of type /datum"
to_chat(usr, "This can only be done to instances of type /datum")
return
src.holder.marked_datum = D
@@ -527,7 +527,7 @@
var/mob/M = locate(href_list["regenerateicons"])
if(!ismob(M))
usr << "This can only be done to instances of type /mob"
to_chat(usr, "This can only be done to instances of type /mob")
return
M.regenerate_icons()
@@ -544,7 +544,7 @@
var/mob/M = locate(href_list["rename"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
var/new_name = stripped_input(usr,"What would you like to name this mob?","Input a name",M.real_name,MAX_NAME_LEN)
@@ -561,7 +561,7 @@
var/D = locate(href_list["datumedit"])
if(!istype(D,/datum))
usr << "This can only be used on datums"
to_chat(usr, "This can only be used on datums")
return
modify_variables(D, href_list["varnameedit"], 1)
@@ -572,7 +572,7 @@
var/D = locate(href_list["datumchange"])
if(!istype(D,/datum))
usr << "This can only be used on datums"
to_chat(usr, "This can only be used on datums")
return
modify_variables(D, href_list["varnamechange"], 0)
@@ -583,7 +583,7 @@
var/datum/D = locate(href_list["datummass"])
if(!istype(D))
usr << "This can only be used on instances of type /datum"
to_chat(usr, "This can only be used on instances of type /datum")
return
cmd_mass_modify_object_variables(D, href_list["varnamemass"])
@@ -595,7 +595,7 @@
var/list/L = locate(href_list["listedit"])
if (!istype(L))
usr << "This can only be used on instances of type /list"
to_chat(usr, "This can only be used on instances of type /list")
return
mod_list(L, null, "list", "contents", index, autodetect_class = TRUE)
@@ -607,7 +607,7 @@
var/list/L = locate(href_list["listchange"])
if (!istype(L))
usr << "This can only be used on instances of type /list"
to_chat(usr, "This can only be used on instances of type /list")
return
mod_list(L, null, "list", "contents", index, autodetect_class = FALSE)
@@ -619,7 +619,7 @@
var/list/L = locate(href_list["listremove"])
if (!istype(L))
usr << "This can only be used on instances of type /list"
to_chat(usr, "This can only be used on instances of type /list")
return
var/variable = L[index]
@@ -634,7 +634,7 @@
else if(href_list["listadd"])
var/list/L = locate(href_list["listadd"])
if (!istype(L))
usr << "This can only be used on instances of type /list"
to_chat(usr, "This can only be used on instances of type /list")
return
mod_list_add(L, null, "list", "contents")
@@ -642,7 +642,7 @@
else if(href_list["listdupes"])
var/list/L = locate(href_list["listdupes"])
if (!istype(L))
usr << "This can only be used on instances of type /list"
to_chat(usr, "This can only be used on instances of type /list")
return
uniqueList_inplace(L)
@@ -653,7 +653,7 @@
else if(href_list["listnulls"])
var/list/L = locate(href_list["listnulls"])
if (!istype(L))
usr << "This can only be used on instances of type /list"
to_chat(usr, "This can only be used on instances of type /list")
return
listclearnulls(L)
@@ -664,7 +664,7 @@
else if(href_list["listlen"])
var/list/L = locate(href_list["listlen"])
if (!istype(L))
usr << "This can only be used on instances of type /list"
to_chat(usr, "This can only be used on instances of type /list")
return
var/value = vv_get_value(VV_NUM)
if (value["class"] != VV_NUM)
@@ -678,7 +678,7 @@
else if(href_list["listshuffle"])
var/list/L = locate(href_list["listshuffle"])
if (!istype(L))
usr << "This can only be used on instances of type /list"
to_chat(usr, "This can only be used on instances of type /list")
return
shuffle_inplace(L)
@@ -692,7 +692,7 @@
var/mob/M = locate(href_list["give_spell"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
src.give_spell(M)
@@ -704,7 +704,7 @@
var/mob/M = locate(href_list["remove_spell"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
remove_spell(M)
@@ -716,7 +716,7 @@
var/mob/M = locate(href_list["give_disease"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
src.give_disease(M)
@@ -728,7 +728,7 @@
var/mob/M = locate(href_list["ninja"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
src.cmd_admin_ninjafy(M)
@@ -740,7 +740,7 @@
var/mob/M = locate(href_list["gib"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
src.cmd_admin_gib(M)
@@ -751,7 +751,7 @@
var/mob/M = locate(href_list["build_mode"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
togglebuildmode(M)
@@ -763,7 +763,7 @@
var/mob/M = locate(href_list["drop_everything"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(usr.client)
@@ -775,7 +775,7 @@
var/mob/M = locate(href_list["direct_control"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(usr.client)
@@ -787,7 +787,7 @@
var/mob/M = locate(href_list["offer_control"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
offer_control(M)
@@ -797,7 +797,7 @@
var/obj/O = locate(href_list["delall"])
if(!isobj(O))
usr << "This can only be used on instances of type /obj"
to_chat(usr, "This can only be used on instances of type /obj")
return
var/action_type = alert("Strict type ([O.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel")
@@ -820,7 +820,7 @@
qdel(Obj)
CHECK_TICK
if(!i)
usr << "No objects of this type exist"
to_chat(usr, "No objects of this type exist")
return
log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ")
message_admins("<span class='notice'>[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) </span>")
@@ -832,7 +832,7 @@
qdel(Obj)
CHECK_TICK
if(!i)
usr << "No objects of this type exist"
to_chat(usr, "No objects of this type exist")
return
log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ")
message_admins("<span class='notice'>[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) </span>")
@@ -862,7 +862,7 @@
if(ID == chosen_id)
valid_id = 1
if(!valid_id)
usr << "<span class='warning'>A reagent with that ID doesn't exist!</span>"
to_chat(usr, "<span class='warning'>A reagent with that ID doesn't exist!</span>")
if("Choose ID")
chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in reagent_options
if(chosen_id)
@@ -880,7 +880,7 @@
var/atom/A = locate(href_list["explode"])
if(!isobj(A) && !ismob(A) && !isturf(A))
usr << "This can only be done to instances of type /obj, /mob and /turf"
to_chat(usr, "This can only be done to instances of type /obj, /mob and /turf")
return
src.cmd_admin_explosion(A)
@@ -892,7 +892,7 @@
var/atom/A = locate(href_list["emp"])
if(!isobj(A) && !ismob(A) && !isturf(A))
usr << "This can only be done to instances of type /obj, /mob and /turf"
to_chat(usr, "This can only be done to instances of type /obj, /mob and /turf")
return
src.cmd_admin_emp(A)
@@ -904,7 +904,7 @@
var/atom/A = locate(href_list["rotatedatum"])
if(!istype(A))
usr << "This can only be done to instances of type /atom"
to_chat(usr, "This can only be done to instances of type /atom")
return
switch(href_list["rotatedir"])
@@ -920,7 +920,7 @@
var/mob/living/carbon/C = locate(href_list["editorgans"])
if(!istype(C))
usr << "This can only be done to instances of type /mob/living/carbon"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
return
manipulate_organs(C)
@@ -932,13 +932,13 @@
var/mob/living/carbon/monkey/Mo = locate(href_list["makehuman"])
if(!istype(Mo))
usr << "This can only be done to instances of type /mob/living/carbon/monkey"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/monkey")
return
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
return
if(!Mo)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
holder.Topic(href, list("humanone"=href_list["makehuman"]))
@@ -948,13 +948,13 @@
var/mob/living/carbon/human/H = locate(href_list["makemonkey"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
holder.Topic(href, list("monkeyone"=href_list["makemonkey"]))
@@ -964,13 +964,13 @@
var/mob/living/carbon/human/H = locate(href_list["makerobot"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
holder.Topic(href, list("makerobot"=href_list["makerobot"]))
@@ -980,13 +980,13 @@
var/mob/living/carbon/human/H = locate(href_list["makealien"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
holder.Topic(href, list("makealien"=href_list["makealien"]))
@@ -996,13 +996,13 @@
var/mob/living/carbon/human/H = locate(href_list["makeslime"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
holder.Topic(href, list("makeslime"=href_list["makeslime"]))
@@ -1012,13 +1012,13 @@
var/mob/living/carbon/H = locate(href_list["makeai"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
return
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform")
return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
holder.Topic(href, list("makeai"=href_list["makeai"]))
@@ -1028,13 +1028,13 @@
var/mob/living/carbon/human/H = locate(href_list["setspecies"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
var/result = input(usr, "Please choose a new species","Species") as null|anything in species_list
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
if(result)
@@ -1047,7 +1047,7 @@
var/mob/living/carbon/C = locate(href_list["editbodypart"])
if(!istype(C))
usr << "This can only be done to instances of type /mob/living/carbon"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
return
var/edit_action = input(usr, "What would you like to do?","Modify Body Part") as null|anything in list("add","remove", "augment")
@@ -1059,7 +1059,7 @@
var/result = input(usr, "Please choose which body part to [edit_action]","[capitalize(edit_action)] Body Part") as null|anything in limb_list
if(!C)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
if(result)
@@ -1069,21 +1069,21 @@
if(BP)
BP.drop_limb()
else
usr << "[C] doesn't have such bodypart."
to_chat(usr, "[C] doesn't have such bodypart.")
if("add")
if(BP)
usr << "[C] already has such bodypart."
to_chat(usr, "[C] already has such bodypart.")
else
if(!C.regenerate_limb(result))
usr << "[C] cannot have such bodypart."
to_chat(usr, "[C] cannot have such bodypart.")
if("augment")
if(ishuman(C))
if(BP)
BP.change_bodypart_status(BODYPART_ROBOTIC, 1)
else
usr << "[C] doesn't have such bodypart."
to_chat(usr, "[C] doesn't have such bodypart.")
else
usr << "Only humans can be augmented."
to_chat(usr, "Only humans can be augmented.")
@@ -1093,25 +1093,24 @@
var/mob/living/carbon/human/H = locate(href_list["purrbation"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
if(!ishumanbasic(H))
usr << "This can only be done to the basic human species \
at the moment."
to_chat(usr, "This can only be done to the basic human species at the moment.")
return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
var/success = purrbation_toggle(H)
if(success)
usr << "Put [H] on purrbation."
to_chat(usr, "Put [H] on purrbation.")
log_admin("[key_name(usr)] has put [key_name(H)] on purrbation.")
message_admins("<span class='notice'>[key_name(usr)] has put [key_name(H)] on purrbation.</span>")
else
usr << "Removed [H] from purrbation."
to_chat(usr, "Removed [H] from purrbation.")
log_admin("[key_name(usr)] has removed [key_name(H)] from purrbation.")
message_admins("<span class='notice'>[key_name(usr)] has removed [key_name(H)] from purrbation.</span>")
@@ -1128,7 +1127,7 @@
var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num
if(!L)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
switch(Text)
@@ -1147,7 +1146,7 @@
if("stamina")
L.adjustStaminaLoss(amount)
else
usr << "You caused an error. DEBUG: Text:[Text] Mob:[L]"
to_chat(usr, "You caused an error. DEBUG: Text:[Text] Mob:[L]")
return
if(amount != 0)

View File

@@ -163,7 +163,7 @@ var/list/advance_cures = list(
return generated
/datum/disease/advance/proc/Refresh(new_name = 0)
//world << "[src.name] \ref[src] - REFRESH!"
//to_chat(world, "[src.name] \ref[src] - REFRESH!")
GenerateProperties()
AssignProperties()
id = null
@@ -255,7 +255,7 @@ var/list/advance_cures = list(
/datum/disease/advance/proc/GenerateCure()
if(properties && properties.len)
var/res = Clamp(properties["resistance"] - (symptoms.len / 2), 1, advance_cures.len)
//world << "Res = [res]"
//to_chat(world, "Res = [res]")
cures = list(advance_cures[res])
// Get the cure name from the cure_id
@@ -327,7 +327,7 @@ var/list/advance_cures = list(
// Mix a list of advance diseases and return the mixed result.
/proc/Advance_Mix(var/list/D_list)
//world << "Mixing!!!!"
//to_chat(world, "Mixing!!!!")
var/list/diseases = list()
@@ -352,7 +352,7 @@ var/list/advance_cures = list(
D2.Mix(D1)
// Should be only 1 entry left, but if not let's only return a single entry
//world << "END MIXING!!!!!"
//to_chat(world, "END MIXING!!!!!")
var/datum/disease/advance/to_return = pick(diseases)
to_return.Refresh(1)
return to_return
@@ -421,7 +421,7 @@ var/list/advance_cures = list(
/mob/verb/test()
for(var/datum/disease/D in SSdisease.processing)
src << "<a href='?_src_=vars;Vars=\ref[D]'>[D.name] - [D.holder]</a>"
to_chat(src, "<a href='?_src_=vars;Vars=\ref[D]'>[D.name] - [D.holder]</a>")
*/

View File

@@ -32,17 +32,17 @@ BONUS
var/mob/living/carbon/human/H = M
switch(A.stage)
if(1, 2)
H << "<span class='warning'>Your chin itches.</span>"
to_chat(H, "<span class='warning'>Your chin itches.</span>")
if(H.facial_hair_style == "Shaved")
H.facial_hair_style = "Jensen Beard"
H.update_hair()
if(3, 4)
H << "<span class='warning'>You feel tough.</span>"
to_chat(H, "<span class='warning'>You feel tough.</span>")
if(!(H.facial_hair_style == "Dwarf Beard") && !(H.facial_hair_style == "Very Long Beard") && !(H.facial_hair_style == "Full Beard"))
H.facial_hair_style = "Full Beard"
H.update_hair()
else
H << "<span class='warning'>You feel manly!</span>"
to_chat(H, "<span class='warning'>You feel manly!</span>")
if(!(H.facial_hair_style == "Dwarf Beard") && !(H.facial_hair_style == "Very Long Beard"))
H.facial_hair_style = pick("Dwarf Beard", "Very Long Beard")
H.update_hair()

View File

@@ -31,13 +31,13 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2)
M << "<span class='warning'>[pick("You're having difficulty breathing.", "Your breathing becomes heavy.")]</span>"
to_chat(M, "<span class='warning'>[pick("You're having difficulty breathing.", "Your breathing becomes heavy.")]</span>")
if(3, 4)
M << "<span class='warning'><b>[pick("Your windpipe feels like a straw.", "Your breathing becomes tremendously difficult.")]</span>"
to_chat(M, "<span class='warning'><b>[pick("Your windpipe feels like a straw.", "Your breathing becomes tremendously difficult.")]</span>")
Choke_stage_3_4(M, A)
M.emote("gasp")
else
M << "<span class='userdanger'>[pick("You're choking!", "You can't breathe!")]</span>"
to_chat(M, "<span class='userdanger'>[pick("You're choking!", "You can't breathe!")]</span>")
Choke(M, A)
M.emote("gasp")
return
@@ -85,11 +85,11 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(3, 4)
M << "<span class='warning'><b>[pick("Your windpipe feels thin.", "Your lungs feel small.")]</span>"
to_chat(M, "<span class='warning'><b>[pick("Your windpipe feels thin.", "Your lungs feel small.")]</span>")
Asphyxiate_stage_3_4(M, A)
M.emote("gasp")
else
M << "<span class='userdanger'>[pick("Your lungs hurt!", "It hurts to breathe!")]</span>"
to_chat(M, "<span class='userdanger'>[pick("Your lungs hurt!", "It hurts to breathe!")]</span>")
Asphyxiate(M, A)
M.emote("gasp")
if(M.getOxyLoss() >= 120)

View File

@@ -32,9 +32,9 @@ Bonus
var/mob/living/carbon/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='warning'>[pick("Your head hurts.", "Your mind blanks for a moment.")]</span>"
to_chat(M, "<span class='warning'>[pick("Your head hurts.", "Your mind blanks for a moment.")]</span>")
else
M << "<span class='userdanger'>You can't think straight!</span>"
to_chat(M, "<span class='userdanger'>You can't think straight!</span>")
M.confused = min(100, M.confused + 8)
return

View File

@@ -31,7 +31,7 @@ BONUS
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3)
M << "<span notice='warning'>[pick("You swallow excess mucus.", "You lightly cough.")]</span>"
to_chat(M, "<span notice='warning'>[pick("You swallow excess mucus.", "You lightly cough.")]</span>")
else
M.emote("cough")
var/obj/item/I = M.get_active_held_item()

View File

@@ -31,14 +31,14 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(3, 4)
M << "<span class='warning'>[pick("You hear a ringing in your ear.", "Your ears pop.")]</span>"
to_chat(M, "<span class='warning'>[pick("You hear a ringing in your ear.", "Your ears pop.")]</span>")
if(5)
if(!(M.ear_deaf))
M << "<span class='userdanger'>Your ears pop and begin ringing loudly!</span>"
to_chat(M, "<span class='userdanger'>Your ears pop and begin ringing loudly!</span>")
M.setEarDamage(-1,INFINITY) //Shall be enough
addtimer(CALLBACK(src, .proc/Undeafen, M), 200)
/datum/symptom/deafness/proc/Undeafen(mob/living/M)
if(M)
M << "<span class='warning'>The ringing in your ears fades...</span>"
to_chat(M, "<span class='warning'>The ringing in your ears fades...</span>")
M.setEarDamage(-1,0)

View File

@@ -31,8 +31,8 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='warning'>[pick("You feel dizzy.", "Your head spins.")]</span>"
to_chat(M, "<span class='warning'>[pick("You feel dizzy.", "Your head spins.")]</span>")
else
M << "<span class='userdanger'>A wave of dizziness washes over you!</span>"
to_chat(M, "<span class='userdanger'>A wave of dizziness washes over you!</span>")
M.Dizzy(5)
return

View File

@@ -29,7 +29,7 @@ Bonus
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/carbon/M = A.affected_mob
M << "<span class='warning'>[pick("You feel hot.", "You feel like you're burning.")]</span>"
to_chat(M, "<span class='warning'>[pick("You feel hot.", "You feel like you're burning.")]</span>")
if(M.bodytemperature < BODYTEMP_HEAT_DAMAGE_LIMIT)
Heat(M, A)

View File

@@ -31,16 +31,16 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(3)
M << "<span class='warning'>[pick("You feel hot.", "You hear a crackling noise.", "You smell smoke.")]</span>"
to_chat(M, "<span class='warning'>[pick("You feel hot.", "You hear a crackling noise.", "You smell smoke.")]</span>")
if(4)
Firestacks_stage_4(M, A)
M.IgniteMob()
M << "<span class='userdanger'>Your skin bursts into flames!</span>"
to_chat(M, "<span class='userdanger'>Your skin bursts into flames!</span>")
M.emote("scream")
if(5)
Firestacks_stage_5(M, A)
M.IgniteMob()
M << "<span class='userdanger'>Your skin erupts into an inferno!</span>"
to_chat(M, "<span class='userdanger'>Your skin erupts into an inferno!</span>")
M.emote("scream")
return
@@ -90,16 +90,16 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(3)
M << "<span class='warning'>[pick("Your veins boil.", "You feel hot.", "You smell meat cooking.")]</span>"
to_chat(M, "<span class='warning'>[pick("Your veins boil.", "You feel hot.", "You smell meat cooking.")]</span>")
if(4)
Alkali_fire_stage_4(M, A)
M.IgniteMob()
M << "<span class='userdanger'>Your sweat bursts into flames!</span>"
to_chat(M, "<span class='userdanger'>Your sweat bursts into flames!</span>")
M.emote("scream")
if(5)
Alkali_fire_stage_5(M, A)
M.IgniteMob()
M << "<span class='userdanger'>Your skin erupts into an inferno!</span>"
to_chat(M, "<span class='userdanger'>Your skin erupts into an inferno!</span>")
M.emote("scream")
if(M.fire_stacks < 0)
M.visible_message("<span class='warning'>[M]'s sweat sizzles and pops on contact with water!</span>")

View File

@@ -31,9 +31,9 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(2,3)
M << "<span class='warning'>[pick("You feel a sudden pain across your body.", "Drops of blood appear suddenly on your skin.")]</span>"
to_chat(M, "<span class='warning'>[pick("You feel a sudden pain across your body.", "Drops of blood appear suddenly on your skin.")]</span>")
if(4,5)
M << "<span class='userdanger'>[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]</span>"
to_chat(M, "<span class='userdanger'>[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]</span>")
Flesheat(M, A)
return
@@ -75,9 +75,9 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(2,3)
M << "<span class='warning'>[pick("You feel your body break apart.", "Your skin rubs off like dust.")]</span>"
to_chat(M, "<span class='warning'>[pick("You feel your body break apart.", "Your skin rubs off like dust.")]</span>")
if(4,5)
M << "<span class='userdanger'>[pick("You feel your muscles weakening.", "Your skin begins detaching itself.", "You feel sandy.")]</span>"
to_chat(M, "<span class='userdanger'>[pick("You feel your muscles weakening.", "Your skin begins detaching itself.", "You feel sandy.")]</span>")
Flesh_death(M, A)
return

View File

@@ -35,7 +35,7 @@ Bonus
return
switch(A.stage)
if(4, 5)
C << "<span class='warning'>[pick("Your skin feels itchy.", "You feel light headed.")]</span>"
to_chat(C, "<span class='warning'>[pick("Your skin feels itchy.", "You feel light headed.")]</span>")
C.dna.remove_mutation_group(possible_mutations)
C.randmut(possible_mutations)
return

View File

@@ -31,11 +31,11 @@ Bonus
var/mob/living/carbon/M = A.affected_mob
switch(A.stage)
if(1, 2)
M << "<span class='warning'>[pick("Something appears in your peripheral vision, then winks out.", "You hear a faint whispher with no source.", "Your head aches.")]</span>"
to_chat(M, "<span class='warning'>[pick("Something appears in your peripheral vision, then winks out.", "You hear a faint whispher with no source.", "Your head aches.")]</span>")
if(3, 4)
M << "<span class='danger'>[pick("Something is following you.", "You are being watched.", "You hear a whisper in your ear.", "Thumping footsteps slam toward you from nowhere.")]</span>"
to_chat(M, "<span class='danger'>[pick("Something is following you.", "You are being watched.", "You hear a whisper in your ear.", "Thumping footsteps slam toward you from nowhere.")]</span>")
else
M << "<span class='userdanger'>[pick("Oh, your head...", "Your head pounds.", "They're everywhere! Run!", "Something in the shadows...")]</span>"
to_chat(M, "<span class='userdanger'>[pick("Oh, your head...", "Your head pounds.", "They're everywhere! Run!", "Something in the shadows...")]</span>")
M.hallucination += 25
return

View File

@@ -30,5 +30,5 @@ BONUS
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
M << "<span class='warning'>[pick("Your head hurts.", "Your head starts pounding.")]</span>"
to_chat(M, "<span class='warning'>[pick("Your head hurts.", "Your head starts pounding.")]</span>")
return

View File

@@ -30,5 +30,5 @@ BONUS
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
M << "<span class='warning'>Your [pick("back", "arm", "leg", "elbow", "head")] itches.</span>"
to_chat(M, "<span class='warning'>Your [pick("back", "arm", "leg", "elbow", "head")] itches.</span>")
return

View File

@@ -34,5 +34,5 @@ Bonus
M.losebreath -= 2
else
if(prob(SYMPTOM_ACTIVATION_PROB * 3))
M << "<span class='notice'>[pick("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.")]</span>"
to_chat(M, "<span class='notice'>[pick("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.")]</span>")
return

View File

@@ -87,19 +87,19 @@ Bonus
if(prob(SYMPTOM_ACTIVATION_PROB))
switch(A.stage)
if(1)
M << "<span class='warning'>You can't feel anything.</span>"
to_chat(M, "<span class='warning'>You can't feel anything.</span>")
if(2)
M << "<span class='warning'>You feel absolutely hammered.</span>"
to_chat(M, "<span class='warning'>You feel absolutely hammered.</span>")
if(prob(10))
sleepy_ticks += rand(10,14)
if(3)
M.reagents.add_reagent("ethanol",rand(5,7))
M << "<span class='warning'>You try to focus on not dying.</span>"
to_chat(M, "<span class='warning'>You try to focus on not dying.</span>")
if(prob(15))
sleepy_ticks += rand(10,14)
if(4)
M.reagents.add_reagent("ethanol",rand(6,10))
M << "<span class='warning'>u can count 2 potato!</span>"
to_chat(M, "<span class='warning'>u can count 2 potato!</span>")
if(prob(20))
sleepy_ticks += rand(10,14)
if(5)
@@ -122,7 +122,7 @@ Bonus
switch(sleepy) //Works like morphine
if(11)
M << "<span class='warning'>You start to feel tired...</span>"
to_chat(M, "<span class='warning'>You start to feel tired...</span>")
if(12 to 24)
M.drowsyness += 1
if(24 to INFINITY)

View File

@@ -28,17 +28,17 @@ BONUS
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
M << "<span class='warning'>[pick("Your scalp itches.", "Your skin feels flakey.")]</span>"
to_chat(M, "<span class='warning'>[pick("Your scalp itches.", "Your skin feels flakey.")]</span>")
if(ishuman(M))
var/mob/living/carbon/human/H = M
switch(A.stage)
if(3, 4)
if(!(H.hair_style == "Bald") && !(H.hair_style == "Balding Hair"))
H << "<span class='warning'>Your hair starts to fall out in clumps...</span>"
to_chat(H, "<span class='warning'>Your hair starts to fall out in clumps...</span>")
addtimer(CALLBACK(src, .proc/Shed, H, FALSE), 50)
if(5)
if(!(H.facial_hair_style == "Shaved") || !(H.hair_style == "Bald"))
H << "<span class='warning'>Your hair starts to fall out in clumps...</span>"
to_chat(H, "<span class='warning'>Your hair starts to fall out in clumps...</span>")
addtimer(CALLBACK(src, .proc/Shed, H, TRUE), 50)
/datum/symptom/shedding/proc/Shed(mob/living/carbon/human/H, fullbald)

View File

@@ -29,7 +29,7 @@ Bonus
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/carbon/M = A.affected_mob
M << "<span class='warning'>[pick("You feel cold.", "You start shivering.")]</span>"
to_chat(M, "<span class='warning'>[pick("You feel cold.", "You start shivering.")]</span>")
if(M.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT)
Chill(M, A)
return

View File

@@ -27,9 +27,9 @@ BONUS
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1)
M << "<span class='notice'>You feel off, but no different from before.</span>"
to_chat(M, "<span class='notice'>You feel off, but no different from before.</span>")
if(5)
M << "<span class='notice'>You feel better, but nothing interesting happens.</span>"
to_chat(M, "<span class='notice'>You feel better, but nothing interesting happens.</span>")
/*
//////////////////////////////////////
@@ -60,9 +60,9 @@ BONUS
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1)
M << "<span class='notice'>You feel better, but no different from before.</span>"
to_chat(M, "<span class='notice'>You feel better, but no different from before.</span>")
if(5)
M << "<span class='notice'>You feel off, but nothing interesting happens.</span>"
to_chat(M, "<span class='notice'>You feel off, but nothing interesting happens.</span>")
/*
//////////////////////////////////////

View File

@@ -31,20 +31,20 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2)
M << "<span class='warning'>Your eyes itch.</span>"
to_chat(M, "<span class='warning'>Your eyes itch.</span>")
if(3, 4)
M << "<span class='warning'><b>Your eyes burn!</b></span>"
to_chat(M, "<span class='warning'><b>Your eyes burn!</b></span>")
M.blur_eyes(10)
M.adjust_eye_damage(1)
else
M << "<span class='userdanger'>Your eyes burn horrificly!</span>"
to_chat(M, "<span class='userdanger'>Your eyes burn horrificly!</span>")
M.blur_eyes(20)
M.adjust_eye_damage(5)
if(M.eye_damage >= 10)
M.become_nearsighted()
if(prob(M.eye_damage - 10 + 1))
if(M.become_blind())
M << "<span class='userdanger'>You go blind!</span>"
to_chat(M, "<span class='userdanger'>You go blind!</span>")
/*
@@ -80,13 +80,13 @@ Bonus
if(4, 5) //basically oculine
if(M.disabilities & BLIND)
if(prob(20))
M << "<span class='warning'>Your vision slowly returns...</span>"
to_chat(M, "<span class='warning'>Your vision slowly returns...</span>")
M.cure_blind()
M.cure_nearsighted()
M.blur_eyes(35)
else if(M.disabilities & NEARSIGHT)
M << "<span class='warning'>The blackness in your peripheral vision fades.</span>"
to_chat(M, "<span class='warning'>The blackness in your peripheral vision fades.</span>")
M.cure_nearsighted()
M.blur_eyes(10)
@@ -97,5 +97,5 @@ Bonus
M.adjust_eye_damage(-1)
else
if(prob(SYMPTOM_ACTIVATION_PROB * 3))
M << "<span class='notice'>[pick("Your eyes feel great.", "You are now blinking manually.", "You don't feel the need to blink.")]</span>"
to_chat(M, "<span class='notice'>[pick("Your eyes feel great.", "You are now blinking manually.", "You don't feel the need to blink.")]</span>")
return

View File

@@ -32,7 +32,7 @@ Bonus
var/mob/living/carbon/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='warning'>[pick("Your throat hurts.", "You clear your throat.")]</span>"
to_chat(M, "<span class='warning'>[pick("Your throat hurts.", "You clear your throat.")]</span>")
else
if(ishuman(M))
var/mob/living/carbon/human/H = M

View File

@@ -35,7 +35,7 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='warning'>[pick("You feel nauseous.", "You feel like you're going to throw up!")]</span>"
to_chat(M, "<span class='warning'>[pick("You feel nauseous.", "You feel like you're going to throw up!")]</span>")
else
Vomit(M)

View File

@@ -31,12 +31,12 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2)
M << "<span class='warning'>[pick("You feel weak.", "You feel lazy.")]</span>"
to_chat(M, "<span class='warning'>[pick("You feel weak.", "You feel lazy.")]</span>")
if(3, 4)
M << "<span class='warning'><b>[pick("You feel very frail.", "You think you might faint.")]</span>"
to_chat(M, "<span class='warning'><b>[pick("You feel very frail.", "You think you might faint.")]</span>")
M.adjustStaminaLoss(15)
else
M << "<span class='userdanger'>[pick("You feel tremendously weak!", "Your body trembles as exhaustion creeps over you.")]</span>"
to_chat(M, "<span class='userdanger'>[pick("You feel tremendously weak!", "Your body trembles as exhaustion creeps over you.")]</span>")
M.adjustStaminaLoss(30)
if(M.getStaminaLoss() > 60 && !M.stat)
M.visible_message("<span class='warning'>[M] faints!</span>", "<span class='userdanger'>You swoon and faint...</span>")

View File

@@ -31,7 +31,7 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='warning'>[pick("You feel blubbery.", "Your stomach hurts.")]</span>"
to_chat(M, "<span class='warning'>[pick("You feel blubbery.", "Your stomach hurts.")]</span>")
else
M.overeatduration = min(M.overeatduration + 100, 600)
M.nutrition = min(M.nutrition + 100, NUTRITION_LEVEL_FULL)
@@ -73,9 +73,9 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(1, 2, 3, 4)
M << "<span class='warning'>[pick("You feel hungry.", "You crave for food.")]</span>"
to_chat(M, "<span class='warning'>[pick("You feel hungry.", "You crave for food.")]</span>")
else
M << "<span class='warning'><i>[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]</i></span>"
to_chat(M, "<span class='warning'><i>[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]</i></span>")
M.overeatduration = max(M.overeatduration - 100, 0)
M.nutrition = max(M.nutrition - 100, 0)

View File

@@ -34,22 +34,22 @@ BONUS
if(1)
if(H.age > 41)
H.age = 41
H << "<span class='notice'>You haven't had this much energy in years!</span>"
to_chat(H, "<span class='notice'>You haven't had this much energy in years!</span>")
if(2)
if(H.age > 36)
H.age = 36
H << "<span class='notice'>You're suddenly in a good mood.</span>"
to_chat(H, "<span class='notice'>You're suddenly in a good mood.</span>")
if(3)
if(H.age > 31)
H.age = 31
H << "<span class='notice'>You begin to feel more lithe.</span>"
to_chat(H, "<span class='notice'>You begin to feel more lithe.</span>")
if(4)
if(H.age > 26)
H.age = 26
H << "<span class='notice'>You feel reinvigorated.</span>"
to_chat(H, "<span class='notice'>You feel reinvigorated.</span>")
if(5)
if(H.age > 21)
H.age = 21
H << "<span class='notice'>You feel like you can take on the world!</span>"
to_chat(H, "<span class='notice'>You feel like you can take on the world!</span>")
return

View File

@@ -16,18 +16,18 @@
switch(stage)
if(2) //also changes say, see say.dm
if(prob(5))
affected_mob << "<span class='notice'>You feel anxious.</span>"
to_chat(affected_mob, "<span class='notice'>You feel anxious.</span>")
if(3)
if(prob(10))
affected_mob << "<span class='notice'>Your stomach flutters.</span>"
to_chat(affected_mob, "<span class='notice'>Your stomach flutters.</span>")
if(prob(5))
affected_mob << "<span class='notice'>You feel panicky.</span>"
to_chat(affected_mob, "<span class='notice'>You feel panicky.</span>")
if(prob(2))
affected_mob << "<span class='danger'>You're overtaken with panic!</span>"
to_chat(affected_mob, "<span class='danger'>You're overtaken with panic!</span>")
affected_mob.confused += (rand(2,3))
if(4)
if(prob(10))
affected_mob << "<span class='danger'>You feel butterflies in your stomach.</span>"
to_chat(affected_mob, "<span class='danger'>You feel butterflies in your stomach.</span>")
if(prob(5))
affected_mob.visible_message("<span class='danger'>[affected_mob] stumbles around in a panic.</span>", \
"<span class='userdanger'>You have a panic attack!</span>")

View File

@@ -26,7 +26,7 @@
A.inflamed = 1
A.update_icon()
if(prob(3))
affected_mob << "<span class='warning'>You feel a stabbing pain in your abdomen!</span>"
to_chat(affected_mob, "<span class='warning'>You feel a stabbing pain in your abdomen!</span>")
affected_mob.Stun(rand(2,3))
affected_mob.adjustToxLoss(1)
if(3)

View File

@@ -16,12 +16,12 @@
switch(stage)
if(2) //also changes say, see say.dm
if(prob(2))
affected_mob << "<span class='notice'>You taste honey in your mouth.</span>"
to_chat(affected_mob, "<span class='notice'>You taste honey in your mouth.</span>")
if(3)
if(prob(10))
affected_mob << "<span class='notice'>Your stomach rumbles.</span>"
to_chat(affected_mob, "<span class='notice'>Your stomach rumbles.</span>")
if(prob(2))
affected_mob << "<span class='danger'>Your stomach stings painfully.</span>"
to_chat(affected_mob, "<span class='danger'>Your stomach stings painfully.</span>")
if(prob(20))
affected_mob.adjustToxLoss(2)
affected_mob.updatehealth()
@@ -30,7 +30,7 @@
affected_mob.visible_message("<span class='danger'>[affected_mob] buzzes.</span>", \
"<span class='userdanger'>Your stomach buzzes violently!</span>")
if(prob(5))
affected_mob << "<span class='danger'>You feel something moving in your throat.</span>"
to_chat(affected_mob, "<span class='danger'>You feel something moving in your throat.</span>")
if(prob(1))
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up a swarm of bees!</span>", \
"<span class='userdanger'>You cough up a swarm of bees!</span>")

View File

@@ -22,7 +22,7 @@
if(prob(2))
affected_mob.emote("yawn")
if(prob(2))
affected_mob << "<span class='danger'>You don't feel like yourself.</span>"
to_chat(affected_mob, "<span class='danger'>You don't feel like yourself.</span>")
if(prob(5))
affected_mob.adjustBrainLoss(1)
affected_mob.updatehealth()
@@ -35,7 +35,7 @@
affected_mob.adjustBrainLoss(2)
affected_mob.updatehealth()
if(prob(2))
affected_mob << "<span class='danger'>Your try to remember something important...but can't.</span>"
to_chat(affected_mob, "<span class='danger'>Your try to remember something important...but can't.</span>")
if(4)
if(prob(2))
@@ -46,9 +46,9 @@
affected_mob.adjustBrainLoss(3)
affected_mob.updatehealth()
if(prob(2))
affected_mob << "<span class='danger'>Strange buzzing fills your head, removing all thoughts.</span>"
to_chat(affected_mob, "<span class='danger'>Strange buzzing fills your head, removing all thoughts.</span>")
if(prob(3))
affected_mob << "<span class='danger'>You lose consciousness...</span>"
to_chat(affected_mob, "<span class='danger'>You lose consciousness...</span>")
affected_mob.visible_message("<span class='warning'>[affected_mob] suddenly collapses</span>")
affected_mob.Paralyse(rand(5,10))
if(prob(1))

View File

@@ -16,16 +16,16 @@
if(2)
/*
if(affected_mob.sleeping && prob(40)) //removed until sleeping is fixed
affected_mob << "\blue You feel better."
to_chat(affected_mob, "\blue You feel better.")
cure()
return
*/
if(affected_mob.lying && prob(40)) //changed FROM prob(10) until sleeping is fixed
affected_mob << "<span class='notice'>You feel better.</span>"
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
cure()
return
if(prob(1) && prob(5))
affected_mob << "<span class='notice'>You feel better.</span>"
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
cure()
return
if(prob(1))
@@ -33,22 +33,22 @@
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "<span class='danger'>Your throat feels sore.</span>"
to_chat(affected_mob, "<span class='danger'>Your throat feels sore.</span>")
if(prob(1))
affected_mob << "<span class='danger'>Mucous runs down the back of your throat.</span>"
to_chat(affected_mob, "<span class='danger'>Mucous runs down the back of your throat.</span>")
if(3)
/*
if(affected_mob.sleeping && prob(25)) //removed until sleeping is fixed
affected_mob << "\blue You feel better."
to_chat(affected_mob, "\blue You feel better.")
cure()
return
*/
if(affected_mob.lying && prob(25)) //changed FROM prob(5) until sleeping is fixed
affected_mob << "<span class='notice'>You feel better.</span>"
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
cure()
return
if(prob(1) && prob(1))
affected_mob << "<span class='notice'>You feel better.</span>"
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
cure()
return
if(prob(1))
@@ -56,9 +56,9 @@
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "<span class='danger'>Your throat feels sore.</span>"
to_chat(affected_mob, "<span class='danger'>Your throat feels sore.</span>")
if(prob(1))
affected_mob << "<span class='danger'>Mucous runs down the back of your throat.</span>"
to_chat(affected_mob, "<span class='danger'>Mucous runs down the back of your throat.</span>")
if(prob(1) && prob(50))
if(!affected_mob.resistances.Find(/datum/disease/flu))
var/datum/disease/Flu = new /datum/disease/flu(0)

View File

@@ -16,7 +16,7 @@
if(2)
affected_mob.bodytemperature -= 10
if(prob(1) && prob(10))
affected_mob << "<span class='notice'>You feel better.</span>"
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
cure()
return
if(prob(1))
@@ -24,9 +24,9 @@
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "<span class='danger'>Your throat feels sore.</span>"
to_chat(affected_mob, "<span class='danger'>Your throat feels sore.</span>")
if(prob(5))
affected_mob << "<span class='danger'>You feel stiff.</span>"
to_chat(affected_mob, "<span class='danger'>You feel stiff.</span>")
if(3)
affected_mob.bodytemperature -= 20
if(prob(1))
@@ -34,6 +34,6 @@
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "<span class='danger'>Your throat feels sore.</span>"
to_chat(affected_mob, "<span class='danger'>Your throat feels sore.</span>")
if(prob(10))
affected_mob << "<span class='danger'>You feel stiff.</span>"
to_chat(affected_mob, "<span class='danger'>You feel stiff.</span>")

View File

@@ -36,11 +36,11 @@
if(prob(8))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "<span class='danger'>Your muscles ache.</span>"
to_chat(affected_mob, "<span class='danger'>Your muscles ache.</span>")
if(prob(20))
affected_mob.take_bodypart_damage(1)
if(prob(1))
affected_mob << "<span class='danger'>Your stomach hurts.</span>"
to_chat(affected_mob, "<span class='danger'>Your stomach hurts.</span>")
if(prob(20))
affected_mob.adjustToxLoss(2)
affected_mob.updatehealth()
@@ -50,7 +50,7 @@
original_dna = new affected_mob.dna.type
affected_mob.dna.copy_dna(original_dna)
affected_mob << "<span class='danger'>You don't feel like yourself..</span>"
to_chat(affected_mob, "<span class='danger'>You don't feel like yourself..</span>")
var/datum/dna/transform_dna = strain_data["dna"]
transform_dna.transfer_identity(affected_mob, transfer_SE = 1)
@@ -70,5 +70,5 @@
affected_mob.updateappearance(mutcolor_update=1)
affected_mob.domutcheck()
affected_mob << "<span class='notice'>You feel more like yourself.</span>"
to_chat(affected_mob, "<span class='notice'>You feel more like yourself.</span>")
return ..()

View File

@@ -22,7 +22,7 @@
else if(prob(5))
affected_mob.emote("gasp")
if(prob(10))
affected_mob << "<span class='danger'>You're starting to feel very weak...</span>"
to_chat(affected_mob, "<span class='danger'>You're starting to feel very weak...</span>")
if(4)
if(prob(10))
affected_mob.emote("cough")

View File

@@ -16,7 +16,7 @@
switch(stage)
if(2)
if(affected_mob.lying && prob(20))
affected_mob << "<span class='notice'>You feel better.</span>"
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
stage--
return
if(prob(1))
@@ -24,18 +24,18 @@
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "<span class='danger'>Your muscles ache.</span>"
to_chat(affected_mob, "<span class='danger'>Your muscles ache.</span>")
if(prob(20))
affected_mob.take_bodypart_damage(1)
if(prob(1))
affected_mob << "<span class='danger'>Your stomach hurts.</span>"
to_chat(affected_mob, "<span class='danger'>Your stomach hurts.</span>")
if(prob(20))
affected_mob.adjustToxLoss(1)
affected_mob.updatehealth()
if(3)
if(affected_mob.lying && prob(15))
affected_mob << "<span class='notice'>You feel better.</span>"
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
stage--
return
if(prob(1))
@@ -43,11 +43,11 @@
if(prob(1))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "<span class='danger'>Your muscles ache.</span>"
to_chat(affected_mob, "<span class='danger'>Your muscles ache.</span>")
if(prob(20))
affected_mob.take_bodypart_damage(1)
if(prob(1))
affected_mob << "<span class='danger'>Your stomach hurts.</span>"
to_chat(affected_mob, "<span class='danger'>Your stomach hurts.</span>")
if(prob(20))
affected_mob.adjustToxLoss(1)
affected_mob.updatehealth()

View File

@@ -21,7 +21,7 @@
if(prob(5))
affected_mob.emote("cough")
if(prob(1))
affected_mob << "<span class='danger'>You're burning in your own skin!</span>"
to_chat(affected_mob, "<span class='danger'>You're burning in your own skin!</span>")
affected_mob.take_bodypart_damage(0,5)
if(3)
@@ -31,6 +31,6 @@
if(prob(5))
affected_mob.emote("cough")
if(prob(5))
affected_mob << "<span class='danger'>You're burning in your own skin!</span>"
to_chat(affected_mob, "<span class='danger'>You're burning in your own skin!</span>")
affected_mob.take_bodypart_damage(0,5)
return

View File

@@ -27,14 +27,14 @@
else if(prob(5))
affected_mob.emote("gasp")
if(prob(10))
affected_mob << "<span class='danger'>You're starting to feel very weak...</span>"
to_chat(affected_mob, "<span class='danger'>You're starting to feel very weak...</span>")
if(4)
if(prob(10))
affected_mob.emote("cough")
affected_mob.adjustToxLoss(5)
affected_mob.updatehealth()
if(5)
affected_mob << "<span class='danger'>Your body feels as if it's trying to rip itself open...</span>"
to_chat(affected_mob, "<span class='danger'>Your body feels as if it's trying to rip itself open...</span>")
if(prob(50))
affected_mob.gib()
else

View File

@@ -16,7 +16,7 @@
switch(stage)
if(2)
if(prob(2))
affected_mob << "<span class='danger'>You feel a slight shock course through your body.</span>"
to_chat(affected_mob, "<span class='danger'>You feel a slight shock course through your body.</span>")
if(prob(2))
for(var/obj/M in orange(2,affected_mob))
if(!M.anchored && (M.flags & CONDUCT))
@@ -27,9 +27,9 @@
step_towards(S,affected_mob)
if(3)
if(prob(2))
affected_mob << "<span class='danger'>You feel a strong shock course through your body.</span>"
to_chat(affected_mob, "<span class='danger'>You feel a strong shock course through your body.</span>")
if(prob(2))
affected_mob << "<span class='danger'>You feel like clowning around.</span>"
to_chat(affected_mob, "<span class='danger'>You feel like clowning around.</span>")
if(prob(4))
for(var/obj/M in orange(4,affected_mob))
if(!M.anchored && (M.flags & CONDUCT))
@@ -46,9 +46,9 @@
step_towards(S,affected_mob)
if(4)
if(prob(2))
affected_mob << "<span class='danger'>You feel a powerful shock course through your body.</span>"
to_chat(affected_mob, "<span class='danger'>You feel a powerful shock course through your body.</span>")
if(prob(2))
affected_mob << "<span class='danger'>You query upon the nature of miracles.</span>"
to_chat(affected_mob, "<span class='danger'>You query upon the nature of miracles.</span>")
if(prob(8))
for(var/obj/M in orange(6,affected_mob))
if(!M.anchored && (M.flags & CONDUCT))

View File

@@ -16,10 +16,10 @@
..()
switch(stage)
if(1)
if(prob(10)) affected_mob << "<span class='danger'>You feel a little silly.</span>"
if(prob(10)) to_chat(affected_mob, "<span class='danger'>You feel a little silly.</span>")
if(2)
if(prob(10)) affected_mob << "<span class='danger'>You start seeing rainbows.</span>"
if(prob(10)) to_chat(affected_mob, "<span class='danger'>You start seeing rainbows.</span>")
if(3)
if(prob(10)) affected_mob << "<span class='danger'>Your thoughts are interrupted by a loud <b>HONK!</b></span>"
if(prob(10)) to_chat(affected_mob, "<span class='danger'>Your thoughts are interrupted by a loud <b>HONK!</b></span>")
if(4)
if(prob(5)) affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) )

View File

@@ -31,38 +31,38 @@
if(1)
if(restcure)
if(affected_mob.lying && prob(30))
affected_mob << "<span class='notice'>You feel better.</span>"
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
cure()
return
if (prob(8))
affected_mob << "<span class='danger'>Your head hurts.</span>"
to_chat(affected_mob, "<span class='danger'>Your head hurts.</span>")
if (prob(9))
affected_mob << "You feel a tingling sensation in your chest."
to_chat(affected_mob, "You feel a tingling sensation in your chest.")
if (prob(9))
affected_mob << "<span class='danger'>You feel angry.</span>"
to_chat(affected_mob, "<span class='danger'>You feel angry.</span>")
if(2)
if(restcure)
if(affected_mob.lying && prob(20))
affected_mob << "<span class='notice'>You feel better.</span>"
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
cure()
return
if (prob(8))
affected_mob << "<span class='danger'>Your skin feels loose.</span>"
to_chat(affected_mob, "<span class='danger'>Your skin feels loose.</span>")
if (prob(10))
affected_mob << "You feel very strange."
to_chat(affected_mob, "You feel very strange.")
if (prob(4))
affected_mob << "<span class='danger'>You feel a stabbing pain in your head!</span>"
to_chat(affected_mob, "<span class='danger'>You feel a stabbing pain in your head!</span>")
affected_mob.Paralyse(2)
if (prob(4))
affected_mob << "<span class='danger'>Your stomach churns.</span>"
to_chat(affected_mob, "<span class='danger'>Your stomach churns.</span>")
if(3)
if(restcure)
if(affected_mob.lying && prob(20))
affected_mob << "<span class='notice'>You feel better.</span>"
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
cure()
return
if (prob(10))
affected_mob << "<span class='danger'>Your entire body vibrates.</span>"
to_chat(affected_mob, "<span class='danger'>Your entire body vibrates.</span>")
if (prob(35))
if(prob(50))
@@ -73,7 +73,7 @@
if(4)
if(restcure)
if(affected_mob.lying && prob(5))
affected_mob << "<span class='notice'>You feel better.</span>"
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
cure()
return
if (prob(60))

View File

@@ -21,23 +21,23 @@
affected_mob.adjustToxLoss(5)
affected_mob.updatehealth()
if(prob(1))
affected_mob << "<span class='danger'>You feel strange...</span>"
to_chat(affected_mob, "<span class='danger'>You feel strange...</span>")
if(3)
if(prob(5))
affected_mob << "<span class='danger'>You feel the urge to dance...</span>"
to_chat(affected_mob, "<span class='danger'>You feel the urge to dance...</span>")
else if(prob(5))
affected_mob.emote("gasp")
else if(prob(10))
affected_mob << "<span class='danger'>You feel the need to chick chicky boom...</span>"
to_chat(affected_mob, "<span class='danger'>You feel the need to chick chicky boom...</span>")
if(4)
if(prob(10))
affected_mob.emote("gasp")
affected_mob << "<span class='danger'>You feel a burning beat inside...</span>"
to_chat(affected_mob, "<span class='danger'>You feel a burning beat inside...</span>")
if(prob(20))
affected_mob.adjustToxLoss(5)
affected_mob.updatehealth()
if(5)
affected_mob << "<span class='danger'>Your body is unable to contain the Rhumba Beat...</span>"
to_chat(affected_mob, "<span class='danger'>Your body is unable to contain the Rhumba Beat...</span>")
if(prob(50))
affected_mob.gib()
else

View File

@@ -22,23 +22,23 @@
switch(stage)
if(1)
if (prob(stage_prob) && stage1)
affected_mob << pick(stage1)
to_chat(affected_mob, pick(stage1))
if(2)
if (prob(stage_prob) && stage2)
affected_mob << pick(stage2)
to_chat(affected_mob, pick(stage2))
if(3)
if (prob(stage_prob*2) && stage3)
affected_mob << pick(stage3)
to_chat(affected_mob, pick(stage3))
if(4)
if (prob(stage_prob*2) && stage4)
affected_mob << pick(stage4)
to_chat(affected_mob, pick(stage4))
if(5)
do_disease_transformation(affected_mob)
/datum/disease/transformation/proc/do_disease_transformation(mob/living/affected_mob)
if(istype(affected_mob, /mob/living/carbon) && affected_mob.stat != DEAD)
if(stage5)
affected_mob << pick(stage5)
to_chat(affected_mob, pick(stage5))
if(jobban_isbanned(affected_mob, new_form))
affected_mob.death(1)
return
@@ -98,10 +98,10 @@
switch(stage)
if(2)
if(prob(2))
affected_mob << "<span class='notice'>Your [pick("back", "arm", "leg", "elbow", "head")] itches.</span>"
to_chat(affected_mob, "<span class='notice'>Your [pick("back", "arm", "leg", "elbow", "head")] itches.</span>")
if(3)
if(prob(4))
affected_mob << "<span class='danger'>You feel a stabbing pain in your head.</span>"
to_chat(affected_mob, "<span class='danger'>You feel a stabbing pain in your head.</span>")
affected_mob.confused += 10
if(4)
if(prob(3))
@@ -137,7 +137,7 @@
if (prob(8))
affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop"))
if (prob(4))
affected_mob << "<span class='danger'>You feel a stabbing pain in your head.</span>"
to_chat(affected_mob, "<span class='danger'>You feel a stabbing pain in your head.</span>")
affected_mob.Paralyse(2)
if(4)
if (prob(20))
@@ -166,7 +166,7 @@
switch(stage)
if(3)
if (prob(4))
affected_mob << "<span class='danger'>You feel a stabbing pain in your head.</span>"
to_chat(affected_mob, "<span class='danger'>You feel a stabbing pain in your head.</span>")
affected_mob.Paralyse(2)
if(4)
if (prob(20))

View File

@@ -17,42 +17,42 @@
if(2)
if(prob(2))
affected_mob.emote("cough")
affected_mob << "<span class='danger'>Your chest hurts.</span>"
to_chat(affected_mob, "<span class='danger'>Your chest hurts.</span>")
if(prob(2))
affected_mob << "<span class='danger'>Your stomach violently rumbles!</span>"
to_chat(affected_mob, "<span class='danger'>Your stomach violently rumbles!</span>")
if(prob(5))
affected_mob << "<span class='danger'>You feel a cold sweat form.</span>"
to_chat(affected_mob, "<span class='danger'>You feel a cold sweat form.</span>")
if(4)
if(prob(2))
affected_mob << "<span class='userdanger'>You see four of everything</span>"
to_chat(affected_mob, "<span class='userdanger'>You see four of everything</span>")
affected_mob.Dizzy(5)
if(prob(2))
affected_mob << "<span class='danger'>You feel a sharp pain from your lower chest!</span>"
to_chat(affected_mob, "<span class='danger'>You feel a sharp pain from your lower chest!</span>")
affected_mob.adjustOxyLoss(5)
affected_mob.emote("gasp")
if(prob(10))
affected_mob << "<span class='danger'>You feel air escape from your lungs painfully.</span>"
to_chat(affected_mob, "<span class='danger'>You feel air escape from your lungs painfully.</span>")
affected_mob.adjustOxyLoss(25)
affected_mob.emote("gasp")
if(5)
if(prob(2))
affected_mob << "<span class='userdanger'>[pick("You feel your heart slowing...", "You relax and slow your heartbeat.")]</span>"
to_chat(affected_mob, "<span class='userdanger'>[pick("You feel your heart slowing...", "You relax and slow your heartbeat.")]</span>")
affected_mob.adjustStaminaLoss(70)
if(prob(10))
affected_mob.adjustStaminaLoss(100)
affected_mob.visible_message("<span class='warning'>[affected_mob] faints!</span>", "<span class='userdanger'>You surrender yourself and feel at peace...</span>")
affected_mob.AdjustSleeping(5)
if(prob(2))
affected_mob << "<span class='userdanger'>You feel your mind relax and your thoughts drift!</span>"
to_chat(affected_mob, "<span class='userdanger'>You feel your mind relax and your thoughts drift!</span>")
affected_mob.confused = min(100, affected_mob.confused + 8)
if(prob(10))
affected_mob.vomit(20)
if(prob(3))
affected_mob << "<span class='warning'><i>[pick("Your stomach silently rumbles...", "Your stomach seizes up and falls limp, muscles dead and lifeless.", "You could eat a crayon")]</i></span>"
to_chat(affected_mob, "<span class='warning'><i>[pick("Your stomach silently rumbles...", "Your stomach seizes up and falls limp, muscles dead and lifeless.", "You could eat a crayon")]</i></span>")
affected_mob.overeatduration = max(affected_mob.overeatduration - 100, 0)
affected_mob.nutrition = max(affected_mob.nutrition - 100, 0)
if(prob(15))
affected_mob << "<span class='danger'>[pick("You feel uncomfortably hot...", "You feel like unzipping your jumpsuit", "You feel like taking off some clothes...")]</span>"
to_chat(affected_mob, "<span class='danger'>[pick("You feel uncomfortably hot...", "You feel like unzipping your jumpsuit", "You feel like taking off some clothes...")]</span>")
affected_mob.bodytemperature += 40
return

View File

@@ -31,14 +31,14 @@ STI KALY - blind
if(prob(1)&&prob(50))
affected_mob.say(pick("You shall not pass!", "Expeliarmus!", "By Merlins beard!", "Feel the power of the Dark Side!"))
if(prob(1)&&prob(50))
affected_mob << "<span class='danger'>You feel [pick("that you don't have enough mana", "that the winds of magic are gone", "an urge to summon familiar")].</span>"
to_chat(affected_mob, "<span class='danger'>You feel [pick("that you don't have enough mana", "that the winds of magic are gone", "an urge to summon familiar")].</span>")
if(3)
if(prob(1)&&prob(50))
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!", "STI KALY!", "TARCOL MINTI ZHERI!"))
if(prob(1)&&prob(50))
affected_mob << "<span class='danger'>You feel [pick("the magic bubbling in your veins","that this location gives you a +1 to INT","an urge to summon familiar")].</span>"
to_chat(affected_mob, "<span class='danger'>You feel [pick("the magic bubbling in your veins","that this location gives you a +1 to INT","an urge to summon familiar")].</span>")
if(4)
@@ -46,7 +46,7 @@ STI KALY - blind
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!","STI KALY!","EI NATH!"))
return
if(prob(1)&&prob(50))
affected_mob << "<span class='danger'>You feel [pick("the tidal wave of raw power building inside","that this location gives you a +2 to INT and +1 to WIS","an urge to teleport")].</span>"
to_chat(affected_mob, "<span class='danger'>You feel [pick("the tidal wave of raw power building inside","that this location gives you a +2 to INT and +1 to WIS","an urge to teleport")].</span>")
spawn_wizard_clothes(50)
if(prob(1)&&prob(1))
teleport()

View File

@@ -76,20 +76,20 @@ var/global/datum/getrev/revdata = new()
set desc = "Check the current server code revision"
if(revdata.parentcommit)
src << "<b>Server revision compiled on:</b> [revdata.date]"
to_chat(src, "<b>Server revision compiled on:</b> [revdata.date]")
if(revdata.testmerge.len)
src << revdata.GetTestMergeInfo()
src << "Based off master commit:"
src << "<a href='[config.githuburl]/commit/[revdata.parentcommit]'>[revdata.parentcommit]</a>"
to_chat(src, revdata.GetTestMergeInfo())
to_chat(src, "Based off master commit:")
to_chat(src, "<a href='[config.githuburl]/commit/[revdata.parentcommit]'>[revdata.parentcommit]</a>")
else
src << "Revision unknown"
src << "<b>Current Infomational Settings:</b>"
src << "Protect Authority Roles From Traitor: [config.protect_roles_from_antagonist]"
src << "Protect Assistant Role From Traitor: [config.protect_assistant_from_antagonist]"
src << "Enforce Human Authority: [config.enforce_human_authority]"
src << "Allow Latejoin Antagonists: [config.allow_latejoin_antagonists]"
src << "Enforce Continuous Rounds: [config.continuous.len] of [config.modes.len] roundtypes"
src << "Allow Midround Antagonists: [config.midround_antag.len] of [config.modes.len] roundtypes"
to_chat(src, "Revision unknown")
to_chat(src, "<b>Current Infomational Settings:</b>")
to_chat(src, "Protect Authority Roles From Traitor: [config.protect_roles_from_antagonist]")
to_chat(src, "Protect Assistant Role From Traitor: [config.protect_assistant_from_antagonist]")
to_chat(src, "Enforce Human Authority: [config.enforce_human_authority]")
to_chat(src, "Allow Latejoin Antagonists: [config.allow_latejoin_antagonists]")
to_chat(src, "Enforce Continuous Rounds: [config.continuous.len] of [config.modes.len] roundtypes")
to_chat(src, "Allow Midround Antagonists: [config.midround_antag.len] of [config.modes.len] roundtypes")
if(config.show_game_type_odds)
if(ticker.current_state == GAME_STATE_PLAYING)
var/prob_sum = 0
@@ -111,8 +111,8 @@ var/global/datum/getrev/revdata = new()
for(var/ctag in probs)
if(config.probabilities[ctag] > 0)
var/percentage = round(config.probabilities[ctag] / prob_sum * 100, 0.1)
src << "[ctag] [percentage]%"
to_chat(src, "[ctag] [percentage]%")
src <<"<b>All Game Mode Odds:</b>"
var/sum = 0
for(var/ctag in config.probabilities)
@@ -120,4 +120,4 @@ var/global/datum/getrev/revdata = new()
for(var/ctag in config.probabilities)
if(config.probabilities[ctag] > 0)
var/percentage = round(config.probabilities[ctag] / sum * 100, 0.1)
src << "[ctag] [percentage]%"
to_chat(src, "[ctag] [percentage]%")

View File

@@ -169,7 +169,7 @@
precision = max(rand(1,100)*bagholding.len,100)
if(isliving(teleatom))
var/mob/living/MM = teleatom
MM << "<span class='warning'>The bluespace interface on your bag of holding interferes with the teleport!</span>"
to_chat(MM, "<span class='warning'>The bluespace interface on your bag of holding interferes with the teleport!</span>")
return 1
// Safe location finder

View File

@@ -98,11 +98,11 @@
name = "Boxing"
/datum/martial_art/boxing/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
A << "<span class='warning'>Can't disarm while boxing!</span>"
to_chat(A, "<span class='warning'>Can't disarm while boxing!</span>")
return 1
/datum/martial_art/boxing/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
A << "<span class='warning'>Can't grab while boxing!</span>"
to_chat(A, "<span class='warning'>Can't grab while boxing!</span>")
return 1
/datum/martial_art/boxing/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
@@ -148,10 +148,10 @@
set desc = "Remember how to wrestle."
set category = "Wrestling"
usr << "<b><i>You flex your muscles and have a revelation...</i></b>"
usr << "<span class='notice'>Clinch</span>: Grab. Passively gives you a chance to immediately aggressively grab someone. Not always successful."
usr << "<span class='notice'>Suplex</span>: Disarm someone you are grabbing. Suplexes your target to the floor. Greatly injures them and leaves both you and your target on the floor."
usr << "<span class='notice'>Advanced grab</span>: Grab. Passively causes stamina damage when grabbing someone."
to_chat(usr, "<b><i>You flex your muscles and have a revelation...</i></b>")
to_chat(usr, "<span class='notice'>Clinch</span>: Grab. Passively gives you a chance to immediately aggressively grab someone. Not always successful.")
to_chat(usr, "<span class='notice'>Suplex</span>: Disarm someone you are grabbing. Suplexes your target to the floor. Greatly injures them and leaves both you and your target on the floor.")
to_chat(usr, "<span class='notice'>Advanced grab</span>: Grab. Passively causes stamina damage when grabbing someone.")
#define TORNADO_COMBO "HHD"
#define THROWBACK_COMBO "DHD"
@@ -243,10 +243,10 @@
set desc = "Remember the martial techniques of the Plasma Fist."
set category = "Plasma Fist"
usr << "<b><i>You clench your fists and have a flashback of knowledge...</i></b>"
usr << "<span class='notice'>Tornado Sweep</span>: Harm Harm Disarm. Repulses target and everyone back."
usr << "<span class='notice'>Throwback</span>: Disarm Harm Disarm. Throws the target and an item at them."
usr << "<span class='notice'>The Plasma Fist</span>: Harm Disarm Disarm Disarm Harm. Knocks the brain out of the opponent and gibs their body."
to_chat(usr, "<b><i>You clench your fists and have a flashback of knowledge...</i></b>")
to_chat(usr, "<span class='notice'>Tornado Sweep</span>: Harm Harm Disarm. Repulses target and everyone back.")
to_chat(usr, "<span class='notice'>Throwback</span>: Disarm Harm Disarm. Throws the target and an item at them.")
to_chat(usr, "<span class='notice'>The Plasma Fist</span>: Harm Disarm Disarm Disarm Harm. Knocks the brain out of the opponent and gibs their body.")
//Used by the gang of the same name. Uses combos. Basic attacks bypass armor and never miss
#define WRIST_WRENCH_COMBO "DD"
@@ -396,13 +396,13 @@
set desc = "Remember the martial techniques of the Sleeping Carp clan."
set category = "Sleeping Carp"
usr << "<b><i>You retreat inward and recall the teachings of the Sleeping Carp...</i></b>"
to_chat(usr, "<b><i>You retreat inward and recall the teachings of the Sleeping Carp...</i></b>")
usr << "<span class='notice'>Wrist Wrench</span>: Disarm Disarm. Forces opponent to drop item in hand."
usr << "<span class='notice'>Back Kick</span>: Harm Grab. Opponent must be facing away. Knocks down."
usr << "<span class='notice'>Stomach Knee</span>: Grab Harm. Knocks the wind out of opponent and stuns."
usr << "<span class='notice'>Head Kick</span>: Disarm Harm Harm. Decent damage, forces opponent to drop item in hand."
usr << "<span class='notice'>Elbow Drop</span>: Harm Disarm Harm Disarm Harm. Opponent must be on the ground. Deals huge damage, instantly kills anyone in critical condition."
to_chat(usr, "<span class='notice'>Wrist Wrench</span>: Disarm Disarm. Forces opponent to drop item in hand.")
to_chat(usr, "<span class='notice'>Back Kick</span>: Harm Grab. Opponent must be facing away. Knocks down.")
to_chat(usr, "<span class='notice'>Stomach Knee</span>: Grab Harm. Knocks the wind out of opponent and stuns.")
to_chat(usr, "<span class='notice'>Head Kick</span>: Disarm Harm Harm. Decent damage, forces opponent to drop item in hand.")
to_chat(usr, "<span class='notice'>Elbow Drop</span>: Harm Disarm Harm Disarm Harm. Opponent must be on the ground. Deals huge damage, instantly kills anyone in critical condition.")
//CQC
#define SLAM_COMBO "GH"
@@ -578,15 +578,15 @@
set desc = "You try to remember some of the basics of CQC."
set category = "CQC"
usr << "<b><i>You try to remember some of the basics of CQC.</i></b>"
to_chat(usr, "<b><i>You try to remember some of the basics of CQC.</i></b>")
usr << "<span class='notice'>Slam</span>: Grab Harm. Slam opponent into the ground, weakens and knocks down."
usr << "<span class='notice'>CQC Kick</span>: Harm Disarm Harm. Knocks opponent away. Knocks out stunned or weakened opponents."
usr << "<span class='notice'>Restrain</span>: Grab Grab. Locks opponents into a restraining position, disarm to knock them out with a choke hold."
usr << "<span class='notice'>Pressure</span>: Disarm Grab. Decent stamina damage."
usr << "<span class='notice'>Consecutive CQC</span>: Harm Harm Disarm. Mainly offensive move, huge damage and decent stamina damage."
to_chat(usr, "<span class='notice'>Slam</span>: Grab Harm. Slam opponent into the ground, weakens and knocks down.")
to_chat(usr, "<span class='notice'>CQC Kick</span>: Harm Disarm Harm. Knocks opponent away. Knocks out stunned or weakened opponents.")
to_chat(usr, "<span class='notice'>Restrain</span>: Grab Grab. Locks opponents into a restraining position, disarm to knock them out with a choke hold.")
to_chat(usr, "<span class='notice'>Pressure</span>: Disarm Grab. Decent stamina damage.")
to_chat(usr, "<span class='notice'>Consecutive CQC</span>: Harm Harm Disarm. Mainly offensive move, huge damage and decent stamina damage.")
usr << "<b><i>In addition, by having your throw mode on when being attacked, you enter an active defense mode where you have a chance to block and sometimes even counter attacks done to you.</i></b>"
to_chat(usr, "<b><i>In addition, by having your throw mode on when being attacked, you enter an active defense mode where you have a chance to block and sometimes even counter attacks done to you.</i></b>")
//ITEMS
@@ -643,7 +643,7 @@
var/mob/living/carbon/human/H = user
var/datum/martial_art/plasma_fist/F = new/datum/martial_art/plasma_fist(null)
F.teach(H)
H << "<span class='boldannounce'>You have learned the ancient martial art of Plasma Fist.</span>"
to_chat(H, "<span class='boldannounce'>You have learned the ancient martial art of Plasma Fist.</span>")
used = 1
desc = "It's completely blank."
name = "empty scroll"
@@ -675,8 +675,9 @@
/obj/item/weapon/sleeping_carp_scroll/attack_self(mob/living/carbon/human/user)
if(!istype(user) || !user)
return
user << "<span class='sciradio'>You have learned the ancient martial art of the Sleeping Carp! Your hand-to-hand combat has become much more effective, and you are now able to deflect any projectiles \
var/message = "<span class='sciradio'>You have learned the ancient martial art of the Sleeping Carp! Your hand-to-hand combat has become much more effective, and you are now able to deflect any projectiles \
directed toward you. However, you are also unable to use any ranged weaponry. You can learn more about your newfound art by using the Recall Teachings verb in the Sleeping Carp tab.</span>"
to_chat(user, message)
var/datum/martial_art/the_sleeping_carp/theSleepingCarp = new(null)
theSleepingCarp.teach(user)
user.drop_item()
@@ -706,7 +707,7 @@
/obj/item/weapon/twohanded/bostaff/attack(mob/target, mob/living/user)
add_fingerprint(user)
if((CLUMSY in user.disabilities) && prob(50))
user << "<span class ='warning'>You club yourself over the head with [src].</span>"
to_chat(user, "<span class ='warning'>You club yourself over the head with [src].</span>")
user.Weaken(3)
if(ishuman(user))
var/mob/living/carbon/human/H = user
@@ -720,7 +721,7 @@
return ..()
var/mob/living/carbon/C = target
if(C.stat)
user << "<span class='warning'>It would be dishonorable to attack a foe while they cannot retaliate.</span>"
to_chat(user, "<span class='warning'>It would be dishonorable to attack a foe while they cannot retaliate.</span>")
return
if(user.a_intent == INTENT_DISARM)
if(!wielded)

View File

@@ -10,7 +10,7 @@
/datum/action/neck_chop/Trigger()
if(owner.incapacitated())
owner << "<span class='warning'>You can't use Krav Maga while you're incapacitated.</span>"
to_chat(owner, "<span class='warning'>You can't use Krav Maga while you're incapacitated.</span>")
return
owner.visible_message("<span class='danger'>[owner] assumes the Neck Chop stance!</span>", "<b><i>Your next attack will be a Neck Chop.</i></b>")
var/mob/living/carbon/human/H = owner
@@ -22,7 +22,7 @@
/datum/action/leg_sweep/Trigger()
if(owner.incapacitated())
owner << "<span class='warning'>You can't use Krav Maga while you're incapacitated.</span>"
to_chat(owner, "<span class='warning'>You can't use Krav Maga while you're incapacitated.</span>")
return
owner.visible_message("<span class='danger'>[owner] assumes the Leg Sweep stance!</span>", "<b><i>Your next attack will be a Leg Sweep.</i></b>")
var/mob/living/carbon/human/H = owner
@@ -34,7 +34,7 @@
/datum/action/lung_punch/Trigger()
if(owner.incapacitated())
owner << "<span class='warning'>You can't use Krav Maga while you're incapacitated.</span>"
to_chat(owner, "<span class='warning'>You can't use Krav Maga while you're incapacitated.</span>")
return
owner.visible_message("<span class='danger'>[owner] assumes the Lung Punch stance!</span>", "<b><i>Your next attack will be a Lung Punch.</i></b>")
var/mob/living/carbon/human/H = owner
@@ -42,15 +42,15 @@
/datum/martial_art/krav_maga/teach(var/mob/living/carbon/human/H,var/make_temporary=0)
..()
H << "<span class = 'userdanger'>You know the arts of Krav Maga!</span>"
H << "<span class = 'danger'>Place your cursor over a move at the top of the screen to see what it does.</span>"
to_chat(H, "<span class = 'userdanger'>You know the arts of Krav Maga!</span>")
to_chat(H, "<span class = 'danger'>Place your cursor over a move at the top of the screen to see what it does.</span>")
neckchop.Grant(H)
legsweep.Grant(H)
lungpunch.Grant(H)
/datum/martial_art/krav_maga/remove(var/mob/living/carbon/human/H)
..()
H << "<span class = 'userdanger'>You suddenly forget the arts of Krav Maga...</span>"
to_chat(H, "<span class = 'userdanger'>You suddenly forget the arts of Krav Maga...</span>")
neckchop.Remove(H)
legsweep.Remove(H)
lungpunch.Remove(H)

View File

@@ -36,7 +36,7 @@
/datum/action/slam/Trigger()
if(owner.incapacitated())
owner << "<span class='warning'>You can't WRESTLE while you're OUT FOR THE COUNT.</span>"
to_chat(owner, "<span class='warning'>You can't WRESTLE while you're OUT FOR THE COUNT.</span>")
return
owner.visible_message("<span class='danger'>[owner] prepares to BODY SLAM!</span>", "<b><i>Your next attack will be a BODY SLAM.</i></b>")
var/mob/living/carbon/human/H = owner
@@ -48,7 +48,7 @@
/datum/action/throw_wrassle/Trigger()
if(owner.incapacitated())
owner << "<span class='warning'>You can't WRESTLE while you're OUT FOR THE COUNT.</span>"
to_chat(owner, "<span class='warning'>You can't WRESTLE while you're OUT FOR THE COUNT.</span>")
return
owner.visible_message("<span class='danger'>[owner] prepares to THROW!</span>", "<b><i>Your next attack will be a THROW.</i></b>")
var/mob/living/carbon/human/H = owner
@@ -60,7 +60,7 @@
/datum/action/kick/Trigger()
if(owner.incapacitated())
owner << "<span class='warning'>You can't WRESTLE while you're OUT FOR THE COUNT.</span>"
to_chat(owner, "<span class='warning'>You can't WRESTLE while you're OUT FOR THE COUNT.</span>")
return
owner.visible_message("<span class='danger'>[owner] prepares to KICK!</span>", "<b><i>Your next attack will be a KICK.</i></b>")
var/mob/living/carbon/human/H = owner
@@ -72,7 +72,7 @@
/datum/action/strike/Trigger()
if(owner.incapacitated())
owner << "<span class='warning'>You can't WRESTLE while you're OUT FOR THE COUNT.</span>"
to_chat(owner, "<span class='warning'>You can't WRESTLE while you're OUT FOR THE COUNT.</span>")
return
owner.visible_message("<span class='danger'>[owner] prepares to STRIKE!</span>", "<b><i>Your next attack will be a STRIKE.</i></b>")
var/mob/living/carbon/human/H = owner
@@ -84,7 +84,7 @@
/datum/action/drop/Trigger()
if(owner.incapacitated())
owner << "<span class='warning'>You can't WRESTLE while you're OUT FOR THE COUNT.</span>"
to_chat(owner, "<span class='warning'>You can't WRESTLE while you're OUT FOR THE COUNT.</span>")
return
owner.visible_message("<span class='danger'>[owner] prepares to LEG DROP!</span>", "<b><i>Your next attack will be a LEG DROP.</i></b>")
var/mob/living/carbon/human/H = owner
@@ -92,8 +92,8 @@
/datum/martial_art/wrestling/teach(var/mob/living/carbon/human/H,var/make_temporary=0)
..()
H << "<span class = 'userdanger'>SNAP INTO A THIN TIM!</span>"
H << "<span class = 'danger'>Place your cursor over a move at the top of the screen to see what it does.</span>"
to_chat(H, "<span class = 'userdanger'>SNAP INTO A THIN TIM!</span>")
to_chat(H, "<span class = 'danger'>Place your cursor over a move at the top of the screen to see what it does.</span>")
drop.Grant(H)
kick.Grant(H)
slam.Grant(H)
@@ -102,7 +102,7 @@
/datum/martial_art/wrestling/remove(var/mob/living/carbon/human/H)
..()
H << "<span class = 'userdanger'>You no longer feel that the tower of power is too sweet to be sour...</span>"
to_chat(H, "<span class = 'userdanger'>You no longer feel that the tower of power is too sweet to be sour...</span>")
drop.Remove(H)
kick.Remove(H)
slam.Remove(H)
@@ -119,7 +119,7 @@
if(!D)
return
if(!A.pulling || A.pulling != D)
A << "You need to have [D] in a cinch!"
to_chat(A, "You need to have [D] in a cinch!")
return
D.forceMove(A.loc)
D.setDir(get_dir(D, A))
@@ -145,11 +145,11 @@
if (A && D)
if (get_dist(A, D) > 1)
A << "[D] is too far away!"
to_chat(A, "[D] is too far away!")
return 0
if (!isturf(A.loc) || !isturf(D.loc))
A << "You can't throw [D] from here!"
to_chat(A, "You can't throw [D] from here!")
return 0
A.setDir(turn(A.dir, 90))
@@ -167,11 +167,11 @@
// These are necessary because of the sleep call.
if (get_dist(A, D) > 1)
A << "[D] is too far away!"
to_chat(A, "[D] is too far away!")
return 0
if (!isturf(A.loc) || !isturf(D.loc))
A << "You can't throw [D] from here!"
to_chat(A, "You can't throw [D] from here!")
return 0
D.forceMove(A.loc) // Maybe this will help with the wallthrowing bug.
@@ -190,7 +190,7 @@
if(!D)
return
if(!A.pulling || A.pulling != D)
A << "You need to have [D] in a cinch!"
to_chat(A, "You need to have [D] in a cinch!")
return
D.forceMove(A.loc)
A.setDir(get_dir(A, D))
@@ -223,7 +223,7 @@
D.pixel_x = A.pixel_x + 8
if (get_dist(A, D) > 1)
A << "[D] is too far away!"
to_chat(A, "[D] is too far away!")
A.pixel_x = 0
A.pixel_y = 0
D.pixel_x = 0
@@ -231,7 +231,7 @@
return 0
if (!isturf(A.loc) || !isturf(D.loc))
A << "You can't slam [D] here!"
to_chat(A, "You can't slam [D] here!")
A.pixel_x = 0
A.pixel_y = 0
D.pixel_x = 0
@@ -255,11 +255,11 @@
D.pixel_y = 0
if (get_dist(A, D) > 1)
A << "[D] is too far away!"
to_chat(A, "[D] is too far away!")
return 0
if (!isturf(A.loc) || !isturf(D.loc))
A << "You can't slam [D] here!"
to_chat(A, "You can't slam [D] here!")
return 0
D.forceMove(A.loc)
@@ -369,12 +369,12 @@
A.visible_message("<span class = 'danger'><B>...and dives head-first into the ground, ouch!</b></span>")
A.adjustBruteLoss(rand(10,20))
A.Weaken(3)
A << "[D] is too far away!"
to_chat(A, "[D] is too far away!")
return 0
if (!isturf(A.loc) || !isturf(D.loc))
A.pixel_y = 0
A << "You can't drop onto [D] from here!"
to_chat(A, "You can't drop onto [D] from here!")
return 0
if(A)

View File

@@ -231,7 +231,7 @@
if(creator.mind.special_role)
message_admins("[key_name_admin(current)](<A HREF='?_src_=holder;adminmoreinfo=\ref[current]'>?</A>) has been created by [key_name_admin(creator)](<A HREF='?_src_=holder;adminmoreinfo=\ref[creator]'>?</A>), an antagonist.")
current << "<span class='userdanger'>Despite your creators current allegiances, your true master remains [creator.real_name]. If their loyalities change, so do yours. This will never change unless your creator's body is destroyed.</span>"
to_chat(current, "<span class='userdanger'>Despite your creators current allegiances, your true master remains [creator.real_name]. If their loyalities change, so do yours. This will never change unless your creator's body is destroyed.</span>")
/datum/mind/proc/show_memory(mob/recipient, window=1)
if(!recipient)
@@ -248,7 +248,7 @@
if(window)
recipient << browse(output,"window=memory")
else if(objectives.len || memory)
recipient << "<i>[output]</i>"
to_chat(recipient, "<i>[output]</i>")
/datum/mind/proc/edit_memory()
if(!ticker || !ticker.mode)
@@ -694,7 +694,7 @@
new_objective.owner = src
new_objective.update_explanation_text()
else
usr << "No active AIs with minds"
to_chat(usr, "No active AIs with minds")
if ("prevent")
new_objective = new /datum/objective/block
@@ -792,16 +792,16 @@
switch(href_list["revolution"])
if("clear")
remove_rev()
current << "<span class='userdanger'>You have been brainwashed! You are no longer a revolutionary!</span>"
to_chat(current, "<span class='userdanger'>You have been brainwashed! You are no longer a revolutionary!</span>")
message_admins("[key_name_admin(usr)] has de-rev'ed [current].")
log_admin("[key_name(usr)] has de-rev'ed [current].")
if("rev")
if(src in ticker.mode.head_revolutionaries)
ticker.mode.head_revolutionaries -= src
ticker.mode.update_rev_icons_removed(src)
current << "<span class='userdanger'>Revolution has been disappointed of your leader traits! You are a regular revolutionary now!</span>"
to_chat(current, "<span class='userdanger'>Revolution has been disappointed of your leader traits! You are a regular revolutionary now!</span>")
else if(!(src in ticker.mode.revolutionaries))
current << "<span class='danger'><FONT size = 3> You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!</FONT></span>"
to_chat(current, "<span class='danger'><FONT size = 3> You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!</FONT></span>")
else
return
ticker.mode.revolutionaries += src
@@ -814,9 +814,9 @@
if(src in ticker.mode.revolutionaries)
ticker.mode.revolutionaries -= src
ticker.mode.update_rev_icons_removed(src)
current << "<span class='userdanger'>You have proved your devotion to revoltion! Yea are a head revolutionary now!</span>"
to_chat(current, "<span class='userdanger'>You have proved your devotion to revoltion! Yea are a head revolutionary now!</span>")
else if(!(src in ticker.mode.head_revolutionaries))
current << "<span class='userdanger'>You are a member of the revolutionaries' leadership now!</span>"
to_chat(current, "<span class='userdanger'>You are a member of the revolutionaries' leadership now!</span>")
else
return
if (ticker.mode.head_revolutionaries.len>0)
@@ -839,24 +839,24 @@
if("autoobjectives")
ticker.mode.forge_revolutionary_objectives(src)
ticker.mode.greet_revolutionary(src,0)
usr << "<span class='notice'>The objectives for revolution have been generated and shown to [key]</span>"
to_chat(usr, "<span class='notice'>The objectives for revolution have been generated and shown to [key]</span>")
if("flash")
if (!ticker.mode.equip_revolutionary(current))
usr << "<span class='danger'>Spawning flash failed!</span>"
to_chat(usr, "<span class='danger'>Spawning flash failed!</span>")
if("takeflash")
var/list/L = current.get_contents()
var/obj/item/device/assembly/flash/flash = locate() in L
if (!flash)
usr << "<span class='danger'>Deleting flash failed!</span>"
to_chat(usr, "<span class='danger'>Deleting flash failed!</span>")
qdel(flash)
if("repairflash")
var/list/L = current.get_contents()
var/obj/item/device/assembly/flash/flash = locate() in L
if (!flash)
usr << "<span class='danger'>Repairing flash failed!</span>"
to_chat(usr, "<span class='danger'>Repairing flash failed!</span>")
else
flash.crit_fail = 0
flash.update_icon()
@@ -875,11 +875,11 @@
if("equip")
switch(ticker.mode.equip_gang(current,gang_datum))
if(1)
usr << "<span class='warning'>Unable to equip territory spraycan!</span>"
to_chat(usr, "<span class='warning'>Unable to equip territory spraycan!</span>")
if(2)
usr << "<span class='warning'>Unable to equip recruitment pen and spraycan!</span>"
to_chat(usr, "<span class='warning'>Unable to equip recruitment pen and spraycan!</span>")
if(3)
usr << "<span class='warning'>Unable to equip gangtool, pen, and spraycan!</span>"
to_chat(usr, "<span class='warning'>Unable to equip gangtool, pen, and spraycan!</span>")
if("takeequip")
var/list/L = current.get_contents()
@@ -911,7 +911,7 @@
gang_datum = G
special_role = "[G.name] Gang Boss"
G.add_gang_hud(src)
current << "<FONT size=3 color=red><B>You are a [G.name] Gang Boss!</B></FONT>"
to_chat(current, "<FONT size=3 color=red><B>You are a [G.name] Gang Boss!</B></FONT>")
message_admins("[key_name_admin(usr)] has added [current] to the [G.name] Gang leadership.")
log_admin("[key_name(usr)] has added [current] to the [G.name] Gang leadership.")
ticker.mode.forge_gang_objectives(src)
@@ -943,11 +943,11 @@
log_admin("[key_name(usr)] has cult'ed [current].")
if("tome")
if (!ticker.mode.equip_cultist(current,1))
usr << "<span class='danger'>Spawning tome failed!</span>"
to_chat(usr, "<span class='danger'>Spawning tome failed!</span>")
if("amulet")
if (!ticker.mode.equip_cultist(current))
usr << "<span class='danger'>Spawning amulet failed!</span>"
to_chat(usr, "<span class='danger'>Spawning amulet failed!</span>")
else if(href_list["clockcult"])
switch(href_list["clockcult"])
@@ -962,15 +962,15 @@
log_admin("[key_name(usr)] has made [current] into a servant of Ratvar.")
if("slab")
if(!ticker.mode.equip_servant(current))
usr << "<span class='warning'>Failed to outfit [current] with a slab!</span>"
to_chat(usr, "<span class='warning'>Failed to outfit [current] with a slab!</span>")
else
usr << "<span class='notice'>Successfully gave [current] a clockwork slab!</span>"
to_chat(usr, "<span class='notice'>Successfully gave [current] a clockwork slab!</span>")
else if (href_list["wizard"])
switch(href_list["wizard"])
if("clear")
remove_wizard()
current << "<span class='userdanger'>You have been brainwashed! You are no longer a wizard!</span>"
to_chat(current, "<span class='userdanger'>You have been brainwashed! You are no longer a wizard!</span>")
log_admin("[key_name(usr)] has de-wizard'ed [current].")
ticker.mode.update_wiz_icons_removed(src)
if("wizard")
@@ -978,7 +978,7 @@
ticker.mode.wizards += src
special_role = "Wizard"
//ticker.mode.learn_basic_spells(current)
current << "<span class='boldannounce'>You are the Space Wizard!</span>"
to_chat(current, "<span class='boldannounce'>You are the Space Wizard!</span>")
message_admins("[key_name_admin(usr)] has wizard'ed [current].")
log_admin("[key_name(usr)] has wizard'ed [current].")
ticker.mode.update_wiz_icons_added(src)
@@ -990,13 +990,13 @@
ticker.mode.name_wizard(current)
if("autoobjectives")
ticker.mode.forge_wizard_objectives(src)
usr << "<span class='notice'>The objectives for wizard [key] have been generated. You can edit them and anounce manually.</span>"
to_chat(usr, "<span class='notice'>The objectives for wizard [key] have been generated. You can edit them and anounce manually.</span>")
else if (href_list["changeling"])
switch(href_list["changeling"])
if("clear")
remove_changeling()
current << "<span class='userdanger'>You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!</span>"
to_chat(current, "<span class='userdanger'>You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!</span>")
message_admins("[key_name_admin(usr)] has de-changeling'ed [current].")
log_admin("[key_name(usr)] has de-changeling'ed [current].")
if("changeling")
@@ -1004,17 +1004,17 @@
ticker.mode.changelings += src
current.make_changeling()
special_role = "Changeling"
current << "<span class='boldannounce'>Your powers are awoken. A flash of memory returns to us...we are [changeling.changelingID], a changeling!</span>"
to_chat(current, "<span class='boldannounce'>Your powers are awoken. A flash of memory returns to us...we are [changeling.changelingID], a changeling!</span>")
message_admins("[key_name_admin(usr)] has changeling'ed [current].")
log_admin("[key_name(usr)] has changeling'ed [current].")
ticker.mode.update_changeling_icons_added(src)
if("autoobjectives")
ticker.mode.forge_changeling_objectives(src)
usr << "<span class='notice'>The objectives for changeling [key] have been generated. You can edit them and anounce manually.</span>"
to_chat(usr, "<span class='notice'>The objectives for changeling [key] have been generated. You can edit them and anounce manually.</span>")
if("initialdna")
if( !changeling || !changeling.stored_profiles.len || !istype(current, /mob/living/carbon))
usr << "<span class='danger'>Resetting DNA failed!</span>"
to_chat(usr, "<span class='danger'>Resetting DNA failed!</span>")
else
var/mob/living/carbon/C = current
changeling.first_prof.dna.transfer_identity(C, transfer_SE=1)
@@ -1026,7 +1026,7 @@
switch(href_list["nuclear"])
if("clear")
remove_nukeop()
current << "<span class='userdanger'>You have been brainwashed! You are no longer a syndicate operative!</span>"
to_chat(current, "<span class='userdanger'>You have been brainwashed! You are no longer a syndicate operative!</span>")
message_admins("[key_name_admin(usr)] has de-nuke op'ed [current].")
log_admin("[key_name(usr)] has de-nuke op'ed [current].")
if("nuclear")
@@ -1039,7 +1039,7 @@
current.real_name = "[syndicate_name()] Operative #[ticker.mode.syndicates.len-1]"
special_role = "Syndicate"
assigned_role = "Syndicate"
current << "<span class='notice'>You are a [syndicate_name()] agent!</span>"
to_chat(current, "<span class='notice'>You are a [syndicate_name()] agent!</span>")
ticker.mode.forge_syndicate_objectives(src)
ticker.mode.greet_syndicate(src)
message_admins("[key_name_admin(usr)] has nuke op'ed [current].")
@@ -1059,7 +1059,7 @@
qdel(H.w_uniform)
if (!ticker.mode.equip_syndicate(current))
usr << "<span class='danger'>Equipping a syndicate failed!</span>"
to_chat(usr, "<span class='danger'>Equipping a syndicate failed!</span>")
if("tellcode")
var/code
for (var/obj/machinery/nuclearbomb/bombue in machines)
@@ -1068,15 +1068,15 @@
break
if (code)
store_memory("<B>Syndicate Nuclear Bomb Code</B>: [code]", 0, 0)
current << "The nuclear authorization code is: <B>[code]</B>"
to_chat(current, "The nuclear authorization code is: <B>[code]</B>")
else
usr << "<span class='danger'>No valid nuke found!</span>"
to_chat(usr, "<span class='danger'>No valid nuke found!</span>")
else if (href_list["traitor"])
switch(href_list["traitor"])
if("clear")
remove_traitor()
current << "<span class='userdanger'>You have been brainwashed! You are no longer a traitor!</span>"
to_chat(current, "<span class='userdanger'>You have been brainwashed! You are no longer a traitor!</span>")
message_admins("[key_name_admin(usr)] has de-traitor'ed [current].")
log_admin("[key_name(usr)] has de-traitor'ed [current].")
ticker.mode.update_traitor_icons_removed(src)
@@ -1085,7 +1085,7 @@
if(!(src in ticker.mode.traitors))
ticker.mode.traitors += src
special_role = "traitor"
current << "<span class='boldannounce'>You are a traitor!</span>"
to_chat(current, "<span class='boldannounce'>You are a traitor!</span>")
message_admins("[key_name_admin(usr)] has traitor'ed [current].")
log_admin("[key_name(usr)] has traitor'ed [current].")
if(isAI(current))
@@ -1095,7 +1095,7 @@
if("autoobjectives")
ticker.mode.forge_traitor_objectives(src)
usr << "<span class='notice'>The objectives for traitor [key] have been generated. You can edit them and anounce manually.</span>"
to_chat(usr, "<span class='notice'>The objectives for traitor [key] have been generated. You can edit them and anounce manually.</span>")
else if(href_list["devil"])
switch(href_list["devil"])
@@ -1105,10 +1105,10 @@
if(devilinfo)
devilinfo.regress_blood_lizard()
else
usr << "<span class='warning'>Something went wrong with removing the devil, we were unable to find an attached devilinfo.</span>."
to_chat(usr, "<span class='warning'>Something went wrong with removing the devil, we were unable to find an attached devilinfo.</span>.")
ticker.mode.devils -= src
special_role = null
current << "<span class='userdanger'>Your infernal link has been severed! You are no longer a devil!</span>"
to_chat(current, "<span class='userdanger'>Your infernal link has been severed! You are no longer a devil!</span>")
RemoveSpell(/obj/effect/proc_holder/spell/targeted/infernal_jaunt)
RemoveSpell(/obj/effect/proc_holder/spell/aimed/fireball/hellish)
RemoveSpell(/obj/effect/proc_holder/spell/targeted/summon_contract)
@@ -1126,7 +1126,7 @@
log_admin("[key_name(usr)] has de-sintouch'ed [current].")
if("devil")
if(!ishuman(current) && !iscyborg(current))
usr << "<span class='warning'>This only works on humans and cyborgs!</span>"
to_chat(usr, "<span class='warning'>This only works on humans and cyborgs!</span>")
return
ticker.mode.devils += src
special_role = "devil"
@@ -1141,17 +1141,17 @@
H.influenceSin()
message_admins("[key_name_admin(usr)] has sintouch'ed [current].")
else
usr << "<span class='warning'>This only works on humans!</span>"
to_chat(usr, "<span class='warning'>This only works on humans!</span>")
return
else if(href_list["abductor"])
switch(href_list["abductor"])
if("clear")
usr << "Not implemented yet. Sorry!"
to_chat(usr, "Not implemented yet. Sorry!")
//ticker.mode.update_abductor_icons_removed(src)
if("abductor")
if(!ishuman(current))
usr << "<span class='warning'>This only works on humans!</span>"
to_chat(usr, "<span class='warning'>This only works on humans!</span>")
return
make_Abductor()
log_admin("[key_name(usr)] turned [current] into abductor.")
@@ -1181,7 +1181,7 @@
src = null
M = H.monkeyize()
src = M.mind
//world << "DEBUG: \"healthy\": M=[M], M.mind=[M.mind], src=[src]!"
//to_chat(world, "DEBUG: \"healthy\": M=[M], M.mind=[M.mind], src=[src]!")
else if (istype(M) && length(M.viruses))
for(var/datum/disease/D in M.viruses)
D.cure(0)
@@ -1251,7 +1251,7 @@
log_admin("[key_name(usr)] changed [current]'s telecrystal count to [crystals].")
if("uplink")
if(!ticker.mode.equip_traitor(current, !(src in ticker.mode.traitors)))
usr << "<span class='danger'>Equipping a syndicate failed!</span>"
to_chat(usr, "<span class='danger'>Equipping a syndicate failed!</span>")
log_admin("[key_name(usr)] attempted to give [current] an uplink.")
else if (href_list["obj_announce"])
@@ -1261,10 +1261,10 @@
/datum/mind/proc/announce_objectives()
var/obj_count = 1
current << "<span class='notice'>Your current objectives:</span>"
to_chat(current, "<span class='notice'>Your current objectives:</span>")
for(var/objective in objectives)
var/datum/objective/O = objective
current << "<B>Objective #[obj_count]</B>: [O.explanation_text]"
to_chat(current, "<B>Objective #[obj_count]</B>: [O.explanation_text]")
obj_count++
/datum/mind/proc/find_syndicate_uplink()
@@ -1315,14 +1315,14 @@
if (nuke_code)
store_memory("<B>Syndicate Nuclear Bomb Code</B>: [nuke_code]", 0, 0)
current << "The nuclear authorization code is: <B>[nuke_code]</B>"
to_chat(current, "The nuclear authorization code is: <B>[nuke_code]</B>")
else
var/obj/machinery/nuclearbomb/nuke = locate("syndienuke") in nuke_list
if(nuke)
store_memory("<B>Syndicate Nuclear Bomb Code</B>: [nuke.r_code]", 0, 0)
current << "The nuclear authorization code is: <B>nuke.r_code</B>"
to_chat(current, "The nuclear authorization code is: <B>nuke.r_code</B>")
else
current << "You were not provided with a nuclear code. Trying asking your team leader or contacting syndicate command.</B>"
to_chat(current, "You were not provided with a nuclear code. Trying asking your team leader or contacting syndicate command.</B>")
if (leader)
ticker.mode.prepare_syndicate_leader(src,nuke_code)
@@ -1345,7 +1345,7 @@
assigned_role = "Wizard"
if(!wizardstart.len)
current.loc = pick(latejoin)
current << "HOT INSERTION, GO GO GO"
to_chat(current, "HOT INSERTION, GO GO GO")
else
current.loc = pick(wizardstart)
@@ -1359,20 +1359,20 @@
if(!(src in ticker.mode.cult))
ticker.mode.add_cultist(src,FALSE)
special_role = "Cultist"
current << "<font color=\"purple\"><b><i>You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie.</b></i></font>"
current << "<font color=\"purple\"><b><i>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>"
to_chat(current, "<font color=\"purple\"><b><i>You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie.</b></i></font>")
to_chat(current, "<font color=\"purple\"><b><i>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>")
var/datum/game_mode/cult/cult = ticker.mode
if (istype(cult))
cult.memorize_cult_objectives(src)
else
var/explanation = "Summon Nar-Sie via the use of the appropriate rune (Hell join self). It will only work if nine cultists stand on and around it."
current << "<B>Objective #1</B>: [explanation]"
to_chat(current, "<B>Objective #1</B>: [explanation]")
memory += "<B>Objective #1</B>: [explanation]<BR>"
var/mob/living/carbon/human/H = current
if (!ticker.mode.equip_cultist(current))
H << "Spawning an amulet from your Master failed."
to_chat(H, "Spawning an amulet from your Master failed.")
/datum/mind/proc/make_Rev()
if (ticker.mode.head_revolutionaries.len>0)

View File

@@ -66,7 +66,7 @@
return 1
owner.dna.mutations.Add(src)
if(text_gain_indication)
owner << text_gain_indication
to_chat(owner, text_gain_indication)
if(visual_indicators.len)
var/list/mut_overlay = list(get_visual_indicator(owner))
if(owner.overlays_standing[layer_used])
@@ -94,7 +94,7 @@
/datum/mutation/human/proc/on_losing(mob/living/carbon/human/owner)
if(owner && istype(owner) && (owner.dna.mutations.Remove(src)))
if(text_lose_indication && owner.stat != DEAD)
owner << text_lose_indication
to_chat(owner, text_lose_indication)
if(visual_indicators.len)
var/list/mut_overlay = list()
if(owner.overlays_standing[layer_used])
@@ -137,7 +137,7 @@
/datum/mutation/human/hulk/on_life(mob/living/carbon/human/owner)
if(owner.health < 0)
on_losing(owner)
owner << "<span class='danger'>You suddenly feel very weak.</span>"
to_chat(owner, "<span class='danger'>You suddenly feel very weak.</span>")
/datum/mutation/human/hulk/on_losing(mob/living/carbon/human/owner)
if(..())
@@ -249,7 +249,7 @@
text_gain_indication = "<span class='danger'>You feel strange.</span>"
/datum/mutation/human/bad_dna/on_acquiring(mob/living/carbon/human/owner)
owner << text_gain_indication
to_chat(owner, text_gain_indication)
var/mob/new_mob
if(prob(95))
if(prob(50))
@@ -378,7 +378,7 @@
/datum/mutation/human/race/on_acquiring(mob/living/carbon/human/owner)
if(owner.has_brain_worms())
owner << "<span class='warning'>You feel something strongly clinging to your humanity!</span>"
to_chat(owner, "<span class='warning'>You feel something strongly clinging to your humanity!</span>")
return
if(..())
return

View File

@@ -29,7 +29,7 @@
bar.pixel_y = 32 + (PROGRESSBAR_HEIGHT * (listindex - 1))
/datum/progressbar/proc/update(progress)
//world << "Update [progress] - [goal] - [(progress / goal)] - [((progress / goal) * 100)] - [round(((progress / goal) * 100), 5)]"
//to_chat(world, "Update [progress] - [goal] - [(progress / goal)] - [((progress / goal) * 100)] - [round(((progress / goal) * 100), 5)]")
if (!user || !user.client)
shown = 0
return

View File

@@ -79,7 +79,7 @@
handle_vehicle_layer()
handle_vehicle_offsets()
else
user << "<span class='notice'>You'll need the keys in one of your hands to drive \the [ridden.name].</span>"
to_chat(user, "<span class='notice'>You'll need the keys in one of your hands to drive \the [ridden.name].</span>")
/datum/riding/proc/Process_Spacemove(direction)
if(ridden.has_gravity())
@@ -281,7 +281,7 @@
if(istype(next, /turf/open/floor/plating/lava) || istype(current, /turf/open/floor/plating/lava)) //We can move from land to lava, or lava to land, but not from land to land
..()
else
user << "Boats don't go on land!"
to_chat(user, "Boats don't go on land!")
return 0
/datum/riding/boat/dragon
@@ -315,7 +315,7 @@
handle_vehicle_layer()
handle_vehicle_offsets()
else
user << "<span class='notice'>You'll need something to guide the [ridden.name].</span>"
to_chat(user, "<span class='notice'>You'll need something to guide the [ridden.name].</span>")
///////Humans. Yes, I said humans. No, this won't end well...//////////
/datum/riding/human
@@ -377,14 +377,14 @@
if(R.module && R.module.ride_allow_incapacitated)
kick = FALSE
if(kick)
user << "<span class='userdanger'>You fall off of [ridden]!</span>"
to_chat(user, "<span class='userdanger'>You fall off of [ridden]!</span>")
ridden.unbuckle_mob(user)
return
if(istype(user, /mob/living/carbon))
var/mob/living/carbon/carbonuser = user
if(!carbonuser.get_num_arms())
ridden.unbuckle_mob(user)
user << "<span class='userdanger'>You can't grab onto [ridden] with no hands!</span>"
to_chat(user, "<span class='userdanger'>You can't grab onto [ridden] with no hands!</span>")
return
/datum/riding/cyborg/handle_vehicle_layer()

View File

@@ -208,7 +208,7 @@
alert_type = /obj/screen/alert/status_effect/wish_granters_gift
/datum/status_effect/wish_granters_gift/on_apply()
owner << "<span class='notice'>Death is not your end! The Wish Granter's energy suffuses you, and you begin to rise...</span>"
to_chat(owner, "<span class='notice'>Death is not your end! The Wish Granter's energy suffuses you, and you begin to rise...</span>")
/datum/status_effect/wish_granters_gift/on_remove()
owner.revive(full_heal = 1, admin_revive = 1)

View File

@@ -12,7 +12,7 @@
/datum/status_effect/freon/on_apply()
if(!owner.stat)
owner << "<span class='userdanger'>You become frozen in a cube!</span>"
to_chat(owner, "<span class='userdanger'>You become frozen in a cube!</span>")
cube = icon('icons/effects/freeze.dmi', "ice_cube")
owner.add_overlay(cube)
owner.update_canmove()
@@ -24,7 +24,7 @@
/datum/status_effect/freon/on_remove()
if(!owner.stat)
owner << "The cube melts!"
to_chat(owner, "The cube melts!")
owner.cut_overlay(cube)
owner.bodytemperature += 100
owner.update_canmove()

View File

@@ -67,7 +67,7 @@
var/mob/M = V
if(M.z == target_z)
if(telegraph_message)
M << telegraph_message
to_chat(M, telegraph_message)
if(telegraph_sound)
M << sound(telegraph_sound)
addtimer(CALLBACK(src, .proc/start), telegraph_duration)
@@ -81,7 +81,7 @@
var/mob/M = V
if(M.z == target_z)
if(weather_message)
M << weather_message
to_chat(M, weather_message)
if(weather_sound)
M << sound(weather_sound)
START_PROCESSING(SSweather, src)
@@ -96,7 +96,7 @@
var/mob/M = V
if(M.z == target_z)
if(end_message)
M << end_message
to_chat(M, end_message)
if(end_sound)
M << sound(end_sound)
STOP_PROCESSING(SSweather, src)

View File

@@ -234,14 +234,14 @@ var/list/wire_name_directory = list()
cut_color(target_wire)
. = TRUE
else
L << "<span class='warning'>You need wirecutters!</span>"
to_chat(L, "<span class='warning'>You need wirecutters!</span>")
if("pulse")
if(istype(I, /obj/item/device/multitool) || IsAdminGhost(usr))
playsound(holder, 'sound/weapons/empty.ogg', 20, 1)
pulse_color(target_wire)
. = TRUE
else
L << "<span class='warning'>You need a multitool!</span>"
to_chat(L, "<span class='warning'>You need a multitool!</span>")
if("attach")
if(is_attached(target_wire))
var/obj/item/O = detach_assembly(target_wire)
@@ -257,6 +257,6 @@ var/list/wire_name_directory = list()
attach_assembly(target_wire, A)
. = TRUE
else
L << "<span class='warning'>You need an attachable assembly!</span>"
to_chat(L, "<span class='warning'>You need an attachable assembly!</span>")
#undef MAXIMUM_EMP_WIRES

View File

@@ -32,7 +32,7 @@
//atom creation method that preloads variables at creation
if(use_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New()
_preloader.load(src)
//. = ..() //uncomment if you are dumb enough to add a /datum/New() proc
var/do_initialize = SSatoms.initialized
@@ -232,26 +232,26 @@
f_name = "a "
f_name += "<span class='danger'>blood-stained</span> [name]!"
user << "\icon[src] That's [f_name]"
to_chat(user, "\icon[src] That's [f_name]")
if(desc)
user << desc
to_chat(user, desc)
// *****RM
//user << "[name]: Dn:[density] dir:[dir] cont:[contents] icon:[icon] is:[icon_state] loc:[loc]"
//to_chat(user, "[name]: Dn:[density] dir:[dir] cont:[contents] icon:[icon] is:[icon_state] loc:[loc]")
if(reagents && (is_open_container() || is_transparent())) //is_open_container() isn't really the right proc for this, but w/e
user << "It contains:"
to_chat(user, "It contains:")
if(reagents.reagent_list.len)
if(user.can_see_reagents()) //Show each individual reagent
for(var/datum/reagent/R in reagents.reagent_list)
user << "[R.volume] units of [R.name]"
to_chat(user, "[R.volume] units of [R.name]")
else //Otherwise, just show the total volume
var/total_volume = 0
for(var/datum/reagent/R in reagents.reagent_list)
total_volume += R.volume
user << "[total_volume] units of various reagents"
to_chat(user, "[total_volume] units of various reagents")
else
user << "Nothing."
to_chat(user, "Nothing.")
/atom/proc/relaymove()
return
@@ -404,7 +404,7 @@ var/list/blood_splatter_icons = list()
cur_y = y_arr.Find(src.z)
if(cur_y)
break
// world << "X = [cur_x]; Y = [cur_y]"
// to_chat(world, "X = [cur_x]; Y = [cur_y]")
if(cur_x && cur_y)
return list("x"=cur_x,"y"=cur_y)
else

View File

@@ -245,12 +245,12 @@ var/list/pointers = list()
if(!holder)
return
src << "There are [pointers.len] pointers:"
to_chat(src, "There are [pointers.len] pointers:")
for(var/p in pointers)
src << p
to_chat(src, p)
var/datum/signal/S = locate(p)
if(istype(S))
src << S.debug_print()
to_chat(src, S.debug_print())
/obj/proc/receive_signal(datum/signal/signal, receive_method, receive_param)
return

View File

@@ -54,12 +54,12 @@
H.set_machine(src)
if(href_list["school"])
if(used)
H << "You already used this contract!"
to_chat(H, "You already used this contract!")
return
var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src)
if(candidates.len)
if(used)
H << "You already used this contract!"
to_chat(H, "You already used this contract!")
return
used = 1
var/mob/dead/observer/theghost = pick(candidates)
@@ -67,7 +67,7 @@
if(H && H.mind)
ticker.mode.update_wiz_icons_added(H.mind)
else
H << "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later."
to_chat(H, "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.")
/obj/item/weapon/antag_spawner/contract/spawn_antag(client/C, turf/T, type = "")
new /obj/effect/particle_effect/smoke(T)
@@ -77,25 +77,25 @@
var/wizard_name = "the wizard"
if(usr)
wizard_name = usr.real_name
M << "<B>You are [wizard_name]'s apprentice! You are bound by magic contract to follow their orders and help them in accomplishing their goals."
to_chat(M, "<B>You are [wizard_name]'s apprentice! You are bound by magic contract to follow their orders and help them in accomplishing their goals.")
switch(type)
if("destruction")
M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(null))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball(null))
M << "<B>Your service has not gone unrewarded, however. Studying under [wizard_name], you have learned powerful, destructive spells. You are able to cast magic missile and fireball."
to_chat(M, "<B>Your service has not gone unrewarded, however. Studying under [wizard_name], you have learned powerful, destructive spells. You are able to cast magic missile and fireball.")
if("bluespace")
M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null))
M << "<B>Your service has not gone unrewarded, however. Studying under [wizard_name], you have learned reality bending mobility spells. You are able to cast teleport and ethereal jaunt."
to_chat(M, "<B>Your service has not gone unrewarded, however. Studying under [wizard_name], you have learned reality bending mobility spells. You are able to cast teleport and ethereal jaunt.")
if("healing")
M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/charge(null))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/forcewall(null))
M.put_in_hands_or_del(new /obj/item/weapon/gun/magic/staff/healing(M))
M << "<B>Your service has not gone unrewarded, however. Studying under [wizard_name], you have learned livesaving survival spells. You are able to cast charge and forcewall."
to_chat(M, "<B>Your service has not gone unrewarded, however. Studying under [wizard_name], you have learned livesaving survival spells. You are able to cast charge and forcewall.")
if("robeless")
M.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock(null))
M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mind_transfer(null))
M << "<B>Your service has not gone unrewarded, however. Studying under [wizard_name], you have learned stealthy, robeless spells. You are able to cast knock and mindswap."
to_chat(M, "<B>Your service has not gone unrewarded, however. Studying under [wizard_name], you have learned stealthy, robeless spells. You are able to cast knock and mindswap.")
equip_antag(M)
var/wizard_name_first = pick(wizard_first)
@@ -140,13 +140,13 @@
/obj/item/weapon/antag_spawner/nuke_ops/proc/check_usability(mob/user)
if(used)
user << "<span class='warning'>[src] is out of power!</span>"
to_chat(user, "<span class='warning'>[src] is out of power!</span>")
return 0
if(!(user.mind in ticker.mode.syndicates))
user << "<span class='danger'>AUTHENTICATION FAILURE. ACCESS DENIED.</span>"
to_chat(user, "<span class='danger'>AUTHENTICATION FAILURE. ACCESS DENIED.</span>")
return 0
if(user.z != ZLEVEL_CENTCOM)
user << "<span class='warning'>[src] is out of range! It can only be used at your base!</span>"
to_chat(user, "<span class='warning'>[src] is out of range! It can only be used at your base!</span>")
return 0
return 1
@@ -167,7 +167,7 @@
S.start()
qdel(src)
else
user << "<span class='warning'>Unable to connect to Syndicate command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.</span>"
to_chat(user, "<span class='warning'>Unable to connect to Syndicate command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.</span>")
/obj/item/weapon/antag_spawner/nuke_ops/spawn_antag(client/C, turf/T)
var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
@@ -236,7 +236,7 @@
/obj/item/weapon/antag_spawner/slaughter_demon/attack_self(mob/user)
if(user.z != 1)
user << "<span class='notice'>You should probably wait until you reach the station.</span>"
to_chat(user, "<span class='notice'>You should probably wait until you reach the station.</span>")
return
if(used)
return
@@ -247,12 +247,12 @@
used = 1
var/mob/dead/observer/theghost = pick(demon_candidates)
spawn_antag(theghost.client, get_turf(src), initial(demon_type.name))
user << shatter_msg
user << veil_msg
to_chat(user, shatter_msg)
to_chat(user, veil_msg)
playsound(user.loc, 'sound/effects/Glassbr1.ogg', 100, 1)
qdel(src)
else
user << "<span class='notice'>You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later.</span>"
to_chat(user, "<span class='notice'>You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later.</span>")
/obj/item/weapon/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, type = "")
@@ -275,12 +275,12 @@
new_objective2.owner = S.mind
new_objective2.explanation_text = "[objective_verb] everyone[usr ? " else while you're at it":""]."
S.mind.objectives += new_objective2
S << S.playstyle_string
S << "<B>You are currently not currently in the same plane of existence as the station. \
Ctrl+Click a blood pool to manifest.</B>"
to_chat(S, S.playstyle_string)
to_chat(S, "<B>You are currently not currently in the same plane of existence as the station. \
Ctrl+Click a blood pool to manifest.</B>")
if(new_objective)
S << "<B>Objective #[1]</B>: [new_objective.explanation_text]"
S << "<B>Objective #[new_objective ? "[2]":"[1]"]</B>: [new_objective2.explanation_text]"
to_chat(S, "<B>Objective #[1]</B>: [new_objective.explanation_text]")
to_chat(S, "<B>Objective #[new_objective ? "[2]":"[1]"]</B>: [new_objective2.explanation_text]")
/obj/item/weapon/antag_spawner/slaughter_demon/laughter
name = "vial of tickles"

View File

@@ -70,7 +70,7 @@ var/list/blobs_legit = list() //used for win-score calculations, contains only b
/datum/game_mode/blob/proc/show_message(message)
for(var/datum/mind/blob in blob_overminds)
blob.current << message
to_chat(blob.current, message)
/datum/game_mode/blob/post_setup()
set waitfor = FALSE
@@ -88,7 +88,7 @@ var/list/blobs_legit = list() //used for win-score calculations, contains only b
var/datum/round_event_control/blob/B = locate() in SSevent.control
if(B)
B.max_occurrences = 0 // disable the event
. = ..()
var/message_delay = rand(messagedelay_low, messagedelay_high) //between 4 and 6 minutes with 2400 low and 3600 high.

Some files were not shown because too many files have changed in this diff Show More