diff --git a/code/datums/configuration.dm b/code/datums/configuration.dm
index 1d40a072495..7e86fe2f474 100644
--- a/code/datums/configuration.dm
+++ b/code/datums/configuration.dm
@@ -12,6 +12,7 @@
var/log_game = 0 // log game events
var/log_vote = 0 // log voting
var/log_whisper = 0 // log client whisper
+ var/sql_enabled = 1 // for sql switching
var/allow_vote_restart = 0 // allow votes to restart
var/allow_vote_mode = 0 // allow votes to change mode
var/allow_admin_jump = 1 // allows admin jumping
@@ -97,6 +98,9 @@
if ("log_access")
config.log_access = 1
+ if ("sql_enabled")
+ config.sql_enabled = 1
+
if ("log_say")
config.log_say = 1
diff --git a/code/defines/obj/machinery.dm b/code/defines/obj/machinery.dm
index e7e0a8472eb..44eed315d59 100644
--- a/code/defines/obj/machinery.dm
+++ b/code/defines/obj/machinery.dm
@@ -468,9 +468,11 @@
icon_state = "term"
desc = "An underfloor wiring terminal for power equipment"
level = 1
+ layer = TURF_LAYER
var/obj/machinery/power/master = null
anchored = 1
directwired = 0 // must have a cable on same turf connecting to terminal
+ layer = 2.6 // a bit above wires
/obj/machinery/power/generator
name = "generator"
diff --git a/code/defines/obj/vending.dm b/code/defines/obj/vending.dm
index ba8d1b5a06e..fe3a2664200 100644
--- a/code/defines/obj/vending.dm
+++ b/code/defines/obj/vending.dm
@@ -150,8 +150,8 @@
name = "Dinnerware"
desc = "A kitchen and restaurant equipment vendor"
icon_state = "dinnerware"
- product_paths = "/obj/item/weapon/tray;/obj/item/weapon/kitchen/utensil/fork;/obj/item/weapon/kitchenknife"
- product_amounts = "6;4;2"
+ product_paths = "/obj/item/weapon/tray;/obj/item/weapon/kitchen/utensil/fork;/obj/item/weapon/kitchenknife;/obj/item/weapon/reagent_containers/food/drinks/drinkingglass"
+ product_amounts = "6;4;2;15"
//product_amounts = "8;5;4" Old totals
product_hidden = "/obj/item/weapon/kitchen/utensil/spoon;/obj/item/weapon/kitchen/utensil/knife;/obj/item/weapon/kitchen/rollingpin"
- product_hideamt = "2;2;2"
\ No newline at end of file
+ product_hideamt = "2;2;2"
diff --git a/code/game/dna.dm b/code/game/dna.dm
index 358cffbb1dd..13f49bddbc8 100644
--- a/code/game/dna.dm
+++ b/code/game/dna.dm
@@ -1085,13 +1085,13 @@
src.buffer3iue = null
dopage(src,"buffermenu")
if (href_list["b1label"])
- src.buffer1label = input("New Label:","Edit Label","Infos here")
+ src.buffer1label = sanitize(input("New Label:","Edit Label","Infos here"))
dopage(src,"buffermenu")
if (href_list["b2label"])
- src.buffer2label = input("New Label:","Edit Label","Infos here")
+ src.buffer2label = sanitize(input("New Label:","Edit Label","Infos here"))
dopage(src,"buffermenu")
if (href_list["b3label"])
- src.buffer3label = input("New Label:","Edit Label","Infos here")
+ src.buffer3label = sanitize(input("New Label:","Edit Label","Infos here"))
dopage(src,"buffermenu")
if (href_list["b1transfer"])
if (!src.connected.occupant)
diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index 10ed95f40c7..409d63e6462 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -186,7 +186,7 @@
if(!changeling)
return 1
- if(istype(changeling.current,/mob/living/silicon))
+ if(!istype(changeling.current,/mob/living/carbon))
return 1
if(changeling.current.stat==2)
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index 4d357c169b9..ace5b126450 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -25,9 +25,12 @@ var/global/datum/controller/gameticker/ticker
world << "Please, setup your character and select ready. Game will start in [pregame_timeleft] seconds"
while(current_state == GAME_STATE_PREGAME)
- sleep(10)
- pregame_timeleft--
-
+ if(!going)
+ sleep(10)
+ else
+ sleep(10)
+ pregame_timeleft--
+
if(pregame_timeleft <= 0)
current_state = GAME_STATE_SETTING_UP
@@ -102,8 +105,9 @@ var/global/datum/controller/gameticker/ticker
spawn() supply_ticker() // Added to kick-off the supply shuttle regenerating points -- TLE
spawn master_controller.process()
-
- spawn(3000) statistic_cycle() // Polls population totals regularly and stores them in an SQL DB -- TLE
+ if (config.sql_enabled)
+ spawn(3000)
+ statistic_cycle() // Polls population totals regularly and stores them in an SQL DB -- TLE
/datum/controller/gameticker
proc/distribute_jobs()
diff --git a/code/game/machinery/Freezer.dm b/code/game/machinery/Freezer.dm
index 65b91d8a58c..25f89f4967f 100644
--- a/code/game/machinery/Freezer.dm
+++ b/code/game/machinery/Freezer.dm
@@ -55,7 +55,7 @@
Current status: [ on ? "Off On" : "Off On"]
Current gas temperature: [temp_text]
Current air pressure: [air_contents.return_pressure()]
- Target gas temperature: - - [current_temperature] + +
+ Target gas temperature: - - - [current_temperature] + + +
"}
user << browse(dat, "window=freezer;size=400x500")
diff --git a/code/game/objects/closets.dm b/code/game/objects/closets.dm
index 762699e7092..cf12e07b3a3 100644
--- a/code/game/objects/closets.dm
+++ b/code/game/objects/closets.dm
@@ -199,14 +199,18 @@
src.add_fingerprint(user)
return
+/obj/closet
+ var/lastbang
/obj/closet/relaymove(mob/user as mob)
if (user.stat)
return
if (!src.open())
user << "\blue It won't budge!"
- for (var/mob/M in hearers(src, null))
- M << text("BANG, bang!", max(0, 5 - get_dist(src, M)))
+ if (world.time > lastbang+5)
+ lastbang = world.time
+ for (var/mob/M in hearers(src, null))
+ M << text("BANG, bang!", max(0, 5 - get_dist(src, M)))
/obj/closet/attack_paw(mob/user as mob)
return src.attack_hand(user)
diff --git a/code/game/objects/closets/secure/medical.dm b/code/game/objects/closets/secure/medical.dm
index 5aa880d4e6f..e485ea51185 100644
--- a/code/game/objects/closets/secure/medical.dm
+++ b/code/game/objects/closets/secure/medical.dm
@@ -16,6 +16,7 @@
new /obj/item/weapon/reagent_containers/dropper( src )
new /obj/item/weapon/reagent_containers/glass/beaker( src )
new /obj/item/weapon/reagent_containers/glass/beaker( src )
+ new /obj/item/weapon/storage/utilitybelt/medical( src )
return
/obj/secure_closet/medical2/New()
diff --git a/code/game/objects/secure_closets.dm b/code/game/objects/secure_closets.dm
index 56f2cc53fb5..0608c0b2146 100644
--- a/code/game/objects/secure_closets.dm
+++ b/code/game/objects/secure_closets.dm
@@ -197,6 +197,8 @@
user << "\red Access Denied"
return
+/obj/secure_closet
+ var/lastbang
/obj/secure_closet/relaymove(mob/user as mob)
if (user.stat)
return
@@ -212,8 +214,10 @@
src.opened = 1
else
user << "\blue It's welded shut!"
- for(var/mob/M in hearers(src, null))
- M << text("BANG, bang!", max(0, 5 - get_dist(src, M)))
+ if (world.time > lastbang+5)
+ lastbang = world.time
+ for(var/mob/M in hearers(src, null))
+ M << text("BANG, bang!", max(0, 5 - get_dist(src, M)))
return
/obj/secure_closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
diff --git a/code/game/verbs/checkkarma.dm b/code/game/verbs/checkkarma.dm
index 72ac4117b54..357c6d7d88e 100644
--- a/code/game/verbs/checkkarma.dm
+++ b/code/game/verbs/checkkarma.dm
@@ -3,20 +3,23 @@ mob/verb/check_karma()
set category = "Special Verbs"
set desc = "Reports how much karma you have accrued"
- var/DBConnection/dbcon = new()
- dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
- if(!dbcon.IsConnected())
- usr << "\red Unable to connect to karma database. This error can occur if your host has failed to set up an SQL database or improperly configured its login credentials.
"
- return
- else
- var/DBQuery/query = dbcon.NewQuery("SELECT karma FROM karmatotals WHERE byondkey='[src.key]'")
- query.Execute()
-
- var/currentkarma
- while(query.NextRow())
- currentkarma = query.item[1]
- if(currentkarma)
- usr << "Your current karma is: [currentkarma]
"
+ if(config.sql_enabled)
+ var/DBConnection/dbcon = new()
+ dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
+ if(!dbcon.IsConnected())
+ usr << "\red Unable to connect to karma database. This error can occur if your host has failed to set up an SQL database or improperly configured its login credentials.
"
+ return
else
- usr << "Your current karma is: 0
"
- dbcon.Disconnect()
\ No newline at end of file
+ var/DBQuery/query = dbcon.NewQuery("SELECT karma FROM karmatotals WHERE byondkey='[src.key]'")
+ query.Execute()
+
+ var/currentkarma
+ while(query.NextRow())
+ currentkarma = query.item[1]
+ if(currentkarma)
+ usr << "Your current karma is: [currentkarma]
"
+ else
+ usr << "Your current karma is: 0
"
+ dbcon.Disconnect()
+ else
+ usr << "SQL is off, karma is not usable"
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 49c58d84339..0913f73f1b8 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -1421,11 +1421,18 @@ var/showadminmessages = 1
//add
IP: | to this if wanting to add back in IP checking
//add (IP: [M.lastKnownIP]) | if you want to know their ip to the lists below
var/list/mobs = sortmobs()
- var/DBConnection/dbcon = new()
- dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
- if(!dbcon.IsConnected())
- usr << "\red Unable to connect to karma database. This error can occur if your host has failed to set up an SQL database or improperly configured its login credentials.
"
+ var/show_karma = 0
+ var/DBConnection/dbcon
+ if(config.sql_enabled) // SQL is enabled in config.txt
+ dbcon = new() // Setting up connection
+ dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
+ if(dbcon.IsConnected())
+ show_karma = 1
+ else
+ usr << "\red Unable to connect to karma database. This error can occur if your host has failed to set up an SQL database or improperly configured its login credentials.
"
+
+ if(!show_karma)
for(var/mob/M in mobs)
if(M.ckey)
dat += "| [M.name] | "
@@ -1448,7 +1455,10 @@ var/showadminmessages = 1
PM |
[checktraitor(M) ? "" : ""]Traitor? |
"}
- dat += "NOT CONNECTED |
"
+ if (config.sql_enabled)
+ dat += "ERROR | "
+ else
+ dat += "disabled | "
else
@@ -1893,7 +1903,7 @@ var/showadminmessages = 1
set category = "Server"
set desc="Delay the game start"
set name="Delay"
- if (ticker)
+ if (!ticker || ticker.current_state != GAME_STATE_PREGAME)
return alert("Too late... The game has already started!", null, null, null, null, null)
going = !( going )
if (!( going ))
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index d1787a5b4bb..a954f4c167b 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -73,6 +73,7 @@
src.verbs += /client/proc/air_report
src.verbs += /client/proc/air_status
src.verbs += /client/proc/radio_report
+ src.verbs += /client/proc/reload_admins
src.verbs += /client/proc/kill_air // -- TLE
src.verbs += /client/proc/modifytemperature
src.verbs += /client/proc/callproc
@@ -211,6 +212,7 @@
src.verbs += /client/proc/air_report
src.verbs += /client/proc/air_status
src.verbs += /client/proc/radio_report
+ src.verbs += /client/proc/reload_admins
//src.verbs += /client/proc/kill_air // -- TLE
src.verbs += /client/proc/modifytemperature
src.verbs += /client/proc/callproc
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index 27b3734147f..6ec7c7d73bf 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -146,3 +146,32 @@
output += " [device]
"
usr << browse(output,"window=radioreport")
+
+ reload_admins()
+ set name = "Reload Admins"
+ set category = "Debug"
+
+ if(!(usr.client.holder && usr.client.holder.level >= 6)) // protect and prevent
+ usr << "\red Not a good cop"
+ return
+
+ message_admins("[usr] manually reloaded admins.txt")
+ usr << "You reload admins.txt"
+ var/text = file2text("config/admins.txt")
+ if (!text)
+ diary << "Failed to reload config/admins.txt\n"
+ else
+ var/list/lines = dd_text2list(text, "\n")
+ for(var/line in lines)
+ if (!line)
+ continue
+
+ if (copytext(line, 1, 2) == ";")
+ continue
+
+ var/pos = findtext(line, " - ", 1, null)
+ if (pos)
+ var/m_key = copytext(line, 1, pos)
+ var/a_lev = copytext(line, pos + 3, length(line) + 1)
+ admins[m_key] = a_lev
+ diary << ("ADMIN: [m_key] = [a_lev]")
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 16aaa05d3f4..f44325c2edf 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -96,7 +96,7 @@
return
if (!( ismob(M) ))
return
- var/t = input("Message:", text("Private message to [M.key]")) as text
+ var/t = input("Message:", text("Private message to [M.key]")) as text|null
if(src.holder.rank != "Game Admin" && src.holder.rank != "Game Master")
t = strip_html(t,500)
if (!( t ))
@@ -376,7 +376,7 @@ TO DO: actually integrate random appearance and player preference save.
if(!src.authenticated || !src.holder)
src << "Only administrators may use this command."
return
- var/input = input(usr, "Please enter anything you want the AI to do. Anything. Serious.", "What?", "")
+ var/input = input(usr, "Please enter anything you want the AI to do. Anything. Serious.", "What?", "") as text|null
if(!input)
return
for(var/mob/living/silicon/ai/M in world)
@@ -436,7 +436,7 @@ TO DO: actually integrate random appearance and player preference save.
if(!src.authenticated || !src.holder)
src << "Only administrators may use this command."
return
- var/input = input(usr, "Please enter anything you want. Anything. Serious.", "What?", "")
+ var/input = input(usr, "Please enter anything you want. Anything. Serious.", "What?", "") as message|null
if(!input)
return
for (var/obj/machinery/computer/communications/C in machines)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index 5846580eb9c..a320eb9f17a 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -54,7 +54,7 @@ Doesn't work on other aliens/AI.*/
src << "\green You must be conscious to do this."
return
- var/msg = input("Message:", "Alien Whisper") as text
+ var/msg = sanitize(input("Message:", "Alien Whisper") as text|null)
if (!msg)
return
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 1b03a0cc83e..1823eeaf4a2 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -581,14 +581,7 @@
switch(M.a_intent)
if ("help")
- src.sleeping = 0
- src.resting = 0
- if (src.paralysis >= 3) src.paralysis -= 3
- if (src.stunned >= 3) src.stunned -= 3
- if (src.weakened >= 3) src.weakened -= 3
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\blue [M.name] shakes [src] trying to wake it up!", ), 1)
+ src.help_shake_act(M)
else
if (istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
return
@@ -629,15 +622,7 @@
if ("help")
if (src.health > 0)
- src.sleeping = 0
- src.resting = 0
- if (src.paralysis >= 3) src.paralysis -= 3
- if (src.stunned >= 3) src.stunned -= 3
- if (src.weakened >= 3) src.weakened -= 3
- playsound(src.loc, 'thudswoosh.ogg', 50, 1, -1)
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\blue [] shakes [] trying to wake [] up!", M, src, src), 1)
+ src.help_shake_act(M)
else
if (M.health >= -75.0)
if (((M.head && M.head.flags & 4) || ((M.wear_mask && !( M.wear_mask.flags & 32 )) || ((src.head && src.head.flags & 4) || (src.wear_mask && !( src.wear_mask.flags & 32 ))))))
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index 8fad33ebd19..f0fe72d4474 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -348,14 +348,7 @@
switch(M.a_intent)
if ("help")
- src.sleeping = 0
- src.resting = 0
- if (src.paralysis >= 3) src.paralysis -= 3
- if (src.stunned >= 3) src.stunned -= 3
- if (src.weakened >= 3) src.weakened -= 3
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\blue [M.name] shakes [src] trying to wake it up!", ), 1)
+ src.help_shake_act(M)
else
if (istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
return
@@ -396,15 +389,7 @@
if ("help")
if (src.health > 0)
- src.sleeping = 0
- src.resting = 0
- if (src.paralysis >= 3) src.paralysis -= 3
- if (src.stunned >= 3) src.stunned -= 3
- if (src.weakened >= 3) src.weakened -= 3
- playsound(src.loc, 'thudswoosh.ogg', 50, 1, -1)
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\blue [] shakes [] trying to wake [] up!", M, src, src), 1)
+ src.help_shake_act(M)
else
if (M.health >= -75.0)
if ((M.head && M.head.flags & 4) || (M.wear_mask && !( M.wear_mask.flags & 32 )) )
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 0da865c2343..de958de4699 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -107,3 +107,25 @@
else
src.hands.dir = SOUTH
return
+
+
+/mob/living/carbon/proc/help_shake_act(mob/living/carbon/M)
+ if (src.health > 0)
+ var/t_him = "it"
+ if (src.gender == MALE)
+ t_him = "him"
+ else if (src.gender == FEMALE)
+ t_him = "her"
+ if (istype(src,/mob/living/carbon/human) && src:w_uniform)
+ var/mob/living/carbon/human/H = src
+ H.w_uniform.add_fingerprint(M)
+ src.sleeping = 0
+ src.resting = 0
+ if (src.paralysis >= 3) src.paralysis -= 3
+ if (src.stunned >= 3) src.stunned -= 3
+ if (src.weakened >= 3) src.weakened -= 3
+ playsound(src.loc, 'thudswoosh.ogg', 50, 1, -1)
+ M.visible_message( \
+ "\blue [M] shakes [src] trying to wake [t_him] up!", \
+ "\blue You shake [src] trying to wake [t_him] up!", \
+ )
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index ddb2341097b..406938a9926 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1408,13 +1408,7 @@
/mob/living/carbon/human/attack_paw(mob/M as mob)
..()
if (M.a_intent == "help")
- src.sleeping = 0
- src.resting = 0
- if (src.paralysis >= 3) src.paralysis -= 3
- if (src.stunned >= 3) src.stunned -= 3
- if (src.weakened >= 3) src.weakened -= 3
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\blue [M.name] shakes [] trying to wake him up!", src), 1)
+ src.help_shake_act(M)
else
if (istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
return
@@ -1642,16 +1636,7 @@
if (M.a_intent == "help")
if (src.health > 0)
- if (src.w_uniform)
- src.w_uniform.add_fingerprint(M)
- src.sleeping = 0
- src.resting = 0
- if (src.paralysis >= 3) src.paralysis -= 3
- if (src.stunned >= 3) src.stunned -= 3
- if (src.weakened >= 3) src.weakened -= 3
- playsound(src.loc, 'thudswoosh.ogg', 50, 1, -1)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\blue [] shakes [] trying to wake [] up!", M, src, src), 1)
+ src.help_shake_act(M)
else
if (M.health >= -75.0)
if (((M.head && M.head.flags & 4) || ((M.wear_mask && !( M.wear_mask.flags & 32 )) || ((src.head && src.head.flags & 4) || (src.wear_mask && !( src.wear_mask.flags & 32 ))))))
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index 92f44e0252f..ae7fa92473d 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -159,13 +159,7 @@
..()
if (M.a_intent == "help")
- src.sleeping = 0
- src.resting = 0
- if (src.paralysis >= 3) src.paralysis -= 3
- if (src.stunned >= 3) src.stunned -= 3
- if (src.weakened >= 3) src.weakened -= 3
- for(var/mob/O in viewers(src, null))
- O.show_message("\blue [M.name] shakes [src.name] trying to wake him up!", 1)
+ src.help_shake_act(M)
else
if ((M.a_intent == "hurt" && !( istype(src.wear_mask, /obj/item/clothing/mask/muzzle) )))
if ((prob(75) && src.health > 0))
@@ -206,15 +200,7 @@
return
if (M.a_intent == "help")
- src.sleeping = 0
- src.resting = 0
- if (src.paralysis >= 3) src.paralysis -= 3
- if (src.stunned >= 3) src.stunned -= 3
- if (src.weakened >= 3) src.weakened -= 3
- playsound(src.loc, 'thudswoosh.ogg', 50, 1, -1)
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\blue [] shakes [src.name] trying to wake him up!", M), 1)
+ src.help_shake_act(M)
else
if (M.a_intent == "hurt")
if ((prob(75) && src.health > 0))
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index fb08a77e52f..f6adfa9e455 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -1510,7 +1510,7 @@
return
if (!( ismob(M) ))
return
- var/t = input("Message:", text("Private message to [M.key]")) as text
+ var/t = input("Message:", text("Private message to [M.key]")) as text|null
if (!( t ))
return
if (!usr) return
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 5da3cd34eae..efbd5ac1a48 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -128,8 +128,10 @@ mob/new_player
else
stat("Game Mode:", "[master_mode]")
- if(ticker.current_state == GAME_STATE_PREGAME)
+ if((ticker.current_state == GAME_STATE_PREGAME) && going)
stat("Time To Start:", ticker.pregame_timeleft)
+ if((ticker.current_state == GAME_STATE_PREGAME) && !going)
+ stat("Time To Start:", "DELAYED")
statpanel("Lobby")
if(client.statpanel=="Lobby" && ticker)
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 55346aa2284..ee4b82a3ea8 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -361,6 +361,9 @@
has_electronics = 1
user << "You place the power control board inside the frame."
del(W)
+ else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN) || malfhack))
+ user << "\red You cannot put the board inside, the frame is damaged."
+ return
else if (istype(W, /obj/item/weapon/weldingtool) && W:welding && opened && has_electronics==0 && !terminal)
if (W:get_fuel() < 3)
user << "\blue You need more welding fuel to complete this task."
diff --git a/config/config.txt b/config/config.txt
index dad5fef00d6..399627f27da 100644
--- a/config/config.txt
+++ b/config/config.txt
@@ -19,6 +19,9 @@ LOG_VOTE
# log client Whisper
LOG_WHISPER
+# sql switching
+# SQL_ENABLED
+
# probablities for game modes chosen in "secret" and "random" modes
#
# default probablity is 1, increase to make that mode more likely to be picked