mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 11:07:12 +01:00
Verb cleanup (#22224)
* Verb cleanup * rest of the object verbs * little more object cleanup * more changes * last of it * this too * tgui * code review * time to go
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
/obj/item/assembly/infra/examine(mob/user)
|
||||
. = ..()
|
||||
. += "The assembly is [secured ? "secure" : "not secure"]. The infrared trigger is [on ? "on" : "off"]."
|
||||
. += "<span class='info'><b>Alt-Click</b> to rotate it.</span>"
|
||||
|
||||
/obj/item/assembly/infra/activate()
|
||||
if(!..())
|
||||
@@ -159,25 +160,24 @@
|
||||
if(first)
|
||||
first.vis_spread(visible)
|
||||
if(href_list["rotate"])
|
||||
rotate()
|
||||
rotate(usr)
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=infra")
|
||||
return
|
||||
if(usr)
|
||||
attack_self(usr)
|
||||
|
||||
/obj/item/assembly/infra/verb/rotate()//This could likely be better
|
||||
set name = "Rotate Infrared Laser"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
/obj/item/assembly/infra/AltClick(mob/user)
|
||||
rotate(user)
|
||||
|
||||
if(usr.stat || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED) || usr.restrained())
|
||||
/obj/item/assembly/infra/proc/rotate(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
dir = turn(dir, 90)
|
||||
|
||||
if(usr.machine == src)
|
||||
interact(usr)
|
||||
if(user.machine == src)
|
||||
interact(user)
|
||||
|
||||
if(first)
|
||||
qdel(first)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
. = ..()
|
||||
if(armed)
|
||||
. += "It looks like it's armed."
|
||||
. += "<span class='notice'><b>Alt-Click</b> to hide it.</span>"
|
||||
|
||||
/obj/item/assembly/mousetrap/activate()
|
||||
if(!..())
|
||||
@@ -143,13 +144,9 @@
|
||||
armed = TRUE
|
||||
|
||||
|
||||
/obj/item/assembly/mousetrap/verb/hide_under()
|
||||
set src in oview(1)
|
||||
set name = "Hide"
|
||||
set category = "Object"
|
||||
|
||||
if(usr.stat)
|
||||
/obj/item/assembly/mousetrap/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
layer = TURF_LAYER + 0.2
|
||||
to_chat(usr, "<span class='notice'>You hide [src].</span>")
|
||||
to_chat(user, "<span class='notice'>You hide [src].</span>")
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
var/last_injection
|
||||
var/injection_cooldown = 34 SECONDS
|
||||
var/efficiency
|
||||
/// Timer that we use to remove people that are in us for too long
|
||||
var/removal_timer
|
||||
|
||||
light_color = LIGHT_COLOR_WHITE
|
||||
|
||||
@@ -38,9 +40,7 @@
|
||||
. += "<span class='notice'>You see [occupant.name] inside.</span>"
|
||||
. += "<span class='notice'>The Cryogenic cell chamber is effective at treating those with genetic damage, but all other damage types at a moderate rate.</span>"
|
||||
. += "<span class='notice'>Mostly using cryogenic chemicals, such as cryoxadone for it's medical purposes, requires that the inside of the cell be kept cool at all times. Hooking up a freezer and cooling the pipeline will do this nicely.</span>"
|
||||
. += "<span class='notice'><b>Click-drag</b> someone to a cell to place them in it, use the 'Eject occupant' verb to remove them.</span>"
|
||||
if(user.loc == src)
|
||||
. += "<span class='notice'>You can use the 'Eject occupant' verb to eject yourself. This will take roughly 2 minutes.</span>"
|
||||
. += "<span class='info'><b>Click-drag</b> someone to a cell to place them in it, <b>Alt-Click</b> it to remove it.</span>"
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/power_change()
|
||||
..()
|
||||
@@ -414,6 +414,7 @@
|
||||
|
||||
occupant = null
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
deltimer(removal_timer)
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/force_eject_occupant(mob/target)
|
||||
go_out()
|
||||
@@ -451,30 +452,15 @@
|
||||
add_fingerprint(usr)
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
M.ExtinguishMob()
|
||||
removal_timer = addtimer(CALLBACK(src, PROC_REF(auto_eject)), 1 MINUTES, TIMER_STOPPABLE)
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/verb/move_eject()
|
||||
set name = "Eject occupant"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
if(usr == occupant)//If the user is inside the tube...
|
||||
if(usr.stat == DEAD)
|
||||
return
|
||||
to_chat(usr, "<span class='notice'>Release sequence activated. This will take one minute.</span>")
|
||||
sleep(600)
|
||||
if(!src || !usr || !occupant || (occupant != usr)) //Check if someone's released/replaced/bombed him already
|
||||
return
|
||||
go_out()//and release him from the eternal prison.
|
||||
else
|
||||
if(usr.default_can_use_topic(src) != STATUS_INTERACTIVE)
|
||||
return
|
||||
if(usr.incapacitated()) //are you cuffed, dying, lying, stunned or other
|
||||
return
|
||||
add_attack_logs(usr, occupant, "Ejected from cryo cell at [COORD(src)]")
|
||||
go_out()
|
||||
add_fingerprint(usr)
|
||||
return
|
||||
go_out()
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/narsie_act()
|
||||
go_out()
|
||||
@@ -482,26 +468,6 @@
|
||||
color = "red"//force the icon to red
|
||||
light_color = LIGHT_COLOR_RED
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/verb/move_inside()
|
||||
set name = "Move Inside"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.has_buckled_mobs()) //mob attached to us
|
||||
to_chat(usr, "<span class='warning'>[usr] will not fit into [src] because [usr.p_they()] [usr.p_have()] a slime latched onto [usr.p_their()] head.</span>")
|
||||
return
|
||||
|
||||
if(stat & (NOPOWER | BROKEN))
|
||||
return
|
||||
|
||||
if(usr.incapacitated() || usr.buckled) //are you cuffed, dying, lying, stunned or other
|
||||
return
|
||||
|
||||
put_mob(usr)
|
||||
return
|
||||
|
||||
|
||||
|
||||
/datum/data/function/proc/reset()
|
||||
return
|
||||
|
||||
|
||||
@@ -228,22 +228,18 @@
|
||||
* BLIND // can't see anything
|
||||
*/
|
||||
|
||||
/obj/item/clothing/glasses/verb/adjust_eyewear() //Adjust eyewear to be worn above or below the mask.
|
||||
set name = "Adjust Eyewear"
|
||||
set category = "Object"
|
||||
set desc = "Adjust your eyewear to be worn over or under a mask."
|
||||
set src in usr
|
||||
/obj/item/clothing/glasses/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'>You can <b>Alt-Click</b> [src] to adjust if it fits over or under your mask.</span>"
|
||||
|
||||
var/mob/living/carbon/human/user = usr
|
||||
if(!istype(user))
|
||||
return
|
||||
if(user.incapacitated()) //Dead spessmen adjust no glasses. Resting/buckled ones do, though
|
||||
/obj/item/clothing/glasses/AltClick(mob/living/carbon/human/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user) || !istype(user))
|
||||
return
|
||||
|
||||
var/action_fluff = "You adjust \the [src]"
|
||||
if(user.glasses == src)
|
||||
if(!user.canUnEquip(src))
|
||||
to_chat(usr, "[src] is stuck to you!")
|
||||
to_chat(user, "<span class='warning'>[src] is stuck to you!</span>")
|
||||
return
|
||||
if(attack_hand(user)) //Remove the glasses for this action. Prevents logic-defying instances where glasses phase through your mask as it ascends/descends to another plane of existence.
|
||||
action_fluff = "You remove \the [src] and adjust it"
|
||||
@@ -304,7 +300,7 @@
|
||||
sensor_mode = SUIT_SENSOR_OFF
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/under/proc/set_sensors(mob/user as mob)
|
||||
/obj/item/clothing/under/proc/set_sensors(mob/user)
|
||||
if(!user.Adjacent(src) || !ishuman(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
|
||||
return
|
||||
if(has_sensor >= 2)
|
||||
@@ -326,7 +322,7 @@
|
||||
|
||||
sensor_mode = modes.Find(switchMode) - 1
|
||||
|
||||
if(src.loc == user)
|
||||
if(loc == user)
|
||||
switch(sensor_mode)
|
||||
if(SUIT_SENSOR_OFF)
|
||||
to_chat(user, "You disable your suit's remote sensing equipment.")
|
||||
@@ -341,32 +337,25 @@
|
||||
if(H.w_uniform == src)
|
||||
H.update_suit_sensors()
|
||||
|
||||
else if(ismob(src.loc))
|
||||
else if(ismob(loc))
|
||||
switch(sensor_mode)
|
||||
if(SUIT_SENSOR_OFF)
|
||||
for(var/mob/V in viewers(user, 1))
|
||||
V.show_message("<span class='warning'>[user] disables [src.loc]'s remote sensing equipment.</span>", 1)
|
||||
V.show_message("<span class='warning'>[user] disables [loc]'s remote sensing equipment.</span>", 1)
|
||||
if(SUIT_SENSOR_BINARY)
|
||||
for(var/mob/V in viewers(user, 1))
|
||||
V.show_message("[user] turns [src.loc]'s remote sensors to binary.", 1)
|
||||
V.show_message("[user] turns [loc]'s remote sensors to binary.", 1)
|
||||
if(SUIT_SENSOR_VITAL)
|
||||
for(var/mob/V in viewers(user, 1))
|
||||
V.show_message("[user] sets [src.loc]'s sensors to track vitals.", 1)
|
||||
V.show_message("[user] sets [loc]'s sensors to track vitals.", 1)
|
||||
if(SUIT_SENSOR_TRACKING)
|
||||
for(var/mob/V in viewers(user, 1))
|
||||
V.show_message("[user] sets [src.loc]'s sensors to maximum.", 1)
|
||||
V.show_message("[user] sets [loc]'s sensors to maximum.", 1)
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(H.w_uniform == src)
|
||||
H.update_suit_sensors()
|
||||
|
||||
/obj/item/clothing/under/verb/toggle()
|
||||
set name = "Toggle Suit Sensors"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
set_sensors(usr)
|
||||
|
||||
/obj/item/clothing/under/AltShiftClick(mob/user)
|
||||
set_sensors(user)
|
||||
|
||||
@@ -825,46 +814,40 @@
|
||||
if(SUIT_SENSOR_TRACKING)
|
||||
. += "Its vital tracker and tracking beacon appear to be enabled."
|
||||
if(has_sensor == 1)
|
||||
. += "Alt-shift-click to toggle the sensors mode."
|
||||
. += "<span class='info'>Alt-shift-click to toggle the sensors mode.</span>"
|
||||
else
|
||||
. += "This suit does not have any sensors."
|
||||
|
||||
if(length(accessories))
|
||||
for(var/obj/item/clothing/accessory/A in accessories)
|
||||
. += "\A [A] is attached to it."
|
||||
. += "Alt-click to remove an accessory."
|
||||
. += "<span class='info'>Alt-click to remove an accessory.</span>"
|
||||
. += "<span class='info'>Ctrl-Shift-Click to roll down this jumpsuit.</span>"
|
||||
|
||||
|
||||
/obj/item/clothing/under/verb/rollsuit()
|
||||
set name = "Roll Down Jumpsuit"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
if(!isliving(usr)) return
|
||||
if(usr.stat) return
|
||||
/obj/item/clothing/under/CtrlShiftClick(mob/living/carbon/human/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user) || !istype(user))
|
||||
to_chat(user, "<span class='notice'>You cannot roll down the uniform!</span>")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(copytext(item_color,-2) != "_d")
|
||||
basecolor = item_color
|
||||
|
||||
if(!usr.incapacitated())
|
||||
if(copytext(item_color,-2) != "_d")
|
||||
basecolor = item_color
|
||||
|
||||
if(usr.get_item_by_slot(SLOT_HUD_JUMPSUIT) != src)
|
||||
to_chat(usr, "<span class='notice'>You must wear the uniform to adjust it!</span>")
|
||||
|
||||
else
|
||||
if((basecolor + "_d_s") in icon_states(H.w_uniform.sprite_sheets[H.dna.species.sprite_sheet_name]))
|
||||
if(H.w_uniform.sprite_sheets[H.dna.species.sprite_sheet_name] && icon_exists(H.w_uniform.sprite_sheets[H.dna.species.sprite_sheet_name], "[basecolor]_d_s"))
|
||||
item_color = item_color == "[basecolor]" ? "[basecolor]_d" : "[basecolor]"
|
||||
usr.update_inv_w_uniform()
|
||||
else
|
||||
if(H.w_uniform.sprite_sheets["Human"] && icon_exists(H.w_uniform.sprite_sheets["Human"], "[basecolor]_d_s"))
|
||||
item_color = item_color == "[basecolor]" ? "[basecolor]_d" : "[basecolor]"
|
||||
usr.update_inv_w_uniform()
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You cannot roll down this uniform!</span>")
|
||||
if(user.get_item_by_slot(SLOT_HUD_JUMPSUIT) != src)
|
||||
to_chat(user, "<span class='notice'>You must wear the uniform to adjust it!</span>")
|
||||
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You cannot roll down the uniform!</span>")
|
||||
if((basecolor + "_d_s") in icon_states(user.w_uniform.sprite_sheets[user.dna.species.sprite_sheet_name]))
|
||||
if(user.w_uniform.sprite_sheets[user.dna.species.sprite_sheet_name] && icon_exists(user.w_uniform.sprite_sheets[user.dna.species.sprite_sheet_name], "[basecolor]_d_s"))
|
||||
item_color = item_color == "[basecolor]" ? "[basecolor]_d" : "[basecolor]"
|
||||
user.update_inv_w_uniform()
|
||||
|
||||
else
|
||||
if(user.w_uniform.sprite_sheets["Human"] && icon_exists(user.w_uniform.sprite_sheets["Human"], "[basecolor]_d_s"))
|
||||
item_color = item_color == "[basecolor]" ? "[basecolor]_d" : "[basecolor]"
|
||||
user.update_inv_w_uniform()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You cannot roll down this uniform!</span>")
|
||||
if(item_color == "[basecolor]")
|
||||
body_parts_covered = initial(body_parts_covered)
|
||||
else
|
||||
@@ -872,18 +855,8 @@
|
||||
body_parts_covered &= ~LOWER_TORSO
|
||||
body_parts_covered &= ~ARMS
|
||||
|
||||
/obj/item/clothing/under/verb/removetie()
|
||||
set name = "Remove Accessory"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
handle_accessories_removal()
|
||||
|
||||
/obj/item/clothing/under/proc/handle_accessories_removal()
|
||||
if(!isliving(usr))
|
||||
return
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
if(!Adjacent(usr))
|
||||
/obj/item/clothing/under/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
if(!length(accessories))
|
||||
return
|
||||
@@ -895,7 +868,7 @@
|
||||
A = pick
|
||||
else
|
||||
A = accessories[1]
|
||||
remove_accessory(usr,A)
|
||||
remove_accessory(user, A)
|
||||
|
||||
/obj/item/clothing/under/proc/remove_accessory(mob/user, obj/item/clothing/accessory/A)
|
||||
if(!(A in accessories))
|
||||
@@ -915,9 +888,6 @@
|
||||
A.emp_act(severity)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/under/AltClick()
|
||||
handle_accessories_removal()
|
||||
|
||||
/obj/item/clothing/obj_destruction(damage_flag)
|
||||
if(damage_flag == BOMB || damage_flag == MELEE)
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -95,41 +95,19 @@
|
||||
else
|
||||
. += "It is empty."
|
||||
|
||||
/obj/item/clothing/accessory/holster/on_attached(obj/item/clothing/under/S, mob/user as mob)
|
||||
..()
|
||||
has_suit.verbs += /obj/item/clothing/accessory/holster/verb/holster_verb
|
||||
|
||||
/obj/item/clothing/accessory/holster/on_removed(mob/user as mob)
|
||||
has_suit.verbs -= /obj/item/clothing/accessory/holster/verb/holster_verb
|
||||
..()
|
||||
|
||||
//For the holster hotkey
|
||||
/obj/item/clothing/accessory/holster/verb/holster_verb()
|
||||
set name = "Holster"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
if(!isliving(usr)) return
|
||||
if(usr.stat) return
|
||||
/obj/item/clothing/accessory/holster/proc/handle_holster_usage(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
var/obj/item/clothing/accessory/holster/H = null
|
||||
if(istype(src, /obj/item/clothing/accessory/holster))
|
||||
H = src
|
||||
else if(istype(src, /obj/item/clothing/under))
|
||||
var/obj/item/clothing/under/S = src
|
||||
if(S.accessories.len)
|
||||
H = locate() in S.accessories
|
||||
|
||||
if(!H)
|
||||
to_chat(usr, "<span class='warning'>Something is very wrong.</span>")
|
||||
|
||||
if(!H.holstered)
|
||||
if(!istype(usr.get_active_hand(), /obj/item/gun))
|
||||
to_chat(usr, "<span class='warning'>You need your gun equiped to holster it.</span>")
|
||||
if(!holstered)
|
||||
var/obj/item/gun/gun = user.get_active_hand()
|
||||
if(!istype(gun))
|
||||
to_chat(user, "<span class='warning'>You need your gun equiped to holster it.</span>")
|
||||
return
|
||||
var/obj/item/gun/W = usr.get_active_hand()
|
||||
H.holster(W, usr)
|
||||
holster(gun, user)
|
||||
else
|
||||
H.unholster(usr)
|
||||
unholster(user)
|
||||
|
||||
/obj/item/clothing/accessory/holster/armpit
|
||||
name = "shoulder holster"
|
||||
|
||||
@@ -190,6 +190,22 @@
|
||||
move_resist = MOVE_FORCE_OVERPOWERING
|
||||
a_intent = INTENT_HARM
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/blobbernaut/Initialize(mapload)
|
||||
. = ..()
|
||||
var/datum/action/innate/communicate_overmind_blob/overmind_chat = new
|
||||
overmind_chat.Grant(src)
|
||||
|
||||
/datum/action/innate/communicate_overmind_blob
|
||||
name = "Speak with the overmind"
|
||||
icon_icon = 'icons/mob/guardian.dmi'
|
||||
button_icon_state = "communicate"
|
||||
|
||||
/datum/action/innate/communicate_overmind_blob/Activate()
|
||||
var/mob/living/simple_animal/hostile/blob/blobbernaut/user = owner
|
||||
if(user.stat)
|
||||
return
|
||||
user.blob_talk()
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/blobbernaut/Life(seconds, times_fired)
|
||||
if(stat != DEAD && (getBruteLoss() || getFireLoss())) // Heal on blob structures
|
||||
if(locate(/obj/structure/blob) in get_turf(src))
|
||||
@@ -214,14 +230,6 @@
|
||||
return FALSE
|
||||
flick("blobbernaut_death", src)
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/blobbernaut/verb/communicate_overmind()
|
||||
set category = "Blobbernaut"
|
||||
set name = "Blob Telepathy"
|
||||
set desc = "Send a message to the Overmind"
|
||||
|
||||
if(stat != DEAD)
|
||||
blob_talk()
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/blobbernaut/proc/blob_talk()
|
||||
var/message = input(src, "Announce to the overmind", "Blob Telepathy")
|
||||
var/rendered
|
||||
|
||||
@@ -84,25 +84,17 @@
|
||||
// VERBS & PROCS //
|
||||
//////////////////////////////
|
||||
|
||||
/obj/machinery/fishtank/verb/toggle_lid_verb()
|
||||
set name = "Toggle Tank Lid"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
/obj/machinery/fishtank/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
toggle_lid()
|
||||
|
||||
/obj/machinery/fishtank/proc/toggle_lid()
|
||||
lid_switch = !lid_switch
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
|
||||
/obj/machinery/fishtank/verb/toggle_light_verb()
|
||||
set name = "Toggle Tank Light"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
/obj/machinery/fishtank/AltShiftClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
toggle_light()
|
||||
|
||||
/obj/machinery/fishtank/proc/toggle_light()
|
||||
light_switch = !light_switch
|
||||
if(light_switch)
|
||||
set_light(2, 2, "#a0a080")
|
||||
@@ -113,12 +105,6 @@
|
||||
// NEW() PROCS //
|
||||
//////////////////////////////
|
||||
|
||||
/obj/machinery/fishtank/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!has_lid) //Tank doesn't have a lid/light, remove the verbs for then
|
||||
verbs -= /obj/machinery/fishtank/verb/toggle_lid_verb
|
||||
verbs -= /obj/machinery/fishtank/verb/toggle_light_verb
|
||||
|
||||
/obj/machinery/fishtank/tank/Initialize(mapload)
|
||||
. = ..()
|
||||
if(prob(5)) //5% chance to get the castle decoration
|
||||
@@ -533,6 +519,8 @@
|
||||
|
||||
//Finally, report the full examine_message constructed from the above reports
|
||||
. += "<span class='notice'>[examine_message]</span>"
|
||||
. += "<span class='info'>You can <b>Alt-Click</b> [src] to open/close its lid.</span>"
|
||||
. += "<span class='info'>You can <b>Alt-Shift-Click</b> [src] to enable/disable its light.</span>"
|
||||
|
||||
//////////////////////////////
|
||||
// ATTACK PROCS //
|
||||
|
||||
@@ -15,10 +15,6 @@
|
||||
drop_sound = 'sound/items/handling/drinkglass_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/drinkglass_pickup.ogg'
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/set_APTFT()
|
||||
set hidden = FALSE
|
||||
..()
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks/egg)) //breaking eggs
|
||||
var/obj/item/reagent_containers/food/snacks/egg/E = I
|
||||
|
||||
@@ -41,10 +41,6 @@
|
||||
/obj/item/reagent_containers/food/condiment/attack_self(mob/user)
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/set_APTFT()
|
||||
set hidden = FALSE
|
||||
..()
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/attack(mob/M, mob/user, def_zone)
|
||||
|
||||
if(!reagents || !reagents.total_volume)
|
||||
|
||||
@@ -44,10 +44,6 @@
|
||||
if(world.time > last_ant_time + 5 MINUTES)
|
||||
check_for_ants()
|
||||
|
||||
/obj/item/reagent_containers/food/set_APTFT()
|
||||
set hidden = TRUE
|
||||
..()
|
||||
|
||||
/obj/item/reagent_containers/food/proc/check_for_ants()
|
||||
last_ant_time = world.time
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -38,6 +38,10 @@
|
||||
occupant = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/gibber/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'>You can <b>Alt-Click</b> [src] to empty it.</span>"
|
||||
|
||||
/obj/machinery/gibber/suicide_act(mob/living/user)
|
||||
if(occupant || locked)
|
||||
return FALSE
|
||||
@@ -160,16 +164,12 @@
|
||||
INVOKE_ASYNC(src, PROC_REF(feedinTopanim))
|
||||
|
||||
|
||||
/obj/machinery/gibber/verb/eject()
|
||||
set category = "Object"
|
||||
set name = "Empty Gibber"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.incapacitated())
|
||||
/obj/machinery/gibber/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
go_out()
|
||||
add_fingerprint(usr)
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/machinery/gibber/proc/go_out()
|
||||
if(operating || !occupant) //no going out if operating, just in case they manage to trigger go_out before being dead
|
||||
@@ -179,15 +179,13 @@
|
||||
return
|
||||
|
||||
for(var/obj/O in src)
|
||||
O.loc = loc
|
||||
O.forceMove(get_turf(src))
|
||||
|
||||
occupant.forceMove(get_turf(src))
|
||||
occupant = null
|
||||
|
||||
update_icon(UPDATE_OVERLAYS | UPDATE_ICON_STATE)
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/gibber/proc/feedinTopanim()
|
||||
if(!occupant)
|
||||
return
|
||||
|
||||
@@ -131,13 +131,7 @@
|
||||
|
||||
// Datum actions
|
||||
|
||||
/obj/item/deck/verb/draw_card(mob/user)
|
||||
|
||||
set category = "Object"
|
||||
set name = "Draw"
|
||||
set desc = "Draw a card from a deck."
|
||||
set src in view(1)
|
||||
|
||||
/obj/item/deck/proc/draw_card(mob/user)
|
||||
var/mob/living/carbon/human/M = user
|
||||
|
||||
if(user.incapacitated() || !Adjacent(user))
|
||||
@@ -166,13 +160,7 @@
|
||||
user.visible_message("<span class='notice'>[user] draws a card.</span>","<span class='notice'>You draw a card.</span>")
|
||||
to_chat(user,"<span class='notice'>It's the [P].</span>")
|
||||
|
||||
/obj/item/deck/verb/deal_card()
|
||||
|
||||
set category = "Object"
|
||||
set name = "Deal"
|
||||
set desc = "Deal a card from a deck."
|
||||
set src in view(1)
|
||||
|
||||
/obj/item/deck/proc/deal_card()
|
||||
if(usr.incapacitated() || !Adjacent(usr))
|
||||
return
|
||||
|
||||
@@ -191,13 +179,7 @@
|
||||
|
||||
deal_at(usr, M, 1)
|
||||
|
||||
/obj/item/deck/verb/deal_card_multi()
|
||||
|
||||
set category = "Object"
|
||||
set name = "Deal Multiple Cards"
|
||||
set desc = "Deal multiple cards from a deck."
|
||||
set src in view(1)
|
||||
|
||||
/obj/item/deck/proc/deal_card_multi()
|
||||
if(usr.incapacitated() || !Adjacent(usr))
|
||||
return
|
||||
|
||||
@@ -242,14 +224,6 @@
|
||||
/obj/item/deck/AltClick()
|
||||
deckshuffle()
|
||||
|
||||
/obj/item/deck/verb/verb_shuffle()
|
||||
if(!isobserver(usr))
|
||||
set category = "Object"
|
||||
set name = "Shuffle"
|
||||
set desc = "Shuffle the cards in the deck."
|
||||
set src in view(1)
|
||||
deckshuffle()
|
||||
|
||||
/obj/item/deck/proc/deckshuffle()
|
||||
var/mob/living/user = usr
|
||||
if(cooldown < world.time - 1 SECONDS)
|
||||
@@ -440,13 +414,7 @@
|
||||
|
||||
// No more datum action here
|
||||
|
||||
/obj/item/cardhand/verb/Removecard()
|
||||
|
||||
set category = "Object"
|
||||
set name = "Remove card"
|
||||
set desc = "Remove a card from the hand."
|
||||
set src in view(1)
|
||||
|
||||
/obj/item/cardhand/proc/Removecard()
|
||||
var/mob/living/carbon/user = usr
|
||||
|
||||
if(user.incapacitated() || !Adjacent(user))
|
||||
@@ -482,12 +450,7 @@
|
||||
return
|
||||
update_appearance(UPDATE_NAME|UPDATE_DESC|UPDATE_OVERLAYS)
|
||||
|
||||
/obj/item/cardhand/verb/discard()
|
||||
|
||||
set category = "Object"
|
||||
set name = "Discard"
|
||||
set desc = "Place (a) card(s) from your hand in front of you."
|
||||
|
||||
/obj/item/cardhand/proc/discard()
|
||||
var/mob/living/carbon/user = usr
|
||||
|
||||
var/maxcards = min(length(cards), 5)
|
||||
|
||||
@@ -18,9 +18,6 @@
|
||||
pixel_y = rand(8,-8)
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/honeycomb/set_APTFT()
|
||||
set hidden = TRUE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/honeycomb/update_overlays()
|
||||
. = ..()
|
||||
var/image/honey
|
||||
|
||||
@@ -98,10 +98,13 @@
|
||||
item_state = "flare"
|
||||
var/destination
|
||||
|
||||
/obj/item/wormhole_jaunter/contractor/verb/set_destination()
|
||||
set category = "Object"
|
||||
set name = "Change Portal Destination"
|
||||
set src in usr
|
||||
/obj/item/wormhole_jaunter/contractor/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'>You can <b>Alt-Click</b> [src] to change its destination!</span>"
|
||||
|
||||
/obj/item/wormhole_jaunter/contractor/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
var/list/L = list()
|
||||
var/list/areaindex = list()
|
||||
@@ -121,7 +124,6 @@
|
||||
|
||||
var/desc = input("Please select a location to target.", "Flare Target Interface") in L
|
||||
destination = L[desc]
|
||||
return
|
||||
|
||||
/obj/item/wormhole_jaunter/contractor/attack_self(mob/user) // message is later down
|
||||
activate(user, TRUE)
|
||||
|
||||
@@ -241,8 +241,7 @@
|
||||
//for more info on why this is not atom/pull, see examinate() in mob.dm
|
||||
/mob/living/verb/pulled(atom/movable/AM as mob|obj in oview(1))
|
||||
set name = "Pull"
|
||||
set category = "Object"
|
||||
|
||||
set category = null
|
||||
if(istype(AM) && Adjacent(AM))
|
||||
start_pulling(AM, show_message = TRUE)
|
||||
else
|
||||
|
||||
@@ -75,12 +75,17 @@
|
||||
var/current_pda_messaging = null
|
||||
var/custom_sprite = FALSE
|
||||
var/slowdown = 0
|
||||
var/speech_state = "Robotic" // Needed for TGUI shit
|
||||
|
||||
/mob/living/silicon/pai/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
if(istype(loc, /obj/item/paicard))
|
||||
card = loc
|
||||
else
|
||||
card = new(get_turf(src))
|
||||
forceMove(card)
|
||||
card.setPersonality(src)
|
||||
|
||||
if(card)
|
||||
faction = card.faction.Copy()
|
||||
@@ -98,9 +103,8 @@
|
||||
add_language("Gutter")
|
||||
add_language("Trinary")
|
||||
|
||||
//Verbs for pAI mobile form, chassis and Say flavor text
|
||||
verbs += /mob/living/silicon/pai/proc/choose_chassis
|
||||
verbs += /mob/living/silicon/pai/proc/choose_verbs
|
||||
AddSpell(new /obj/effect/proc_holder/spell/access_software_pai)
|
||||
AddSpell(new /obj/effect/proc_holder/spell/unfold_chassis_pai)
|
||||
|
||||
//PDA
|
||||
pda = new(src)
|
||||
@@ -233,27 +237,27 @@
|
||||
// mobile pai mob. This also includes handling some of the general shit that can occur
|
||||
// to it. Really this deserves its own file, but for the moment it can sit here. ~ Z
|
||||
|
||||
/mob/living/silicon/pai/verb/fold_out()
|
||||
set category = "pAI Commands"
|
||||
set name = "Unfold Chassis"
|
||||
/obj/effect/proc_holder/spell/unfold_chassis_pai
|
||||
name = "Unfold/Fold Chassis"
|
||||
desc = "Allows you to fold in/out of your mobile form."
|
||||
clothes_req = FALSE
|
||||
base_cooldown = 20 SECONDS
|
||||
action_icon_state = "repairbot"
|
||||
action_background_icon_state = "bg_tech_blue"
|
||||
|
||||
if(stat || IsSleeping() || IsParalyzed() || IsWeakened())
|
||||
return
|
||||
/obj/effect/proc_holder/spell/unfold_chassis_pai/create_new_targeting()
|
||||
return new /datum/spell_targeting/self
|
||||
|
||||
if(loc != card)
|
||||
to_chat(src, "<span class='warning'>You are already in your mobile form!</span>")
|
||||
return
|
||||
/obj/effect/proc_holder/spell/unfold_chassis_pai/cast(list/targets, mob/living/user = usr)
|
||||
var/mob/living/silicon/pai/pai_user = user
|
||||
|
||||
if(world.time <= last_special)
|
||||
to_chat(src, "<span class='warning'>You must wait before folding your chassis out again!</span>")
|
||||
return
|
||||
if(pai_user.loc != pai_user.card)
|
||||
pai_user.close_up()
|
||||
return TRUE
|
||||
pai_user.force_fold_out()
|
||||
|
||||
last_special = world.time + 200
|
||||
|
||||
//I'm not sure how much of this is necessary, but I would rather avoid issues.
|
||||
force_fold_out()
|
||||
|
||||
visible_message("<span class='notice'>[src] folds outwards, expanding into a mobile form.</span>", "<span class='notice'>You fold outwards, expanding into a mobile form.</span>")
|
||||
pai_user.visible_message("<span class='notice'>[pai_user] folds outwards, expanding into a mobile form.</span>", "<span class='notice'>You fold outwards, expanding into a mobile form.</span>")
|
||||
return TRUE
|
||||
|
||||
/mob/living/silicon/pai/proc/force_fold_out()
|
||||
if(ismob(card.loc))
|
||||
@@ -268,73 +272,6 @@
|
||||
card.forceMove(src)
|
||||
card.screen_loc = null
|
||||
|
||||
/mob/living/silicon/pai/verb/fold_up()
|
||||
set category = "pAI Commands"
|
||||
set name = "Collapse Chassis"
|
||||
|
||||
if(stat || IsSleeping() || IsParalyzed() || IsWeakened())
|
||||
return
|
||||
|
||||
if(loc == card)
|
||||
to_chat(src, "<span class='warning'>You are already in your card form!</span>")
|
||||
return
|
||||
|
||||
if(world.time <= last_special)
|
||||
to_chat(src, "<span class='warning'>You must wait before returning to your card form!</span>")
|
||||
return
|
||||
|
||||
close_up()
|
||||
|
||||
/mob/living/silicon/pai/proc/choose_chassis()
|
||||
set category = "pAI Commands"
|
||||
set name = "Choose Chassis"
|
||||
|
||||
var/list/my_choices = list()
|
||||
var/choice
|
||||
var/finalized = "No"
|
||||
|
||||
//check for custom_sprite
|
||||
if(!custom_sprite)
|
||||
if(ckey in GLOB.configuration.custom_sprites.pai_holoform_ckeys)
|
||||
custom_sprite = TRUE
|
||||
my_choices["Custom"] = "[ckey]-pai"
|
||||
|
||||
my_choices = possible_chassis.Copy()
|
||||
if(custom_sprite)
|
||||
my_choices["Custom"] = "[ckey]-pai"
|
||||
|
||||
if(loc == card) //don't let them continue in card form, since they won't be able to actually see their new mobile form sprite.
|
||||
to_chat(src, "<span class='warning'>You must be in your mobile form to reconfigure your chassis.</span>")
|
||||
return
|
||||
|
||||
while(finalized == "No" && client)
|
||||
choice = input(usr,"What would you like to use for your mobile chassis icon? This decision can only be made once.") as null|anything in my_choices
|
||||
if(!choice) return
|
||||
if(choice == "Custom")
|
||||
icon = 'icons/mob/custom_synthetic/custom-synthetic.dmi'
|
||||
else
|
||||
icon = 'icons/mob/pai.dmi'
|
||||
icon_state = my_choices[choice]
|
||||
finalized = alert("Look at your sprite. Is this what you wish to use?",,"No","Yes")
|
||||
|
||||
chassis = my_choices[choice]
|
||||
verbs -= /mob/living/silicon/pai/proc/choose_chassis
|
||||
|
||||
/mob/living/silicon/pai/proc/choose_verbs()
|
||||
set category = "pAI Commands"
|
||||
set name = "Choose Speech Verbs"
|
||||
|
||||
var/choice = input(usr,"What theme would you like to use for your speech verbs? This decision can only be made once.") as null|anything in possible_say_verbs
|
||||
if(!choice) return
|
||||
|
||||
var/list/sayverbs = possible_say_verbs[choice]
|
||||
speak_statement = sayverbs[1]
|
||||
speak_exclamation = sayverbs[(sayverbs.len>1 ? 2 : sayverbs.len)]
|
||||
speak_query = sayverbs[(sayverbs.len>2 ? 3 : sayverbs.len)]
|
||||
|
||||
verbs -= /mob/living/silicon/pai/proc/choose_verbs
|
||||
|
||||
|
||||
/mob/living/silicon/pai/rest()
|
||||
set name = "Rest"
|
||||
set category = "IC"
|
||||
@@ -390,8 +327,6 @@
|
||||
|
||||
//I'm not sure how much of this is necessary, but I would rather avoid issues.
|
||||
/mob/living/silicon/pai/proc/close_up()
|
||||
|
||||
last_special = world.time + 200
|
||||
stand_up()
|
||||
if(loc == card)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
/mob/living/silicon/pai/Login()
|
||||
..()
|
||||
if(!custom_sprite)
|
||||
if(ckey in GLOB.configuration.custom_sprites.pai_holoform_ckeys)
|
||||
custom_sprite = TRUE
|
||||
@@ -12,11 +12,21 @@ GLOBAL_LIST_INIT(pai_emotions, list(
|
||||
|
||||
GLOBAL_LIST_EMPTY(pai_software_by_key)
|
||||
|
||||
/mob/living/silicon/pai/verb/paiInterface()
|
||||
set category = "pAI Commands"
|
||||
set name = "Software Interface"
|
||||
/obj/effect/proc_holder/spell/access_software_pai
|
||||
name = "Software interface"
|
||||
desc = "Allows you to access your downloaded software."
|
||||
clothes_req = FALSE
|
||||
base_cooldown = 1 SECONDS
|
||||
action_icon_state = "choose_module"
|
||||
action_background_icon_state = "bg_tech_blue"
|
||||
|
||||
ui_interact(src)
|
||||
/obj/effect/proc_holder/spell/access_software_pai/create_new_targeting()
|
||||
return new /datum/spell_targeting/self
|
||||
|
||||
/obj/effect/proc_holder/spell/access_software_pai/cast(list/targets, mob/living/user = usr)
|
||||
var/mob/living/silicon/pai/pai_user = user
|
||||
|
||||
pai_user.ui_interact(pai_user)
|
||||
|
||||
/mob/living/silicon/pai/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.self_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
|
||||
@@ -21,6 +21,32 @@
|
||||
data["emotions"] = emotions
|
||||
data["current_emotion"] = user.card.current_emotion
|
||||
|
||||
var/list/speech_types = list()
|
||||
for(var/name in user.possible_say_verbs)
|
||||
var/list/speech = list()
|
||||
speech["name"] = name
|
||||
speech["id"] = length(speech_types)
|
||||
speech_types[++speech_types.len] = speech
|
||||
|
||||
data["current_speech_verb"] = user.speech_state
|
||||
data["speech_verbs"] = speech_types
|
||||
|
||||
var/list/chassis_choices = list()
|
||||
var/list/chassises_to_add = list()
|
||||
|
||||
chassis_choices = user.possible_chassis.Copy()
|
||||
if(user.custom_sprite)
|
||||
chassis_choices["Custom"] = "[user.ckey]-pai"
|
||||
for(var/name in chassis_choices)
|
||||
var/list/chassis_to_update_with = list()
|
||||
chassis_to_update_with["name"] = name
|
||||
chassis_to_update_with["icon"] = chassis_choices[name]
|
||||
chassis_to_update_with["id"] = length(chassis_to_update_with)
|
||||
chassises_to_add[++chassises_to_add.len] = chassis_to_update_with
|
||||
|
||||
data["available_chassises"] = chassises_to_add
|
||||
data["current_chassis"] = user.chassis
|
||||
|
||||
var/list/available_s = list()
|
||||
for(var/s in GLOB.pai_software_by_key)
|
||||
var/datum/pai_software/PS = GLOB.pai_software_by_key[s]
|
||||
@@ -64,6 +90,20 @@
|
||||
var/toggle_key = params["toggle_key"]
|
||||
if(pai_holder.installed_software[toggle_key])
|
||||
pai_holder.installed_software[toggle_key].toggle(pai_holder)
|
||||
if("setSpeechStyle")
|
||||
pai_holder.speech_state = params["speech_state"]
|
||||
var/list/sayverbs = pai_holder.possible_say_verbs[pai_holder.speech_state]
|
||||
pai_holder.speak_statement = sayverbs[1]
|
||||
pai_holder.speak_exclamation = sayverbs[length(sayverbs) > 1 ? 2 : length(sayverbs)]
|
||||
pai_holder.speak_query = sayverbs[length(sayverbs) > 2 ? 3 : length(sayverbs)]
|
||||
if("setChassis")
|
||||
pai_holder.chassis = params["chassis_to_change"]
|
||||
pai_holder.icon_state = pai_holder.chassis
|
||||
if(pai_holder.icon_state == "[pai_holder.ckey]-pai")
|
||||
pai_holder.icon = 'icons/mob/custom_synthetic/custom-synthetic.dmi'
|
||||
else
|
||||
pai_holder.icon = 'icons/mob/pai.dmi'
|
||||
|
||||
|
||||
// Directives //
|
||||
/datum/pai_software/directives
|
||||
|
||||
@@ -1294,8 +1294,6 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
|
||||
if(W)
|
||||
W.attack_self(src)
|
||||
|
||||
return
|
||||
|
||||
/mob/living/silicon/robot/proc/SetLockdown(state = 1)
|
||||
// They stay locked down if their wire is cut.
|
||||
if(wires.is_cut(WIRE_BORG_LOCKED))
|
||||
|
||||
@@ -20,10 +20,7 @@
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/mob/living/simple_animal/slime/verb/Feed()
|
||||
set category = "Slime"
|
||||
set desc = "This will let you feed on any valid creature in the surrounding area. This should also be used to halt the feeding process."
|
||||
|
||||
/mob/living/simple_animal/slime/proc/Feed()
|
||||
if(stat)
|
||||
return 0
|
||||
|
||||
@@ -123,10 +120,7 @@
|
||||
layer = initial(layer)
|
||||
buckled.unbuckle_mob(src,force=TRUE)
|
||||
|
||||
/mob/living/simple_animal/slime/verb/Evolve()
|
||||
set category = "Slime"
|
||||
set desc = "This will let you evolve from baby to adult slime."
|
||||
|
||||
/mob/living/simple_animal/slime/proc/Evolve()
|
||||
if(stat)
|
||||
to_chat(src, "<i>I must be conscious to do this...</i>")
|
||||
return
|
||||
@@ -156,10 +150,7 @@
|
||||
var/datum/action/innate/slime/reproduce/A = new
|
||||
A.Grant(S)
|
||||
|
||||
/mob/living/simple_animal/slime/verb/Reproduce()
|
||||
set category = "Slime"
|
||||
set desc = "This will make you split into four Slimes."
|
||||
|
||||
/mob/living/simple_animal/slime/proc/Reproduce()
|
||||
if(stat)
|
||||
to_chat(src, "<i>I must be conscious to do this...</i>")
|
||||
return
|
||||
|
||||
@@ -781,6 +781,8 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
|
||||
/mob/proc/is_dead()
|
||||
return stat == DEAD
|
||||
|
||||
// Nobody in their right mind will have this enabled on the production server, uncomment if you want this for some reason
|
||||
/*
|
||||
/mob/verb/abandon_mob()
|
||||
set name = "Respawn"
|
||||
set category = "OOC"
|
||||
@@ -816,6 +818,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
|
||||
M.key = key
|
||||
return
|
||||
|
||||
*/
|
||||
/mob/verb/observe()
|
||||
set name = "Observe"
|
||||
set category = "OOC"
|
||||
|
||||
@@ -85,6 +85,10 @@
|
||||
/datum/job/syndicateofficer
|
||||
)
|
||||
|
||||
/obj/machinery/newscaster/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'><b>Alt-Click</b> to remove the photo currently inside it.</span>"
|
||||
|
||||
/obj/machinery/newscaster/Destroy()
|
||||
GLOB.allNewscasters -= src
|
||||
viewing_channel = null
|
||||
@@ -723,15 +727,10 @@
|
||||
/**
|
||||
* Ejects the currently loaded photo if there is one.
|
||||
*/
|
||||
/obj/machinery/newscaster/verb/eject_photo_verb()
|
||||
set name = "Eject Photo"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.incapacitated())
|
||||
/obj/machinery/newscaster/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
eject_photo(usr)
|
||||
eject_photo(user)
|
||||
|
||||
#undef CHANNEL_NAME_MAX_LENGTH
|
||||
#undef CHANNEL_DESC_MAX_LENGTH
|
||||
|
||||
@@ -27,9 +27,7 @@
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/clipboard/verb/removePen(mob/user)
|
||||
set category = "Object"
|
||||
set name = "Remove clipboard pen"
|
||||
/obj/item/clipboard/proc/removePen(mob/user)
|
||||
if(!ishuman(user) || user.incapacitated())
|
||||
return
|
||||
penPlacement(user, containedpen, FALSE)
|
||||
@@ -42,6 +40,7 @@
|
||||
|
||||
/obj/item/clipboard/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'><b>Alt-Click</b> to remove its pen.</span>"
|
||||
if(in_range(user, src) && toppaper)
|
||||
. += toppaper.examine(user)
|
||||
|
||||
|
||||
@@ -48,6 +48,10 @@ GLOBAL_LIST_EMPTY(fax_blacklist)
|
||||
GLOB.allfaxes -= src
|
||||
return ..()
|
||||
|
||||
/obj/machinery/photocopier/faxmachine/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'><b>Alt-Click</b> [src] to remove its currently stored ID.</span>"
|
||||
|
||||
/obj/machinery/photocopier/faxmachine/proc/update_network()
|
||||
if(department != "Unknown")
|
||||
if(!(("[department]" in GLOB.alldepartments) || ("[department]" in GLOB.hidden_departments) || ("[department]" in GLOB.admin_departments) || ("[department]" in GLOB.hidden_admin_departments)))
|
||||
@@ -267,22 +271,19 @@ GLOBAL_LIST_EMPTY(fax_blacklist)
|
||||
scan = card
|
||||
SStgui.update_uis(src)
|
||||
|
||||
/obj/machinery/photocopier/faxmachine/verb/eject_id()
|
||||
set category = null
|
||||
set name = "Eject ID Card"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.incapacitated())
|
||||
/obj/machinery/photocopier/faxmachine/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
if(scan)
|
||||
to_chat(usr, "You remove [scan] from [src].")
|
||||
scan.forceMove(get_turf(src))
|
||||
if(!usr.get_active_hand() && Adjacent(usr))
|
||||
usr.put_in_hands(scan)
|
||||
to_chat(user, "<span class='notice'>You remove [scan] from [src].</span>")
|
||||
if(!user.get_active_hand())
|
||||
user.put_in_hands(scan)
|
||||
else if(!user.put_in_inactive_hand(scan))
|
||||
scan.forceMove(get_turf(src))
|
||||
scan = null
|
||||
else
|
||||
to_chat(usr, "There is nothing to remove from [src].")
|
||||
to_chat(user, "<span class='notice'>There is nothing to remove from [src].</span>")
|
||||
|
||||
/obj/machinery/photocopier/faxmachine/proc/sendfax(destination, mob/sender)
|
||||
use_power(active_power_consumption)
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
|
||||
/obj/item/paper/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'><b>Alt-Click</b> [src] with a pen in hand to rename it.</span>"
|
||||
if(user.is_literate())
|
||||
if(in_range(user, src) || isobserver(user))
|
||||
show_content(user)
|
||||
@@ -91,16 +92,22 @@
|
||||
popup.open()
|
||||
return data
|
||||
|
||||
/obj/item/paper/verb/rename()
|
||||
set name = "Rename paper"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(HAS_TRAIT(usr, TRAIT_CLUMSY) && prob(50))
|
||||
to_chat(usr, "<span class='warning'>You cut yourself on the paper.</span>")
|
||||
/obj/item/paper/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
if(!usr.is_literate())
|
||||
to_chat(usr, "<span class='notice'>You don't know how to read.</span>")
|
||||
|
||||
if(is_pen(user.get_active_hand()))
|
||||
rename(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/paper/proc/rename(mob/user)
|
||||
|
||||
if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
|
||||
to_chat(user, "<span class='warning'>You cut yourself on the paper.</span>")
|
||||
return
|
||||
if(!user.is_literate())
|
||||
to_chat(user, "<span class='notice'>You don't know how to read.</span>")
|
||||
return
|
||||
var/n_name = rename_interactive(usr)
|
||||
if(isnull(n_name))
|
||||
@@ -109,8 +116,7 @@
|
||||
desc = "This is a paper titled '" + name + "'."
|
||||
else
|
||||
desc = initial(desc)
|
||||
add_fingerprint(usr)
|
||||
return
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/paper/attack_self(mob/living/user as mob)
|
||||
user.examinate(src)
|
||||
|
||||
@@ -103,6 +103,8 @@
|
||||
|
||||
/obj/item/paper_bundle/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'><b>Alt-Click</b> [src] with a pen in hand to rename it.</span>"
|
||||
. += "<span class='info'><b>Alt-Shift-Click</b> [src] to undo the paper bundle.</span>"
|
||||
if(in_range(user, src))
|
||||
show_content(user)
|
||||
else
|
||||
@@ -199,38 +201,31 @@
|
||||
/obj/item/paper_bundle/AltClick(mob/user)
|
||||
if(in_range(user, src) && !user.incapacitated())
|
||||
if(is_pen(user.get_active_hand()))
|
||||
rename()
|
||||
rename(user)
|
||||
return
|
||||
|
||||
. = ..()
|
||||
|
||||
/obj/item/paper_bundle/verb/rename()
|
||||
set name = "Rename bundle"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
var/n_name = sanitize(copytext(input(usr, "What would you like to label the bundle?", "Bundle Labelling", name) as text, 1, MAX_MESSAGE_LEN))
|
||||
if((loc == usr && usr.stat == 0))
|
||||
/obj/item/paper_bundle/proc/rename(mob/user)
|
||||
var/n_name = sanitize(copytext(input(user, "What would you like to label the bundle?", "Bundle Labelling", name) as text, 1, MAX_MESSAGE_LEN))
|
||||
if((loc == user && !user.stat))
|
||||
name = "[(n_name ? "[n_name]" : "paper bundle")]"
|
||||
|
||||
add_fingerprint(usr)
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/paper_bundle/AltShiftClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
|
||||
/obj/item/paper_bundle/verb/remove_all()
|
||||
set name = "Loose bundle"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
to_chat(usr, "<span class='notice'>You loosen the bundle.</span>")
|
||||
to_chat(user, "<span class='notice'>You loosen the bundle.</span>")
|
||||
|
||||
for(var/obj/O in src)
|
||||
O.loc = usr.loc
|
||||
O.forceMove(get_turf(user))
|
||||
O.layer = initial(O.layer)
|
||||
O.plane = initial(O.plane)
|
||||
O.add_fingerprint(usr)
|
||||
O.add_fingerprint(user)
|
||||
|
||||
usr.unEquip(src)
|
||||
user.unEquip(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/paper_bundle/update_desc()
|
||||
|
||||
@@ -76,6 +76,16 @@
|
||||
show(user)
|
||||
else
|
||||
. += "<span class='notice'>It is too far away.</span>"
|
||||
. += "<span class='info'><b>Alt-Click</b> [src] with a pen in hand to rename it.</span>"
|
||||
|
||||
/obj/item/photo/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
if(is_pen(user.get_active_hand()))
|
||||
rename(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/photo/proc/show(mob/user as mob)
|
||||
var/icon/img_shown = new/icon(img)
|
||||
@@ -94,20 +104,13 @@
|
||||
+ "[scribble ? "<br>Written on the back:<br><i>[scribble]</i>" : ""]"\
|
||||
+ "</body></html>", "window=Photo[UID()];size=[64*photo_size]x[scribble ? 400 : 64*photo_size]")
|
||||
onclose(usr, "Photo[UID()]")
|
||||
return
|
||||
|
||||
/obj/item/photo/verb/rename()
|
||||
set name = "Rename photo"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
var/n_name = sanitize(copytext(input(usr, "What would you like to label the photo?", "Photo Labelling", name) as text, 1, MAX_MESSAGE_LEN))
|
||||
/obj/item/photo/proc/rename(mob/user)
|
||||
var/n_name = sanitize(copytext(input(user, "What would you like to label the photo?", "Photo Labelling", name) as text, 1, MAX_MESSAGE_LEN))
|
||||
//loc.loc check is for making possible renaming photos in clipboards
|
||||
if(( (loc == usr || (loc.loc && loc.loc == usr)) && usr.stat == 0))
|
||||
if(( (loc == user || (loc.loc && loc.loc == user)) && !user.stat))
|
||||
name = "[(n_name ? "[n_name]" : "photo")]"
|
||||
add_fingerprint(usr)
|
||||
return
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
/**************
|
||||
* photo album *
|
||||
@@ -186,6 +189,7 @@
|
||||
. = ..()
|
||||
if(!digital)
|
||||
. += "<span class='notice'>There is [pictures_left] photos left.</span>"
|
||||
. += "<span class='info'><b>Alt-Click</b> [src] to change the photo size.</span>"
|
||||
|
||||
/obj/item/camera/spooky/CheckParts(list/parts_list)
|
||||
..()
|
||||
@@ -205,18 +209,16 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor
|
||||
see_ghosts = TRUE
|
||||
|
||||
/obj/item/camera/AltClick(mob/user)
|
||||
if(in_range(user, src) && !user.incapacitated())
|
||||
change_size()
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/camera/verb/change_size()
|
||||
set name = "Set Photo Focus"
|
||||
set category = "Object"
|
||||
change_size(user)
|
||||
|
||||
/obj/item/camera/proc/change_size(mob/user)
|
||||
var/nsize = input("Photo Size","Pick a size of resulting photo.") as null|anything in list(1,3,5,7)
|
||||
if(nsize)
|
||||
size = nsize
|
||||
to_chat(usr, "<span class='notice'>Camera will now take [size]x[size] photos.</span>")
|
||||
to_chat(user, "<span class='notice'>Camera will now take [size]x[size] photos.</span>")
|
||||
|
||||
/obj/item/camera/attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
||||
return
|
||||
@@ -518,36 +520,38 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor
|
||||
var/datum/picture/P = createpicture(target, user, turfs, mobs, flag)
|
||||
saved_pictures += P
|
||||
|
||||
/obj/item/camera/digital/verb/print_picture()
|
||||
set name = "Print picture"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
/obj/item/camera/digital/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'><b>Alt-Shift-Click</b> [src] to print a specific photo.</span>"
|
||||
. += "<span class='info'><b>Ctrl-Shift-Click</b> [src] to delete a specific photo.</span>"
|
||||
|
||||
if(saved_pictures.len == 0)
|
||||
to_chat(usr, "<span class='userdanger'>No images saved.</span>")
|
||||
/obj/item/camera/digital/AltShiftClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
if(pictures_left == 0)
|
||||
to_chat(usr, "<span class='userdanger'>There is no film left to print.</span>")
|
||||
if(!length(saved_pictures))
|
||||
to_chat(user, "<span class='userdanger'>No images saved.</span>")
|
||||
return
|
||||
if(!pictures_left)
|
||||
to_chat(user, "<span class='userdanger'>There is no film left to print.</span>")
|
||||
return
|
||||
|
||||
var/datum/picture/P = null
|
||||
P = input("Select image to print:",P) as null|anything in saved_pictures
|
||||
if(P)
|
||||
printpicture(usr,P)
|
||||
var/datum/picture/picture
|
||||
picture = input("Select image to print:", picture) as null|anything in saved_pictures
|
||||
if(picture)
|
||||
printpicture(user, picture)
|
||||
pictures_left --
|
||||
|
||||
/obj/item/camera/digital/verb/delete_picture()
|
||||
set name = "Delete picture"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(saved_pictures.len == 0)
|
||||
to_chat(usr, "<span class='userdanger'>No images saved</span>")
|
||||
/obj/item/camera/digital/CtrlShiftClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
var/datum/picture/P = null
|
||||
P = input("Select image to delete:",P) as null|anything in saved_pictures
|
||||
if(P)
|
||||
saved_pictures -= P
|
||||
|
||||
if(!length(saved_pictures))
|
||||
to_chat(user, "<span class='userdanger'>No images saved</span>")
|
||||
return
|
||||
var/datum/picture/picture
|
||||
picture = input("Select image to delete:", picture) as null|anything in saved_pictures
|
||||
if(picture)
|
||||
saved_pictures -= picture
|
||||
|
||||
/**************
|
||||
*video camera *
|
||||
|
||||
+13
-37
@@ -94,6 +94,12 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
start_program(find_program(/datum/data/pda/app/main_menu))
|
||||
silent = initial(silent)
|
||||
|
||||
/obj/item/pda/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'><b>Alt-Click</b> [src] to remove its ID card.</span>"
|
||||
. += "<span class='info'><b>Ctrl-Click</b> [src] to remove its pen.</span>"
|
||||
. += "<span class='info'>Use a screwdriver on [src] to reset it.</span>"
|
||||
|
||||
/obj/item/pda/proc/can_use()
|
||||
if(!ismob(loc))
|
||||
return 0
|
||||
@@ -159,22 +165,15 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
/obj/item/pda/proc/close(mob/user)
|
||||
SStgui.close_uis(src)
|
||||
|
||||
/obj/item/pda/verb/verb_reset_pda()
|
||||
set category = "Object"
|
||||
set name = "Reset PDA"
|
||||
set src in usr
|
||||
|
||||
if(issilicon(usr))
|
||||
/obj/item/pda/screwdriver_act(mob/living/user, obj/item/I)
|
||||
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
|
||||
return
|
||||
|
||||
if(can_use(usr))
|
||||
start_program(find_program(/datum/data/pda/app/main_menu))
|
||||
notifying_programs.Cut()
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
to_chat(usr, "<span class='notice'>You press the reset button on \the [src].</span>")
|
||||
SStgui.update_uis(src)
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You cannot do this while restrained.</span>")
|
||||
start_program(find_program(/datum/data/pda/app/main_menu))
|
||||
notifying_programs.Cut()
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
to_chat(user, "<span class='notice'>You press the reset button on \the [src].</span>")
|
||||
SStgui.update_uis(src)
|
||||
|
||||
/obj/item/pda/AltClick(mob/user)
|
||||
if(HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
|
||||
@@ -217,30 +216,7 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
if(wearing_human.wear_id == src)
|
||||
wearing_human.sec_hud_set_ID()
|
||||
|
||||
/obj/item/pda/verb/verb_remove_id()
|
||||
set category = "Object"
|
||||
set name = "Remove id"
|
||||
set src in usr
|
||||
|
||||
if(issilicon(usr))
|
||||
return
|
||||
|
||||
if( can_use(usr) )
|
||||
if(id)
|
||||
remove_id(usr)
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>This PDA does not have an ID in it.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You cannot do this while restrained.</span>")
|
||||
|
||||
/obj/item/pda/verb/verb_remove_pen()
|
||||
set category = "Object"
|
||||
set name = "Remove pen"
|
||||
set src in usr
|
||||
remove_pen(usr)
|
||||
|
||||
/obj/item/pda/proc/remove_pen(mob/user)
|
||||
|
||||
if(issilicon(user))
|
||||
return
|
||||
|
||||
|
||||
@@ -129,8 +129,7 @@
|
||||
*/
|
||||
/mob/verb/pointed(atom/A as mob|obj|turf in view())
|
||||
set name = "Point To"
|
||||
set category = "Object"
|
||||
|
||||
set category = null
|
||||
if(next_move >= world.time)
|
||||
return
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
. = ..()
|
||||
if(panel_open)
|
||||
. += "<span class='notice'>The maintenance panel is open.</span>"
|
||||
. += "<span class='info'><b>Alt-Click</b> to rotate [src].</span>"
|
||||
|
||||
/obj/machinery/power/emitter/RefreshParts()
|
||||
var/max_firedelay = 120
|
||||
@@ -72,24 +73,15 @@
|
||||
power_usage -= 50 * M.rating
|
||||
active_power_consumption = power_usage
|
||||
|
||||
/obj/machinery/power/emitter/verb/rotate()
|
||||
set name = "Rotate"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
/obj/machinery/power/emitter/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
if(anchored)
|
||||
to_chat(usr, "It is fastened to the floor!")
|
||||
to_chat(user, "<span class='notice'>It is fastened to the floor!</span>")
|
||||
return
|
||||
dir = turn(dir, 90)
|
||||
|
||||
/obj/machinery/power/emitter/AltClick(mob/user)
|
||||
if(user.incapacitated())
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
rotate()
|
||||
|
||||
/obj/machinery/power/emitter/Destroy()
|
||||
msg_admin_attack("Emitter deleted at ([x],[y],[z] - [ADMIN_JMP(src)]) [usr ? "Broken by [key_name_admin(usr)]" : ""]", ATKLOG_FEW)
|
||||
log_game("Emitter deleted at ([x],[y],[z])")
|
||||
|
||||
+12
-53
@@ -87,39 +87,13 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
|
||||
icon_state = "end_cap"
|
||||
reference = "end_cap"
|
||||
|
||||
/obj/structure/particle_accelerator/verb/rotate()
|
||||
set name = "Rotate Clockwise"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.stat || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED) || usr.restrained())
|
||||
return
|
||||
if(anchored)
|
||||
to_chat(usr, "It is fastened to the floor!")
|
||||
return 0
|
||||
dir = turn(dir, 270)
|
||||
return 1
|
||||
|
||||
/obj/structure/particle_accelerator/AltClick(mob/user)
|
||||
if(user.incapacitated())
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
rotate()
|
||||
|
||||
/obj/structure/particle_accelerator/verb/rotateccw()
|
||||
set name = "Rotate Counter Clockwise"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.stat || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED) || usr.restrained())
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
if(anchored)
|
||||
to_chat(usr, "It is fastened to the floor!")
|
||||
return 0
|
||||
dir = turn(dir, 90)
|
||||
return 1
|
||||
to_chat(user, "<span class='notice'>It is fastened to the floor!</span>")
|
||||
return
|
||||
dir = turn(dir, 270)
|
||||
|
||||
/obj/structure/particle_accelerator/examine(mob/user)
|
||||
. = ..()
|
||||
@@ -135,7 +109,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
|
||||
if(powered)
|
||||
desc = desc_holder
|
||||
if(!anchored)
|
||||
. += "<span class='notice'>Alt-click to rotate it.</span>"
|
||||
. += "<span class='notice'><b>Alt-Click</b> to rotate it.</span>"
|
||||
|
||||
/obj/structure/particle_accelerator/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
@@ -260,32 +234,17 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
|
||||
var/strength = 0
|
||||
var/desc_holder = null
|
||||
|
||||
/obj/structure/particle_accelerator/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'><b>Alt-Click</b> to rotate it.</span>"
|
||||
|
||||
/obj/machinery/particle_accelerator/verb/rotate()
|
||||
set name = "Rotate Clockwise"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.stat || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED) || usr.restrained())
|
||||
/obj/machinery/particle_accelerator/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
if(anchored)
|
||||
to_chat(usr, "It is fastened to the floor!")
|
||||
return 0
|
||||
to_chat(user, "<span class='notice'>It is fastened to the floor!</span>")
|
||||
return
|
||||
dir = turn(dir, 270)
|
||||
return 1
|
||||
|
||||
/obj/machinery/particle_accelerator/verb/rotateccw()
|
||||
set name = "Rotate Counter-Clockwise"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(usr.stat || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED) || usr.restrained())
|
||||
return
|
||||
if(anchored)
|
||||
to_chat(usr, "It is fastened to the floor!")
|
||||
return 0
|
||||
dir = turn(dir, 90)
|
||||
return 1
|
||||
|
||||
/obj/machinery/particle_accelerator/attackby(obj/item/W, mob/user, params)
|
||||
if(!iscoil(W))
|
||||
|
||||
@@ -366,10 +366,6 @@
|
||||
clear_bayonet()
|
||||
|
||||
/obj/item/gun/proc/toggle_gunlight()
|
||||
set name = "Toggle Gun Light"
|
||||
set category = "Object"
|
||||
set desc = "Click to toggle your weapon's attached flashlight."
|
||||
|
||||
if(!gun_light)
|
||||
return
|
||||
gun_light.on = !gun_light.on
|
||||
|
||||
@@ -9,10 +9,9 @@
|
||||
can_holster = TRUE
|
||||
execution_speed = 5 SECONDS
|
||||
|
||||
/obj/item/gun/projectile/revolver/Initialize(mapload)
|
||||
/obj/item/gun/projectile/revolver/examine(mob/user)
|
||||
. = ..()
|
||||
if(!istype(magazine, /obj/item/ammo_box/magazine/internal/cylinder))
|
||||
verbs -= /obj/item/gun/projectile/revolver/verb/spin
|
||||
. += "<span class='notice'>You can <b>Alt-Click</b> [src] to spin it's barrel.</span>"
|
||||
|
||||
/obj/item/gun/projectile/revolver/chamber_round(spin = 1)
|
||||
if(spin)
|
||||
@@ -58,24 +57,16 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
|
||||
/obj/item/gun/projectile/revolver/verb/spin()
|
||||
set name = "Spin Chamber"
|
||||
set category = "Object"
|
||||
set desc = "Click to spin your revolver's chamber."
|
||||
|
||||
var/mob/M = usr
|
||||
|
||||
if(M.stat || !in_range(M,src))
|
||||
/obj/item/gun/projectile/revolver/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
|
||||
if(istype(magazine, /obj/item/ammo_box/magazine/internal/cylinder))
|
||||
var/obj/item/ammo_box/magazine/internal/cylinder/C = magazine
|
||||
C.spin()
|
||||
chamber_round(0)
|
||||
playsound(loc, 'sound/weapons/revolver_spin.ogg', 50, 1)
|
||||
usr.visible_message("[usr] spins [src]'s chamber.", "<span class='notice'>You spin [src]'s chamber.</span>")
|
||||
else
|
||||
verbs -= /obj/item/gun/projectile/revolver/verb/spin
|
||||
playsound(get_turf(user), 'sound/weapons/revolver_spin.ogg', 50, 1)
|
||||
user.visible_message("<span class='warning'>[usr] spins [src]'s chamber.</span>", "<span class='notice'>You spin [src]'s chamber.</span>")
|
||||
|
||||
/obj/item/gun/projectile/revolver/can_shoot()
|
||||
return get_ammo(0,0)
|
||||
@@ -153,7 +144,9 @@
|
||||
/obj/item/gun/projectile/revolver/fingergun/Initialize(mapload, new_parent_spell)
|
||||
. = ..()
|
||||
parent_spell = new_parent_spell
|
||||
verbs -= /obj/item/gun/projectile/revolver/verb/spin
|
||||
|
||||
/obj/item/gun/projectile/revolver/fingergun/AltClick(mob/user) // can't spin a barrel that doesn't exist!
|
||||
return
|
||||
|
||||
/obj/item/gun/projectile/revolver/fingergun/shoot_with_empty_chamber(/*mob/living/user as mob|obj*/)
|
||||
to_chat(usr, "<span class='warning'>You are out of ammo! You holster your fingers.</span>")
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
. += "<span class='notice'>\A [cell] is mounted onto [src]. Battery cell charge: [cell.charge]/[cell.maxcharge]"
|
||||
else
|
||||
. += "<span class='notice'>It has an empty mount for a battery cell.</span>"
|
||||
. += "<span class='info'><b>Alt-Click</b> [src] to adjust it's tension.</span>"
|
||||
|
||||
/obj/item/gun/throw/crossbow/modify_projectile(obj/item/I, on_chamber = 0)
|
||||
if(cell && on_chamber && istype(I, /obj/item/arrow/rod))
|
||||
@@ -129,13 +130,8 @@
|
||||
. = ..()
|
||||
QDEL_NULL(cell)
|
||||
|
||||
/obj/item/gun/throw/crossbow/verb/set_tension()
|
||||
set name = "Adjust Tension"
|
||||
set category = "Object"
|
||||
set src in range(0)
|
||||
|
||||
var/mob/user = usr
|
||||
if(user.incapacitated())
|
||||
/obj/item/gun/throw/crossbow/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
var/choice = input("Select tension to draw to:", "[src]", XBOW_TENSION_FULL) as null|anything in possible_tensions
|
||||
if(!choice)
|
||||
|
||||
@@ -15,12 +15,8 @@
|
||||
var/temperature_min = 0 // To limit the temperature of a reagent container can atain when exposed to heat/cold
|
||||
var/temperature_max = 10000
|
||||
|
||||
/obj/item/reagent_containers/verb/set_APTFT() //set amount_per_transfer_from_this
|
||||
set name = "Set transfer amount"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(!usr.Adjacent(src) || !ishuman(usr) || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED))
|
||||
/obj/item/reagent_containers/AltClick(mob/user)
|
||||
if(!Adjacent(user) || !length(possible_transfer_amounts) || !ishuman(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
|
||||
return
|
||||
|
||||
var/default = null
|
||||
@@ -30,25 +26,20 @@
|
||||
if(!new_transfer_rate)
|
||||
return
|
||||
|
||||
if(!usr.Adjacent(src))
|
||||
to_chat(usr, "<span class='warning'>You have moved too far away!</span>")
|
||||
if(!Adjacent(user))
|
||||
to_chat(user, "<span class='warning'>You have moved too far away!</span>")
|
||||
return
|
||||
if(!ishuman(usr) || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED))
|
||||
to_chat(usr, "<span class='warning'>You can't use your hands!</span>")
|
||||
if(!ishuman(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
|
||||
to_chat(user, "<span class='warning'>You can't use your hands!</span>")
|
||||
return
|
||||
|
||||
amount_per_transfer_from_this = new_transfer_rate
|
||||
to_chat(usr, "<span class='notice'>[src] will now transfer [amount_per_transfer_from_this] units at a time.</span>")
|
||||
|
||||
/obj/item/reagent_containers/AltClick()
|
||||
set_APTFT()
|
||||
to_chat(user, "<span class='notice'>[src] will now transfer [amount_per_transfer_from_this] units at a time.</span>")
|
||||
|
||||
/obj/item/reagent_containers/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!reagents) // Some subtypes create their own reagents
|
||||
create_reagents(volume, temperature_min, temperature_max)
|
||||
if(!possible_transfer_amounts)
|
||||
verbs -= /obj/item/reagent_containers/verb/set_APTFT
|
||||
if(spawned_disease)
|
||||
var/datum/disease/F = new spawned_disease(0)
|
||||
var/list/data = list("viruses" = list(F), "blood_color" = "#A10808")
|
||||
@@ -109,4 +100,4 @@
|
||||
|
||||
// Items that have no valid possible_transfer_amounts shouldn't say their transfer rate is variable
|
||||
if(possible_transfer_amounts)
|
||||
. += "<span class='notice'>Alt-click to change the transfer amount.</span>"
|
||||
. += "<span class='info'><b>Alt-Click</b> to change the transfer amount.</span>"
|
||||
|
||||
@@ -17,15 +17,16 @@
|
||||
var/measured_health = 0 // Used for measuring health; we don't want this to stop applying once the person's health isn't changing.
|
||||
var/static/list/safe_chem_applicator_list = list("silver_sulfadiazine", "styptic_powder", "synthflesh")
|
||||
|
||||
/obj/item/reagent_containers/applicator/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'><b>Alt-Click</b> to empty it.</span>"
|
||||
|
||||
/obj/item/reagent_containers/applicator/emag_act(mob/user)
|
||||
if(!emagged)
|
||||
emagged = TRUE
|
||||
ignore_flags = TRUE
|
||||
to_chat(user, "<span class='warning'>You short out the safeties on [src].</span>")
|
||||
|
||||
/obj/item/reagent_containers/applicator/set_APTFT()
|
||||
set hidden = TRUE
|
||||
|
||||
/obj/item/reagent_containers/applicator/on_reagent_change()
|
||||
if(!emagged)
|
||||
var/found_forbidden_reagent = FALSE
|
||||
@@ -120,18 +121,14 @@
|
||||
|
||||
playsound(get_turf(src), pick('sound/goonstation/items/mender.ogg', 'sound/goonstation/items/mender2.ogg'), 50, 1)
|
||||
|
||||
/obj/item/reagent_containers/applicator/verb/empty()
|
||||
set name = "Empty Applicator"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(usr.incapacitated())
|
||||
/obj/item/reagent_containers/applicator/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
if(alert(usr, "Are you sure you want to empty [src]?", "Empty Applicator:", "Yes", "No") != "Yes")
|
||||
if(alert(user, "Are you sure you want to empty [src]?", "Empty Applicator:", "Yes", "No") != "Yes")
|
||||
return
|
||||
if(!usr.incapacitated() && isturf(usr.loc) && loc == usr)
|
||||
to_chat(usr, "<span class='notice'>You empty [src] onto the floor.</span>")
|
||||
reagents.reaction(usr.loc)
|
||||
if(!user.incapacitated() && isturf(user.loc) && loc == user)
|
||||
to_chat(user, "<span class='notice'>You empty [src] onto the floor.</span>")
|
||||
reagents.reaction(user.loc)
|
||||
reagents.clear_reagents()
|
||||
|
||||
/obj/item/reagent_containers/applicator/brute
|
||||
|
||||
@@ -130,6 +130,11 @@
|
||||
var/obj/item/assembly_holder/assembly = null
|
||||
var/can_assembly = 1
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/examine(mob/user)
|
||||
. = ..()
|
||||
if(assembly)
|
||||
. += "<span class='notice'>There is an [assembly] attached to it, use a screwdriver to remove it.</span>"
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/on_reagent_change()
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
|
||||
@@ -165,20 +170,6 @@
|
||||
if(assembly)
|
||||
. += "assembly"
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/verb/remove_assembly()
|
||||
set name = "Remove Assembly"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
if(assembly)
|
||||
to_chat(usr, "<span class='notice'>You detach [assembly] from [src]</span>")
|
||||
usr.put_in_hands(assembly)
|
||||
assembly = null
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>There is no assembly to remove.</span>")
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/proc/heat_beaker()
|
||||
if(reagents)
|
||||
reagents.temperature_reagents(4000)
|
||||
@@ -215,6 +206,17 @@
|
||||
if(assembly)
|
||||
assembly.hear_message(M, msg)
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/screwdriver_act(mob/living/user, obj/item/I)
|
||||
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
|
||||
return
|
||||
if(assembly)
|
||||
to_chat(user, "<span class='notice'>You detach [assembly] from [src]</span>")
|
||||
user.put_in_hands(assembly)
|
||||
assembly = null
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There is no assembly to remove.</span>")
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/large
|
||||
name = "large beaker"
|
||||
desc = "A large glass beaker with twice the capacity of a normal beaker."
|
||||
|
||||
@@ -95,19 +95,16 @@
|
||||
. = ..()
|
||||
if(get_dist(user, src) && user == loc)
|
||||
. += "[round(reagents.total_volume)] units left."
|
||||
. += "<span class='info'><b>Alt-Click</b> to empty it.</span>"
|
||||
|
||||
/obj/item/reagent_containers/spray/verb/empty()
|
||||
|
||||
set name = "Empty Spray Bottle"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
if(usr.stat || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED) || usr.restrained())
|
||||
/obj/item/reagent_containers/spray/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
if(alert(usr, "Are you sure you want to empty that?", "Empty Bottle:", "Yes", "No") != "Yes")
|
||||
if(alert(user, "Are you sure you want to empty that?", "Empty Bottle:", "Yes", "No") != "Yes")
|
||||
return
|
||||
if(isturf(usr.loc) && loc == usr)
|
||||
to_chat(usr, "<span class='notice'>You empty [src] onto the floor.</span>")
|
||||
reagents.reaction(usr.loc)
|
||||
if(isturf(user.loc) && loc == user)
|
||||
to_chat(user, "<span class='notice'>You empty [src] onto the floor.</span>")
|
||||
reagents.reaction(user.loc)
|
||||
reagents.clear_reagents()
|
||||
|
||||
//space cleaner
|
||||
|
||||
@@ -23,9 +23,6 @@
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
|
||||
/obj/item/reagent_containers/syringe/set_APTFT()
|
||||
set hidden = TRUE
|
||||
|
||||
/obj/item/reagent_containers/syringe/on_reagent_change()
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -24,6 +24,10 @@
|
||||
dir = direction
|
||||
update()
|
||||
|
||||
/obj/structure/disposalconstruct/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='info'><b>Alt-Click</b> to rotate it, <b>Alt-Shift-Click to flip it.</b></span>"
|
||||
|
||||
// update iconstate and dpdir due to dir and type
|
||||
/obj/structure/disposalconstruct/proc/update()
|
||||
base_state = get_pipe_icon(ptype)
|
||||
@@ -72,40 +76,27 @@
|
||||
invisibility = (intact && level == 1) ? INVISIBILITY_MAXIMUM : 0 // hide if floor is intact
|
||||
update()
|
||||
|
||||
|
||||
// flip and rotate verbs
|
||||
/obj/structure/disposalconstruct/verb/rotate()
|
||||
set name = "Rotate Pipe"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(usr.stat)
|
||||
/obj/structure/disposalconstruct/AltClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
rotate(user)
|
||||
|
||||
/obj/structure/disposalconstruct/proc/rotate(mob/user)
|
||||
if(anchored)
|
||||
to_chat(usr, "You must unfasten the pipe before rotating it.")
|
||||
to_chat(user, "<span class='notice'>You must unfasten the pipe before rotating it.</span>")
|
||||
return
|
||||
|
||||
dir = turn(dir, -90)
|
||||
update()
|
||||
|
||||
/obj/structure/disposalconstruct/AltClick(mob/user)
|
||||
if(user.incapacitated())
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
rotate()
|
||||
|
||||
/obj/structure/disposalconstruct/verb/flip()
|
||||
set name = "Flip Pipe"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
if(usr.stat)
|
||||
/obj/structure/disposalconstruct/AltShiftClick(mob/user)
|
||||
if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user))
|
||||
return
|
||||
flip(user)
|
||||
|
||||
/obj/structure/disposalconstruct/proc/flip(mob/user)
|
||||
if(anchored)
|
||||
to_chat(usr, "You must unfasten the pipe before flipping it.")
|
||||
to_chat(user, "<span class='notice'>You must unfasten the pipe before flipping it.</span>")
|
||||
return
|
||||
|
||||
dir = turn(dir, 180)
|
||||
@@ -258,9 +249,9 @@
|
||||
/obj/structure/disposalconstruct/rpd_act(mob/user, obj/item/rpd/our_rpd)
|
||||
. = TRUE
|
||||
if(our_rpd.mode == RPD_ROTATE_MODE)
|
||||
rotate()
|
||||
rotate(user)
|
||||
else if(our_rpd.mode == RPD_FLIP_MODE)
|
||||
flip()
|
||||
flip(user)
|
||||
else if(our_rpd.mode == RPD_DELETE_MODE)
|
||||
our_rpd.delete_single_pipe(user, src)
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user