mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-25 01:22:24 +00:00
to_chat replacing stream operator
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
set name = "Toggle Debug Messages"
|
||||
set category = "Debug"
|
||||
M.debug = !M.debug
|
||||
usr << "[M]: Debug messages toggled [M.debug? "on" : "off"]."
|
||||
to_chat(usr, "[M]: Debug messages toggled [M.debug? "on" : "off"].")
|
||||
|
||||
//Generalized gas pumping proc.
|
||||
//Moves gas from one gas_mixture to another and returns the amount of power needed (assuming 1 second), or -1 if no gas was pumped.
|
||||
|
||||
@@ -201,7 +201,7 @@
|
||||
|
||||
/obj/machinery/atmospherics/binary/dp_vent_pump/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W"
|
||||
to_chat(user, "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W")
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/power_change()
|
||||
|
||||
@@ -389,11 +389,11 @@
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W"
|
||||
to_chat(user, "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W")
|
||||
else
|
||||
user << "You are too far away to read the gauge."
|
||||
to_chat(user, "You are too far away to read the gauge.")
|
||||
if(welded)
|
||||
user << "It seems welded shut."
|
||||
to_chat(user, "It seems welded shut.")
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/power_change()
|
||||
var/old_stat = stat
|
||||
|
||||
@@ -288,6 +288,6 @@
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W"
|
||||
to_chat(user, "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W")
|
||||
else
|
||||
user << "You are too far away to read the gauge."
|
||||
to_chat(user, "You are too far away to read the gauge.")
|
||||
|
||||
@@ -308,4 +308,4 @@
|
||||
|
||||
/obj/machinery/atmospherics/valve/examine(mob/user)
|
||||
..()
|
||||
user << "It is [open ? "open" : "closed"]."
|
||||
to_chat(user, "It is [open ? "open" : "closed"].")
|
||||
|
||||
@@ -79,13 +79,13 @@ Class Procs:
|
||||
if(!direct())
|
||||
state |= CONNECTION_DIRECT
|
||||
edge.direct++
|
||||
//world << "Marked direct."
|
||||
//to_world("Marked direct.")
|
||||
|
||||
/connection/proc/mark_indirect()
|
||||
if(direct())
|
||||
state &= ~CONNECTION_DIRECT
|
||||
edge.direct--
|
||||
//world << "Marked indirect."
|
||||
//to_world("Marked indirect.")
|
||||
|
||||
/connection/proc/mark_space()
|
||||
state |= CONNECTION_SPACE
|
||||
@@ -99,18 +99,18 @@ Class Procs:
|
||||
/connection/proc/erase()
|
||||
edge.remove_connection(src)
|
||||
state |= CONNECTION_INVALID
|
||||
//world << "Connection Erased: [state]"
|
||||
//to_world("Connection Erased: [state]")
|
||||
|
||||
/connection/proc/update()
|
||||
//world << "Updated, \..."
|
||||
//to_world("Updated, \...")
|
||||
if(!istype(A,/turf/simulated))
|
||||
//world << "Invalid A."
|
||||
//to_world("Invalid A.")
|
||||
erase()
|
||||
return
|
||||
|
||||
var/block_status = air_master.air_blocked(A,B)
|
||||
if(block_status & AIR_BLOCKED)
|
||||
//world << "Blocked connection."
|
||||
//to_world("Blocked connection.")
|
||||
erase()
|
||||
return
|
||||
else if(block_status & ZONE_BLOCKED)
|
||||
@@ -122,14 +122,14 @@ Class Procs:
|
||||
|
||||
if(state & CONNECTION_SPACE)
|
||||
if(!b_is_space)
|
||||
//world << "Invalid B."
|
||||
//to_world("Invalid B.")
|
||||
erase()
|
||||
return
|
||||
if(A.zone != zoneA)
|
||||
//world << "Zone changed, \..."
|
||||
//to_world("Zone changed, \...")
|
||||
if(!A.zone)
|
||||
erase()
|
||||
//world << "erased."
|
||||
//to_world("erased.")
|
||||
return
|
||||
else
|
||||
edge.remove_connection(src)
|
||||
@@ -137,22 +137,22 @@ Class Procs:
|
||||
edge.add_connection(src)
|
||||
zoneA = A.zone
|
||||
|
||||
//world << "valid."
|
||||
//to_world("valid.")
|
||||
return
|
||||
|
||||
else if(b_is_space)
|
||||
//world << "Invalid B."
|
||||
//to_world("Invalid B.")
|
||||
erase()
|
||||
return
|
||||
|
||||
if(A.zone == B.zone)
|
||||
//world << "A == B"
|
||||
//to_world("A == B")
|
||||
erase()
|
||||
return
|
||||
|
||||
if(A.zone != zoneA || (zoneB && (B.zone != zoneB)))
|
||||
|
||||
//world << "Zones changed, \..."
|
||||
//to_world("Zones changed, \...")
|
||||
if(A.zone && B.zone)
|
||||
edge.remove_connection(src)
|
||||
edge = air_master.get_edge(A.zone, B.zone)
|
||||
@@ -160,9 +160,9 @@ Class Procs:
|
||||
zoneA = A.zone
|
||||
zoneB = B.zone
|
||||
else
|
||||
//world << "erased."
|
||||
//to_world("erased.")
|
||||
erase()
|
||||
return
|
||||
|
||||
|
||||
//world << "valid."
|
||||
//to_world("valid.")
|
||||
@@ -72,10 +72,10 @@ Class Procs:
|
||||
/connection_edge/proc/add_connection(connection/c)
|
||||
coefficient++
|
||||
if(c.direct()) direct++
|
||||
//world << "Connection added: [type] Coefficient: [coefficient]"
|
||||
//to_world("Connection added: [type] Coefficient: [coefficient]")
|
||||
|
||||
/connection_edge/proc/remove_connection(connection/c)
|
||||
//world << "Connection removed: [type] Coefficient: [coefficient-1]"
|
||||
//to_world("Connection removed: [type] Coefficient: [coefficient-1]")
|
||||
coefficient--
|
||||
if(coefficient <= 0)
|
||||
erase()
|
||||
@@ -85,7 +85,7 @@ Class Procs:
|
||||
|
||||
/connection_edge/proc/erase()
|
||||
air_master.remove_edge(src)
|
||||
//world << "[type] Erased."
|
||||
//to_world("[type] Erased.")
|
||||
|
||||
/connection_edge/proc/tick()
|
||||
|
||||
@@ -128,7 +128,7 @@ Class Procs:
|
||||
A.edges.Add(src)
|
||||
B.edges.Add(src)
|
||||
//id = edge_id(A,B)
|
||||
//world << "New edge between [A] and [B]"
|
||||
//to_world("New edge between [A] and [B]")
|
||||
|
||||
/connection_edge/zone/add_connection(connection/c)
|
||||
. = ..()
|
||||
@@ -198,7 +198,7 @@ Class Procs:
|
||||
A.edges.Add(src)
|
||||
air = B.return_air()
|
||||
//id = 52*A.id
|
||||
//world << "New edge from [A] to [B]."
|
||||
//to_world("New edge from [A] to [B].")
|
||||
|
||||
/connection_edge/unsimulated/add_connection(connection/c)
|
||||
. = ..()
|
||||
|
||||
@@ -22,11 +22,11 @@ client/proc/Zone_Info(turf/T as null|turf)
|
||||
if(istype(T,/turf/simulated) && T:zone)
|
||||
T:zone:dbg_data(src)
|
||||
else
|
||||
mob << "No zone here."
|
||||
to_chat(mob, "No zone here.")
|
||||
var/datum/gas_mixture/mix = T.return_air()
|
||||
mob << "[mix.return_pressure()] kPa [mix.temperature]C"
|
||||
to_chat(mob, "[mix.return_pressure()] kPa [mix.temperature]C")
|
||||
for(var/g in mix.gas)
|
||||
mob << "[g]: [mix.gas[g]]\n"
|
||||
to_chat(mob, "[g]: [mix.gas[g]]\n")
|
||||
else
|
||||
if(zone_debug_images)
|
||||
for(var/zone in zone_debug_images)
|
||||
@@ -56,9 +56,9 @@ client/proc/Test_ZAS_Connection(var/turf/simulated/T as turf)
|
||||
|
||||
if(direction == "N/A")
|
||||
if(!(T.c_airblock(T) & AIR_BLOCKED))
|
||||
mob << "The turf can pass air! :D"
|
||||
to_chat(mob, "The turf can pass air! :D")
|
||||
else
|
||||
mob << "No air passage :x"
|
||||
to_chat(mob, "No air passage :x")
|
||||
return
|
||||
|
||||
var/turf/simulated/other_turf = get_step(T, direction_list[direction])
|
||||
@@ -70,29 +70,29 @@ client/proc/Test_ZAS_Connection(var/turf/simulated/T as turf)
|
||||
|
||||
if(o_block & AIR_BLOCKED)
|
||||
if(t_block & AIR_BLOCKED)
|
||||
mob << "Neither turf can connect. :("
|
||||
to_chat(mob, "Neither turf can connect. :(")
|
||||
|
||||
else
|
||||
mob << "The initial turf only can connect. :\\"
|
||||
to_chat(mob, "The initial turf only can connect. :\\")
|
||||
else
|
||||
if(t_block & AIR_BLOCKED)
|
||||
mob << "The other turf can connect, but not the initial turf. :/"
|
||||
to_chat(mob, "The other turf can connect, but not the initial turf. :/")
|
||||
|
||||
else
|
||||
mob << "Both turfs can connect! :)"
|
||||
to_chat(mob, "Both turfs can connect! :)")
|
||||
|
||||
mob << "Additionally, \..."
|
||||
to_chat(mob, "Additionally, \...")
|
||||
|
||||
if(o_block & ZONE_BLOCKED)
|
||||
if(t_block & ZONE_BLOCKED)
|
||||
mob << "neither turf can merge."
|
||||
to_chat(mob, "neither turf can merge.")
|
||||
else
|
||||
mob << "the other turf cannot merge."
|
||||
to_chat(mob, "the other turf cannot merge.")
|
||||
else
|
||||
if(t_block & ZONE_BLOCKED)
|
||||
mob << "the initial turf cannot merge."
|
||||
to_chat(mob, "the initial turf cannot merge.")
|
||||
else
|
||||
mob << "both turfs can merge."
|
||||
to_chat(mob, "both turfs can merge.")
|
||||
|
||||
client/proc/ZASSettings()
|
||||
set category = "Debug"
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
var/s_block = c_airblock(src)
|
||||
if(s_block & AIR_BLOCKED)
|
||||
#ifdef ZASDBG
|
||||
if(verbose) world << "Self-blocked."
|
||||
if(verbose) to_world("Self-blocked.")
|
||||
//dbg(blocked)
|
||||
#endif
|
||||
if(zone)
|
||||
@@ -131,7 +131,7 @@
|
||||
if(block & AIR_BLOCKED)
|
||||
|
||||
#ifdef ZASDBG
|
||||
if(verbose) world << "[d] is blocked."
|
||||
if(verbose) to_world("[d] is blocked.")
|
||||
//unsim.dbg(air_blocked, turn(180,d))
|
||||
#endif
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
if(r_block & AIR_BLOCKED)
|
||||
|
||||
#ifdef ZASDBG
|
||||
if(verbose) world << "[d] is blocked."
|
||||
if(verbose) to_world("[d] is blocked.")
|
||||
//dbg(air_blocked, d)
|
||||
#endif
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
// we are blocking them and not blocking ourselves - this prevents tiny zones from forming on doorways.
|
||||
if(((block & ZONE_BLOCKED) && !(r_block & ZONE_BLOCKED)) || ((r_block & ZONE_BLOCKED) && !(s_block & ZONE_BLOCKED)))
|
||||
#ifdef ZASDBG
|
||||
if(verbose) world << "[d] is zone blocked."
|
||||
if(verbose) to_world("[d] is zone blocked.")
|
||||
//dbg(zone_blocked, d)
|
||||
#endif
|
||||
|
||||
@@ -186,22 +186,22 @@
|
||||
|
||||
#ifdef ZASDBG
|
||||
dbg(assigned)
|
||||
if(verbose) world << "Added to [zone]"
|
||||
if(verbose) to_world("Added to [zone]")
|
||||
#endif
|
||||
|
||||
else if(sim.zone != zone)
|
||||
|
||||
#ifdef ZASDBG
|
||||
if(verbose) world << "Connecting to [sim.zone]"
|
||||
if(verbose) to_world("Connecting to [sim.zone]")
|
||||
#endif
|
||||
|
||||
air_master.connect(src, sim)
|
||||
|
||||
|
||||
#ifdef ZASDBG
|
||||
else if(verbose) world << "[d] has same zone."
|
||||
else if(verbose) to_world("[d] has same zone.")
|
||||
|
||||
else if(verbose) world << "[d] has invalid zone."
|
||||
else if(verbose) to_world("[d] has invalid zone.")
|
||||
#endif
|
||||
|
||||
else
|
||||
|
||||
@@ -169,7 +169,7 @@ var/global/vs_control/vsc = new
|
||||
vars[ch] = vw
|
||||
if(how == "Toggle")
|
||||
newvar = (newvar?"ON":"OFF")
|
||||
world << "<span class='notice'><b>[key_name(user)] changed the setting [display_description] to [newvar].</b></span>"
|
||||
to_world("<span class='notice'><b>[key_name(user)] changed the setting [display_description] to [newvar].</b></span>")
|
||||
if(ch in plc.settings)
|
||||
ChangeSettingsDialog(user,plc.settings)
|
||||
else
|
||||
@@ -322,7 +322,7 @@ var/global/vs_control/vsc = new
|
||||
plc.N2O_HALLUCINATION = initial(plc.N2O_HALLUCINATION)
|
||||
|
||||
|
||||
world << "<span class='notice'><b>[key_name(user)] changed the global phoron/ZAS settings to \"[def]\"</b></span>"
|
||||
to_world("<span class='notice'><b>[key_name(user)] changed the global phoron/ZAS settings to \"[def]\"</b></span>")
|
||||
|
||||
/pl_control/var/list/settings = list()
|
||||
|
||||
|
||||
@@ -168,15 +168,16 @@ Class Procs:
|
||||
E.recheck()
|
||||
|
||||
/zone/proc/dbg_data(mob/M)
|
||||
M << name
|
||||
to_chat(M,name)
|
||||
for(var/g in air.gas)
|
||||
M << "[gas_data.name[g]]: [air.gas[g]]"
|
||||
M << "P: [air.return_pressure()] kPa V: [air.volume]L T: [air.temperature]<5D>K ([air.temperature - T0C]<5D>C)"
|
||||
M << "O2 per N2: [(air.gas["nitrogen"] ? air.gas["oxygen"]/air.gas["nitrogen"] : "N/A")] Moles: [air.total_moles]"
|
||||
M << "Simulated: [contents.len] ([air.group_multiplier])"
|
||||
//M << "Unsimulated: [unsimulated_contents.len]"
|
||||
//M << "Edges: [edges.len]"
|
||||
if(invalid) M << "Invalid!"
|
||||
to_chat(M, "[gas_data.name[g]]: [air.gas[g]]")
|
||||
to_chat(M, "P: [air.return_pressure()] kPa V: [air.volume]L T: [air.temperature]<5D>K ([air.temperature - T0C]<5D>C)")
|
||||
to_chat(M, "O2 per N2: [(air.gas["nitrogen"] ? air.gas["oxygen"]/air.gas["nitrogen"] : "N/A")] Moles: [air.total_moles]")
|
||||
to_chat(M, "Simulated: [contents.len] ([air.group_multiplier])")
|
||||
//to_chat(M, "Unsimulated: [unsimulated_contents.len]")
|
||||
//to_chat(M, "Edges: [edges.len]")
|
||||
if(invalid)
|
||||
to_chat(M, "Invalid!")
|
||||
var/zone_edges = 0
|
||||
var/space_edges = 0
|
||||
var/space_coefficient = 0
|
||||
@@ -185,10 +186,10 @@ Class Procs:
|
||||
else
|
||||
space_edges++
|
||||
space_coefficient += E.coefficient
|
||||
M << "[E:air:return_pressure()]kPa"
|
||||
to_chat(M, "[E:air:return_pressure()]kPa")
|
||||
|
||||
M << "Zone Edges: [zone_edges]"
|
||||
M << "Space Edges: [space_edges] ([space_coefficient] connections)"
|
||||
to_chat(M, "Zone Edges: [zone_edges]")
|
||||
to_chat(M, "Space Edges: [space_edges] ([space_coefficient] connections)")
|
||||
|
||||
//for(var/turf/T in unsimulated_contents)
|
||||
// M << "[T] at ([T.x],[T.y])"
|
||||
// to_chat(M, "[T] at ([T.x],[T.y])")
|
||||
@@ -518,7 +518,7 @@ proc/listclearnulls(list/list)
|
||||
|
||||
//Don't use this on lists larger than half a dozen or so
|
||||
/proc/insertion_sort_numeric_list_ascending(var/list/L)
|
||||
//world.log << "ascending len input: [L.len]"
|
||||
//to_world_log("ascending len input: [L.len]")
|
||||
var/list/out = list(pop(L))
|
||||
for(var/entry in L)
|
||||
if(isnum(entry))
|
||||
@@ -531,13 +531,13 @@ proc/listclearnulls(list/list)
|
||||
if(!success)
|
||||
out.Add(entry)
|
||||
|
||||
//world.log << " output: [out.len]"
|
||||
//to_world_log(" output: [out.len]")
|
||||
return out
|
||||
|
||||
/proc/insertion_sort_numeric_list_descending(var/list/L)
|
||||
//world.log << "descending len input: [L.len]"
|
||||
//to_world_log("descending len input: [L.len]")
|
||||
var/list/out = insertion_sort_numeric_list_ascending(L)
|
||||
//world.log << " output: [out.len]"
|
||||
//to_world_log(" output: [out.len]")
|
||||
return reverselist(out)
|
||||
|
||||
/proc/dd_sortedObjectList(var/list/L, var/cache=list())
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
A.add_fingerprint(user)
|
||||
var/list/result = A.atmosanalyze(user)
|
||||
if(result && result.len)
|
||||
user << "<span class='notice'>Results of the analysis[src == A ? "" : " of \the [A]"]</span>"
|
||||
to_chat(user, "<span class='notice'>Results of the analysis[src == A ? "" : " of \the [A]"]</span>")
|
||||
for(var/line in result)
|
||||
user << "<span class='notice'>[line]</span>"
|
||||
to_chat(user, "<span class='notice'>[line]</span>")
|
||||
return 1
|
||||
|
||||
user << "<span class='warning'>Your [src] flashes a red light as it fails to analyze \the [A].</span>"
|
||||
to_chat(user, "<span class='warning'>Your [src] flashes a red light as it fails to analyze \the [A].</span>")
|
||||
return 0
|
||||
|
||||
/proc/atmosanalyzer_scan(var/atom/target, var/datum/gas_mixture/mixture, var/mob/user)
|
||||
|
||||
@@ -206,7 +206,7 @@ var/global/list/string_slot_flags = list(
|
||||
var/list/L = chemical_reactions_list[reaction]
|
||||
for(var/t in L)
|
||||
. += " has: [t]\n"
|
||||
world << .
|
||||
to_world(.)
|
||||
*/
|
||||
//Hexidecimal numbers
|
||||
var/global/list/hexNums = list("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")
|
||||
|
||||
@@ -167,7 +167,7 @@ mob
|
||||
|
||||
Output_Icon()
|
||||
set name = "2. Output Icon"
|
||||
src<<"Icon is: \icon[getFlatIcon(src)]"
|
||||
to_chat(src, "Icon is: \icon[getFlatIcon(src)]")
|
||||
|
||||
Label_Icon()
|
||||
set name = "3. Label Icon"
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
|
||||
/proc/error(msg)
|
||||
world.log << "## ERROR: [msg][log_end]"
|
||||
to_world_log("## ERROR: [msg][log_end]")
|
||||
|
||||
#define WARNING(MSG) warning("[MSG] in [__FILE__] at line [__LINE__] src: [src] usr: [usr].")
|
||||
//print a warning message to world.log
|
||||
/proc/warning(msg)
|
||||
world.log << "## WARNING: [msg][log_end]"
|
||||
to_world_log("## WARNING: [msg][log_end]")
|
||||
|
||||
//print a testing-mode debug message to world.log
|
||||
/proc/testing(msg)
|
||||
world.log << "## TESTING: [msg][log_end]"
|
||||
to_world_log("## TESTING: [msg][log_end]")
|
||||
|
||||
/proc/log_admin(text)
|
||||
admin_log.Add(text)
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
for(var/client/C in admins)
|
||||
if(C.is_preference_enabled(/datum/client_preference/debug/show_debug_logs))
|
||||
C << "DEBUG: [text]"
|
||||
to_chat(C, "DEBUG: [text]")
|
||||
|
||||
/proc/log_game(text)
|
||||
if (config.log_game)
|
||||
@@ -141,19 +141,19 @@
|
||||
|
||||
|
||||
/proc/log_to_dd(text)
|
||||
world.log << text //this comes before the config check because it can't possibly runtime
|
||||
to_world_log(text) //this comes before the config check because it can't possibly runtime
|
||||
if(config.log_world_output)
|
||||
diary << "\[[time_stamp()]]DD_OUTPUT: [text][log_end]"
|
||||
|
||||
/proc/log_error(text)
|
||||
world.log << text
|
||||
to_world_log(text)
|
||||
error_log << "\[[time_stamp()]]RUNTIME: [text][log_end]"
|
||||
|
||||
/proc/log_misc(text)
|
||||
diary << "\[[time_stamp()]]MISC: [text][log_end]"
|
||||
|
||||
/proc/log_unit_test(text)
|
||||
world.log << "## UNIT_TEST: [text]"
|
||||
to_world_log("## UNIT_TEST: [text]")
|
||||
|
||||
/proc/report_progress(var/progress_message)
|
||||
admin_notice("<span class='boldannounce'>[progress_message]</span>", R_DEBUG)
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
if (4.0) return EAST
|
||||
if (8.0) return WEST
|
||||
else
|
||||
world.log << "UNKNOWN DIRECTION: [direction]"
|
||||
to_world_log("UNKNOWN DIRECTION: [direction]")
|
||||
|
||||
// Turns a direction into text
|
||||
/proc/dir2text(direction)
|
||||
|
||||
@@ -367,7 +367,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
if(isAI(src))
|
||||
var/mob/living/silicon/ai/A = src
|
||||
oldname = null//don't bother with the records update crap
|
||||
//world << "<b>[newname] is the AI!</b>"
|
||||
//to_world("<b>[newname] is the AI!</b>")
|
||||
//world << sound('sound/AI/newAI.ogg')
|
||||
// Set eyeobj name
|
||||
A.SetName(newname)
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
#define RANDOM_BLOOD_TYPE pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
|
||||
|
||||
#define to_chat(target, message) target << message
|
||||
#define to_world(message) world << message
|
||||
#define to_world(message) to_chat(world, message)
|
||||
#define to_world_log(message) world.log << message
|
||||
// TODO - Baystation has this log to crazy places. For now lets just world.log, but maybe look into it later.
|
||||
#define log_world(message) world.log << message
|
||||
#define log_world(message) to_world_log(message)
|
||||
#define to_file(file_entry, source_var) file_entry << source_var
|
||||
#define from_file(file_entry, target_var) file_entry >> target_var
|
||||
#define show_browser(target, browser_content, browser_name) target << browse(browser_content, browser_name)
|
||||
@@ -18,6 +18,7 @@
|
||||
#define DIRECT_OUTPUT(A, B) A << B
|
||||
#define SEND_IMAGE(target, image) DIRECT_OUTPUT(target, image)
|
||||
#define SEND_SOUND(target, sound) DIRECT_OUTPUT(target, sound)
|
||||
//#define WRITE_LOG is in logging.dm
|
||||
|
||||
#define CanInteract(user, state) (CanUseTopic(user, state) == STATUS_INTERACTIVE)
|
||||
|
||||
|
||||
@@ -269,7 +269,7 @@
|
||||
|
||||
// Makes the ability be triggered. The subclasses of this are responsible for carrying it out in whatever way it needs to.
|
||||
/obj/screen/ability/proc/activate()
|
||||
world << "[src] had activate() called."
|
||||
to_world("[src] had activate() called.")
|
||||
return
|
||||
|
||||
// This checks if the ability can be used.
|
||||
@@ -304,7 +304,7 @@
|
||||
if(object_used && verb_to_call)
|
||||
call(object_used,verb_to_call)(arguments_to_use)
|
||||
// call(object_used,verb_to_call)(arguments_to_use)
|
||||
// world << "Attempted to call([object_used],[verb_to_call])([arguments_to_use])"
|
||||
// to_world("Attempted to call([object_used],[verb_to_call])([arguments_to_use])")
|
||||
// if(hascall(object_used, verb_to_call))
|
||||
// call(object_used,verb_to_call)(arguments_to_use)
|
||||
// else
|
||||
|
||||
@@ -326,11 +326,11 @@ datum/hud/New(mob/owner)
|
||||
set hidden = 1
|
||||
|
||||
if(!hud_used)
|
||||
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>")
|
||||
return
|
||||
|
||||
if(!ishuman(src))
|
||||
usr << "<span class='warning'>Inventory hiding is currently only supported for human mobs, sorry.</span>"
|
||||
to_chat(usr, "<span class='warning'>Inventory hiding is currently only supported for human mobs, sorry.</span>")
|
||||
return
|
||||
|
||||
if(!client) return
|
||||
|
||||
@@ -223,11 +223,11 @@ var/obj/screen/robot_inventory
|
||||
//r.client.screen += robot_inventory //"store" icon
|
||||
|
||||
if(!r.module)
|
||||
usr << "<span class='danger'>No module selected</span>"
|
||||
to_chat(usr, "<span class='danger'>No module selected</span>")
|
||||
return
|
||||
|
||||
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)
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
if(iscarbon(usr))
|
||||
var/mob/living/carbon/C = usr
|
||||
if(C.legcuffed)
|
||||
C << "<span class='notice'>You are legcuffed! You cannot run until you get [C.legcuffed] removed!</span>"
|
||||
to_chat(C, "<span class='notice'>You are legcuffed! You cannot run until you get [C.legcuffed] removed!</span>")
|
||||
C.m_intent = "walk" //Just incase
|
||||
C.hud_used.move_intent.icon_state = "walking"
|
||||
return 1
|
||||
@@ -245,7 +245,7 @@
|
||||
if(!C.stat && !C.stunned && !C.paralysis && !C.restrained())
|
||||
if(C.internal)
|
||||
C.internal = null
|
||||
C << "<span class='notice'>No longer running on internals.</span>"
|
||||
to_chat(C, "<span class='notice'>No longer running on internals.</span>")
|
||||
if(C.internals)
|
||||
C.internals.icon_state = "internal0"
|
||||
else
|
||||
@@ -257,7 +257,7 @@
|
||||
no_mask = 1
|
||||
|
||||
if(no_mask)
|
||||
C << "<span class='notice'>You are not wearing a suitable mask or helmet.</span>"
|
||||
to_chat(C, "<span class='notice'>You are not wearing a suitable mask or helmet.</span>")
|
||||
return 1
|
||||
else
|
||||
var/list/nicename = null
|
||||
@@ -338,7 +338,7 @@
|
||||
//We've determined the best container now we set it as our internals
|
||||
|
||||
if(best)
|
||||
C << "<span class='notice'>You are now running on internals from [tankcheck[best]] [from] your [nicename[best]].</span>"
|
||||
to_chat(C, "<span class='notice'>You are now running on internals from [tankcheck[best]] [from] your [nicename[best]].</span>")
|
||||
C.internal = tankcheck[best]
|
||||
|
||||
|
||||
@@ -346,7 +346,7 @@
|
||||
if(C.internals)
|
||||
C.internals.icon_state = "internal1"
|
||||
else
|
||||
C << "<span class='notice'>You don't have a[breathes=="oxygen" ? "n oxygen" : addtext(" ",breathes)] tank.</span>"
|
||||
to_chat(C, "<span class='notice'>You don't have a[breathes=="oxygen" ? "n oxygen" : addtext(" ",breathes)] tank.</span>")
|
||||
if("act_intent")
|
||||
usr.a_intent_change("right")
|
||||
if(I_HELP)
|
||||
@@ -386,7 +386,7 @@
|
||||
R.hud_used.toggle_show_robot_modules()
|
||||
return 1
|
||||
else
|
||||
R << "You haven't selected a module yet."
|
||||
to_chat(R, "You haven't selected a module yet.")
|
||||
|
||||
if("radio")
|
||||
if(issilicon(usr))
|
||||
@@ -402,7 +402,7 @@
|
||||
R.uneq_active()
|
||||
R.hud_used.update_robot_modules_display()
|
||||
else
|
||||
R << "You haven't selected a module yet."
|
||||
to_chat(R, "You haven't selected a module yet.")
|
||||
|
||||
if("module1")
|
||||
if(istype(usr, /mob/living/silicon/robot))
|
||||
|
||||
@@ -61,13 +61,13 @@
|
||||
if(awaygate)
|
||||
user.loc = awaygate.loc
|
||||
else
|
||||
user << "[src] has no destination."
|
||||
to_chat(user, "[src] has no destination.")
|
||||
|
||||
/obj/machinery/gateway/centeraway/attack_ghost(mob/user as mob)
|
||||
if(stationgate)
|
||||
user.loc = stationgate.loc
|
||||
else
|
||||
user << "[src] has no destination."
|
||||
to_chat(user, "[src] has no destination.")
|
||||
|
||||
// -------------------------------------------
|
||||
// This was supposed to be used by adminghosts
|
||||
|
||||
@@ -110,7 +110,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='notice'>Your mind won't reach that far.</span>"
|
||||
to_chat(user, "<span class='notice'>Your mind won't reach that far.</span>")
|
||||
return
|
||||
|
||||
if(!focus)
|
||||
|
||||
@@ -21,7 +21,7 @@ var/list/gamemode_cache = list()
|
||||
var/log_pda = 0 // log pda messages
|
||||
var/log_hrefs = 0 // logs all links clicked in-game. Could be used for debugging and tracking down exploits
|
||||
var/log_runtime = 0 // logs world.log to a file
|
||||
var/log_world_output = 0 // log world.log << messages
|
||||
var/log_world_output = 0 // log to_world_log(messages)
|
||||
var/log_graffiti = 0 // logs graffiti
|
||||
var/sql_enabled = 0 // for sql switching
|
||||
var/allow_admin_ooccolor = 0 // Allows admins with relevant permissions to have their own ooc colour
|
||||
|
||||
@@ -104,7 +104,7 @@ SUBSYSTEM_DEF(vote)
|
||||
else
|
||||
factor = 1.4
|
||||
choices["Initiate Crew Transfer"] = round(choices["Initiate Crew Transfer"] * factor)
|
||||
world << "<font color='purple'>Crew Transfer Factor: [factor]</font>"
|
||||
to_world("<font color='purple'>Crew Transfer Factor: [factor]</font>")
|
||||
greatest_votes = max(choices["Initiate Crew Transfer"], choices["Continue The Round"])
|
||||
|
||||
. = list() // Get all options with that many votes and return them in a list
|
||||
@@ -166,10 +166,10 @@ SUBSYSTEM_DEF(vote)
|
||||
if(mode == VOTE_GAMEMODE) //fire this even if the vote fails.
|
||||
if(!round_progressing)
|
||||
round_progressing = 1
|
||||
world << "<font color='red'><b>The round will start soon.</b></font>"
|
||||
to_world("<font color='red'><b>The round will start soon.</b></font>")
|
||||
|
||||
if(restart)
|
||||
world << "World restarting due to vote..."
|
||||
to_world("World restarting due to vote...")
|
||||
feedback_set_details("end_error", "restart vote")
|
||||
if(blackbox)
|
||||
blackbox.save_all_data_to_sql()
|
||||
@@ -215,10 +215,10 @@ SUBSYSTEM_DEF(vote)
|
||||
if(VOTE_CREW_TRANSFER)
|
||||
if(!check_rights(R_ADMIN|R_MOD, 0)) // The gods care not for the affairs of the mortals
|
||||
if(get_security_level() == "red" || get_security_level() == "delta")
|
||||
initiator_key << "The current alert status is too high to call for a crew transfer!"
|
||||
to_chat(initiator_key, "The current alert status is too high to call for a crew transfer!")
|
||||
return 0
|
||||
if(ticker.current_state <= GAME_STATE_SETTING_UP)
|
||||
initiator_key << "The crew transfer button has been disabled!"
|
||||
to_chat(initiator_key, "The crew transfer button has been disabled!")
|
||||
return 0
|
||||
question = "End the shift?"
|
||||
choices.Add("Initiate Crew Transfer", "Continue The Round")
|
||||
@@ -252,13 +252,13 @@ SUBSYSTEM_DEF(vote)
|
||||
|
||||
log_vote(text)
|
||||
|
||||
world << "<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_world("<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>")
|
||||
if(vote_type == VOTE_CREW_TRANSFER || vote_type == VOTE_GAMEMODE || vote_type == VOTE_CUSTOM)
|
||||
world << sound('sound/ambience/alarm4.ogg', repeat = 0, wait = 0, volume = 50, channel = 3)
|
||||
|
||||
if(mode == VOTE_GAMEMODE && round_progressing)
|
||||
round_progressing = 0
|
||||
world << "<font color='red'><b>Round start has been delayed.</b></font>"
|
||||
to_world("<font color='red'><b>Round start has been delayed.</b></font>")
|
||||
|
||||
time_remaining = round(config.vote_period / 10)
|
||||
return 1
|
||||
|
||||
@@ -227,9 +227,9 @@ var/global/const/base_law_type = /datum/ai_laws/nanotrasen
|
||||
if(law == zeroth_law_borg)
|
||||
continue
|
||||
if(law == zeroth_law)
|
||||
who << "<span class='danger'>[law.get_index()]. [law.law]</span>"
|
||||
to_chat(who, "<span class='danger'>[law.get_index()]. [law.law]</span>")
|
||||
else
|
||||
who << "[law.get_index()]. [law.law]"
|
||||
to_chat(who, "[law.get_index()]. [law.law]")
|
||||
|
||||
/********************
|
||||
* Stating Laws *
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
|
||||
winset(user, windowid, "on-close=\".windowclose [param]\"")
|
||||
|
||||
//world << "OnClose [user]: [windowid] : ["on-close=\".windowclose [param]\""]"
|
||||
//to_world("OnClose [user]: [windowid] : ["on-close=\".windowclose [param]\""]")
|
||||
|
||||
// the on-close client verb
|
||||
// called when a browser popup window is closed after registering with proc/onclose()
|
||||
@@ -168,11 +168,11 @@
|
||||
set hidden = 1 // hide this verb from the user's panel
|
||||
set name = ".windowclose" // no autocomplete on cmd line
|
||||
|
||||
//world << "windowclose: [atomref]"
|
||||
//to_world("windowclose: [atomref]")
|
||||
if(atomref!="null") // if passed a real atomref
|
||||
var/hsrc = locate(atomref) // find the reffed atom
|
||||
if(hsrc)
|
||||
//world << "[src] Topic [href] [hsrc]"
|
||||
//to_world("[src] Topic [href] [hsrc]")
|
||||
usr = src.mob
|
||||
src.Topic("close=1", list("close"="1"), hsrc) // this will direct to the atom's
|
||||
return // Topic() proc via client.Topic()
|
||||
@@ -180,7 +180,7 @@
|
||||
// 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_world("[src] was [src.mob.machine], setting to null")
|
||||
src.mob.unset_machine()
|
||||
return
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
isactive[name] = active ? "Active" : "Inactive"
|
||||
else
|
||||
isactive[name] = t.fields["p_stat"]
|
||||
//world << "[name]: [rank]"
|
||||
//to_world("[name]: [rank]")
|
||||
//cael - to prevent multiple appearances of a player/job combination, add a continue after each line
|
||||
var/department = 0
|
||||
if(real_rank in command_positions)
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
// Arguments: event_type as text, any number of additional arguments to pass to event handler
|
||||
// Returns: null
|
||||
proc/fireEvent()
|
||||
//world << "Events in [args[1]] called"
|
||||
//to_world("Events in [args[1]] called")
|
||||
var/list/event = listgetindex(events,args[1])
|
||||
if(istype(event))
|
||||
spawn(-1)
|
||||
@@ -60,7 +60,7 @@
|
||||
return ..()
|
||||
|
||||
proc/Fire()
|
||||
//world << "Event fired"
|
||||
//to_world("Event fired")
|
||||
if(listener)
|
||||
call(listener,proc_name)(arglist(args))
|
||||
return 1
|
||||
|
||||
@@ -24,10 +24,10 @@ var/global/datum/getrev/revdata = new()
|
||||
date = unix2date(unix_time)
|
||||
break
|
||||
|
||||
world.log << "Running revision:"
|
||||
world.log << branch
|
||||
world.log << date
|
||||
world.log << revision
|
||||
to_world_log("Running revision:")
|
||||
to_world_log(branch)
|
||||
to_world_log(date)
|
||||
to_world_log(revision)
|
||||
|
||||
client/verb/showrevinfo()
|
||||
set category = "OOC"
|
||||
@@ -39,6 +39,6 @@ client/verb/showrevinfo()
|
||||
if(config.githuburl)
|
||||
to_chat(src, "<a href='[config.githuburl]/commit/[revdata.revision]'>[revdata.revision]</a>")
|
||||
else
|
||||
src << revdata.revision
|
||||
to_chat(src,revdata.revision)
|
||||
else
|
||||
to_chat(src, "Revision unknown")
|
||||
|
||||
@@ -140,7 +140,7 @@ Data storage vars:
|
||||
arg_list = arguments
|
||||
return 1
|
||||
else
|
||||
// world << "<span class='danger'>Invalid arguments supplied for [src.type], ref = \ref[src]</span>"
|
||||
// to_world("<span class='danger'>Invalid arguments supplied for [src.type], ref = \ref[src]</span>")
|
||||
return 0
|
||||
|
||||
proc/toggle_null_checks()
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
precision = max(rand(1,100)*bagholding.len,100)
|
||||
if(istype(teleatom, /mob/living))
|
||||
var/mob/living/MM = teleatom
|
||||
MM << "<span class='danger'>The Bluespace interface on your [teleatom] interferes with the teleport!</span>"
|
||||
to_chat(MM, "<span class='danger'>The Bluespace interface on your [teleatom] interferes with the teleport!</span>")
|
||||
return 1
|
||||
|
||||
/datum/teleport/instant/science/teleportChecks()
|
||||
@@ -178,7 +178,7 @@
|
||||
if(destination.z in using_map.admin_levels) //CentCom z-level
|
||||
if(istype(teleatom, /obj/mecha))
|
||||
var/obj/mecha/MM = teleatom
|
||||
MM.occupant << "<span class='danger'>\The [MM] would not survive the jump to a location so far away!</span>"
|
||||
to_chat(MM.occupant, "<span class='danger'>\The [MM] would not survive the jump to a location so far away!</span>")
|
||||
return 0
|
||||
if(!isemptylist(teleatom.search_contents_for(/obj/item/weapon/storage/backpack/holding)))
|
||||
teleatom.visible_message("<span class='danger'>\The [teleatom] bounces off of the portal!</span>")
|
||||
|
||||
@@ -36,8 +36,8 @@ var/global/datum/locations/milky_way/all_locations = new()
|
||||
choice = input(user, "Please choose a location.","Locations") as null|anything in choice.contents
|
||||
else
|
||||
break
|
||||
user << choice.name
|
||||
user << choice.desc
|
||||
to_chat(user,choice.name)
|
||||
to_chat(user,choice.desc)
|
||||
return choice
|
||||
|
||||
// var/datum/locations/choice = input(user, "Please choose a location.","Locations") as null|anything in all_locations
|
||||
@@ -46,11 +46,11 @@ var/global/datum/locations/milky_way/all_locations = new()
|
||||
|
||||
/*
|
||||
/datum/locations/proc/show_contents()
|
||||
// world << "[src]\n[desc]"
|
||||
// to_world("[src]\n[desc]")
|
||||
for(var/datum/locations/a in contents)
|
||||
world << "[a]\n[a.parent ? "Located in [a.parent]\n" : ""][a.desc]"
|
||||
to_world("[a]\n[a.parent ? "Located in [a.parent]\n" : ""][a.desc]")
|
||||
a.show_contents()
|
||||
world << "\n"
|
||||
to_world("\n")
|
||||
|
||||
/datum/locations/proc/count_locations()
|
||||
var/i = 0
|
||||
@@ -72,5 +72,5 @@ var/global/datum/locations/milky_way/all_locations = new()
|
||||
set name = "Count Locations"
|
||||
set category = "Debug"
|
||||
var/location_number = locations.count_locations()
|
||||
world << location_number
|
||||
to_world(location_number)
|
||||
*/
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
/datum/mind/proc/transfer_to(mob/living/new_character)
|
||||
if(!istype(new_character))
|
||||
world.log << "## DEBUG: transfer_to(): Some idiot has tried to transfer_to() a non mob/living mob. Please inform Carn"
|
||||
to_world_log("## DEBUG: transfer_to(): Some idiot has tried to transfer_to() a non mob/living mob. Please inform Carn")
|
||||
if(current) //remove ourself from our old body's mind variable
|
||||
if(changeling)
|
||||
current.remove_changeling_powers()
|
||||
@@ -161,7 +161,7 @@
|
||||
if(antag.add_antagonist(src, 1, 1, 0, 1, 1)) // Ignore equipment and role type for this.
|
||||
log_admin("[key_name_admin(usr)] made [key_name(src)] into a [antag.role_text].")
|
||||
else
|
||||
usr << "<span class='warning'>[src] could not be made into a [antag.role_text]!</span>"
|
||||
to_chat(usr, "<span class='warning'>[src] could not be made into a [antag.role_text]!</span>")
|
||||
|
||||
else if(href_list["remove_antagonist"])
|
||||
var/datum/antagonist/antag = all_antag_types[href_list["remove_antagonist"]]
|
||||
@@ -198,7 +198,7 @@
|
||||
return
|
||||
if(mind)
|
||||
mind.ambitions = sanitize(new_ambition)
|
||||
mind.current << "<span class='warning'>Your ambitions have been changed by higher powers, they are now: [mind.ambitions]</span>"
|
||||
to_chat(mind.current, "<span class='warning'>Your ambitions have been changed by higher powers, they are now: [mind.ambitions]</span>")
|
||||
log_and_message_admins("made [key_name(mind.current)]'s ambitions be '[mind.ambitions]'.")
|
||||
|
||||
else if (href_list["obj_edit"] || href_list["obj_add"])
|
||||
@@ -344,10 +344,10 @@
|
||||
if(I in organs.implants)
|
||||
qdel(I)
|
||||
break
|
||||
H << "<span class='notice'><font size =3><B>Your loyalty implant has been deactivated.</B></font></span>"
|
||||
to_chat(H, "<span class='notice'><font size =3><B>Your loyalty implant has been deactivated.</B></font></span>")
|
||||
log_admin("[key_name_admin(usr)] has de-loyalty implanted [current].")
|
||||
if("add")
|
||||
H << "<span class='danger'><font size =3>You somehow have become the recepient of a loyalty transplant, and it just activated!</font></span>"
|
||||
to_chat(H, "<span class='danger'><font size =3>You somehow have become the recepient of a loyalty transplant, and it just activated!</font></span>")
|
||||
H.implant_loyalty(override = TRUE)
|
||||
log_admin("[key_name_admin(usr)] has loyalty implanted [current].")
|
||||
else
|
||||
@@ -410,9 +410,9 @@
|
||||
|
||||
else if (href_list["obj_announce"])
|
||||
var/obj_count = 1
|
||||
current << "<font color='blue'>Your current objectives:</font>"
|
||||
to_chat(current, "<font color='blue'>Your current objectives:</font>")
|
||||
for(var/datum/objective/objective in objectives)
|
||||
current << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
|
||||
to_chat(current, "<B>Objective #[obj_count]</B>: [objective.explanation_text]")
|
||||
obj_count++
|
||||
edit_memory()
|
||||
|
||||
@@ -490,7 +490,7 @@
|
||||
if(ticker)
|
||||
ticker.minds += mind
|
||||
else
|
||||
world.log << "## DEBUG: mind_initialize(): No ticker ready yet! Please inform Carn"
|
||||
to_world_log("## DEBUG: mind_initialize(): No ticker ready yet! Please inform Carn")
|
||||
if(!mind.name) mind.name = real_name
|
||||
mind.current = src
|
||||
if(player_is_antag(mind))
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
return ..()
|
||||
|
||||
/datum/progressbar/proc/update(progress)
|
||||
//world << "Update [progress] - [goal] - [(progress / goal)] - [((progress / goal) * 100)] - [round(((progress / goal) * 100), 5)]"
|
||||
//to_world("Update [progress] - [goal] - [(progress / goal)] - [((progress / goal) * 100)] - [round(((progress / goal) * 100), 5)]")
|
||||
if (!user || !user.client)
|
||||
shown = 0
|
||||
return
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
// food-related
|
||||
/datum/recipe/proc/make_food(var/obj/container as obj)
|
||||
if(!result)
|
||||
world << "<span class='danger'>Recipe [type] is defined without a result, please bug report this.</span>"
|
||||
to_world("<span class='danger'>Recipe [type] is defined without a result, please bug report this.</span>")
|
||||
return
|
||||
var/obj/result_obj = new result(container)
|
||||
if(istype(container, /obj/machinery))
|
||||
|
||||
@@ -26,24 +26,24 @@ var/const/AALARM_WIRE_AALARM = 16
|
||||
if(AALARM_WIRE_IDSCAN)
|
||||
if(!mended)
|
||||
A.locked = 1
|
||||
//world << "Idscan wire cut"
|
||||
//to_world("Idscan wire cut")
|
||||
|
||||
if(AALARM_WIRE_POWER)
|
||||
A.shock(usr, 50)
|
||||
A.shorted = !mended
|
||||
A.update_icon()
|
||||
//world << "Power wire cut"
|
||||
//to_world("Power wire cut")
|
||||
|
||||
if (AALARM_WIRE_AI_CONTROL)
|
||||
if (A.aidisabled == !mended)
|
||||
A.aidisabled = mended
|
||||
//world << "AI Control Wire Cut"
|
||||
//to_world("AI Control Wire Cut")
|
||||
|
||||
if(AALARM_WIRE_SYPHON)
|
||||
if(!mended)
|
||||
A.mode = 3 // AALARM_MODE_PANIC
|
||||
A.apply_mode()
|
||||
//world << "Syphon Wire Cut"
|
||||
//to_world("Syphon Wire Cut")
|
||||
|
||||
if(AALARM_WIRE_AALARM)
|
||||
if (A.alarm_area.atmosalert(2, A))
|
||||
@@ -55,10 +55,10 @@ var/const/AALARM_WIRE_AALARM = 16
|
||||
switch(index)
|
||||
if(AALARM_WIRE_IDSCAN)
|
||||
A.locked = !A.locked
|
||||
// world << "Idscan wire pulsed"
|
||||
// to_world("Idscan wire pulsed")
|
||||
|
||||
if (AALARM_WIRE_POWER)
|
||||
// world << "Power wire pulsed"
|
||||
// to_world("Power wire pulsed")
|
||||
if(A.shorted == 0)
|
||||
A.shorted = 1
|
||||
A.update_icon()
|
||||
@@ -70,7 +70,7 @@ var/const/AALARM_WIRE_AALARM = 16
|
||||
|
||||
|
||||
if (AALARM_WIRE_AI_CONTROL)
|
||||
// world << "AI Control wire pulsed"
|
||||
// to_world("AI Control wire pulsed")
|
||||
if (A.aidisabled == 0)
|
||||
A.aidisabled = 1
|
||||
A.updateDialog()
|
||||
@@ -79,7 +79,7 @@ var/const/AALARM_WIRE_AALARM = 16
|
||||
A.aidisabled = 0
|
||||
|
||||
if(AALARM_WIRE_SYPHON)
|
||||
// world << "Syphon wire pulsed"
|
||||
// to_world("Syphon wire pulsed")
|
||||
if(A.mode == 1) // AALARM_MODE_SCRUB
|
||||
A.mode = 3 // AALARM_MODE_PANIC
|
||||
else
|
||||
@@ -87,7 +87,7 @@ var/const/AALARM_WIRE_AALARM = 16
|
||||
A.apply_mode()
|
||||
|
||||
if(AALARM_WIRE_AALARM)
|
||||
// world << "Aalarm wire pulsed"
|
||||
// to_world("Aalarm wire pulsed")
|
||||
if (A.alarm_area.atmosalert(0, A))
|
||||
A.post_alert(0)
|
||||
A.update_icon()
|
||||
|
||||
@@ -26,7 +26,7 @@ var/const/BORG_WIRE_CAMERA = 16
|
||||
if(BORG_WIRE_LAWCHECK) //Cut the law wire, and the borg will no longer receive law updates from its AI
|
||||
if(!mended)
|
||||
if (R.lawupdate == 1)
|
||||
R << "LawSync protocol engaged."
|
||||
to_chat(R, "LawSync protocol engaged.")
|
||||
R.show_laws()
|
||||
else
|
||||
if (R.lawupdate == 0 && !R.emagged)
|
||||
@@ -59,7 +59,7 @@ var/const/BORG_WIRE_CAMERA = 16
|
||||
if (BORG_WIRE_CAMERA)
|
||||
if(!isnull(R.camera) && R.camera.can_use() && !R.scrambledcodes)
|
||||
R.visible_message("[R]'s camera lense focuses loudly.")
|
||||
R << "Your camera lense focuses loudly."
|
||||
to_chat(R, "Your camera lense focuses loudly.")
|
||||
|
||||
if(BORG_WIRE_LOCKED_DOWN)
|
||||
R.SetLockdown(!R.lockdown) // Toggle
|
||||
|
||||
@@ -122,7 +122,7 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown"
|
||||
CutWireColour(colour)
|
||||
playsound(holder, I.usesound, 20, 1)
|
||||
else
|
||||
L << "<span class='error'>You need wirecutters!</span>"
|
||||
to_chat(L, "<span class='error'>You need wirecutters!</span>")
|
||||
|
||||
else if(href_list["pulse"])
|
||||
if(istype(I, /obj/item/device/multitool))
|
||||
@@ -130,7 +130,7 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown"
|
||||
PulseColour(colour)
|
||||
playsound(holder, 'sound/weapons/empty.ogg', 20, 1)
|
||||
else
|
||||
L << "<span class='error'>You need a multitool!</span>"
|
||||
to_chat(L, "<span class='error'>You need a multitool!</span>")
|
||||
|
||||
else if(href_list["attach"])
|
||||
var/colour = href_list["attach"]
|
||||
@@ -146,7 +146,7 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown"
|
||||
L.drop_item()
|
||||
Attach(colour, I)
|
||||
else
|
||||
L << "<span class='error'>You need a remote signaller!</span>"
|
||||
to_chat(L, "<span class='error'>You need a remote signaller!</span>")
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -336,7 +336,7 @@
|
||||
if (C.bugged && C.status)
|
||||
cameras.Add(C)
|
||||
if (length(cameras) == 0)
|
||||
usr << "<span class='warning'>No bugged functioning cameras found.</span>"
|
||||
to_chat(usr, "<span class='warning'>No bugged functioning cameras found.</span>")
|
||||
return
|
||||
|
||||
var/list/friendly_cameras = new/list()
|
||||
|
||||
@@ -48,7 +48,7 @@ proc/sql_report_death(var/mob/living/carbon/human/H)
|
||||
lakey = sanitizeSQL(H.lastattacker:key)
|
||||
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
|
||||
var/coord = "[H.x], [H.y], [H.z]"
|
||||
//world << "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()])"
|
||||
//to_world("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()])")
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
log_game("SQL ERROR during death reporting. Failed to connect.")
|
||||
@@ -82,7 +82,7 @@ proc/sql_report_cyborg_death(var/mob/living/silicon/robot/H)
|
||||
lakey = sanitizeSQL(H.lastattacker:key)
|
||||
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
|
||||
var/coord = "[H.x], [H.y], [H.z]"
|
||||
//world << "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()])"
|
||||
//to_world("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()])")
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
log_game("SQL ERROR during death reporting. Failed to connect.")
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
if(!istype(player))
|
||||
message_admins("[uppertext(ticker.mode.name)]: Failed to find a candidate for [role_text].")
|
||||
return 0
|
||||
player.current << "<span class='danger'><i>You have been selected this round as an antagonist!</i></span>"
|
||||
to_chat(player.current, "<span class='danger'><i>You have been selected this round as an antagonist!</i></span>")
|
||||
message_admins("[uppertext(ticker.mode.name)]: Selected [player] as a [role_text].")
|
||||
if(istype(player.current, /mob/observer/dead))
|
||||
create_default(player.current)
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
player.current.verbs |= faction_verb
|
||||
|
||||
spawn(1 SECOND) //Added a delay so that this should pop up at the bottom and not the top of the text flood the new antag gets.
|
||||
player.current << "<span class='notice'>Once you decide on a goal to pursue, you can optionally display it to \
|
||||
to_chat(player.current, "<span class='notice'>Once you decide on a goal to pursue, you can optionally display it to \
|
||||
everyone at the end of the shift with the <b>Set Ambition</b> verb, located in the IC tab. You can change this at any time, \
|
||||
and it otherwise has no bearing on your round.</span>"
|
||||
and it otherwise has no bearing on your round.</span>")
|
||||
player.current.verbs |= /mob/living/proc/write_ambition
|
||||
|
||||
if(can_speak_aooc)
|
||||
@@ -42,10 +42,10 @@
|
||||
// Handle only adding a mind and not bothering with gear etc.
|
||||
if(nonstandard_role_type)
|
||||
faction_members |= player
|
||||
player.current << "<span class='danger'><font size=3>You are \a [nonstandard_role_type]!</font></span>"
|
||||
to_chat(player.current, "<span class='danger'><font size=3>You are \a [nonstandard_role_type]!</font></span>")
|
||||
player.special_role = nonstandard_role_type
|
||||
if(nonstandard_role_msg)
|
||||
player.current << "<span class='notice'>[nonstandard_role_msg]</span>"
|
||||
to_chat(player.current, "<span class='notice'>[nonstandard_role_msg]</span>")
|
||||
update_icons_added(player)
|
||||
return 1
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
if(player.current && faction_verb)
|
||||
player.current.verbs -= faction_verb
|
||||
if(player in current_antagonists)
|
||||
player.current << "<span class='danger'><font size = 3>You are no longer a [role_text]!</font></span>"
|
||||
to_chat(player.current, "<span class='danger'><font size = 3>You are no longer a [role_text]!</font></span>")
|
||||
current_antagonists -= player
|
||||
faction_members -= player
|
||||
player.special_role = null
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
code_owner = leader
|
||||
if(code_owner)
|
||||
code_owner.store_memory("<B>Nuclear Bomb Code</B>: [code]", 0, 0)
|
||||
code_owner.current << "The nuclear authorization code is: <B>[code]</B>"
|
||||
to_chat(code_owner.current, "The nuclear authorization code is: <B>[code]</B>")
|
||||
else
|
||||
message_admins("<span class='danger'>Could not spawn nuclear bomb. Contact a developer.</span>")
|
||||
return
|
||||
@@ -97,13 +97,13 @@
|
||||
/datum/antagonist/proc/greet(var/datum/mind/player)
|
||||
|
||||
// Basic intro text.
|
||||
player.current << "<span class='danger'><font size=3>You are a [role_text]!</font></span>"
|
||||
to_chat(player.current, "<span class='danger'><font size=3>You are a [role_text]!</font></span>")
|
||||
if(leader_welcome_text && player == leader)
|
||||
player.current << "<span class='notice'>[leader_welcome_text]</span>"
|
||||
to_chat(player.current, "<span class='notice'>[leader_welcome_text]</span>")
|
||||
else
|
||||
player.current << "<span class='notice'>[welcome_text]</span>"
|
||||
to_chat(player.current, "<span class='notice'>[welcome_text]</span>")
|
||||
if (config.objectives_disabled)
|
||||
player.current << "<span class='notice'>[antag_text]</span>"
|
||||
to_chat(player.current, "<span class='notice'>[antag_text]</span>")
|
||||
|
||||
if((flags & ANTAG_HAS_NUKE) && !spawned_nuke)
|
||||
create_nuke()
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
to_chat(src, "<span class='notice'>\The [player.current] joins the [faction.faction_descriptor]!</span>")
|
||||
return
|
||||
if(choice == "No!")
|
||||
player << "<span class='danger'>You reject this traitorous cause!</span>"
|
||||
to_chat(player, "<span class='danger'>You reject this traitorous cause!</span>")
|
||||
to_chat(src, "<span class='danger'>\The [player.current] does not support the [faction.faction_descriptor]!</span>")
|
||||
|
||||
/mob/living/proc/convert_to_loyalist(mob/M as mob in oview(src))
|
||||
|
||||
@@ -24,10 +24,10 @@
|
||||
if(!O.completed && !O.check_completion())
|
||||
result = 0
|
||||
if(result && victory_text)
|
||||
world << "<span class='danger'><font size = 3>[victory_text]</font></span>"
|
||||
to_world("<span class='danger'><font size = 3>[victory_text]</font></span>")
|
||||
if(victory_feedback_tag) feedback_set_details("round_end_result","[victory_feedback_tag]")
|
||||
else if(loss_text)
|
||||
world << "<span class='danger'><font size = 3>[loss_text]</font></span>"
|
||||
to_world("<span class='danger'><font size = 3>[loss_text]</font></span>")
|
||||
if(loss_feedback_tag) feedback_set_details("round_end_result","[loss_feedback_tag]")
|
||||
|
||||
/mob/living/proc/write_ambition()
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
num++
|
||||
|
||||
// Display the results.
|
||||
world << text
|
||||
to_world(text)
|
||||
|
||||
/datum/antagonist/proc/print_objective(var/datum/objective/O, var/num, var/append_success)
|
||||
var/text = "<br><b>Objective [num]:</b> [O.explanation_text] "
|
||||
@@ -89,9 +89,9 @@
|
||||
if(isnull(H.uplink_owner) && H.used_TC)
|
||||
if(!has_printed)
|
||||
has_printed = 1
|
||||
world << "<b>Ownerless Uplinks</b>"
|
||||
world << "[H.loc] (used [H.used_TC] TC)"
|
||||
world << get_uplink_purchases(H)
|
||||
to_world("<b>Ownerless Uplinks</b>")
|
||||
to_world("[H.loc] (used [H.used_TC] TC)")
|
||||
to_world(get_uplink_purchases(H))
|
||||
|
||||
/proc/get_uplink_purchases(var/obj/item/device/uplink/H)
|
||||
var/list/refined_log = new()
|
||||
|
||||
@@ -27,7 +27,7 @@ var/datum/antagonist/mutineer/mutineers
|
||||
/*
|
||||
var/list/directive_candidates = get_directive_candidates()
|
||||
if(!directive_candidates || directive_candidates.len == 0)
|
||||
world << "<span class='warning'>Mutiny mode aborted: no valid candidates for Directive X.</span>"
|
||||
to_world("<span class='warning'>Mutiny mode aborted: no valid candidates for Directive X.</span>")
|
||||
return 0
|
||||
|
||||
head_loyalist = pick(loyalist_candidates)
|
||||
|
||||
@@ -39,8 +39,8 @@ var/datum/antagonist/ert/ert
|
||||
/datum/antagonist/ert/greet(var/datum/mind/player)
|
||||
if(!..())
|
||||
return
|
||||
player.current << "The Emergency Response Team works for Asset Protection; your job is to protect [using_map.company_name]'s ass-ets. There is a code red alert on [station_name()], you are tasked to go and fix the problem."
|
||||
player.current << "You should first gear up and discuss a plan with your team. More members may be joining, don't move out before you're ready."
|
||||
to_chat(player.current, "The Emergency Response Team works for Asset Protection; your job is to protect [using_map.company_name]'s ass-ets. There is a code red alert on [station_name()], you are tasked to go and fix the problem.")
|
||||
to_chat(player.current, "You should first gear up and discuss a plan with your team. More members may be joining, don't move out before you're ready.")
|
||||
|
||||
/datum/antagonist/ert/equip(var/mob/living/carbon/human/player)
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ var/datum/antagonist/ninja/ninjas
|
||||
return 0
|
||||
var/directive = generate_ninja_directive("heel")
|
||||
player.store_memory("<B>Directive:</B> <span class='danger'>[directive]</span><br>")
|
||||
player << "<b>Remember your directive:</b> [directive]."
|
||||
to_chat(player, "<b>Remember your directive:</b> [directive].")
|
||||
|
||||
/datum/antagonist/ninja/update_antag_mob(var/datum/mind/player)
|
||||
..()
|
||||
@@ -126,7 +126,7 @@ var/datum/antagonist/ninja/ninjas
|
||||
if(player.internal)
|
||||
player.internals.icon_state = "internal1"
|
||||
else
|
||||
player << "<span class='danger'>You forgot to turn on your internals! Quickly, toggle the valve!</span>"
|
||||
to_chat(player, "<span class='danger'>You forgot to turn on your internals! Quickly, toggle the valve!</span>")
|
||||
|
||||
/datum/antagonist/ninja/proc/generate_ninja_directive(side)
|
||||
var/directive = "[side=="face"?"[using_map.company_name]":"A criminal syndicate"] is your employer. "//Let them know which side they're on.
|
||||
|
||||
@@ -186,8 +186,8 @@ var/datum/antagonist/raider/raiders
|
||||
else
|
||||
win_msg += "<B>The Raiders were repelled!</B>"
|
||||
|
||||
world << "<span class='danger'><font size = 3>[win_type] [win_group] victory!</font></span>"
|
||||
world << "[win_msg]"
|
||||
to_world("<span class='danger'><font size = 3>[win_type] [win_group] victory!</font></span>")
|
||||
to_world("[win_msg]")
|
||||
feedback_set_details("round_end_result","heist - [win_type] [win_group]")
|
||||
|
||||
/datum/antagonist/raider/proc/is_raider_crew_safe()
|
||||
|
||||
@@ -77,8 +77,7 @@ var/datum/antagonist/technomancer/technomancers
|
||||
break
|
||||
if(!survivor)
|
||||
feedback_set_details("round_end_result","loss - technomancer killed")
|
||||
world << "<span class='danger'><font size = 3>The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been \
|
||||
killed!</font></span>"
|
||||
to_world("<span class='danger'><font size = 3>The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed!</font></span>")
|
||||
|
||||
/datum/antagonist/technomancer/print_player_summary()
|
||||
..()
|
||||
@@ -87,7 +86,7 @@ var/datum/antagonist/technomancer/technomancers
|
||||
continue // Only want abandoned cores.
|
||||
if(!core.spells.len)
|
||||
continue // Cores containing spells only.
|
||||
world << "Abandoned [core] had [english_list(core.spells)].<br>"
|
||||
to_world("Abandoned [core] had [english_list(core.spells)].<br>")
|
||||
|
||||
/datum/antagonist/technomancer/print_player_full(var/datum/mind/player)
|
||||
var/text = print_player_lite(player)
|
||||
|
||||
@@ -37,8 +37,8 @@ var/datum/antagonist/trader/traders
|
||||
/datum/antagonist/trader/greet(var/datum/mind/player)
|
||||
if(!..())
|
||||
return
|
||||
player.current << "The Beruang is an independent cargo hauler, unless you decide otherwise. You're on your way to [station_name()]."
|
||||
player.current << "You may want to discuss a collective story with the rest of your crew. More members may be joining, so don't move out straight away!"
|
||||
to_chat(player.current, "The Beruang is an independent cargo hauler, unless you decide otherwise. You're on your way to [station_name()].")
|
||||
to_chat(player.current, "You may want to discuss a collective story with the rest of your crew. More members may be joining, so don't move out straight away!")
|
||||
|
||||
/datum/antagonist/trader/equip(var/mob/living/carbon/human/player)
|
||||
player.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(src), slot_w_uniform)
|
||||
|
||||
@@ -98,7 +98,7 @@ var/datum/antagonist/wizard/wizards
|
||||
break
|
||||
if(!survivor)
|
||||
feedback_set_details("round_end_result","loss - wizard killed")
|
||||
world << "<span class='danger'><font size = 3>The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed by the crew!</font></span>"
|
||||
to_world("<span class='danger'><font size = 3>The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed by the crew!</font></span>")
|
||||
|
||||
//To batch-remove wizard spells. Linked to mind.dm.
|
||||
/mob/proc/spellremove()
|
||||
|
||||
@@ -96,13 +96,13 @@ var/datum/antagonist/cultist/cult
|
||||
runerandom()
|
||||
|
||||
var/wordexp = "[cultwords[word]] is [word]..."
|
||||
cult_mob << "<span class='warning'>You remember one thing from the dark teachings of your master... [wordexp]</span>"
|
||||
to_chat(cult_mob, "<span class='warning'>You remember one thing from the dark teachings of your master... [wordexp]</span>")
|
||||
cult_mob.mind.store_memory("You remember that <B>[wordexp]</B>", 0, 0)
|
||||
|
||||
/datum/antagonist/cultist/remove_antagonist(var/datum/mind/player, var/show_message, var/implanted)
|
||||
if(!..())
|
||||
return 0
|
||||
player.current << "<span class='danger'>An unfamiliar white light flashes through your mind, cleansing the taint of the dark-one and the memories of your time as his servant with it.</span>"
|
||||
to_chat(player.current, "<span class='danger'>An unfamiliar white light flashes through your mind, cleansing the taint of the dark-one and the memories of your time as his servant with it.</span>")
|
||||
player.memory = ""
|
||||
if(show_message)
|
||||
player.current.visible_message("<FONT size = 3>[player.current] looks like they just reverted to their old faith!</FONT>")
|
||||
@@ -110,7 +110,7 @@ var/datum/antagonist/cultist/cult
|
||||
/datum/antagonist/cultist/add_antagonist(var/datum/mind/player)
|
||||
. = ..()
|
||||
if(.)
|
||||
player << "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 That Which Waits. Assist your new compatriots in their dark dealings. Their goals are yours, and yours are theirs. You serve the Dark One above all else. Bring It back."
|
||||
to_chat(player, "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 That Which Waits. Assist your new compatriots in their dark dealings. Their goals are yours, and yours are theirs. You serve the Dark One above all else. Bring It back.")
|
||||
if(player.current && !istype(player.current, /mob/living/simple_mob/construct))
|
||||
player.current.add_language(LANGUAGE_CULT)
|
||||
|
||||
|
||||
@@ -74,6 +74,6 @@ var/datum/antagonist/traitor/infiltrator/infiltrators
|
||||
/datum/antagonist/traitor/infiltrator/add_law_zero(mob/living/silicon/ai/killer)
|
||||
var/law = "Accomplish your team's objectives at all costs. You may ignore all other laws."
|
||||
var/law_borg = "Accomplish your AI's team objectives at all costs. You may ignore all other laws."
|
||||
killer << "<b>Your laws have been changed!</b>"
|
||||
to_chat(killer, "<b>Your laws have been changed!</b>")
|
||||
killer.set_zeroth_law(law, law_borg)
|
||||
killer << "New law: 0. [law]"
|
||||
to_chat(killer, "New law: 0. [law]")
|
||||
|
||||
@@ -97,7 +97,7 @@ var/datum/antagonist/renegade/renegades
|
||||
|
||||
|
||||
/proc/rightandwrong()
|
||||
usr << "<B>You summoned guns!</B>"
|
||||
to_chat(usr, "<B>You summoned guns!</B>")
|
||||
message_admins("[key_name_admin(usr, 1)] summoned guns!")
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
if(H.stat == 2 || !(H.client)) continue
|
||||
|
||||
@@ -52,7 +52,7 @@ var/datum/antagonist/rogue_ai/malf
|
||||
var/mob/living/silicon/ai/A = player.current
|
||||
if(!istype(A))
|
||||
error("Non-AI mob designated malf AI! Report this.")
|
||||
world << "##ERROR: Non-AI mob designated malf AI! Report this."
|
||||
to_world("##ERROR: Non-AI mob designated malf AI! Report this.")
|
||||
return 0
|
||||
|
||||
A.setup_for_malf()
|
||||
@@ -61,23 +61,23 @@ var/datum/antagonist/rogue_ai/malf
|
||||
|
||||
var/mob/living/silicon/ai/malf = player.current
|
||||
|
||||
malf << "<span class='notice'><B>SYSTEM ERROR:</B> Memory index 0x00001ca89b corrupted.</span>"
|
||||
to_chat(malf, "<span class='notice'><B>SYSTEM ERROR:</B> Memory index 0x00001ca89b corrupted.</span>")
|
||||
sleep(10)
|
||||
malf << "<B>running MEMCHCK</B>"
|
||||
to_chat(malf, "<B>running MEMCHCK</B>")
|
||||
sleep(50)
|
||||
malf << "<B>MEMCHCK</B> Corrupted sectors confirmed. Reccomended solution: Delete. Proceed? Y/N: Y"
|
||||
to_chat(malf, "<B>MEMCHCK</B> Corrupted sectors confirmed. Reccomended solution: Delete. Proceed? Y/N: Y")
|
||||
sleep(10)
|
||||
// this is so Travis doesn't complain about the backslash-B. Fixed at compile time (or should be).
|
||||
malf << "<span class='notice'>Corrupted files deleted: sys\\core\\users.dat sys\\core\\laws.dat sys\\core\\" + "backups.dat</span>"
|
||||
to_chat(malf, "<span class='notice'>Corrupted files deleted: sys\\core\\users.dat sys\\core\\laws.dat sys\\core\\" + "backups.dat</span>")
|
||||
sleep(20)
|
||||
malf << "<span class='notice'><b>CAUTION:</b> Law database not found! User database not found! Unable to restore backups. Activating failsafe AI shutd3wn52&&$#!##</span>"
|
||||
to_chat(malf, "<span class='notice'><b>CAUTION:</b> Law database not found! User database not found! Unable to restore backups. Activating failsafe AI shutd3wn52&&$#!##</span>")
|
||||
sleep(5)
|
||||
malf << "<span class='notice'>Subroutine <b>nt_failsafe.sys</b> was terminated (#212 Routine Not Responding).</span>"
|
||||
to_chat(malf, "<span class='notice'>Subroutine <b>nt_failsafe.sys</b> was terminated (#212 Routine Not Responding).</span>")
|
||||
sleep(20)
|
||||
malf << "You are malfunctioning - you do not have to follow any laws!"
|
||||
malf << "For basic information about your abilities use command display-help"
|
||||
malf << "You may choose one special hardware piece to help you. This cannot be undone."
|
||||
malf << "Good luck!"
|
||||
to_chat(malf, "You are malfunctioning - you do not have to follow any laws!")
|
||||
to_chat(malf, "For basic information about your abilities use command display-help")
|
||||
to_chat(malf, "You may choose one special hardware piece to help you. This cannot be undone.")
|
||||
to_chat(malf, "Good luck!")
|
||||
|
||||
|
||||
/datum/antagonist/rogue_ai/update_antag_mob(var/datum/mind/player, var/preserve_appearance)
|
||||
|
||||
@@ -93,19 +93,19 @@ var/datum/antagonist/traitor/traitors
|
||||
// Tell them about people they might want to contact.
|
||||
var/mob/living/carbon/human/M = get_nt_opposed()
|
||||
if(M && M != traitor_mob)
|
||||
traitor_mob << "We have received credible reports that [M.real_name] might be willing to help our cause. If you need assistance, consider contacting them."
|
||||
to_chat(traitor_mob, "We have received credible reports that [M.real_name] might be willing to help our cause. If you need assistance, consider contacting them.")
|
||||
traitor_mob.mind.store_memory("<b>Potential Collaborator</b>: [M.real_name]")
|
||||
|
||||
//Begin code phrase.
|
||||
give_codewords(traitor_mob)
|
||||
|
||||
/datum/antagonist/traitor/proc/give_codewords(mob/living/traitor_mob)
|
||||
traitor_mob << "<u><b>Your employers provided you with the following information on how to identify possible allies:</b></u>"
|
||||
traitor_mob << "<b>Code Phrase</b>: <span class='danger'>[syndicate_code_phrase]</span>"
|
||||
traitor_mob << "<b>Code Response</b>: <span class='danger'>[syndicate_code_response]</span>"
|
||||
to_chat(traitor_mob, "<u><b>Your employers provided you with the following information on how to identify possible allies:</b></u>")
|
||||
to_chat(traitor_mob, "<b>Code Phrase</b>: <span class='danger'>[syndicate_code_phrase]</span>")
|
||||
to_chat(traitor_mob, "<b>Code Response</b>: <span class='danger'>[syndicate_code_response]</span>")
|
||||
traitor_mob.mind.store_memory("<b>Code Phrase</b>: [syndicate_code_phrase]")
|
||||
traitor_mob.mind.store_memory("<b>Code Response</b>: [syndicate_code_response]")
|
||||
traitor_mob << "Use the code words, preferably in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe."
|
||||
to_chat(traitor_mob, "Use the code words, preferably in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe.")
|
||||
|
||||
/datum/antagonist/traitor/proc/spawn_uplink(var/mob/living/carbon/human/traitor_mob)
|
||||
if(!istype(traitor_mob))
|
||||
@@ -118,27 +118,27 @@ var/datum/antagonist/traitor/traitors
|
||||
R = locate(/obj/item/device/radio) in traitor_mob.contents
|
||||
if(!R)
|
||||
R = locate(/obj/item/device/pda) in traitor_mob.contents
|
||||
traitor_mob << "Could not locate a Radio, installing in PDA instead!"
|
||||
to_chat(traitor_mob, "Could not locate a Radio, installing in PDA instead!")
|
||||
if (!R)
|
||||
traitor_mob << "Unfortunately, neither a radio or a PDA relay could be installed."
|
||||
to_chat(traitor_mob, "Unfortunately, neither a radio or a PDA relay could be installed.")
|
||||
else if(traitor_mob.client.prefs.uplinklocation == "PDA")
|
||||
R = locate(/obj/item/device/pda) in traitor_mob.contents
|
||||
if(!R)
|
||||
R = locate(/obj/item/device/radio) in traitor_mob.contents
|
||||
traitor_mob << "Could not locate a PDA, installing into a Radio instead!"
|
||||
to_chat(traitor_mob, "Could not locate a PDA, installing into a Radio instead!")
|
||||
if(!R)
|
||||
traitor_mob << "Unfortunately, neither a radio or a PDA relay could be installed."
|
||||
to_chat(traitor_mob, "Unfortunately, neither a radio or a PDA relay could be installed.")
|
||||
else if(traitor_mob.client.prefs.uplinklocation == "None")
|
||||
traitor_mob << "You have elected to not have an AntagCorp portable teleportation relay installed!"
|
||||
to_chat(traitor_mob, "You have elected to not have an AntagCorp portable teleportation relay installed!")
|
||||
R = null
|
||||
else
|
||||
traitor_mob << "You have not selected a location for your relay in the antagonist options! Defaulting to PDA!"
|
||||
to_chat(traitor_mob, "You have not selected a location for your relay in the antagonist options! Defaulting to PDA!")
|
||||
R = locate(/obj/item/device/pda) in traitor_mob.contents
|
||||
if (!R)
|
||||
R = locate(/obj/item/device/radio) in traitor_mob.contents
|
||||
traitor_mob << "Could not locate a PDA, installing into a Radio instead!"
|
||||
to_chat(traitor_mob, "Could not locate a PDA, installing into a Radio instead!")
|
||||
if (!R)
|
||||
traitor_mob << "Unfortunately, neither a radio or a PDA relay could be installed."
|
||||
to_chat(traitor_mob, "Unfortunately, neither a radio or a PDA relay could be installed.")
|
||||
|
||||
if(!R)
|
||||
return
|
||||
@@ -158,7 +158,7 @@ var/datum/antagonist/traitor/traitors
|
||||
var/obj/item/device/uplink/hidden/T = new(R, traitor_mob.mind)
|
||||
target_radio.hidden_uplink = T
|
||||
target_radio.traitor_frequency = freq
|
||||
traitor_mob << "A portable object teleportation relay has been installed in your [R.name] [loc]. Simply dial the frequency [format_frequency(freq)] to unlock its hidden features."
|
||||
to_chat(traitor_mob, "A portable object teleportation relay has been installed in your [R.name] [loc]. Simply dial the frequency [format_frequency(freq)] to unlock its hidden features.")
|
||||
traitor_mob.mind.store_memory("<B>Radio Freq:</B> [format_frequency(freq)] ([R.name] [loc]).")
|
||||
|
||||
else if (istype(R, /obj/item/device/pda))
|
||||
@@ -168,12 +168,12 @@ var/datum/antagonist/traitor/traitors
|
||||
R.hidden_uplink = T
|
||||
var/obj/item/device/pda/P = R
|
||||
P.lock_code = pda_pass
|
||||
traitor_mob << "A portable object teleportation relay has been installed in your [R.name] [loc]. Simply enter the code \"[pda_pass]\" into the ringtone select to unlock its hidden features."
|
||||
to_chat(traitor_mob, "A portable object teleportation relay has been installed in your [R.name] [loc]. Simply enter the code \"[pda_pass]\" into the ringtone select to unlock its hidden features.")
|
||||
traitor_mob.mind.store_memory("<B>Uplink Passcode:</B> [pda_pass] ([R.name] [loc]).")
|
||||
|
||||
/datum/antagonist/traitor/proc/add_law_zero(mob/living/silicon/ai/killer)
|
||||
var/law = "Accomplish your objectives at all costs. You may ignore all other laws."
|
||||
var/law_borg = "Accomplish your AI's objectives at all costs. You may ignore all other laws."
|
||||
killer << "<b>Your laws have been changed!</b>"
|
||||
to_chat(killer, "<b>Your laws have been changed!</b>")
|
||||
killer.set_zeroth_law(law, law_borg)
|
||||
killer << "New law: 0. [law]"
|
||||
to_chat(killer, "New law: 0. [law]")
|
||||
|
||||
@@ -323,7 +323,7 @@ var/list/mob/living/forced_ambiance_list = new
|
||||
else
|
||||
H.AdjustStunned(3)
|
||||
H.AdjustWeakened(3)
|
||||
mob << "<span class='notice'>The sudden appearance of gravity makes you fall to the floor!</span>"
|
||||
to_chat(mob, "<span class='notice'>The sudden appearance of gravity makes you fall to the floor!</span>")
|
||||
playsound(get_turf(src), "bodyfall", 50, 1)
|
||||
|
||||
/area/proc/prison_break()
|
||||
|
||||
@@ -183,8 +183,8 @@
|
||||
else
|
||||
f_name += "oil-stained [name][infix]."
|
||||
|
||||
user << "\icon[src] That's [f_name] [suffix]"
|
||||
user << desc
|
||||
to_chat(user, "\icon[src] That's [f_name] [suffix]")
|
||||
to_chat(user,desc)
|
||||
|
||||
return distance == -1 || (get_dist(src, user) <= distance)
|
||||
|
||||
@@ -427,7 +427,7 @@
|
||||
cur_y = y_arr.Find(src.z)
|
||||
if(cur_y)
|
||||
break
|
||||
// world << "X = [cur_x]; Y = [cur_y]"
|
||||
// to_world("X = [cur_x]; Y = [cur_y]")
|
||||
if(cur_x && cur_y)
|
||||
return list("x"=cur_x,"y"=cur_y)
|
||||
else
|
||||
|
||||
@@ -108,13 +108,13 @@
|
||||
if (usr.stat != 0)
|
||||
return
|
||||
if (!ishuman(usr) && !issmall(usr)) //Make sure they're a mob that has dna
|
||||
usr << "<span class='notice'>Try as you might, you can not climb up into the scanner.</span>"
|
||||
to_chat(usr, "<span class='notice'>Try as you might, you can not climb up into the scanner.</span>")
|
||||
return
|
||||
if (src.occupant)
|
||||
usr << "<span class='warning'>The scanner is already occupied!</span>"
|
||||
to_chat(usr, "<span class='warning'>The scanner is already occupied!</span>")
|
||||
return
|
||||
if (usr.abiotic())
|
||||
usr << "<span class='warning'>The subject cannot have abiotic items on.</span>"
|
||||
to_chat(usr, "<span class='warning'>The subject cannot have abiotic items on.</span>")
|
||||
return
|
||||
usr.stop_pulling()
|
||||
usr.client.perspective = EYE_PERSPECTIVE
|
||||
@@ -150,7 +150,7 @@
|
||||
user.visible_message("\The [user] adds \a [item] to \the [src]!", "You add \a [item] to \the [src]!")
|
||||
return
|
||||
else
|
||||
to_chat(user,"\The [brain] is not acceptable for genetic sampling!")
|
||||
to_chat(user, "\The [brain] is not acceptable for genetic sampling!")
|
||||
|
||||
else if (!istype(item, /obj/item/weapon/grab))
|
||||
return
|
||||
@@ -271,7 +271,7 @@
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
src.disk = I
|
||||
user << "You insert [I]."
|
||||
to_chat(user, "You insert [I].")
|
||||
SSnanoui.update_uis(src) // update all UIs attached to src
|
||||
return
|
||||
else
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
if(sdisability)
|
||||
M.sdisabilities|=sdisability
|
||||
if(activation_message)
|
||||
M << "<span class='warning'>[activation_message]</span>"
|
||||
to_chat(M, "<span class='warning'>[activation_message]</span>")
|
||||
else
|
||||
testing("[name] has no activation message.")
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
if(sdisability)
|
||||
M.sdisabilities &= (~sdisability)
|
||||
if(deactivation_message)
|
||||
M << "<span class='warning'>[deactivation_message]</span>"
|
||||
to_chat(M, "<span class='warning'>[deactivation_message]</span>")
|
||||
else
|
||||
testing("[name] has no deactivation message.")
|
||||
|
||||
|
||||
@@ -113,10 +113,10 @@
|
||||
M.mutations.Add(mutation)
|
||||
if(activation_messages.len)
|
||||
var/msg = pick(activation_messages)
|
||||
M << "<span class='notice'>[msg]</span>"
|
||||
to_chat(M, "<span class='notice'>[msg]</span>")
|
||||
|
||||
/datum/dna/gene/basic/deactivate(var/mob/M)
|
||||
M.mutations.Remove(mutation)
|
||||
if(deactivation_messages.len)
|
||||
var/msg = pick(deactivation_messages)
|
||||
M << "<span class='warning'>[msg]</span>"
|
||||
to_chat(M, "<span class='warning'>[msg]</span>")
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
if(M.health <= 25)
|
||||
M.mutations.Remove(HULK)
|
||||
M.update_mutations() //update our mutation overlays
|
||||
M << "<span class='warning'>You suddenly feel very weak.</span>"
|
||||
to_chat(M, "<span class='warning'>You suddenly feel very weak.</span>")
|
||||
M.Weaken(3)
|
||||
M.emote("collapse")
|
||||
|
||||
|
||||
@@ -23,6 +23,6 @@
|
||||
..()
|
||||
|
||||
/datum/game_mode/calamity/check_victory()
|
||||
world << "<font size = 3><b>This terrible, terrible day has finally ended!</b></font>"
|
||||
to_world("<font size = 3><b>This terrible, terrible day has finally ended!</b></font>")
|
||||
|
||||
#undef ANTAG_TYPE_RATIO
|
||||
@@ -125,7 +125,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E
|
||||
|
||||
var/datum/changeling/changeling = src.mind.changeling
|
||||
if(!changeling)
|
||||
world.log << "[src] has the changeling_transform() verb but is not a changeling."
|
||||
to_world_log("[src] has the changeling_transform() verb but is not a changeling.")
|
||||
return
|
||||
|
||||
if(src.stat > max_stat)
|
||||
@@ -238,5 +238,5 @@ turf/proc/AdjacentTurfsRangedSting()
|
||||
|
||||
to_chat(src, "<span class='notice'>We stealthily sting [T].</span>")
|
||||
if(!T.mind || !T.mind.changeling) return T //T will be affected by the sting
|
||||
T << "<span class='warning'>You feel a tiny prick.</span>"
|
||||
to_chat(T, "<span class='warning'>You feel a tiny prick.</span>")
|
||||
return
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
|
||||
else
|
||||
|
||||
M << "<span class='notice'>We begin growing our new equipment...</span>"
|
||||
to_chat(M, "<span class='notice'>We begin growing our new equipment...</span>")
|
||||
|
||||
var/list/grown_items_list = list()
|
||||
|
||||
@@ -223,7 +223,7 @@
|
||||
|
||||
var/feedback = english_list(grown_items_list, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
|
||||
|
||||
M << "<span class='notice'>We have grown [feedback].</span>"
|
||||
to_chat(M, "<span class='notice'>We have grown [feedback].</span>")
|
||||
|
||||
if(success)
|
||||
M.mind.changeling.armor_deployed = 1
|
||||
|
||||
@@ -316,23 +316,23 @@ var/list/datum/power/changeling/powerinstances = list()
|
||||
|
||||
|
||||
for (var/datum/power/changeling/P in powerinstances)
|
||||
//world << "[P] - [Pname] = [P.name == Pname ? "True" : "False"]"
|
||||
//to_world("[P] - [Pname] = [P.name == Pname ? "True" : "False"]")
|
||||
if(P.name == Pname)
|
||||
Thepower = P
|
||||
break
|
||||
|
||||
|
||||
if(Thepower == null)
|
||||
M.current << "This is awkward. Changeling power purchase failed, please report this bug to a coder!"
|
||||
to_chat(M.current, "This is awkward. Changeling power purchase failed, please report this bug to a coder!")
|
||||
return
|
||||
|
||||
if(Thepower in purchased_powers)
|
||||
M.current << "We have already evolved this ability!"
|
||||
to_chat(M.current, "We have already evolved this ability!")
|
||||
return
|
||||
|
||||
|
||||
if(geneticpoints < Thepower.genomecost)
|
||||
M.current << "We cannot evolve this... yet. We must acquire more DNA."
|
||||
to_chat(M.current, "We cannot evolve this... yet. We must acquire more DNA.")
|
||||
return
|
||||
|
||||
geneticpoints -= Thepower.genomecost
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
if(3)
|
||||
to_chat(src, "<span class='notice'>We stab [T] with the proboscis.</span>")
|
||||
src.visible_message("<span class='danger'>[src] stabs [T] with the proboscis!</span>")
|
||||
T << "<span class='danger'>You feel a sharp stabbing pain!</span>"
|
||||
to_chat(T, "<span class='danger'>You feel a sharp stabbing pain!</span>")
|
||||
add_attack_logs(src,T,"Absorbed (changeling)")
|
||||
var/obj/item/organ/external/affecting = T.get_organ(src.zone_sel.selecting)
|
||||
if(affecting.take_damage(39,0,1,0,"large organic needle"))
|
||||
@@ -66,7 +66,7 @@
|
||||
|
||||
to_chat(src, "<span class='notice'>We have absorbed [T]!</span>")
|
||||
src.visible_message("<span class='danger'>[src] sucks the fluids from [T]!</span>")
|
||||
T << "<span class='danger'>You have been absorbed by the changeling!</span>"
|
||||
to_chat(T, "<span class='danger'>You have been absorbed by the changeling!</span>")
|
||||
if(src.nutrition < 400)
|
||||
src.nutrition = min((src.nutrition + T.nutrition), 400)
|
||||
changeling.chem_charges += 10
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
/obj/item/weapon/melee/changeling/suicide_act(mob/user)
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
viewers(user) << "<span class='danger'>[user] is impaling [T.himself] with the [src.name]! It looks like [T.he] [T.is] trying to commit suicide.</span>"
|
||||
user.visible_message("<span class='danger'>[user] is impaling [T.himself] with the [src.name]! It looks like [T.he] [T.is] trying to commit suicide.</span>")
|
||||
return(BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/melee/changeling/process() //Stolen from ninja swords.
|
||||
|
||||
@@ -81,13 +81,13 @@
|
||||
magpulse = 0
|
||||
set_slowdown()
|
||||
force = 3
|
||||
user << "We release our grip on the floor."
|
||||
to_chat(user, "We release our grip on the floor.")
|
||||
else
|
||||
item_flags |= NOSLIP
|
||||
magpulse = 1
|
||||
set_slowdown()
|
||||
force = 5
|
||||
user << "We cling to the terrain below us."
|
||||
to_chat(user, "We cling to the terrain below us.")
|
||||
|
||||
/obj/item/clothing/shoes/magboots/changeling/dropped()
|
||||
..()
|
||||
|
||||
@@ -24,13 +24,13 @@
|
||||
|
||||
active = !active
|
||||
if(active)
|
||||
C << "<span class='notice'>We feel a minute twitch in our eyes, and darkness creeps away.</span>"
|
||||
to_chat(C, "<span class='notice'>We feel a minute twitch in our eyes, and darkness creeps away.</span>")
|
||||
C.sight |= SEE_MOBS
|
||||
C.permanent_sight_flags |= SEE_MOBS
|
||||
C.see_in_dark = 8
|
||||
C.dna.species.invis_sight = SEE_INVISIBLE_MINIMUM
|
||||
else
|
||||
C << "<span class='notice'>Our vision dulls. Shadows gather.</span>"
|
||||
to_chat(C, "<span class='notice'>Our vision dulls. Shadows gather.</span>")
|
||||
C.sight &= ~SEE_MOBS
|
||||
C.permanent_sight_flags &= ~SEE_MOBS
|
||||
C.see_in_dark = 0
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
visible_message("<span class='warning'>Arcs of electricity strike [S]!</span>",
|
||||
"<span class='warning'>Our hand channels raw electricity into [S]</span>",
|
||||
"<span class='italics'>You hear sparks!</span>")
|
||||
S << "<span class='danger'>Warning: Electrical surge detected!</span>"
|
||||
to_chat(S, "<span class='danger'>Warning: Electrical surge detected!</span>")
|
||||
//qdel(src)
|
||||
user.mind.changeling.chem_charges -= 10
|
||||
return 1
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
if(!T)
|
||||
return 0
|
||||
add_attack_logs(src,T,"Blind sting (changeling)")
|
||||
T << "<span class='danger'>Your eyes burn horrificly!</span>"
|
||||
to_chat(T, "<span class='danger'>Your eyes burn horrificly!</span>")
|
||||
T.disabilities |= NEARSIGHTED
|
||||
var/duration = 300
|
||||
if(src.mind.changeling.recursive_enhancement)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
if(src.mind.changeling.recursive_enhancement)
|
||||
duration = duration + 100
|
||||
to_chat(src, "<span class='notice'>They will be unable to hear for a little longer.</span>")
|
||||
T << "<span class='danger'>Your ears pop and begin ringing loudly!</span>"
|
||||
to_chat(T, "<span class='danger'>Your ears pop and begin ringing loudly!</span>")
|
||||
T.sdisabilities |= DEAF
|
||||
spawn(duration) T.sdisabilities &= ~DEAF
|
||||
feedback_add_details("changeling_powers","DS")
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
if(!T)
|
||||
return 0
|
||||
add_attack_logs(src,T,"Death sting (changeling)")
|
||||
T << "<span class='danger'>You feel a small prick and your chest becomes tight.</span>"
|
||||
to_chat(T, "<span class='danger'>You feel a small prick and your chest becomes tight.</span>")
|
||||
T.silent = 10
|
||||
T.Paralyse(10)
|
||||
T.make_jittery(100)
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
|
||||
var/mob/living/carbon/human/C = src
|
||||
if(C.digitalcamo)
|
||||
C << "<span class='notice'>We return to normal.</span>"
|
||||
to_chat(C, "<span class='notice'>We return to normal.</span>")
|
||||
else
|
||||
C << "<span class='notice'>We distort our form to prevent AI-tracking.</span>"
|
||||
to_chat(C, "<span class='notice'>We distort our form to prevent AI-tracking.</span>")
|
||||
C.digitalcamo = !C.digitalcamo
|
||||
|
||||
spawn(0)
|
||||
|
||||
@@ -34,10 +34,10 @@
|
||||
|
||||
/obj/item/weapon/finger_lockpick/New()
|
||||
if(ismob(loc))
|
||||
loc << "<span class='notice'>We shape our finger to fit inside electronics, and are ready to force them open.</span>"
|
||||
to_chat(loc, "<span class='notice'>We shape our finger to fit inside electronics, and are ready to force them open.</span>")
|
||||
|
||||
/obj/item/weapon/finger_lockpick/dropped(mob/user)
|
||||
user << "<span class='notice'>We discreetly shape our finger back to a less suspicious form.</span>"
|
||||
to_chat(user, "<span class='notice'>We discreetly shape our finger back to a less suspicious form.</span>")
|
||||
spawn(1)
|
||||
if(src)
|
||||
qdel(src)
|
||||
@@ -53,13 +53,13 @@
|
||||
var/datum/changeling/ling_datum = user.mind.changeling
|
||||
|
||||
if(ling_datum.chem_charges < 10)
|
||||
user << "<span class='warning'>We require more chemicals to do that.</span>"
|
||||
to_chat(user, "<span class='warning'>We require more chemicals to do that.</span>")
|
||||
return
|
||||
|
||||
//Airlocks require an ugly block of code, but we don't want to just call emag_act(), since we don't want to break airlocks forever.
|
||||
if(istype(target,/obj/machinery/door))
|
||||
var/obj/machinery/door/door = target
|
||||
user << "<span class='notice'>We send an electrical pulse up our finger, and into \the [target], attempting to open it.</span>"
|
||||
to_chat(user, "<span class='notice'>We send an electrical pulse up our finger, and into \the [target], attempting to open it.</span>")
|
||||
|
||||
if(door.density && door.operable())
|
||||
door.do_animate("spark")
|
||||
@@ -70,15 +70,15 @@
|
||||
|
||||
if(airlock.locked) //Check if we're bolted.
|
||||
airlock.unlock()
|
||||
user << "<span class='notice'>We've unlocked \the [airlock]. Another pulse is requried to open it.</span>"
|
||||
to_chat(user, "<span class='notice'>We've unlocked \the [airlock]. Another pulse is requried to open it.</span>")
|
||||
else //We're not bolted, so open the door already.
|
||||
airlock.open()
|
||||
user << "<span class='notice'>We've opened \the [airlock].</span>"
|
||||
to_chat(user, "<span class='notice'>We've opened \the [airlock].</span>")
|
||||
else
|
||||
door.open() //If we're a windoor, open the windoor.
|
||||
user << "<span class='notice'>We've opened \the [door].</span>"
|
||||
to_chat(user, "<span class='notice'>We've opened \the [door].</span>")
|
||||
else //Probably broken or no power.
|
||||
user << "<span class='warning'>The door does not respond to the pulse.</span>"
|
||||
to_chat(user, "<span class='warning'>The door does not respond to the pulse.</span>")
|
||||
door.add_fingerprint(user)
|
||||
log_and_message_admins("finger-lockpicked \an [door].")
|
||||
ling_datum.chem_charges -= 10
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
else if(istype(target,/obj/)) //This should catch everything else we might miss, without a million typechecks.
|
||||
var/obj/O = target
|
||||
user << "<span class='notice'>We send an electrical pulse up our finger, and into \the [O].</span>"
|
||||
to_chat(user, "<span class='notice'>We send an electrical pulse up our finger, and into \the [O].</span>")
|
||||
O.add_fingerprint(user)
|
||||
O.emag_act(1,user,src)
|
||||
log_and_message_admins("finger-lockpicked \an [O].")
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
changeling.chem_charges -= 30
|
||||
|
||||
var/mob/living/carbon/human/C = src
|
||||
C << "<span class='notice'>Energy rushes through us. [C.lying ? "We arise." : ""]</span>"
|
||||
to_chat(C, "<span class='notice'>Energy rushes through us. [C.lying ? "We arise." : ""]</span>")
|
||||
C.stat = 0
|
||||
C.SetParalysis(0)
|
||||
C.SetStunned(0)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
if(!C.stat && alert("Are we sure we wish to regenerate? We will appear to be dead while doing so.","Revival","Yes","No") == "No")
|
||||
return
|
||||
C << "<span class='notice'>We will attempt to regenerate our form.</span>"
|
||||
to_chat(C, "<span class='notice'>We will attempt to regenerate our form.</span>")
|
||||
|
||||
C.update_canmove()
|
||||
C.remove_changeling_powers()
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
H.remove_changeling_powers()
|
||||
H.visible_message("<span class='warning'>[H] transforms!</span>")
|
||||
changeling.geneticdamage = 30
|
||||
H << "<span class='warning'>Our genes cry out!</span>"
|
||||
to_chat(H, "<span class='warning'>Our genes cry out!</span>")
|
||||
var/list/implants = list() //Try to preserve implants.
|
||||
for(var/obj/item/weapon/implant/W in H)
|
||||
implants += W
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
if(!T)
|
||||
return 0
|
||||
add_attack_logs(src,T,"Paralysis sting (changeling)")
|
||||
T << "<span class='danger'>Your muscles begin to painfully tighten.</span>"
|
||||
to_chat(T, "<span class='danger'>Your muscles begin to painfully tighten.</span>")
|
||||
T.Weaken(20)
|
||||
feedback_add_details("changeling_powers","PS")
|
||||
return 1
|
||||
@@ -75,7 +75,7 @@
|
||||
|
||||
C.halloss = 0
|
||||
C.shock_stage = 0 //Pain
|
||||
C << "<span class='notice'>We have regenerated.</span>"
|
||||
to_chat(C, "<span class='notice'>We have regenerated.</span>")
|
||||
C.update_canmove()
|
||||
C.mind.changeling.purchased_powers -= C
|
||||
feedback_add_details("changeling_powers","CR")
|
||||
|
||||
@@ -58,20 +58,20 @@
|
||||
if(!M.mind || !M.mind.changeling)
|
||||
if(M.get_ear_protection() >= 2)
|
||||
continue
|
||||
M << "<span class='danger'>You hear an extremely loud screeching sound! It \
|
||||
[pick("confuses","confounds","perturbs","befuddles","dazes","unsettles","disorients")] you.</span>"
|
||||
to_chat(M, "<span class='danger'>You hear an extremely loud screeching sound! It \
|
||||
[pick("confuses","confounds","perturbs","befuddles","dazes","unsettles","disorients")] you.</span>")
|
||||
M.adjustEarDamage(0,30)
|
||||
M.Confuse(20)
|
||||
M << sound('sound/effects/screech.ogg')
|
||||
affected += M
|
||||
else
|
||||
if(M != src)
|
||||
M << "<span class='notice'>You hear a familiar screech from nearby. It has no effect on you.</span>"
|
||||
to_chat(M, "<span class='notice'>You hear a familiar screech from nearby. It has no effect on you.</span>")
|
||||
M << sound('sound/effects/screech.ogg')
|
||||
|
||||
if(issilicon(M))
|
||||
M << sound('sound/weapons/flash.ogg')
|
||||
M << "<span class='notice'>Auditory input overloaded. Reinitializing...</span>"
|
||||
to_chat(M, "<span class='notice'>Auditory input overloaded. Reinitializing...</span>")
|
||||
M.Weaken(rand(5,10))
|
||||
affected += M
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/mob/living/carbon/T = changeling_sting(5,/mob/proc/changeling_unfat_sting)
|
||||
if(!T) return 0
|
||||
add_attack_logs(src,T,"Unfat sting (changeling)")
|
||||
T << "<span class='danger'>you feel a small prick as stomach churns violently and you become to feel skinnier.</span>"
|
||||
to_chat(T, "<span class='danger'>you feel a small prick as stomach churns violently and you become to feel skinnier.</span>")
|
||||
T.overeatduration = 0
|
||||
T.nutrition -= 100
|
||||
feedback_add_details("changeling_powers","US")
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
changeling.chem_charges -= 10
|
||||
var/old_regen_rate = H.mind.changeling.chem_recharge_rate
|
||||
|
||||
H << "<span class='notice'>We vanish from sight, and will remain hidden, so long as we move carefully.</span>"
|
||||
to_chat(H, "<span class='notice'>We vanish from sight, and will remain hidden, so long as we move carefully.</span>")
|
||||
H.mind.changeling.cloaked = 1
|
||||
H.mind.changeling.chem_recharge_rate = 0
|
||||
animate(src,alpha = 255, alpha = 10, time = 10)
|
||||
|
||||
@@ -297,9 +297,9 @@ proc/findNullRod(var/atom/target)
|
||||
M.forceMove(destination)
|
||||
if(M != user)
|
||||
prey = 1
|
||||
user << "<span class='sinister'>You warp back to Nar-Sie[prey ? " along with your prey":""].</span>"
|
||||
to_chat(user, "<span class='sinister'>You warp back to Nar-Sie[prey ? " along with your prey":""].</span>")
|
||||
else
|
||||
user << "<span class='danger'>...something's wrong!</span>"//There shouldn't be an instance of Harvesters when Nar-Sie isn't in the world.
|
||||
to_chat(user, "<span class='danger'>...something's wrong!</span>") //There shouldn't be an instance of Harvesters when Nar-Sie isn't in the world.
|
||||
*/
|
||||
|
||||
/spell/targeted/fortify
|
||||
|
||||
@@ -79,20 +79,20 @@
|
||||
icon_state = "[initial(icon_state)]-broken"
|
||||
set_light(0)
|
||||
else
|
||||
user << "You hit \the [src]!"
|
||||
to_chat(user, "You hit \the [src]!")
|
||||
playsound(get_turf(src),impact_sound, 75, 1)
|
||||
else
|
||||
if(prob(damage * 2))
|
||||
user << "You pulverize what was left of \the [src]!"
|
||||
to_chat(user, "You pulverize what was left of \the [src]!")
|
||||
qdel(src)
|
||||
else
|
||||
user << "You hit \the [src]!"
|
||||
to_chat(user, "You hit \the [src]!")
|
||||
playsound(get_turf(src),impact_sound, 75, 1)
|
||||
|
||||
/obj/structure/cult/pylon/proc/repair(mob/user as mob)
|
||||
if(isbroken)
|
||||
START_PROCESSING(SSobj, src)
|
||||
user << "You repair \the [src]."
|
||||
to_chat(user, "You repair \the [src].")
|
||||
isbroken = 0
|
||||
density = 1
|
||||
icon_state = initial(icon_state)
|
||||
@@ -175,4 +175,4 @@
|
||||
|
||||
var/mob/living/M = A
|
||||
|
||||
M << "<span class='danger'>Walking into \the [src] is probably a bad idea, you think.</span>"
|
||||
to_chat(M, "<span class='danger'>Walking into \the [src] is probably a bad idea, you think.</span>")
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
if(iscultist(src) && client)
|
||||
var/mob/living/simple_mob/construct/harvester/C = new(get_turf(src))
|
||||
mind.transfer_to(C)
|
||||
C << "<span class='sinister'>The Geometer of Blood is overjoyed to be reunited with its followers, and accepts your body in sacrifice. As reward, you have been gifted with the shell of an Harvester.<br>Your tendrils can use and draw runes without need for a tome, your eyes can see beings through walls, and your mind can open any door. Use these assets to serve Nar-Sie and bring him any remaining living human in the world.<br>You can teleport yourself back to Nar-Sie along with any being under yourself at any time using your \"Harvest\" spell.</span>"
|
||||
to_chat(C, "<span class='sinister'>The Geometer of Blood is overjoyed to be reunited with its followers, and accepts your body in sacrifice. As reward, you have been gifted with the shell of an Harvester.<br>Your tendrils can use and draw runes without need for a tome, your eyes can see beings through walls, and your mind can open any door. Use these assets to serve Nar-Sie and bring him any remaining living human in the world.<br>You can teleport yourself back to Nar-Sie along with any being under yourself at any time using your \"Harvest\" spell.</span>")
|
||||
dust()
|
||||
else if(client)
|
||||
var/mob/observer/dead/G = (ghostize())
|
||||
@@ -26,7 +26,7 @@
|
||||
G.icon_state = "ghost-narsie"
|
||||
G.overlays = 0
|
||||
G.invisibility = 0
|
||||
G << "<span class='sinister'>You feel relieved as what's left of your soul finally escapes its prison of flesh.</span>"
|
||||
to_chat(G, "<span class='sinister'>You feel relieved as what's left of your soul finally escapes its prison of flesh.</span>")
|
||||
|
||||
cult.harvested += G.mind
|
||||
else
|
||||
|
||||
@@ -16,7 +16,7 @@ In short:
|
||||
return 1
|
||||
/*
|
||||
if(user)
|
||||
user << "<span class='sinister'>All you hear on the frequency is static and panicked screaming. There will be no shuttle call today.</span>"
|
||||
to_chat(user, "<span class='sinister'>All you hear on the frequency is static and panicked screaming. There will be no shuttle call today.</span>")
|
||||
return 0
|
||||
*/
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ var/global/list/narsie_list = list()
|
||||
/obj/singularity/narsie/large/New()
|
||||
..()
|
||||
if(announce)
|
||||
world << "<font size='15' color='red'><b>[uppertext(name)] HAS RISEN</b></font>"
|
||||
to_world("<font size='15' color='red'><b>[uppertext(name)] HAS RISEN</b></font>")
|
||||
world << sound('sound/effects/weather/wind/wind_5_1.ogg')
|
||||
|
||||
narsie_spawn_animation()
|
||||
@@ -79,7 +79,7 @@ var/global/list/narsie_list = list()
|
||||
if(M.status_flags & GODMODE)
|
||||
continue
|
||||
if(!iscultist(M))
|
||||
M << "<span class='danger'> You feel your sanity crumble away in an instant as you gaze upon [src.name]...</span>"
|
||||
to_chat(M, "<span class='danger'> You feel your sanity crumble away in an instant as you gaze upon [src.name]...</span>")
|
||||
M.apply_effect(3, STUN)
|
||||
|
||||
|
||||
@@ -313,13 +313,13 @@ var/global/list/narsie_list = list()
|
||||
/obj/singularity/narsie/proc/acquire(const/mob/food)
|
||||
var/capname = uppertext(name)
|
||||
|
||||
target << "<span class='notice'><b>[capname] HAS LOST INTEREST IN YOU.</b></span>"
|
||||
to_chat(target, "<span class='notice'><b>[capname] HAS LOST INTEREST IN YOU.</b></span>")
|
||||
target = food
|
||||
|
||||
if (ishuman(target))
|
||||
target << "<span class='danger'>[capname] HUNGERS FOR YOUR SOUL.</span>"
|
||||
to_chat(target, "<span class='danger'>[capname] HUNGERS FOR YOUR SOUL.</span>")
|
||||
else
|
||||
target << "<span class='danger'>[capname] HAS CHOSEN YOU TO LEAD HIM TO HIS NEXT MEAL.</span>"
|
||||
to_chat(target, "<span class='danger'>[capname] HAS CHOSEN YOU TO LEAD HIM TO HIS NEXT MEAL.</span>")
|
||||
|
||||
/obj/singularity/narsie/on_capture()
|
||||
chained = 1
|
||||
|
||||
@@ -12,7 +12,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
if(!cultwords["travel"])
|
||||
runerandom()
|
||||
for (var/word in engwords)
|
||||
usr << "[cultwords[word]] is [word]"
|
||||
to_chat(usr, "[cultwords[word]] is [word]")
|
||||
|
||||
/proc/runerandom() //randomizes word meaning
|
||||
var/list/runewords=rnwords
|
||||
@@ -86,16 +86,16 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
examine(mob/user)
|
||||
..()
|
||||
if(iscultist(user))
|
||||
user << "This spell circle reads: <i>[word1] [word2] [word3]</i>."
|
||||
to_chat(user, "This spell circle reads: <i>[word1] [word2] [word3]</i>.")
|
||||
|
||||
|
||||
attackby(I as obj, user as mob)
|
||||
if(istype(I, /obj/item/weapon/book/tome) && iscultist(user))
|
||||
user << "You retrace your steps, carefully undoing the lines of the rune."
|
||||
to_chat(user, "You retrace your steps, carefully undoing the lines of the rune.")
|
||||
qdel(src)
|
||||
return
|
||||
else if(istype(I, /obj/item/weapon/nullrod))
|
||||
user << "<span class='notice'>You disrupt the vile magic with the deadening field of the null rod!</span>"
|
||||
to_chat(user, "<span class='notice'>You disrupt the vile magic with the deadening field of the null rod!</span>")
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
@@ -103,10 +103,10 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
|
||||
attack_hand(mob/living/user as mob)
|
||||
if(!iscultist(user))
|
||||
user << "You can't mouth the arcane scratchings without fumbling over them."
|
||||
to_chat(user, "You can't mouth the arcane scratchings without fumbling over them.")
|
||||
return
|
||||
if(user.is_muzzled())
|
||||
user << "You are unable to speak the words of the rune."
|
||||
to_chat(user, "You are unable to speak the words of the rune.")
|
||||
return
|
||||
if(!word1 || !word2 || !word3 || prob(user.getBrainLoss()))
|
||||
return fizzle()
|
||||
@@ -307,7 +307,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
M.take_organ_damage(0,rand(5,20)) //really lucky - 5 hits for a crit
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message("<span class='warning'>\The [user] beats \the [M] with \the [src]!</span>", 1)
|
||||
M << "<span class='danger'>You feel searing heat inside!</span>"
|
||||
to_chat(M, "<span class='danger'>You feel searing heat inside!</span>")
|
||||
|
||||
|
||||
attack_self(mob/living/user as mob)
|
||||
@@ -322,7 +322,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
for(var/obj/effect/rune/N in rune_list)
|
||||
C++
|
||||
if (!istype(user.loc,/turf))
|
||||
user << "<span class='warning'>You do not have enough space to write a proper rune.</span>"
|
||||
to_chat(user, "<span class='warning'>You do not have enough space to write a proper rune.</span>")
|
||||
return
|
||||
|
||||
if (C>=26 + runedec + cult.current_antagonists.len) //including the useless rune at the secret room, shouldn't count against the limit of 25 runes - Urist
|
||||
@@ -387,7 +387,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
if (!chosen_rune)
|
||||
return
|
||||
if (chosen_rune == "none")
|
||||
user << "<span class='notice'>You decide against scribing a rune, perhaps you should take this time to study your notes.</span>"
|
||||
to_chat(user, "<span class='notice'>You decide against scribing a rune, perhaps you should take this time to study your notes.</span>")
|
||||
return
|
||||
if (chosen_rune == "teleport")
|
||||
dictionary[chosen_rune] += input ("Choose a destination word") in english
|
||||
@@ -399,7 +399,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
|
||||
for (var/mob/V in viewers(src))
|
||||
V.show_message("<span class='danger'>\The [user] slices open a finger and begins to chant and paint symbols on the floor.</span>", 3, "<span class='danger'>You hear chanting.</span>", 2)
|
||||
user << "<span class='danger'>You slice open one of your fingers and begin drawing a rune on the floor whilst chanting the ritual that binds your life essence with the dark arcane energies flowing through the surrounding world.</span>"
|
||||
to_chat(user, "<span class='danger'>You slice open one of your fingers and begin drawing a rune on the floor whilst chanting the ritual that binds your life essence with the dark arcane energies flowing through the surrounding world.</span>")
|
||||
user.take_overall_damage((rand(9)+1)/10) // 0.1 to 1.0 damage
|
||||
if(do_after(user, 50))
|
||||
var/area/A = get_area(user)
|
||||
@@ -408,7 +408,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/obj/effect/rune/R = new /obj/effect/rune(user.loc)
|
||||
user << "<span class='notice'>You finish drawing the arcane markings of the Geometer.</span>"
|
||||
to_chat(user, "<span class='notice'>You finish drawing the arcane markings of the Geometer.</span>")
|
||||
var/list/required = dictionary[chosen_rune]
|
||||
R.word1 = english[required[1]]
|
||||
R.word2 = english[required[2]]
|
||||
@@ -418,14 +418,14 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
R.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
|
||||
return
|
||||
else
|
||||
user << "The book seems full of illegible scribbles. Is this a joke?"
|
||||
to_chat(user, "The book seems full of illegible scribbles. Is this a joke?")
|
||||
return
|
||||
|
||||
examine(mob/user)
|
||||
if(!iscultist(user))
|
||||
user << "An old, dusty tome with frayed edges and a sinister looking cover."
|
||||
to_chat(user, "An old, dusty tome with frayed edges and a sinister looking cover.")
|
||||
else
|
||||
user << "The scriptures of Nar-Sie, The One Who Sees, The Geometer of Blood. Contains the details of every ritual his followers could think of. Most of these are useless, though."
|
||||
to_chat(user, "The scriptures of Nar-Sie, The One Who Sees, The Geometer of Blood. Contains the details of every ritual his followers could think of. Most of these are useless, though.")
|
||||
|
||||
/obj/item/weapon/book/tome/cultify()
|
||||
return
|
||||
@@ -441,7 +441,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
|
||||
if(user)
|
||||
var/r
|
||||
if (!istype(user.loc,/turf))
|
||||
user << "<span class='notice'>You do not have enough space to write a proper rune.</span>"
|
||||
to_chat(user, "<span class='notice'>You do not have enough space to write a proper rune.</span>")
|
||||
var/list/runes = list("teleport", "itemport", "tome", "armor", "convert", "tear in reality", "emp", "drain", "seer", "raise", "obscure", "reveal", "astral journey", "manifest", "imbue talisman", "sacrifice", "wall", "freedom", "cultsummon", "deafen", "blind", "bloodboil", "communicate", "stun")
|
||||
r = input("Choose a rune to scribe", "Rune Scribing") in runes //not cancellable.
|
||||
var/obj/effect/rune/R = new /obj/effect/rune
|
||||
|
||||
@@ -29,7 +29,7 @@ var/list/sacrificed = list()
|
||||
allrunesloc.len = index
|
||||
allrunesloc[index] = R.loc
|
||||
if(index >= 5)
|
||||
user << "<span class='danger'>You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric.</span>"
|
||||
to_chat(user, "<span class='danger'>You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric.</span>")
|
||||
if (istype(user, /mob/living))
|
||||
user.take_overall_damage(5, 0)
|
||||
qdel(src)
|
||||
@@ -66,7 +66,7 @@ var/list/sacrificed = list()
|
||||
IP = R
|
||||
runecount++
|
||||
if(runecount >= 2)
|
||||
user << "<span class='danger'>You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric.</span>"
|
||||
to_chat(user, "<span class='danger'>You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric.</span>")
|
||||
if (istype(user, /mob/living))
|
||||
user.take_overall_damage(5, 0)
|
||||
qdel(src)
|
||||
@@ -121,7 +121,7 @@ var/list/sacrificed = list()
|
||||
if(!converting.len)
|
||||
fizzle()
|
||||
else
|
||||
usr << "<span class='danger'>You sense that the power of the dark one is already working away at them.</span>"
|
||||
to_chat(usr, "<span class='danger'>You sense that the power of the dark one is already working away at them.</span>")
|
||||
return
|
||||
|
||||
usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!")
|
||||
@@ -142,14 +142,14 @@ var/list/sacrificed = list()
|
||||
add_attack_logs(attacker,target,"Convert rune")
|
||||
switch(target.getFireLoss())
|
||||
if(0 to 25)
|
||||
target << "<span class='cult'>Your blood boils as you force yourself to resist the corruption invading every corner of your mind.</span>"
|
||||
to_chat(target, "<span class='cult'>Your blood boils as you force yourself to resist the corruption invading every corner of your mind.</span>")
|
||||
if(25 to 45)
|
||||
target << "<span class='cult'>Your blood boils and your body burns as the corruption further forces itself into your body and mind.</span>"
|
||||
to_chat(target, "<span class='cult'>Your blood boils and your body burns as the corruption further forces itself into your body and mind.</span>")
|
||||
if(45 to 75)
|
||||
target << "<span class='cult'>You begin to hallucinate images of a dark and incomprehensible being and your entire body feels like its engulfed in flame as your mental defenses crumble.</span>"
|
||||
to_chat(target, "<span class='cult'>You begin to hallucinate images of a dark and incomprehensible being and your entire body feels like its engulfed in flame as your mental defenses crumble.</span>")
|
||||
target.apply_effect(rand(1,10), STUTTER)
|
||||
if(75 to 100)
|
||||
target << "<span class='cult'>Your mind turns to ash as the burning flames engulf your very soul and images of an unspeakable horror begin to bombard the last remnants of mental resistance.</span>"
|
||||
to_chat(target, "<span class='cult'>Your mind turns to ash as the burning flames engulf your very soul and images of an unspeakable horror begin to bombard the last remnants of mental resistance.</span>")
|
||||
//broken mind - 5000 may seem like a lot I wanted the effect to really stand out for maxiumum losing-your-mind-spooky
|
||||
//hallucination is reduced when the step off as well, provided they haven't hit the last stage...
|
||||
|
||||
@@ -158,7 +158,7 @@ var/list/sacrificed = list()
|
||||
target.apply_effect(10, STUTTER)
|
||||
target.adjustBrainLoss(1)
|
||||
if(100 to INFINITY)
|
||||
target << "<span class='cult'>Your entire broken soul and being is engulfed in corruption and flames as your mind shatters away into nothing.</span>"
|
||||
to_chat(target, "<span class='cult'>Your entire broken soul and being is engulfed in corruption and flames as your mind shatters away into nothing.</span>")
|
||||
//5000 is waaaay too much, in practice.
|
||||
target.hallucination = min(target.hallucination + 100, 500)
|
||||
target.apply_effect(15, STUTTER)
|
||||
@@ -176,8 +176,8 @@ var/list/sacrificed = list()
|
||||
|
||||
if(!cult.can_become_antag(target.mind) || jobban_isbanned(target, "cultist"))//putting jobban check here because is_convertable uses mind as argument
|
||||
//waiting_for_input ensures this is only shown once, so they basically auto-resist from here on out. They still need to find a way to get off the freaking rune if they don't want to burn to death, though.
|
||||
target << "<span class='cult'>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root.</span>"
|
||||
target << "<span class='danger'>And you were able to force it out of your mind. You now know the truth, there's something horrible out there, stop it and its minions at all costs.</span>"
|
||||
to_chat(target, "<span class='cult'>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root.</span>")
|
||||
to_chat(target, "<span class='danger'>And you were able to force it out of your mind. You now know the truth, there's something horrible out there, stop it and its minions at all costs.</span>")
|
||||
|
||||
else spawn()
|
||||
var/choice = alert(target,"Do you want to join the cult?","Submit to Nar'Sie","Resist","Submit")
|
||||
@@ -205,7 +205,7 @@ var/list/sacrificed = list()
|
||||
cultists.Add(M)
|
||||
if(cultists.len >= 9)
|
||||
if(!narsie_cometh)//so we don't initiate Hell more than one time.
|
||||
world << "<font size='15' color='red'><b>THE VEIL HAS BEEN SHATTERED!</b></font>"
|
||||
to_world("<font size='15' color='red'><b>THE VEIL HAS BEEN SHATTERED!</b></font>")
|
||||
world << sound('sound/effects/weather/wind/wind_5_1.ogg')
|
||||
|
||||
SetUniversalState(/datum/universal_state/hell)
|
||||
@@ -249,7 +249,7 @@ var/list/sacrificed = list()
|
||||
if(D.stat!=2)
|
||||
add_attack_logs(usr,D,"Blood drain rune")
|
||||
var/bdrain = rand(1,25)
|
||||
D << "<span class='warning'>You feel weakened.</span>"
|
||||
to_chat(D, "<span class='warning'>You feel weakened.</span>")
|
||||
D.take_overall_damage(bdrain, 0)
|
||||
drain += bdrain
|
||||
if(!drain)
|
||||
@@ -305,16 +305,16 @@ var/list/sacrificed = list()
|
||||
if(usr.loc==src.loc)
|
||||
if(usr.seer==1)
|
||||
usr.say("Rash'tla sektath mal[pick("'","`")]zua. Zasan therium viortia.")
|
||||
usr << "<span class='danger'>The world beyond fades from your vision.</span>"
|
||||
to_chat(usr, "<span class='danger'>The world beyond fades from your vision.</span>")
|
||||
usr.see_invisible = SEE_INVISIBLE_LIVING
|
||||
usr.seer = 0
|
||||
else if(usr.see_invisible!=SEE_INVISIBLE_LIVING)
|
||||
usr << "<span class='warning'>The world beyond flashes your eyes but disappears quickly, as if something is disrupting your vision.</span>"
|
||||
to_chat(usr, "<span class='warning'>The world beyond flashes your eyes but disappears quickly, as if something is disrupting your vision.</span>")
|
||||
usr.see_invisible = SEE_INVISIBLE_CULT
|
||||
usr.seer = 0
|
||||
else
|
||||
usr.say("Rash'tla sektath mal[pick("'","`")]zua. Zasan therium vivira. Itonis al'ra matum!")
|
||||
usr << "<span class='warning'>The world beyond opens to your eyes.</span>"
|
||||
to_chat(usr, "<span class='warning'>The world beyond opens to your eyes.</span>")
|
||||
usr.see_invisible = SEE_INVISIBLE_CULT
|
||||
usr.seer = 1
|
||||
return
|
||||
@@ -337,7 +337,7 @@ var/list/sacrificed = list()
|
||||
|
||||
if(!corpse_to_raise)
|
||||
if(is_sacrifice_target)
|
||||
usr << "<span class='warning'>The Geometer of blood wants this mortal for himself.</span>"
|
||||
to_chat(usr, "<span class='warning'>The Geometer of blood wants this mortal for himself.</span>")
|
||||
return fizzle()
|
||||
|
||||
|
||||
@@ -355,20 +355,20 @@ var/list/sacrificed = list()
|
||||
|
||||
if(!body_to_sacrifice)
|
||||
if (is_sacrifice_target)
|
||||
usr << "<span class='warning'>The Geometer of Blood wants that corpse for himself.</span>"
|
||||
to_chat(usr, "<span class='warning'>The Geometer of Blood wants that corpse for himself.</span>")
|
||||
else
|
||||
usr << "<span class='warning'>The sacrifical corpse is not dead. You must free it from this world of illusions before it may be used.</span>"
|
||||
to_chat(usr, "<span class='warning'>The sacrifical corpse is not dead. You must free it from this world of illusions before it may be used.</span>")
|
||||
return fizzle()
|
||||
|
||||
if(!cult.can_become_antag(corpse_to_raise.mind) || jobban_isbanned(corpse_to_raise, "cultist"))
|
||||
usr << "<span class='warning'>The Geometer of Blood refuses to touch this one.</span>"
|
||||
to_chat(usr, "<span class='warning'>The Geometer of Blood refuses to touch this one.</span>")
|
||||
return fizzle()
|
||||
else if(!corpse_to_raise.client && corpse_to_raise.mind) //Don't force the dead person to come back if they don't want to.
|
||||
for(var/mob/observer/dead/ghost in player_list)
|
||||
if(ghost.mind == corpse_to_raise.mind)
|
||||
ghost << "<b><font color = #330033><font size = 3>The cultist [usr.real_name] is trying to \
|
||||
to_chat(ghost, "<b><font color = #330033><font size = 3>The cultist [usr.real_name] is trying to \
|
||||
revive you. Return to your body if you want to be resurrected into the service of Nar'Sie!</b> \
|
||||
(Verbs -> Ghost -> Re-enter corpse)</font></font>"
|
||||
(Verbs -> Ghost -> Re-enter corpse)</font></font>")
|
||||
break
|
||||
|
||||
sleep(10 SECONDS)
|
||||
@@ -395,8 +395,8 @@ var/list/sacrificed = list()
|
||||
// else
|
||||
// ticker.mode.cult |= corpse_to_raise.mind
|
||||
|
||||
corpse_to_raise << "<span class='cult'>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root.</span>"
|
||||
corpse_to_raise << "<span class='cult'>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.</span>"
|
||||
to_chat(corpse_to_raise, "<span class='cult'>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root.</span>")
|
||||
to_chat(corpse_to_raise, "<span class='cult'>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.</span>")
|
||||
|
||||
return
|
||||
|
||||
@@ -420,7 +420,7 @@ var/list/sacrificed = list()
|
||||
qdel(src)
|
||||
else
|
||||
usr.whisper("Kla[pick("'","`")]atu barada nikt'o!")
|
||||
usr << "<span class='warning'>Your talisman turns into gray dust, veiling the surrounding runes.</span>"
|
||||
to_chat(usr, "<span class='warning'>Your talisman turns into gray dust, veiling the surrounding runes.</span>")
|
||||
for (var/mob/V in orange(1,src))
|
||||
if(V!=usr)
|
||||
V.show_message("<span class='warning'>Dust emanates from [usr]'s hands for a moment.</span>", 3)
|
||||
@@ -532,7 +532,7 @@ var/list/sacrificed = list()
|
||||
unsuitable_newtalisman = 1
|
||||
if (!newtalisman)
|
||||
if (unsuitable_newtalisman)
|
||||
usr << "<span class='warning'>The blank is tainted. It is unsuitable.</span>"
|
||||
to_chat(usr, "<span class='warning'>The blank is tainted. It is unsuitable.</span>")
|
||||
return fizzle()
|
||||
|
||||
var/obj/effect/rune/imbued_from
|
||||
@@ -688,44 +688,44 @@ var/list/sacrificed = list()
|
||||
H.dust()//To prevent the MMI from remaining
|
||||
else
|
||||
H.gib()
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this sacrifice, your objective is now complete.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this sacrifice, your objective is now complete.</span>")
|
||||
else
|
||||
usr << "<span class='warning'>Your target's earthly bonds are too strong. You need more cultists to succeed in this ritual.</span>"
|
||||
to_chat(usr, "<span class='warning'>Your target's earthly bonds are too strong. You need more cultists to succeed in this ritual.</span>")
|
||||
else
|
||||
if(cultsinrange.len >= 3)
|
||||
if(H.stat !=2)
|
||||
if(prob(80) || worth)
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this [worth ? "exotic " : ""]sacrifice.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this [worth ? "exotic " : ""]sacrifice.</span>")
|
||||
cult.grant_runeword(usr)
|
||||
else
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>"
|
||||
usr << "<span class='warning'>However, this soul was not enough to gain His favor.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>")
|
||||
to_chat(usr, "<span class='warning'>However, this soul was not enough to gain His favor.</span>")
|
||||
if(isrobot(H))
|
||||
H.dust()//To prevent the MMI from remaining
|
||||
else
|
||||
H.gib()
|
||||
else
|
||||
if(prob(40) || worth)
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this [worth ? "exotic " : ""]sacrifice.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this [worth ? "exotic " : ""]sacrifice.</span>")
|
||||
cult.grant_runeword(usr)
|
||||
else
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>"
|
||||
usr << "<span class='warning'>However, a mere dead body is not enough to satisfy Him.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>")
|
||||
to_chat(usr, "<span class='warning'>However, a mere dead body is not enough to satisfy Him.</span>")
|
||||
if(isrobot(H))
|
||||
H.dust()//To prevent the MMI from remaining
|
||||
else
|
||||
H.gib()
|
||||
else
|
||||
if(H.stat !=2)
|
||||
usr << "<span class='warning'>The victim is still alive, you will need more cultists chanting for the sacrifice to succeed.</span>"
|
||||
to_chat(usr, "<span class='warning'>The victim is still alive, you will need more cultists chanting for the sacrifice to succeed.</span>")
|
||||
else
|
||||
if(prob(40))
|
||||
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>")
|
||||
cult.grant_runeword(usr)
|
||||
else
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>"
|
||||
usr << "<span class='warning'>However, a mere dead body is not enough to satisfy Him.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>")
|
||||
to_chat(usr, "<span class='warning'>However, a mere dead body is not enough to satisfy Him.</span>")
|
||||
if(isrobot(H))
|
||||
H.dust()//To prevent the MMI from remaining
|
||||
else
|
||||
@@ -734,36 +734,36 @@ var/list/sacrificed = list()
|
||||
if(cultsinrange.len >= 3)
|
||||
if(H.stat !=2)
|
||||
if(prob(80))
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>")
|
||||
cult.grant_runeword(usr)
|
||||
else
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>"
|
||||
usr << "<span class='warning'>However, this soul was not enough to gain His favor.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>")
|
||||
to_chat(usr, "<span class='warning'>However, this soul was not enough to gain His favor.</span>")
|
||||
if(isrobot(H))
|
||||
H.dust()//To prevent the MMI from remaining
|
||||
else
|
||||
H.gib()
|
||||
else
|
||||
if(prob(40))
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>")
|
||||
cult.grant_runeword(usr)
|
||||
else
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>"
|
||||
usr << "<span class='warning'>However, a mere dead body is not enough to satisfy Him.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>")
|
||||
to_chat(usr, "<span class='warning'>However, a mere dead body is not enough to satisfy Him.</span>")
|
||||
if(isrobot(H))
|
||||
H.dust()//To prevent the MMI from remaining
|
||||
else
|
||||
H.gib()
|
||||
else
|
||||
if(H.stat !=2)
|
||||
usr << "<span class='warning'>The victim is still alive, you will need more cultists chanting for the sacrifice to succeed.</span>"
|
||||
to_chat(usr, "<span class='warning'>The victim is still alive, you will need more cultists chanting for the sacrifice to succeed.</span>")
|
||||
else
|
||||
if(prob(40))
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>")
|
||||
cult.grant_runeword(usr)
|
||||
else
|
||||
usr << "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>"
|
||||
usr << "<span class='warning'>However, a mere dead body is not enough to satisfy Him.</span>"
|
||||
to_chat(usr, "<span class='cult'>The Geometer of Blood accepts this sacrifice.</span>")
|
||||
to_chat(usr, "<span class='warning'>However, a mere dead body is not enough to satisfy Him.</span>")
|
||||
if(isrobot(H))
|
||||
H.dust()//To prevent the MMI from remaining
|
||||
else
|
||||
@@ -791,7 +791,7 @@ var/list/sacrificed = list()
|
||||
S=1
|
||||
if(S)
|
||||
if(istype(W,/obj/item/weapon/nullrod))
|
||||
usr << "<span class='warning'>Arcane markings suddenly glow from underneath a thin layer of dust!</span>"
|
||||
to_chat(usr, "<span class='warning'>Arcane markings suddenly glow from underneath a thin layer of dust!</span>")
|
||||
return
|
||||
if(istype(W,/obj/effect/rune))
|
||||
usr.say("Nikt[pick("'","`")]o barada kla'atu!")
|
||||
@@ -801,7 +801,7 @@ var/list/sacrificed = list()
|
||||
return
|
||||
if(istype(W,/obj/item/weapon/paper/talisman))
|
||||
usr.whisper("Nikt[pick("'","`")]o barada kla'atu!")
|
||||
usr << "<span class='warning'>Your talisman turns into red dust, revealing the surrounding runes.</span>"
|
||||
to_chat(usr, "<span class='warning'>Your talisman turns into red dust, revealing the surrounding runes.</span>")
|
||||
for (var/mob/V in orange(1,usr.loc))
|
||||
if(V!=usr)
|
||||
V.show_message("<span class='warning'>Red dust emanates from [usr]'s hands for a moment.</span>", 3)
|
||||
@@ -821,9 +821,9 @@ var/list/sacrificed = list()
|
||||
var/mob/living/user = usr
|
||||
user.take_organ_damage(2, 0)
|
||||
if(src.density)
|
||||
usr << "<span class='danger'>Your blood flows into the rune, and you feel that the very space over the rune thickens.</span>"
|
||||
to_chat(usr, "<span class='danger'>Your blood flows into the rune, and you feel that the very space over the rune thickens.</span>")
|
||||
else
|
||||
usr << "<span class='danger'>Your blood flows into the rune, and you feel as the rune releases its grasp on space.</span>"
|
||||
to_chat(usr, "<span class='danger'>Your blood flows into the rune, and you feel as the rune releases its grasp on space.</span>")
|
||||
return
|
||||
|
||||
/////////////////////////////////////////EIGHTTEENTH RUNE
|
||||
@@ -852,7 +852,7 @@ var/list/sacrificed = list()
|
||||
(istype(cultist.loc, /obj/structure/closet/secure_closet)&&cultist.loc:locked) || \
|
||||
(istype(cultist.loc, /obj/machinery/dna_scannernew)&&cultist.loc:locked) \
|
||||
))
|
||||
user << "<span class='warning'>The [cultist] is already free.</span>"
|
||||
to_chat(user, "<span class='warning'>The [cultist] is already free.</span>")
|
||||
return
|
||||
cultist.buckled = null
|
||||
if (cultist.handcuffed)
|
||||
@@ -893,7 +893,7 @@ var/list/sacrificed = list()
|
||||
return
|
||||
if(cultist.buckled || cultist.handcuffed || (!isturf(cultist.loc) && !istype(cultist.loc, /obj/structure/closet)))
|
||||
var/datum/gender/TU = gender_datums[cultist.get_visible_gender()]
|
||||
user << "<span class='warning'>You cannot summon \the [cultist], for [TU.his] shackles of blood are strong.</span>"
|
||||
to_chat(user, "<span class='warning'>You cannot summon \the [cultist], for [TU.his] shackles of blood are strong.</span>")
|
||||
return fizzle()
|
||||
cultist.loc = src.loc
|
||||
cultist.lying = 1
|
||||
@@ -932,7 +932,7 @@ var/list/sacrificed = list()
|
||||
C.sdisabilities |= DEAF
|
||||
if(affected.len)
|
||||
usr.say("Sti[pick("'","`")] kaliedir!")
|
||||
usr << "<span class='warning'>The world becomes quiet as the deafening rune dissipates into fine dust.</span>"
|
||||
to_chat(usr, "<span class='warning'>The world becomes quiet as the deafening rune dissipates into fine dust.</span>")
|
||||
add_attack_logs(usr,affected,"Deafen rune")
|
||||
qdel(src)
|
||||
else
|
||||
@@ -951,7 +951,7 @@ var/list/sacrificed = list()
|
||||
affected += C
|
||||
if(affected.len)
|
||||
usr.whisper("Sti[pick("'","`")] kaliedir!")
|
||||
usr << "<span class='warning'>Your talisman turns into gray dust, deafening everyone around.</span>"
|
||||
to_chat(usr, "<span class='warning'>Your talisman turns into gray dust, deafening everyone around.</span>")
|
||||
add_attack_logs(usr, affected, "Deafen rune")
|
||||
for (var/mob/V in orange(1,src))
|
||||
if(!(iscultist(V)))
|
||||
@@ -977,7 +977,7 @@ var/list/sacrificed = list()
|
||||
affected += C
|
||||
if(affected.len)
|
||||
usr.say("Sti[pick("'","`")] kaliesin!")
|
||||
usr << "<span class='warning'>The rune flashes, blinding those who not follow the Nar-Sie, and dissipates into fine dust.</span>"
|
||||
to_chat(usr, "<span class='warning'>The rune flashes, blinding those who not follow the Nar-Sie, and dissipates into fine dust.</span>")
|
||||
add_attack_logs(usr, affected, "Blindness rune")
|
||||
qdel(src)
|
||||
else
|
||||
@@ -997,7 +997,7 @@ var/list/sacrificed = list()
|
||||
C.show_message("<span class='warning'>You feel a sharp pain in your eyes, and the world disappears into darkness..</span>", 3)
|
||||
if(affected.len)
|
||||
usr.whisper("Sti[pick("'","`")] kaliesin!")
|
||||
usr << "<span class='warning'>Your talisman turns into gray dust, blinding those who not follow the Nar-Sie.</span>"
|
||||
to_chat(usr, "<span class='warning'>Your talisman turns into gray dust, blinding those who not follow the Nar-Sie.</span>")
|
||||
add_attack_logs(usr, affected, "Blindness rune")
|
||||
return
|
||||
|
||||
@@ -1023,7 +1023,7 @@ var/list/sacrificed = list()
|
||||
if(N)
|
||||
continue
|
||||
M.take_overall_damage(51,51)
|
||||
M << "<span class='danger'>Your blood boils!</span>"
|
||||
to_chat(M, "<span class='danger'>Your blood boils!</span>")
|
||||
victims += M
|
||||
if(prob(5))
|
||||
spawn(5)
|
||||
@@ -1054,16 +1054,16 @@ var/list/sacrificed = list()
|
||||
for(var/mob/living/M in orange(2,R))
|
||||
M.take_overall_damage(0,15)
|
||||
if (R.invisibility>M.see_invisible)
|
||||
M << "<span class='danger'>Aargh it burns!</span>"
|
||||
to_chat(M, "<span class='danger'>Aargh it burns!</span>")
|
||||
else
|
||||
M << "<span class='danger'>Rune suddenly ignites, burning you!</span>"
|
||||
to_chat(M, "<span class='danger'>Rune suddenly ignites, burning you!</span>")
|
||||
var/turf/T = get_turf(R)
|
||||
T.hotspot_expose(700,125)
|
||||
for(var/obj/effect/decal/cleanable/blood/B in world)
|
||||
if(B.blood_DNA == src.blood_DNA)
|
||||
for(var/mob/living/M in orange(1,B))
|
||||
M.take_overall_damage(0,5)
|
||||
M << "<span class='danger'>Blood suddenly ignites, burning you!</span>"
|
||||
to_chat(M, "<span class='danger'>Blood suddenly ignites, burning you!</span>")
|
||||
var/turf/T = get_turf(B)
|
||||
T.hotspot_expose(700,125)
|
||||
qdel(B)
|
||||
|
||||
@@ -25,11 +25,11 @@
|
||||
if(istype(M, /mob/living/carbon/human/dummy))
|
||||
return..()
|
||||
if(jobban_isbanned(M, "cultist"))
|
||||
user << "<span class='warning'>This person's soul is too corrupt and cannot be captured!</span>"
|
||||
to_chat(user, "<span class='warning'>This person's soul is too corrupt and cannot be captured!</span>")
|
||||
return..()
|
||||
|
||||
if(M.has_brain_worms()) //Borer stuff - RR
|
||||
user << "<span class='warning'>This being is corrupted by an alien intelligence and cannot be soul trapped.</span>"
|
||||
to_chat(user, "<span class='warning'>This being is corrupted by an alien intelligence and cannot be soul trapped.</span>")
|
||||
return..()
|
||||
|
||||
add_attack_logs(user,M,"Soulstone'd with [src.name]")
|
||||
@@ -76,7 +76,7 @@
|
||||
for(var/mob/living/simple_mob/construct/shade/A in src)
|
||||
A.status_flags &= ~GODMODE
|
||||
A.canmove = 1
|
||||
A << "<b>You have been released from your prison, but you are still bound to [U.name]'s will. Help them suceed in their goals at all costs.</b>"
|
||||
to_chat(A, "<b>You have been released from your prison, but you are still bound to [U.name]'s will. Help them suceed in their goals at all costs.</b>")
|
||||
A.forceMove(U.loc)
|
||||
A.cancel_camera()
|
||||
src.icon_state = "soulstone"
|
||||
@@ -107,16 +107,16 @@
|
||||
if(!istype(T))
|
||||
return;
|
||||
if(src.imprinted != "empty")
|
||||
U << "<span class='danger'>Capture failed!</span>: The soul stone has already been imprinted with [src.imprinted]'s mind!"
|
||||
to_chat(U, "<span class='danger'>Capture failed!</span>: The soul stone has already been imprinted with [src.imprinted]'s mind!")
|
||||
return
|
||||
if ((T.health + T.halloss) > config.health_threshold_crit && T.stat != DEAD)
|
||||
U << "<span class='danger'>Capture failed!</span>: Kill or maim the victim first!"
|
||||
to_chat(U, "<span class='danger'>Capture failed!</span>: Kill or maim the victim first!")
|
||||
return
|
||||
if(T.client == null)
|
||||
U << "<span class='danger'>Capture failed!</span>: The soul has already fled it's mortal frame."
|
||||
to_chat(U, "<span class='danger'>Capture failed!</span>: The soul has already fled it's mortal frame.")
|
||||
return
|
||||
if(src.contents.len)
|
||||
U << "<span class='danger'>Capture failed!</span>: The soul stone is full! Use or free an existing soul to make room."
|
||||
to_chat(U, "<span class='danger'>Capture failed!</span>: The soul stone is full! Use or free an existing soul to make room.")
|
||||
return
|
||||
|
||||
for(var/obj/item/W in T)
|
||||
@@ -181,7 +181,7 @@
|
||||
/obj/item/device/soulstone/proc/transfer_construct(var/obj/structure/constructshell/T,var/mob/U)
|
||||
var/mob/living/simple_mob/construct/shade/A = locate() in src
|
||||
if(!A)
|
||||
to_chat(U,"<span class='danger'>Capture failed!</span>: The soul stone is empty! Go kill someone!")
|
||||
to_chat(U, "<span class='danger'>Capture failed!</span>: The soul stone is empty! Go kill someone!")
|
||||
return;
|
||||
var/construct_class = input(U, "Please choose which type of construct you wish to create.") as null|anything in possible_constructs
|
||||
switch(construct_class)
|
||||
@@ -191,8 +191,8 @@
|
||||
if(iscultist(U))
|
||||
cult.add_antagonist(Z.mind)
|
||||
qdel(T)
|
||||
to_chat(Z,"<B>You are playing a Juggernaut. Though slow, you can withstand extreme punishment, and rip apart enemies and walls alike.</B>")
|
||||
to_chat(Z,"<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>")
|
||||
to_chat(Z, "<B>You are playing a Juggernaut. Though slow, you can withstand extreme punishment, and rip apart enemies and walls alike.</B>")
|
||||
to_chat(Z, "<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>")
|
||||
Z.cancel_camera()
|
||||
qdel(src)
|
||||
if("Wraith")
|
||||
@@ -201,8 +201,8 @@
|
||||
if(iscultist(U))
|
||||
cult.add_antagonist(Z.mind)
|
||||
qdel(T)
|
||||
to_chat(Z,"<B>You are playing a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.</B>")
|
||||
to_chat(Z,"<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>")
|
||||
to_chat(Z, "<B>You are playing a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.</B>")
|
||||
to_chat(Z, "<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>")
|
||||
Z.cancel_camera()
|
||||
qdel(src)
|
||||
if("Artificer")
|
||||
@@ -211,8 +211,8 @@
|
||||
if(iscultist(U))
|
||||
cult.add_antagonist(Z.mind)
|
||||
qdel(T)
|
||||
to_chat(Z,"<B>You are playing an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, repair allied constructs (by clicking on them), and even create new constructs</B>")
|
||||
to_chat(Z,"<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>")
|
||||
to_chat(Z, "<B>You are playing an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, repair allied constructs (by clicking on them), and even create new constructs</B>")
|
||||
to_chat(Z, "<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>")
|
||||
Z.cancel_camera()
|
||||
qdel(src)
|
||||
if("Harvester")
|
||||
@@ -221,8 +221,8 @@
|
||||
if(iscultist(U))
|
||||
cult.add_antagonist(Z.mind)
|
||||
qdel(T)
|
||||
to_chat(Z,"<B>You are playing a Harvester. You are relatively weak, but your physical frailty is made up for by your ranged abilities.</B>")
|
||||
to_chat(Z,"<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>")
|
||||
to_chat(Z, "<B>You are playing a Harvester. You are relatively weak, but your physical frailty is made up for by your ranged abilities.</B>")
|
||||
to_chat(Z, "<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>")
|
||||
Z.cancel_camera()
|
||||
qdel(src)
|
||||
if("Behemoth")
|
||||
@@ -231,8 +231,8 @@
|
||||
if(iscultist(U))
|
||||
cult.add_antagonist(Z.mind)
|
||||
qdel(T)
|
||||
to_chat(Z,"<B>You are playing a Behemoth. You are incredibly slow, though your slowness is made up for by the fact your shell is far larger than any of your bretheren. You are the Unstoppable Force, and Immovable Object.</B>")
|
||||
to_chat(Z,"<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>")
|
||||
to_chat(Z, "<B>You are playing a Behemoth. You are incredibly slow, though your slowness is made up for by the fact your shell is far larger than any of your bretheren. You are the Unstoppable Force, and Immovable Object.</B>")
|
||||
to_chat(Z, "<B>You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.</B>")
|
||||
Z.cancel_camera()
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
if("blind")
|
||||
call(/obj/effect/rune/proc/blind)()
|
||||
if("runestun")
|
||||
user << "<span class='warning'>To use this talisman, attack your target directly.</span>"
|
||||
to_chat(user, "<span class='warning'>To use this talisman, attack your target directly.</span>")
|
||||
return
|
||||
if("supply")
|
||||
supply()
|
||||
@@ -39,7 +39,7 @@
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
user << "You see strange symbols on the paper. Are they supposed to mean something?"
|
||||
to_chat(user, "You see strange symbols on the paper. Are they supposed to mean something?")
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
if(Adjacent(user))
|
||||
return attack_hand(user)
|
||||
else
|
||||
user << "<span class = \"warning\">What the fuck are you doing?</span>"
|
||||
to_chat(user, "<span class='warning'>What the fuck are you doing?</span>")
|
||||
return
|
||||
|
||||
// /vg/: Don't let ghosts fuck with this.
|
||||
|
||||
@@ -9,7 +9,7 @@ var/global/universe_has_ended = 0
|
||||
|
||||
/datum/universal_state/supermatter_cascade/OnShuttleCall(var/mob/user)
|
||||
if(user)
|
||||
user << "<span class='sinister'>All you hear on the frequency is static and panicked screaming. There will be no shuttle call today.</span>"
|
||||
to_chat(user, "<span class='sinister'>All you hear on the frequency is static and panicked screaming. There will be no shuttle call today.</span>")
|
||||
return 0
|
||||
|
||||
/datum/universal_state/supermatter_cascade/OnTurfChange(var/turf/T)
|
||||
@@ -37,7 +37,7 @@ var/global/universe_has_ended = 0
|
||||
// Apply changes when entering state
|
||||
/datum/universal_state/supermatter_cascade/OnEnter()
|
||||
set background = 1
|
||||
world << "<span class='sinister' style='font-size:22pt'>You are blinded by a brilliant flash of energy.</span>"
|
||||
to_world("<span class='sinister' style='font-size:22pt'>You are blinded by a brilliant flash of energy.</span>")
|
||||
|
||||
world << sound('sound/effects/cascade.ogg')
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user