Skip to content

Commit

Permalink
WHO (#305)
Browse files Browse the repository at this point in the history
* WHO

* Мини-фиксы

* Merge pull request Baystation12#33706 from Spookerton/spkrtn/cng/but-where-does-it-all-go

rigs get some storage on the chestpiece

---------

Co-authored-by: Mucker <[email protected]>
  • Loading branch information
Exapsters and MuckerMayhem committed Jun 16, 2023
1 parent 992af46 commit ae47054
Show file tree
Hide file tree
Showing 15 changed files with 159 additions and 33 deletions.
1 change: 0 additions & 1 deletion baystation12.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3310,7 +3310,6 @@
#include "proxima\code\modules\clothing\suits\suits.dm"
#include "proxima\code\modules\clothing\under\under.dm"
#include "proxima\code\modules\clothing\under\accessories\armor_tag.dm"
#include "proxima\code\modules\clothing\under\accessories\wristwatches.dm"
#include "proxima\code\modules\culture_descriptor\culture\cultures_human.dm"
#include "proxima\code\modules\culture_descriptor\faction\factions_other.dm"
#include "proxima\code\modules\culture_descriptor\location\locations_human.dm"
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/hud/ability_screen_objects_prx.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
var/sting_datum

/obj/screen/ability/changeling/activate()
to_chat(ability_master.my_mob, SPAN_LING("Мы подготовили жало. <i>Используйте alt+клик или СКМ на цели для укола.</i>"))
to_chat(ability_master.my_mob, SPAN_LING("Мы подготовили жало. <i>Используйте alt+клик на цели для укола.</i>"))
var/datum/changeling/C = ability_master.my_mob.mind.changeling
C.chosen_sting = new sting_datum

Expand Down
5 changes: 3 additions & 2 deletions code/game/objects/items/weapons/storage/internal.dm
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@
max_w_class = slot_size
..()

/obj/item/storage/internal/pouch/New(var/newloc, var/storage_space)
/obj/item/storage/internal/pouch/New(newloc, storage_space, max_w_class)
max_storage_space = storage_space
..()
src.max_w_class = max_w_class || src.max_w_class
..()
18 changes: 12 additions & 6 deletions code/game/objects/items/weapons/storage/storage.dm
Original file line number Diff line number Diff line change
Expand Up @@ -341,18 +341,24 @@
if(0)
to_chat(usr, "\The [src] now picks up one item at a time.")


/obj/item/storage/proc/DoQuickEmpty()
var/turf/into = get_turf(src)
if (!into)
return
for(var/atom/movable/movable in contents)
remove_from_storage(movable, into, TRUE)
finish_bulk_removal()


/obj/item/storage/verb/quick_empty()
set name = "Empty Contents"
set category = "Object"

if((!ishuman(usr) && (src.loc != usr)) || usr.stat || usr.restrained())
return

var/turf/T = get_turf(src)
hide_from(usr)
for(var/obj/item/I in contents)
remove_from_storage(I, T, 1)
finish_bulk_removal()
DoQuickEmpty()


/obj/item/storage/verb/dump_contents()
set name = "Dump Contents"
Expand Down
3 changes: 2 additions & 1 deletion code/game/objects/items/weapons/tools/screwdriver.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
attack_verb = list("stabbed")
lock_picking_level = 5
sharp = TRUE
item_flags = ITEM_FLAG_CAN_HIDE_IN_SHOES

var/build_from_parts = TRUE
var/valid_colours = list(COLOR_RED, COLOR_CYAN_BLUE, COLOR_PURPLE, COLOR_CHESTNUT, COLOR_GREEN, COLOR_TEAL, COLOR_ASSEMBLY_YELLOW, COLOR_BOTTLE_GREEN, COLOR_VIOLET, COLOR_GRAY80, COLOR_GRAY20)
Expand All @@ -36,4 +37,4 @@
return ..()
if((MUTATION_CLUMSY in user.mutations) && prob(50))
M = user
return eyestab(M,user)
return eyestab(M,user)
5 changes: 5 additions & 0 deletions code/game/objects/items/weapons/tools/weldingtool.dm
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
to_chat(user, SPAN_NOTICE("You secure the welder."))
else
to_chat(user, SPAN_NOTICE("The welder can now be attached and modified."))
playsound(src, 'sound/items/Screwdriver.ogg', 10, 1)
src.add_fingerprint(user)
return

Expand All @@ -84,6 +85,7 @@
user.visible_message("[user] slots \a [W] into \the [src].", "You slot \a [W] into \the [src].")
w_class = tank.size_in_use
force = tank.unlit_force
playsound(src, 'sound/items/cap_close.ogg', 10, 1)
update_icon()
return

Expand All @@ -98,6 +100,7 @@
tank = null
w_class = initial(w_class)
force = initial(force)
playsound(src, 'sound/items/cap_open.ogg', 10, 1)
update_icon()
else
to_chat(user, SPAN_DANGER("Turn off the welder first!"))
Expand Down Expand Up @@ -240,6 +243,7 @@
src.force = tank.lit_force
src.damtype = DAMAGE_BURN
welding = 1
playsound(src, 'sound/items/welderactivate.ogg', 10, 1)
update_icon()
START_PROCESSING(SSobj, src)
else
Expand All @@ -259,6 +263,7 @@
src.force = tank.unlit_force
src.damtype = DAMAGE_BRUTE
src.welding = 0
playsound(src, 'sound/items/welderdeactivate.ogg', 10, 1)
update_icon()

/obj/item/weldingtool/attack(mob/living/M, mob/living/user, target_zone)
Expand Down
16 changes: 14 additions & 2 deletions code/modules/clothing/spacesuits/rig/rig_attackby.dm
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@
var/list/current_mounts = list()
if(cell) current_mounts += "cell"
if(air_supply) current_mounts += "tank"
if(installed_modules && installed_modules.len) current_mounts += "system module"

if (length(chest?.storage?.contents)) current_mounts += "storage"
if(installed_modules && length(installed_modules)) current_mounts += "system module"
var/to_remove = input("Which would you like to modify?") as null|anything in current_mounts
if(!to_remove)
return
Expand Down Expand Up @@ -160,6 +160,18 @@
to_chat(user, "You detach and remove \the [air_supply].")
air_supply = null

if ("storage")
if (!length(chest?.storage?.contents))
to_chat(user, "There is nothing in the storage to remove.")
return
chest.storage.DoQuickEmpty()
user.visible_message(
SPAN_ITALIC("\The [user] ejects the contents of \a [src]'s storage."),
SPAN_ITALIC("You eject the contents of \the [src]'s storage."),
SPAN_ITALIC("You hear things clatter to the floor."),
range = 5
)

if("system module")

var/list/possible_removals = list()
Expand Down
42 changes: 41 additions & 1 deletion code/modules/clothing/spacesuits/rig/rig_pieces.dm
Original file line number Diff line number Diff line change
Expand Up @@ -53,16 +53,56 @@
)
var/list/supporting_limbs = list() //If not-null, automatically splints breaks. Checked when removing the suit.
equip_delay = null
var/obj/item/storage/internal/storage
var/max_w_class = ITEM_SIZE_NORMAL
var/slots = 2 STORAGE_FREEFORM


