mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-23 13:18:09 +01:00
Merge remote-tracking branch 'upstream/dev-freeze' into dev
Conflicts: code/modules/clothing/spacesuits/rig/suits/light.dm
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user