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

Conflicts:
	code/modules/clothing/spacesuits/rig/suits/light.dm
This commit is contained in:
PsiOmega
2015-03-01 21:15:47 +01:00
51 changed files with 330 additions and 184 deletions
+3
View File
@@ -199,6 +199,9 @@
/mob/proc/on_hear_radio(part_a, speaker_name, track, part_b, formatted)
src << "[part_a][speaker_name][part_b][formatted]</span></span>"
/mob/dead/observer/on_hear_radio(part_a, speaker_name, track, part_b, formatted)
src << "[part_a][track][part_b][formatted]</span></span>"
/mob/living/silicon/on_hear_radio(part_a, speaker_name, track, part_b, formatted)
var/time = say_timestamp()
src << "[time][part_a][speaker_name][part_b][formatted]</span></span>"
@@ -35,8 +35,8 @@
/datum/unarmed_attack/bite
)
var/list/unarmed_attacks = null // For empty hand harm-intent attack
var/brute_mod = null // Physical damage reduction/malus.
var/burn_mod = null // Burn damage reduction/malus.
var/brute_mod = 1 // Physical damage multiplier.
var/burn_mod = 1 // Burn damage multiplier.
// Death vars.
var/gibber_type = /obj/effect/gibspawner/human
@@ -120,12 +120,14 @@ var/datum/cameranet/cameranet = new()
for(var/y = y1; y <= y2; y += 16)
if(chunkGenerated(x, y, T.z))
var/datum/camerachunk/chunk = getCameraChunk(x, y, T.z)
if(choice == 0)
// Remove the camera.
chunk.cameras -= c
else if(choice == 1)
// You can't have the same camera in the list twice.
chunk.cameras |= c
// Only add actual cameras to the list of cameras
if(istype(c, /obj/machinery/camera))
if(choice == 0)
// Remove the camera.
chunk.cameras -= c
else if(choice == 1)
// You can't have the same camera in the list twice.
chunk.cameras |= c
chunk.hasChanged()
// Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0.
@@ -64,7 +64,7 @@
else
changed = 1
// The actual updating. It gathers the visible turfs from cameras and puts them into the appropiate lists.
// The actual updating. It gathers the visible turfs from cameras and puts them into the appropriate lists.
/datum/camerachunk/proc/update()
@@ -76,14 +76,14 @@
var/obj/machinery/camera/c = camera
if(!c)
continue
cameras -= c
if(!c.can_use())
continue
var/turf/point = locate(src.x + 8, src.y + 8, src.z)
if(get_dist(point, c) > 24)
continue
cameras -= c
for(var/turf/t in c.can_see())
newVisibleTurfs[t] = t
@@ -143,14 +143,8 @@
if(t.x >= x && t.y >= y && t.x < x + 16 && t.y < y + 16)
turfs[t] = t
for(var/camera in cameras)
var/obj/machinery/camera/c = camera
if(!c)
continue
if(!c.can_use())
continue
// At this point we only have functional cameras
for(var/obj/machinery/camera/c in cameras)
for(var/turf/t in c.can_see())
visibleTurfs[t] = t
@@ -84,6 +84,7 @@
/obj/machinery/camera/deactivate(user as mob, var/choice = 1)
..(user, choice)
invalidateCameraCache()
if(src.can_use())
cameranet.addCamera(src)
else
@@ -98,16 +99,11 @@
cameranet.cameras_unsorted = 1
else
dd_insertObjectList(cameranet.cameras, src)
var/list/open_networks = difflist(network,restricted_camera_networks) //...but if all of camera's networks are restricted, it only works for specific camera consoles.
if(open_networks.len) //If there is at least one open network, chunk is available for AI usage.
cameranet.addCamera(src)
update_coverage(1)
/obj/machinery/camera/Del()
cameranet.cameras -= src
var/list/open_networks = difflist(network,restricted_camera_networks)
if(open_networks.len)
cameranet.removeCamera(src)
clear_all_networks()
..()
#undef BORG_CAMERA_BUFFER
#undef BORG_CAMERA_BUFFER
@@ -69,7 +69,7 @@
wrapped = null
return
src.loc << "\red You drop \the [wrapped]."
src.loc << "<span class='danger'>You drop \the [wrapped].</span>"
wrapped.loc = get_turf(src)
wrapped = null
//update_icon()
@@ -79,6 +79,9 @@
/obj/item/weapon/gripper/afterattack(var/atom/target, var/mob/living/user, proximity, params)
if(!proximity)
return // This will prevent them using guns at range but adminbuse can add them directly to modules, so eh.
//There's some weirdness with items being lost inside the arm. Trying to fix all cases. ~Z
if(!wrapped)
for(var/obj/item/thing in src.contents)
@@ -123,7 +126,7 @@
wrapped = I
return
else
user << "\red Your gripper cannot hold \the [target]."
user << "<span class='danger'>Your gripper cannot hold \the [target].</span>"
else if(istype(target,/obj/machinery/power/apc))
var/obj/machinery/power/apc/A = target
@@ -140,7 +143,7 @@
A.charging = 0
A.update_icon()
user.visible_message("\red [user] removes the power cell from [A]!", "You remove the power cell.")
user.visible_message("<span class='danger'>[user] removes the power cell from [A]!</span>", "You remove the power cell.")
//TODO: Matter decompiler.
/obj/item/weapon/matter_decompiler
@@ -173,7 +176,7 @@
for(var/mob/M in T)
if(istype(M,/mob/living/simple_animal/lizard) || istype(M,/mob/living/simple_animal/mouse))
src.loc.visible_message("\red [src.loc] sucks [M] into its decompiler. There's a horrible crunching noise.","\red It's a bit of a struggle, but you manage to suck [M] into your decompiler. It makes a series of visceral crunching noises.")
src.loc.visible_message("<span class='danger'>[src.loc] sucks [M] into its decompiler. There's a horrible crunching noise.</span>","<span class='danger'>It's a bit of a struggle, but you manage to suck [M] into your decompiler. It makes a series of visceral crunching noises.</span>")
new/obj/effect/decal/cleanable/blood/splatter(get_turf(src))
del(M)
if(wood)
@@ -270,16 +273,16 @@
grabbed_something = 1
if(grabbed_something)
user << "\blue You deploy your decompiler and clear out the contents of \the [T]."
user << "<span class='notice'>You deploy your decompiler and clear out the contents of \the [T].</span>"
else
user << "\red Nothing on \the [T] is useful to you."
user << "<span class='danger'>Nothing on \the [T] is useful to you.</span>"
return
//PRETTIER TOOL LIST.
/mob/living/silicon/robot/drone/installed_modules()
if(weapon_lock)
src << "\red Weapon lock active, unable to use modules! Count:[weaponlock_time]"
src << "<span class='danger'>Weapon lock active, unable to use modules! Count:[weaponlock_time]</span>"
return
if(!module)
@@ -1143,7 +1143,6 @@ var/list/robot_verbs_default = list(
//Disconnect it's camera so it's not so easily tracked.
if(src.camera)
src.camera.clear_all_networks()
cameranet.removeCamera(src.camera)
/mob/living/silicon/robot/proc/ResetSecurityCodes()
+4 -6
View File
@@ -797,7 +797,7 @@ note dizziness decrements automatically in the mob's Life() proc.
stat(null,"Location:\t([x], [y], [z])")
stat(null,"CPU:\t[world.cpu]")
stat(null,"Instances:\t[world.contents.len]")
if(statpanel("MC") && master_controller)
if(statpanel("Status") && master_controller)
stat(null,"MasterController-[last_tick_duration] ([master_controller.processing?"On":"Off"]-[controller_iteration])")
stat(null,"Air-[master_controller.air_cost]\tSun-[master_controller.sun_cost]")
stat(null,"Mob-[master_controller.mobs_cost]\t#[mob_list.len]")
@@ -1180,7 +1180,9 @@ mob/proc/yank_out_object()
usr << "You are now facing [dir2text(facing_dir)]."
/mob/proc/set_face_dir(var/newdir)
if(newdir)
if(newdir == facing_dir)
facing_dir = null
else if(newdir)
set_dir(newdir)
facing_dir = newdir
else if(facing_dir)
@@ -1200,20 +1202,16 @@ mob/proc/yank_out_object()
/mob/verb/northfaceperm()
set hidden = 1
facing_dir = null
set_face_dir(NORTH)
/mob/verb/southfaceperm()
set hidden = 1
facing_dir = null
set_face_dir(SOUTH)
/mob/verb/eastfaceperm()
set hidden = 1
facing_dir = null
set_face_dir(EAST)
/mob/verb/westfaceperm()
set hidden = 1
facing_dir = null
set_face_dir(WEST)