/obj/item/clothing/suit/space/rig/Destroy()
LAZYCLEARLIST(supporting_limbs)
QDEL_NULL(storage)
return ..()


/obj/item/clothing/suit/space/rig/Initialize()
. = ..()
if (slots && max_w_class)
if (slots < 0)
storage = new /obj/item/storage/internal/pouch (src, (-slots) * BASE_STORAGE_COST(max_w_class), max_w_class)
else
storage = new /obj/item/storage/internal/pockets (src, slots, max_w_class)


/obj/item/clothing/suit/space/rig/attack_hand(mob/living/user)
if (storage?.handle_attack_hand(user))
..(user)

/obj/item/clothing/suit/space/rig/MouseDrop(obj/over)
if (storage?.handle_mousedrop(usr, over))
..(over)


/obj/item/clothing/suit/space/rig/emp_act(severity)
storage?.emp_act(severity)
..()


/obj/item/clothing/suit/space/rig/attempt_store_item(obj/item/I, mob/user, silent)
if (storage?.can_be_inserted(I, user, TRUE) && storage.handle_item_insertion(I, silent))
return TRUE
return ..()


/obj/item/clothing/suit/space/rig/equipped(mob/M)
check_limb_support(M)
..()

/obj/item/clothing/suit/space/rig/dropped(var/mob/user)

