Merge remote-tracking branch 'upstream/master' into dev-freeze

Conflicts:
	code/game/objects/structures/crates_lockers/largecrate.dm
	code/modules/mob/living/carbon/human/life.dm
	code/modules/mob/living/silicon/ai/ai.dm
	code/modules/research/circuitprinter.dm
This commit is contained in:
PsiOmega
2015-08-15 10:52:17 +02:00
24 changed files with 47 additions and 23 deletions

View File

@@ -163,13 +163,12 @@
command_announcement.Announce(fulltext)
// Proc: get_unhacked_apcs()
// Proc: get_all_apcs()
// Parameters: None
// Description: Returns a list of APCs that are not yet hacked.
/proc/get_unhacked_apcs()
// Description: Returns a list of all APCs
/proc/get_all_apcs()
var/list/H = list()
for(var/obj/machinery/power/apc/A in machines)
if(!A.hacker)
H.Add(A)
return H

View File

@@ -38,7 +38,7 @@
// END RESEARCH DATUMS
// BEGIN ABILITY VERBS
/datum/game_mode/malfunction/verb/basic_encryption_hack(obj/machinery/power/apc/A as obj in get_unhacked_apcs())
/datum/game_mode/malfunction/verb/basic_encryption_hack(obj/machinery/power/apc/A as obj in get_all_apcs())
set category = "Software"
set name = "Basic Encryption Hack"
set desc = "10 CPU - Basic encryption hack that allows you to overtake APCs on the station."

View File

@@ -14,6 +14,7 @@ var/global/list/cached_icons = list()
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(10,20,30,60)
volume = 60
unacidable = 0
flags = OPENCONTAINER
var/paint_type = "red"

View File

@@ -14,7 +14,7 @@
new /obj/item/stack/material/wood(src)
var/turf/T = get_turf(src)
for(var/atom/movable/AM in contents)
if(AM.simulated) AM.loc = T
if(AM.simulated) AM.forceMove(T)
user.visible_message("<span class='notice'>[user] pries \the [src] open.</span>", \
"<span class='notice'>You pry open \the [src].</span>", \
"<span class='notice'>You hear splitting wood.</span>")

View File

