mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 23:58:07 +01:00
Merge remote-tracking branch 'upstream/master' into traymesons
Conflicts: code/modules/research/designs.dm icons/mob/eyes.dmi icons/obj/clothing/glasses.dmi
This commit is contained in:
@@ -898,7 +898,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
return
|
||||
|
||||
// access to status display signals
|
||||
/obj/item/device/pda/attackby(obj/item/C as obj, mob/user as mob)
|
||||
/obj/item/device/pda/attackby(obj/item/C as obj, mob/user as mob, params)
|
||||
..()
|
||||
if(istype(C, /obj/item/weapon/cartridge) && !cartridge)
|
||||
cartridge = C
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
break
|
||||
src.updateSelfDialog()
|
||||
|
||||
/obj/item/device/camera_bug/attackby(var/obj/item/W as obj,var/mob/living/user as mob)
|
||||
/obj/item/device/camera_bug/attackby(var/obj/item/W as obj,var/mob/living/user as mob, params)
|
||||
if(istype(W,/obj/item/weapon/screwdriver) && expansion)
|
||||
expansion.loc = get_turf(loc)
|
||||
user << "You unscrew [expansion]."
|
||||
|
||||
@@ -125,7 +125,8 @@
|
||||
master.disrupt()
|
||||
|
||||
/obj/effect/dummy/chameleon/relaymove(var/mob/user, direction)
|
||||
if(istype(loc, /turf/space)) return //No magical space movement!
|
||||
if(istype(loc, /turf/space) || !direction)
|
||||
return //No magical space movement!
|
||||
|
||||
if(can_move)
|
||||
can_move = 0
|
||||
|
||||
@@ -259,6 +259,12 @@ obj/item/device/flashlight/lamp/bananalamp
|
||||
item_state = "torch"
|
||||
on_damage = 10
|
||||
|
||||
/obj/item/device/flashlight/lantern
|
||||
name = "lantern"
|
||||
icon_state = "lantern"
|
||||
desc = "A mining lantern."
|
||||
brightness_on = 6 // luminosity when on
|
||||
|
||||
|
||||
/obj/item/device/flashlight/slime
|
||||
gender = PLURAL
|
||||
@@ -283,7 +289,7 @@ obj/item/device/flashlight/lamp/bananalamp
|
||||
|
||||
/obj/item/device/flashlight/emp/New()
|
||||
..()
|
||||
SSobj.processing.Add(src)
|
||||
SSobj.processing |= src
|
||||
|
||||
/obj/item/device/flashlight/emp/Destroy()
|
||||
SSobj.processing.Remove(src)
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
/obj/item/device/laser_pointer/attack(mob/living/M, mob/user)
|
||||
laser_act(M, user)
|
||||
|
||||
/obj/item/device/laser_pointer/attackby(obj/item/W, mob/user)
|
||||
/obj/item/device/laser_pointer/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/stock_parts/micro_laser))
|
||||
if(!diode)
|
||||
user.drop_item()
|
||||
@@ -186,7 +186,7 @@
|
||||
if(energy <= max_energy)
|
||||
if(!recharging)
|
||||
recharging = 1
|
||||
SSobj.processing.Add(src)
|
||||
SSobj.processing |= src
|
||||
if(energy <= 0)
|
||||
user << "<span class='warning'>You've overused the battery of [src], now it needs time to recharge!</span>"
|
||||
recharge_locked = 1
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
..()
|
||||
user << "It has [uses] light\s remaining."
|
||||
|
||||
/obj/item/device/lightreplacer/attackby(obj/item/W, mob/user)
|
||||
/obj/item/device/lightreplacer/attackby(obj/item/W, mob/user, params)
|
||||
|
||||
if(istype(W, /obj/item/stack/sheet/glass))
|
||||
var/obj/item/stack/sheet/glass/G = W
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
/obj/item/device/megaphone
|
||||
name = "megaphone"
|
||||
desc = "A device used to project your voice. Loudly."
|
||||
icon_state = "megaphone"
|
||||
item_state = "radio"
|
||||
w_class = 2
|
||||
flags = FPRINT
|
||||
siemens_coefficient = 1
|
||||
|
||||
var/spamcheck = 0
|
||||
var/emagged = 0
|
||||
var/insults = 0
|
||||
var/list/insultmsg = list("FUCK EVERYONE!", "DEATH TO LIZARDS!", "ALL SECURITY TO SHOOT ME ON SIGHT!", "I HAVE A BOMB!", "CAPTAIN IS A COMDOM!", "FOR THE SYNDICATE!", "VIVA!", "HONK!")
|
||||
|
||||
/obj/item/device/megaphone/attack_self(mob/living/carbon/human/user as mob)
|
||||
if(user.client)
|
||||
if(user.client.prefs.muted & MUTE_IC)
|
||||
src << "<span class='warning'>You cannot speak in IC (muted).</span>"
|
||||
return
|
||||
if(!ishuman(user))
|
||||
user << "<span class='warning'>You don't know how to use this!</span>"
|
||||
return
|
||||
if(user.can_speak())
|
||||
user << "<span class='warning'>You find yourself unable to speak at all.</span>"
|
||||
return
|
||||
if(spamcheck > world.time)
|
||||
user << "<span class='warning'>\The [src] needs to recharge!</span>"
|
||||
return
|
||||
|
||||
var/message = copytext(sanitize(input(user, "Shout a message?", "Megaphone", null) as text),1,MAX_MESSAGE_LEN)
|
||||
if(!message)
|
||||
return
|
||||
message = capitalize(message)
|
||||
if ((src.loc == user && user.stat == 0))
|
||||
if(emagged)
|
||||
if(insults)
|
||||
user.audible_message("<B>[user]</B> broadcasts, <FONT size=3>\"[pick(insultmsg)]\"</FONT>", null, 1) // 2 stands for hearable message
|
||||
insults--
|
||||
else
|
||||
user << "<span class='warning'>*BZZZZzzzzzt*</span>"
|
||||
else
|
||||
user.audible_message("<B>[user]</B> broadcasts, <FONT size=3>\"[message]\"</FONT>", null, 1) // 2 stands for hearable message
|
||||
|
||||
playsound(loc, 'sound/items/megaphone.ogg', 100, 0, 1)
|
||||
spamcheck = world.time + 50
|
||||
return
|
||||
|
||||
/obj/item/device/megaphone/emag_act(mob/user)
|
||||
user << "<span class='warning'>You overload \the [src]'s voice synthesizer.</span>"
|
||||
emagged = 1
|
||||
insults = rand(1, 3) //to prevent dickflooding
|
||||
|
||||
/obj/item/device/megaphone/sec
|
||||
name = "security megaphone"
|
||||
icon_state = "megaphone-sec"
|
||||
|
||||
/obj/item/device/megaphone/command
|
||||
name = "command megaphone"
|
||||
icon_state = "megaphone-command"
|
||||
|
||||
/obj/item/device/megaphone/cargo
|
||||
name = "supply megaphone"
|
||||
icon_state = "megaphone-cargo"
|
||||
@@ -47,14 +47,14 @@
|
||||
if(OPERATING)
|
||||
if(!attached)
|
||||
return
|
||||
SSobj.processing.Add(src)
|
||||
SSobj.processing |= src
|
||||
anchored = 1
|
||||
|
||||
mode = value
|
||||
update_icon()
|
||||
SetLuminosity(0)
|
||||
|
||||
/obj/item/device/powersink/attackby(var/obj/item/I, var/mob/user)
|
||||
/obj/item/device/powersink/attackby(var/obj/item/I, var/mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(mode == DISCONNECTED)
|
||||
var/turf/T = loc
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/device/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/item/device/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/clothing/head/helmet))
|
||||
var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user )
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/obj/item/device/encryptionkey/New()
|
||||
|
||||
/obj/item/device/encryptionkey/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/item/device/encryptionkey/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
|
||||
/obj/item/device/encryptionkey/syndicate
|
||||
icon_state = "cypherkey"
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
/obj/item/device/radio/headset/ai/receive_range(freq, level)
|
||||
return ..(freq, level, 1)
|
||||
|
||||
/obj/item/device/radio/headset/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/item/device/radio/headset/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
// ..()
|
||||
user.set_machine(src)
|
||||
if (!( istype(W, /obj/item/weapon/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ ))))
|
||||
|
||||
@@ -488,7 +488,7 @@
|
||||
else
|
||||
user << "<span class='notice'>[name] can not be modified or attached.</span>"
|
||||
|
||||
/obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
user.set_machine(src)
|
||||
if (!( istype(W, /obj/item/weapon/screwdriver) ))
|
||||
@@ -536,7 +536,7 @@
|
||||
..()
|
||||
set_frequency(SYND_FREQ)
|
||||
|
||||
/obj/item/device/radio/borg/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/item/device/radio/borg/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
// ..()
|
||||
user.set_machine(src)
|
||||
if (!( istype(W, /obj/item/weapon/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ ))))
|
||||
|
||||
@@ -25,7 +25,7 @@ MASS SPECTROMETER
|
||||
icon_state = copytext(icon_state, 1, length(icon_state))+"[on]"
|
||||
|
||||
if(on)
|
||||
SSobj.processing.Add(src)
|
||||
SSobj.processing |= src
|
||||
|
||||
|
||||
/obj/item/device/t_scanner/process()
|
||||
@@ -75,8 +75,17 @@ MASS SPECTROMETER
|
||||
throw_range = 7
|
||||
m_amt = 200
|
||||
origin_tech = "magnets=1;biotech=1"
|
||||
var/mode = 1;
|
||||
var/mode = 1
|
||||
var/scanchems = 0
|
||||
|
||||
/obj/item/device/healthanalyzer/attack_self(mob/user)
|
||||
if(!scanchems)
|
||||
user << "<span class = 'notice'>You switch the health analyzer to scan chemical contents.</span>"
|
||||
scanchems = 1
|
||||
else
|
||||
user << "<span class = 'notice'>You switch the health analyzer to check physical health.</span>"
|
||||
scanchems = 0
|
||||
return
|
||||
/obj/item/device/healthanalyzer/attack(mob/living/M as mob, mob/living/carbon/human/user as mob)
|
||||
|
||||
// Clumsiness/brain damage check
|
||||
@@ -92,7 +101,10 @@ MASS SPECTROMETER
|
||||
|
||||
user.visible_message("<span class='notice'>[user] has analyzed [M]'s vitals.</span>")
|
||||
|
||||
healthscan(user, M, mode)
|
||||
if(!scanchems)
|
||||
healthscan(user, M, mode)
|
||||
else
|
||||
chemscan(user, M)
|
||||
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
@@ -177,6 +189,22 @@ MASS SPECTROMETER
|
||||
else
|
||||
user.show_message("<span class='notice'>Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]</span>")
|
||||
|
||||
/proc/chemscan(var/mob/living/user, var/mob/living/M)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.reagents)
|
||||
if(H.reagents.reagent_list.len)
|
||||
user.show_message("<span class='notice'>Subject contains the following reagents:</span>")
|
||||
for(var/datum/reagent/R in H.reagents.reagent_list)
|
||||
user.show_message("<span class='notice'>[R.volume]u of [R.name][R.overdosed == 1 ? "</span> - <span class = 'userdanger'>OVERDOSING</span>" : ".</span>"]")
|
||||
else
|
||||
user.show_message("<span class = 'notice'>Subject contains no reagents.</span>")
|
||||
if(H.reagents.addiction_list.len)
|
||||
user.show_message("<span class='userdanger'>Subject is addicted to the following reagents:</span>")
|
||||
for(var/datum/reagent/R in H.reagents.addiction_list)
|
||||
user.show_message("<span class='danger'>[R.name]</span>")
|
||||
else
|
||||
user.show_message("<span class='notice'>Subject is not addicted to any reagents.</span>")
|
||||
|
||||
/obj/item/device/healthanalyzer/verb/toggle_mode()
|
||||
set name = "Switch Verbosity"
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
user << "The wire panel is [open_panel ? "opened" : "closed"]."
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/attackby(obj/item/I, mob/user)
|
||||
/obj/item/device/taperecorder/attackby(obj/item/I, mob/user, params)
|
||||
if(!mytape && istype(I, /obj/item/device/tape))
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
@@ -280,7 +280,7 @@
|
||||
ruined = 0
|
||||
|
||||
|
||||
/obj/item/device/tape/attackby(obj/item/I, mob/user)
|
||||
/obj/item/device/tape/attackby(obj/item/I, mob/user, params)
|
||||
if(ruined && istype(I, /obj/item/weapon/screwdriver))
|
||||
user << "<span class='notice'>You start winding the tape back in.</span>"
|
||||
if(do_after(user, 120))
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/obj/item/device/transfer_valve/IsAssemblyHolder()
|
||||
return 1
|
||||
|
||||
/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user)
|
||||
/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user, params)
|
||||
if(istype(item, /obj/item/weapon/tank))
|
||||
if(tank_one && tank_two)
|
||||
user << "<span class='warning'>There are already two tanks attached, remove one first.</span>"
|
||||
|
||||
@@ -172,7 +172,7 @@ var/list/world_uplinks = list()
|
||||
return 1
|
||||
return 0
|
||||
//Refund proc for the borg teleporter (later I'll make a general refund proc if there is demand for it)
|
||||
/obj/item/device/radio/uplink/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/item/device/radio/uplink/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/antag_spawner/borg_tele))
|
||||
var/obj/item/weapon/antag_spawner/borg_tele/S = W
|
||||
if(!S.used)
|
||||
|
||||
Reference in New Issue
Block a user