/obj/item/clothing/suit/space/rig/dropped(mob/user)
check_limb_support(user)
..()


// Some space suits are equipped with reactive membranes that support broken limbs
/obj/item/clothing/suit/space/rig/proc/can_support(var/mob/living/carbon/human/user)
if(user.wear_suit != src)
Expand Down
14 changes: 13 additions & 1 deletion code/modules/clothing/spacesuits/rig/suits/light.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,19 @@
/obj/item/clothing/suit/space/rig/light
name = "suit"
breach_threshold = 18 //comparable to voidsuits
species_restricted = list(SPECIES_HUMAN,SPECIES_IPC, SPECIES_SHELL)
species_restricted = list(SPECIES_HUMAN,SPECIES_IPC)
allowed = list(
/obj/item/gun,
/obj/item/ammo_magazine,
/obj/item/ammo_casing,
/obj/item/melee/baton,
/obj/item/handcuffs,
/obj/item/tank,
/obj/item/device/suit_cooling_unit,
/obj/item/cell
)
max_w_class = ITEM_SIZE_SMALL
slots = 3 STORAGE_FREEFORM

/obj/item/clothing/gloves/rig/light
name = "gloves"
Expand Down
2 changes: 2 additions & 0 deletions code/modules/clothing/spacesuits/rig/suits/station.dm
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,8 @@
/obj/item/tank,
/obj/item/device/suit_cooling_unit
)
max_w_class = null
slots = null

/obj/item/rig/zero/on_update_icon(var/update_mob_icon)
..()
Expand Down
30 changes: 15 additions & 15 deletions code/modules/events/rogue_drones.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,21 @@
var/list/drones_list = list()

/datum/event/rogue_drone/start()
//spawn them at the same place as carp
var/list/possible_spawns = list()
for(var/obj/effect/landmark/C in landmarks_list)
if(C.name == "carpspawn")
possible_spawns.Add(C)

//25% chance for this to be a false alarm
var/num = 0
if (length(possible_spawns) && prob(75))
num = rand(2, 6)
for(var/i=0, i<num, i++)
var/mob/living/simple_animal/hostile/retaliate/malf_drone/D = new(get_turf(pick(possible_spawns)))
drones_list.Add(D)
if(prob(25))
D.disabled = rand(15, 60)
var/n = rand(2, 6)
var/I = 0
while(I < n)
var/speed = rand(1,3)
var/dir = pick(GLOB.cardinal)
var/Z = pick(affecting_z)
var/turf/T = get_random_edge_turf(dir,TRANSITIONEDGE + 2, Z)
if(istype(T,/turf/space))
var/mob/living/simple_animal/hostile/retaliate/malf_drone/M
M = new /mob/living/simple_animal/hostile/retaliate/malf_drone(T)
drones_list.Add(M)
if(prob(25))
M.disabled = rand(15, 60)
M.throw_at(get_random_edge_turf(GLOB.reverse_dir[dir],TRANSITIONEDGE + 2, Z), 5, speed)
I++