@@ -401,7 +401,9 @@ var/list/admin_verbs_mentor = list(
var/mob/body = mob
var/mob/dead/observer/ghost = body.ghostize(1)
ghost.admin_ghosted = 1
if(body && !body.key)
if(body)
body.aghosted = ghost
if(!body.key)
body.key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus
feedback_add_details("admin_verb","O") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

View File

@@ -24,6 +24,7 @@
volume = 5
can_be_placed_into = null
flags = OPENCONTAINER | NOBLUDGEON
unacidable = 0
/obj/item/weapon/reagent_containers/glass/rag/attack_self(mob/user as mob)
return

View File

@@ -216,6 +216,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
return
mind.current.ajourn=0
mind.current.key = key
mind.current.aghosted = null
if(!admin_ghosted)
announce_ghost_joinleave(mind, 0, "They now occupy their body again.")
return 1

View File

@@ -182,7 +182,7 @@
if(L == default_language)
dat += "<b>[L.name] (:[L.key])</b> - default - <a href='byond://?src=\ref[src];default_lang=reset'>reset</a><br/>[L.desc]<br/><br/>"
else
dat += "<b>[L.name] (:[L.key])</b> - <a href='byond://?src=\ref[src];default_lang=[L]'>set default</a><br/>[L.desc]<br/><br/>"
dat += "<b>[L.name] (:[L.key])</b> - <a href='byond://?src=\ref[src];default_lang=\ref[L]'>set default</a><br/>[L.desc]<br/><br/>"
src << browse(dat, "window=checklanguage")
@@ -191,8 +191,8 @@
if(href_list["default_lang"] == "reset")
set_default_language(null)
else
var/datum/language/L = all_languages[href_list["default_lang"]]
if(L)
var/datum/language/L = locate(href_list["default_lang"])
if(L && (L in languages))
set_default_language(L)
check_languages()
return 1

View File

@@ -260,7 +260,7 @@
var/show_ssd
var/mob/living/carbon/human/H = src
if(istype(H)) show_ssd = H.species.show_ssd
if(show_ssd && (!client || !key || player_logged))
if(show_ssd && !client && !aghosted)
M.visible_message("<span class='notice'>[M] shakes [src] trying to wake [t_him] up!</span>", \
"<span class='notice'>You shake [src], but they do not respond... Maybe they have S.S.D?</span>")
else if(lying || src.sleeping)

View File

@@ -918,6 +918,9 @@
if(sleeping < 2 && species.show_ssd && (!client || !key || player_logged))
sleeping = 2
//SSD check, if a logged player is awake put them back to sleep!
if(species.show_ssd && !client && !aghosted)
Sleeping(2)
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
blinded = 1
silent = 0

View File

@@ -5,6 +5,5 @@
mind_initialize() //updates the mind (or creates and initializes one if one doesn't exist)
mind.active = 1 //indicates that the mind is currently synced with a client
//If they're SSD, remove it so they can wake back up.
player_logged = 0
update_antag_icons(mind)
return .

View File

@@ -1,8 +1,6 @@
/mob/living/Logout()
..()
if (mind)
if(!key) //key and mind have become seperated. I believe this is for when a staff member aghosts.
//Per BYOND docs key remains set if the player DCs, becomes null if switching bodies.
if(!key) //key and mind have become seperated.
mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body.
//This tags a player as SSD. See appropriate life.dm files for furthering SSD effects such as falling asleep.
if(mind.active)
player_logged = 1

View File

@@ -224,7 +224,7 @@
if(L == default_language)
default_str = " - default - <a href='byond://?src=\ref[src];default_lang=reset'>reset</a>"
else
default_str = " - <a href='byond://?src=\ref[src];default_lang=[L]'>set default</a>"
default_str = " - <a href='byond://?src=\ref[src];default_lang=\ref[L]'>set default</a>"
var/synth = (L in speech_synthesizer_langs)
dat += "<b>[L.name] (:[L.key])</b>[synth ? default_str : null]<br/>Speech Synthesizer: <i>[synth ? "YES" : "NOT SUPPORTED"]</i><br/>[L.desc]<br/><br/>"

View File

@@ -214,8 +214,8 @@
var/stance_damage = 0 //Whether this mob's ability to stand has been affected
//SSD var, changed it up some so people can have special things happen for different mobs when SSD.
var/player_logged = 0
//Indicates if a clientless mob is actually an admin aghosting
var/mob/dead/observer/aghosted = null
var/turf/listed_turf = null //the current turf being examined in the stat panel
var/list/shouldnt_see = list() //list of objects that this mob shouldn't see in the stat panel. this silliness is needed because of AI alt+click and cult blood runes

View File

@@ -563,6 +563,7 @@
adj_drowsy = -3
adj_sleepy = -2
adj_temp = 25
overdose = 45
glass_icon_state = "hot_coffee"
glass_name = "cup of coffee"
@@ -572,10 +573,14 @@
..()
if(alien == IS_DIONA)
return
M.make_jittery(5)
if(adj_temp > 0)
holder.remove_reagent("frostoil", 10 * removed)
/datum/reagent/drink/coffee/overdose(var/mob/living/carbon/M, var/alien)
if(alien == IS_DIONA)
return
M.make_jittery(5)
/datum/reagent/drink/coffee/icecoffee
name = "Iced Coffee"
id = "icecoffee"

View File

@@ -9,6 +9,7 @@
amount_per_transfer_from_this = 50
// Large, but inaccurate. Use a chem dispenser or beaker for accuracy.
possible_transfer_amounts = list(50, 100)
unacidable = 1
var/spawn_reagent = null
var/label = ""

View File

@@ -9,6 +9,10 @@
var/const/duration = 13 //Directly relates to the 'weaken' duration. Lowered by armor (i.e. helmets)
var/isGlass = 1 //Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it
/obj/item/weapon/reagent_containers/food/drinks/bottle/New()
..()
if(isGlass) unacidable = 1
/obj/item/weapon/reagent_containers/food/drinks/bottle/proc/smash(mob/living/target as mob, mob/living/user as mob)
//Creates a shattering noise and replaces the bottle with a broken_bottle

View File

@@ -6,6 +6,7 @@
icon_state = "glass_empty"
amount_per_transfer_from_this = 5
volume = 30
unacidable = 1 //glass
center_of_mass = list("x"=16, "y"=10)
on_reagent_change()

View File

@@ -8,6 +8,7 @@
icon_state = "jar"
item_state = "beaker"
center_of_mass = list("x"=15, "y"=8)
unacidable = 1
New()
..()
reagents.add_reagent("slime", 50)

View File

@@ -14,6 +14,7 @@
volume = 60
w_class = 2
flags = OPENCONTAINER
unacidable = 1 //glass doesn't dissolve in acid
var/label_text = ""
@@ -219,6 +220,7 @@
possible_transfer_amounts = list(10,20,30,60,120)
volume = 120
flags = OPENCONTAINER
unacidable = 0
attackby(var/obj/D, mob/user as mob)
if(isprox(D))

View File

@@ -9,6 +9,7 @@
item_state = "hypo"
icon_state = "hypo"
amount_per_transfer_from_this = 5
unacidable = 1
volume = 30
possible_transfer_amounts = null
flags = OPENCONTAINER

View File

@@ -11,6 +11,7 @@
throw_speed = 2
throw_range = 10
amount_per_transfer_from_this = 10
unacidable = 1 //plastic
possible_transfer_amounts = list(5,10) //Set to null instead of list, if there is only one.
var/spray_size = 3
var/list/spray_sizes = list(1,3)

View File

@@ -18,6 +18,7 @@
w_class = 1
slot_flags = SLOT_EARS
sharp = 1
unacidable = 1 //glass
var/mode = SYRINGE_DRAW
var/image/filling //holds a reference to the current filling overlay
var/visible_name = "a syringe"

View File

@@ -137,6 +137,9 @@ var/world_topic_spam_protect_time = world.timeofday
s["vote"] = config.allow_vote_mode
s["ai"] = config.allow_ai
s["host"] = host ? host : null
// This is dumb, but spacestation13.com's banners break if player count isn't the 8th field of the reply, so... this has to go here.
s["players"] = 0
s["stationtime"] = worldtime2text()
if(input["status"] == "2")