/datum/event/rogue_drone/announce()
command_announcement.Announce("Внимание. Неопознанные патрульные беспилотники обнаружены в непосредственной близости от [location_name()]", "[location_name()] Sensor Array", zlevels = affecting_z)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/projectiles/guns/projectile/revolver.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
name = "holdout revolver"
desc = "The al-Maliki & Mosley Partner is a concealed-carry revolver made for people who do not trust automatic pistols any more than the people they're dealing with."
icon_state = "holdout"
item_state = "pen"
item_state = "pistol"
caliber = CALIBER_PISTOL_SMALL
ammo_type = /obj/item/ammo_casing/pistol/small
w_class = ITEM_SIZE_SMALL
Expand Down
2 changes: 1 addition & 1 deletion code/modules/psionics/events/mini_spasm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
set waitfor = 0

if(iscarbon(victim) && !victim.isSynthetic())
var/list/disabilities = list(NEARSIGHTED, EPILEPSY, NERVOUS)
var/list/disabilities = list(NEARSIGHTED, NERVOUS)
for(var/disability in disabilities)
if(victim.disabilities & disability)
disabilities -= disability
Expand Down
2 changes: 1 addition & 1 deletion maps/torch/job/command_jobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -447,7 +447,7 @@
access = list(
access_security, access_medical, access_engine, access_maint_tunnels, access_emergency_storage,
access_bridge, access_janitor, access_kitchen, access_cargo, access_mailsorting, access_RC_announce, access_keycard_auth,
access_solgov_crew, access_aquila, access_aquila_helm, access_guppy, access_guppy_helm, access_external_airlocks,
access_solgov_crew, access_aquila, access_aquila_helm, access_guppy, access_guppy_helm, access_external_airlocks, access_senadv,
access_eva, access_hangar, access_cent_creed, access_explorer, access_expedition_shuttle, access_expedition_shuttle_helm, access_teleporter,
access_torch_fax, access_torch_helm, access_radio_comm, access_radio_eng, access_radio_exp, access_radio_serv, access_radio_sci, access_radio_sup
)
Expand Down
48 changes: 48 additions & 0 deletions proxima/code/game/verbs/who.dm
Original file line number Diff line number Diff line change
Expand Up @@ -111,3 +111,51 @@
description ="Who: Show in a separate window"
key = "WINDOW_WHO"
default_value = GLOB.PREF_NO

/client/verb/staffwho()
set category = "Admin"
set name = "Staffwho"

var/list/msg = list()
var/active_staff = 0
var/total_staff = 0
var/can_investigate = check_rights(R_INVESTIGATE, 0)

for(var/client/C in GLOB.admins)
var/line = list()
if(!can_investigate && C.is_stealthed())
continue
total_staff++
if(check_rights(R_ADMIN,0,C))
line += "\t[C], <b>["\improper[C.holder.rank]"]</b>"
else
line += "\t[C], ["\improper[C.holder.rank]"]"
if(!C.is_afk())
active_staff++
if(can_investigate)
if(C.is_afk())
line += " (AFK - [C.inactivity2text()])"
if(isghost(C.mob))
line += " - Наблюдает"
else if(istype(C.mob,/mob/new_player))
line += " - Лобби"
else
line += " - Играет"
if(C.is_stealthed())
line += " (Невидимость)"
if(C.get_preference_value(/datum/client_preference/show_ooc) == GLOB.PREF_HIDE)
line += " <font color='#002eb8'><b><s>(OOC)</s></b></font>"
if(C.get_preference_value(/datum/client_preference/show_looc) == GLOB.PREF_HIDE)
line += " <font color='#3a9696'><b><s>(LOOC)</s></b></font>"
if(C.get_preference_value(/datum/client_preference/show_aooc) == GLOB.PREF_HIDE)
line += " <font color='#960018'><b><s>(AOOC)</s></b></font>"
if(C.get_preference_value(/datum/client_preference/show_dsay) == GLOB.PREF_HIDE)
line += " <font color='#530fad'><b><s>(DSAY)</s></b></font>"
line = jointext(line,null)
if(check_rights(R_ADMIN,0,C))
msg.Insert(1, line)
else
msg += line

to_chat(src, "<b>Сотрудники [active_staff]/[total_staff]:</b>")
to_chat(src, jointext(msg,"\n"))

0 comments on commit ae47054

Please sign in to comment.