mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 06:57:42 +01:00
Merge remote-tracking branch 'upstream/master' into vision
This commit is contained in:
@@ -284,7 +284,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if(usr.stat == 2)
|
||||
usr << "You can't do that because you are dead!"
|
||||
return
|
||||
JFLOG("AI Showed Message Log")
|
||||
var/HTML = "<html><head><title>AI PDA Message Log</title></head><body>"
|
||||
for(var/index in tnote)
|
||||
if(index["sent"])
|
||||
@@ -301,7 +300,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if(usr.stat == 2)
|
||||
usr << "You can't do that because you are dead!"
|
||||
return
|
||||
JFLOG("AI Toggled Receiver")
|
||||
toff = !toff
|
||||
usr << "<span class='notice'>PDA sender/receiver toggled [(toff ? "Off" : "On")]!</span>"
|
||||
|
||||
@@ -314,7 +312,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
usr << "You can't do that because you are dead!"
|
||||
return
|
||||
silent=!silent
|
||||
JFLOG("AI toggled the silent option")
|
||||
usr << "<span class='notice'>PDA ringer toggled [(silent ? "Off" : "On")]!</span>"
|
||||
|
||||
/obj/item/device/pda/ai/can_use()
|
||||
@@ -325,7 +322,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if ((honkamt > 0) && (prob(60)))//For clown virus.
|
||||
honkamt--
|
||||
playsound(loc, 'sound/items/bikehorn.ogg', 30, 1)
|
||||
JFLOG("[user] PDA honked")
|
||||
return
|
||||
|
||||
|
||||
@@ -528,15 +524,11 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
/obj/item/device/pda/attack_self(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
if(active_uplink_check(user))
|
||||
JFLOG("[user] activated a syndicate uplink in their PDA")
|
||||
return
|
||||
JFLOG("[user] activated PDA")
|
||||
ui_interact(user) //NanoUI requires this proc
|
||||
return
|
||||
|
||||
/obj/item/device/pda/Topic(href, href_list)
|
||||
if (href_list["choice"]!="Return") // We really don't need to see ten thousand return actions.
|
||||
JFLOG("UI Action >>> HREF|[href] >>> HREF_LIST|[list2json(href_list)]")
|
||||
if(href_list["cartmenu"] && !isnull(cartridge))
|
||||
cartridge.Topic(href, href_list)
|
||||
return 1
|
||||
@@ -964,7 +956,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
if ( can_use(usr) )
|
||||
if(id)
|
||||
JFLOG("[usr] removed ID:[id]")
|
||||
remove_id()
|
||||
else
|
||||
usr << "<span class='notice'>This PDA does not have an ID in it.</span>"
|
||||
@@ -981,7 +972,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
return
|
||||
|
||||
if ( can_use(usr) )
|
||||
JFLOG("[usr] removed pen")
|
||||
var/obj/item/weapon/pen/O = locate() in src
|
||||
if(O)
|
||||
if (istype(loc, /mob))
|
||||
@@ -1021,7 +1011,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
/obj/item/device/pda/attackby(obj/item/C as obj, mob/user as mob, params)
|
||||
..()
|
||||
if(istype(C, /obj/item/weapon/cartridge) && !cartridge)
|
||||
JFLOG("[user] inserted Cartridge[cartridge]")
|
||||
cartridge = C
|
||||
user.drop_item()
|
||||
cartridge.loc = src
|
||||
@@ -1033,7 +1022,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
else if(istype(C, /obj/item/weapon/card/id))
|
||||
var/obj/item/weapon/card/id/idcard = C
|
||||
if(!idcard.registered_name)
|
||||
JFLOG("[user] tried to insert ID:[idcard] but it was rejected.")
|
||||
user << "<span class='notice'>\The [src] rejects the ID.</span>"
|
||||
return
|
||||
if(!owner)
|
||||
@@ -1042,14 +1030,12 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
ownrank = idcard.rank
|
||||
name = "PDA-[owner] ([ownjob])"
|
||||
user << "<span class='notice'>Card scanned.</span>"
|
||||
JFLOG("[user] tried to insert ID:[idcard] and it was used to initialize this PDA.")
|
||||
else
|
||||
//Basic safety check. If either both objects are held by user or PDA is on ground and card is in hand.
|
||||
if(((src in user.contents) && (C in user.contents)) || (istype(loc, /turf) && in_range(src, user) && (C in user.contents)) )
|
||||
if( can_use(user) )//If they can still act.
|
||||
id_check(user, 2)
|
||||
user << "<span class='notice'>You put the ID into \the [src]'s slot.</span>"
|
||||
JFLOG("[user] inserted ID:[idcard].")
|
||||
updateSelfDialog()//Update self dialog on success.
|
||||
return //Return in case of failed check or when successful.
|
||||
updateSelfDialog()//For the non-input related code.
|
||||
@@ -1058,7 +1044,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
C.loc = src
|
||||
pai = C
|
||||
user << "<span class='notice'>You slot \the [C] into [src].</span>"
|
||||
JFLOG("[user] inserted PAI:[pai]")
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
else if(istype(C, /obj/item/weapon/pen))
|
||||
var/obj/item/weapon/pen/O = locate() in src
|
||||
@@ -1067,7 +1052,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
else
|
||||
user.drop_item()
|
||||
C.loc = src
|
||||
JFLOG("[user] inserted PEN:[C]")
|
||||
user << "<span class='notice'>You slide \the [C] into \the [src].</span>"
|
||||
return
|
||||
|
||||
@@ -1075,7 +1059,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if (istype(C, /mob/living/carbon))
|
||||
switch(scanmode)
|
||||
if(1)
|
||||
JFLOG("[user] used the medical scanner on [C]")
|
||||
for (var/mob/O in viewers(C, null))
|
||||
O.show_message("\red [user] has analyzed [C]'s vitals!", 1)
|
||||
|
||||
@@ -1097,7 +1080,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
user.show_message("\blue \t Limbs are OK.",1)
|
||||
|
||||
if(2)
|
||||
JFLOG("[user] used the fingerprint scanner on [C]")
|
||||
if (!istype(C:dna, /datum/dna))
|
||||
user << "\blue No fingerprints found on [C]"
|
||||
else
|
||||
@@ -1113,7 +1095,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
user << "\blue Blood type: [C:blood_DNA[blood]]\nDNA: [blood]"
|
||||
|
||||
if(4)
|
||||
JFLOG("[user] used the radiation scanner on [C]")
|
||||
for (var/mob/O in viewers(C, null))
|
||||
O.show_message("\red [user] has analyzed [C]'s radiation levels!", 1)
|
||||
|
||||
@@ -1128,22 +1109,18 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
switch(scanmode)
|
||||
|
||||
if(3)
|
||||
JFLOG("[user] used the reagent scanner on [A]")
|
||||
if(!isobj(A))
|
||||
return
|
||||
if(!isnull(A.reagents))
|
||||
if(A.reagents.reagent_list.len > 0)
|
||||
var/reagents_length = A.reagents.reagent_list.len
|
||||
user << "\blue [reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found."
|
||||
user << "<span class='notice'>[reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found.</span>"
|
||||
for (var/re in A.reagents.reagent_list)
|
||||
user << "\blue \t [re]"
|
||||
user << "<span class='notice'>\t [re]</span>"
|
||||
else
|
||||
user << "\blue No active chemical agents found in [A]."
|
||||
user << "<span class='notice'>No active chemical agents found in [A].</span>"
|
||||
else
|
||||
user << "\blue No significant chemical agents found in [A]."
|
||||
user << "<span class='notice'>No significant chemical agents found in [A].</span>"
|
||||
|
||||
if(5)
|
||||
JFLOG("[user] used the air analysis scanner on [A]")
|
||||
if (istype(A, /obj/item/weapon/tank))
|
||||
var/obj/item/weapon/tank/T = A
|
||||
atmosanalyzer_scan(T.air_contents, user, T)
|
||||
@@ -1159,59 +1136,51 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
else if (istype(A, /obj/item/weapon/flamethrower))
|
||||
var/obj/item/weapon/flamethrower/T = A
|
||||
if(T.ptank) atmosanalyzer_scan(T.ptank.air_contents, user, T)
|
||||
else if (istype(A, /obj/machinery/portable_atmospherics/scrubber/huge))
|
||||
var/obj/machinery/portable_atmospherics/scrubber/huge/T = A
|
||||
atmosanalyzer_scan(T.air_contents, user, T)
|
||||
else if (istype(A, /obj/machinery/atmospherics/unary/tank))
|
||||
var/obj/machinery/atmospherics/unary/tank/T = A
|
||||
atmosanalyzer_scan(T.air_contents, user, T)
|
||||
|
||||
if (!scanmode && istype(A, /obj/item/weapon/paper) && owner)
|
||||
JFLOG("[user] used the document scanner on [A]")
|
||||
// JMO 20140705: Makes scanned document show up properly in the notes. Not pretty for formatted documents,
|
||||
// as this will clobber the HTML, but at least it lets you scan a document. You can restore the original
|
||||
// notes by editing the note again. (Was going to allow you to edit, but scanned documents are too long.)
|
||||
var/raw_scan = (A:info)
|
||||
var/formatted_scan = ""
|
||||
// Scrub out the tags (replacing a few formatting ones along the way)
|
||||
|
||||
// Find the beginning and end of the first tag.
|
||||
var/tag_start = findtext(raw_scan,"<")
|
||||
var/tag_stop = findtext(raw_scan,">")
|
||||
|
||||
// Until we run out of complete tags...
|
||||
while(tag_start&&tag_stop)
|
||||
var/pre = copytext(raw_scan,1,tag_start) // Get the stuff that comes before the tag
|
||||
var/tag = lowertext(copytext(raw_scan,tag_start+1,tag_stop)) // Get the tag so we can do intellegent replacement
|
||||
var/tagend = findtext(tag," ") // Find the first space in the tag if there is one.
|
||||
|
||||
// Anything that's before the tag can just be added as is.
|
||||
formatted_scan = formatted_scan+pre
|
||||
|
||||
// If we have a space after the tag (and presumably attributes) just crop that off.
|
||||
if (tagend)
|
||||
tag=copytext(tag,1,tagend)
|
||||
|
||||
if (tag=="p"||tag=="/p"||tag=="br") // Check if it's I vertical space tag.
|
||||
formatted_scan=formatted_scan+"<br>" // If so, add some padding in.
|
||||
|
||||
raw_scan = copytext(raw_scan,tag_stop+1) // continue on with the stuff after the tag
|
||||
|
||||
// Look for the next tag in what's left
|
||||
tag_start = findtext(raw_scan,"<")
|
||||
tag_stop = findtext(raw_scan,">")
|
||||
|
||||
// Anything that is left in the page. just tack it on to the end as is
|
||||
formatted_scan=formatted_scan+raw_scan
|
||||
|
||||
// If there is something in there already, pad it out.
|
||||
if (length(note)>0)
|
||||
note = note + "<br><br>"
|
||||
|
||||
// Store the scanned document to the notes
|
||||
note = "Scanned Document. Edit to restore previous notes/delete scan.<br>----------<br>" + formatted_scan + "<br>"
|
||||
// notehtml ISN'T set to allow user to get their old notes back. A better implementation would add a "scanned documents"
|
||||
// feature to the PDA, which would better convey the availability of the feature, but this will work for now.
|
||||
|
||||
// Inform the user
|
||||
user << "\blue Paper scanned and OCRed to notekeeper." //concept of scanning paper copyright brainoblivion 2009
|
||||
|
||||
|
||||
|
||||
/obj/item/device/pda/proc/explode() //This needs tuning.
|
||||
if(!src.detonate) return
|
||||
var/turf/T = get_turf(src.loc)
|
||||
@@ -1224,12 +1193,10 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
T.hotspot_expose(700,125)
|
||||
|
||||
explosion(T, -1, -1, 2, 3)
|
||||
JFLOG("Exploded")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/device/pda/Destroy()
|
||||
JFLOG("Destroyed")
|
||||
PDAs -= src
|
||||
if (src.id)
|
||||
src.id.loc = get_turf(src.loc)
|
||||
@@ -1249,7 +1216,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
M.stop_pulling()
|
||||
M << "\blue You slipped on the PDA!"
|
||||
JFLOG("Clown PDA Slipped [M]")
|
||||
playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3)
|
||||
M.Stun(8)
|
||||
M.Weaken(5)
|
||||
@@ -1310,28 +1276,4 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
/obj/item/device/pda/emp_act(severity)
|
||||
for(var/atom/A in src)
|
||||
A.emp_act(severity)
|
||||
|
||||
/**
|
||||
*
|
||||
* JFLOG
|
||||
*
|
||||
* These functions as well as all the log statements are being used to gather user data for how
|
||||
* people are using the PDA files with the intent of revising them based on this data.
|
||||
*
|
||||
* They are being added on 28/03/2015 and the intent is to remove them in two weeks. If you're
|
||||
* reading this and it's substantially past that point, you should remove anything marked with
|
||||
* 'JFLOG'.
|
||||
*
|
||||
* All changes should be contained to PDA.dm except the creation function which is contained in
|
||||
* job_controller.dm.
|
||||
*
|
||||
* - Jack Fractal
|
||||
**/
|
||||
|
||||
|
||||
/obj/item/device/pda/proc/JFLOG_DescribeSelf()
|
||||
return "([src]|[cartridge ? cartridge.name : "None"])"
|
||||
|
||||
/obj/item/device/pda/proc/JFLOG(message as text)
|
||||
if (config)
|
||||
log_pda("[JFLOG_DescribeSelf()] >>> [message]")
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
|
||||
/obj/item/weapon/cartridge/rd/initialize()
|
||||
radio = new /obj/item/radio/integrated/signal(src)
|
||||
..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/cartridge/captain
|
||||
name = "Value-PAK Cartridge"
|
||||
@@ -191,7 +191,7 @@
|
||||
|
||||
/obj/item/weapon/cartridge/captain/initialize()
|
||||
radio = new /obj/item/radio/integrated/beepsky(src)
|
||||
..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/cartridge/supervisor
|
||||
name = "Easy-Record DELUXE"
|
||||
@@ -282,7 +282,7 @@
|
||||
|
||||
|
||||
/* Power Monitor (Mode: 43 / 433) */
|
||||
if(mode==43 || mode==433)
|
||||
if(mode==43 || mode==433)
|
||||
values["powermonitors"] = powermonitor_repository.powermonitor_data()
|
||||
|
||||
if (powmonitor && !isnull(powmonitor.powernet))
|
||||
@@ -463,7 +463,7 @@
|
||||
else
|
||||
JaniData["user_loc"] = list("x" = 0, "y" = 0)
|
||||
var/MopData[0]
|
||||
for(var/obj/item/weapon/mop/M in world)
|
||||
for(var/obj/item/weapon/mop/M in janitorial_equipment)
|
||||
var/turf/ml = get_turf(M)
|
||||
if(ml)
|
||||
if(ml.z != cl.z)
|
||||
@@ -476,7 +476,7 @@
|
||||
|
||||
|
||||
var/BucketData[0]
|
||||
for(var/obj/structure/mopbucket/B in world)
|
||||
for(var/obj/structure/mopbucket/B in janitorial_equipment)
|
||||
var/turf/bl = get_turf(B)
|
||||
if(bl)
|
||||
if(bl.z != cl.z)
|
||||
@@ -488,7 +488,7 @@
|
||||
BucketData[++BucketData.len] = list("x" = 0, "y" = 0, dir=null, status = null)
|
||||
|
||||
var/CbotData[0]
|
||||
for(var/obj/machinery/bot/cleanbot/B in world)
|
||||
for(var/obj/machinery/bot/cleanbot/B in aibots)
|
||||
var/turf/bl = get_turf(B)
|
||||
if(bl)
|
||||
if(bl.z != cl.z)
|
||||
@@ -500,7 +500,7 @@
|
||||
if(!CbotData.len)
|
||||
CbotData[++CbotData.len] = list("x" = 0, "y" = 0, dir=null, status = null)
|
||||
var/CartData[0]
|
||||
for(var/obj/structure/stool/bed/chair/cart/janicart/B in world)
|
||||
for(var/obj/structure/janitorialcart/B in janitorial_equipment)
|
||||
var/turf/bl = get_turf(B)
|
||||
if(bl)
|
||||
if(bl.z != cl.z)
|
||||
|
||||
@@ -66,9 +66,9 @@
|
||||
/obj/item/device/laser_pointer/afterattack(var/atom/target, var/mob/living/user, flag, params)
|
||||
if(flag) //we're placing the object on a table or in backpack
|
||||
return
|
||||
laser_act(target, user)
|
||||
laser_act(target, user, params)
|
||||
|
||||
/obj/item/device/laser_pointer/proc/laser_act(var/atom/target, var/mob/living/user)
|
||||
/obj/item/device/laser_pointer/proc/laser_act(var/atom/target, var/mob/living/user, var/params)
|
||||
if( !(user in (viewers(7,target))) )
|
||||
return
|
||||
if (!diode)
|
||||
@@ -175,12 +175,19 @@
|
||||
//laser pointer image
|
||||
icon_state = "pointer_[pointer_icon_state]"
|
||||
var/list/showto = list()
|
||||
for(var/mob/M in range(7,targloc))
|
||||
for(var/mob/M in viewers(7,targloc))
|
||||
if(M.client)
|
||||
showto.Add(M.client)
|
||||
var/image/I = image('icons/obj/projectiles.dmi',targloc,pointer_icon_state,10)
|
||||
I.pixel_x = target.pixel_x + rand(-5,5)
|
||||
I.pixel_y = target.pixel_y + rand(-5,5)
|
||||
var/list/click_params = params2list(params)
|
||||
if(click_params)
|
||||
if(click_params["icon-x"])
|
||||
I.pixel_x = (text2num(click_params["icon-x"]) - 16)
|
||||
if(click_params["icon-y"])
|
||||
I.pixel_y = (text2num(click_params["icon-y"]) - 16)
|
||||
else
|
||||
I.pixel_x = target.pixel_x + rand(-5,5)
|
||||
I.pixel_y = target.pixel_y + rand(-5,5)
|
||||
|
||||
if(outmsg)
|
||||
user << outmsg
|
||||
|
||||
@@ -1,35 +1,36 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/**********************************************************************
|
||||
Cyborg Spec Items
|
||||
***********************************************************************/
|
||||
//Might want to move this into several files later but for now it works here
|
||||
/obj/item/borg/stun
|
||||
name = "Electrified Arm"
|
||||
icon = 'icons/obj/decals.dmi'
|
||||
icon_state = "shock"
|
||||
name = "electrified arm"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "elecarm"
|
||||
var/charge_cost = 30
|
||||
|
||||
/obj/item/borg/stun/attack(mob/M, mob/living/silicon/robot/user)
|
||||
var/mob/living/silicon/robot/R = user
|
||||
if(R && R.cell && R.cell.charge > 0)
|
||||
R.cell.use(charge_cost)
|
||||
else
|
||||
return
|
||||
|
||||
attack(mob/M as mob, mob/living/silicon/robot/user as mob)
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [key_name(user)]</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [key_name(M)]</font>")
|
||||
if(M.ckey)
|
||||
msg_admin_attack("[key_name_admin(user)] used the [src.name] to attack [key_name_admin(M)]")
|
||||
user.do_attack_animation(M)
|
||||
M.Weaken(5)
|
||||
if (M.stuttering < 5)
|
||||
M.stuttering = 5
|
||||
M.Stun(5)
|
||||
|
||||
if(!iscarbon(user))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = user
|
||||
M.visible_message("<span class='danger'>[user] has prodded [M] with [src]!</span>", \
|
||||
"<span class='userdanger'>[user] has prodded you with [src].</span>")
|
||||
playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
|
||||
|
||||
if(!iscarbon(user))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = user
|
||||
|
||||
user.cell.charge -= 30
|
||||
|
||||
M.Weaken(5)
|
||||
if (M.stuttering < 5)
|
||||
M.stuttering = 5
|
||||
M.Stun(5)
|
||||
|
||||
for(var/mob/O in viewers(M, null))
|
||||
if (O.client)
|
||||
O.show_message("\red <B>[user] has prodded [M] with an electrically-charged arm!</B>", 1, "\red You hear someone fall", 2)
|
||||
add_logs(M, user, "stunned", src, "(INTENT: [uppertext(user.a_intent)])")
|
||||
|
||||
/obj/item/borg/overdrive
|
||||
name = "Overdrive"
|
||||
@@ -44,19 +45,16 @@
|
||||
icon_state = "securearea"
|
||||
var/sight_mode = null
|
||||
|
||||
|
||||
/obj/item/borg/sight/xray
|
||||
name = "X-ray Vision"
|
||||
sight_mode = BORGXRAY
|
||||
|
||||
|
||||
/obj/item/borg/sight/thermal
|
||||
name = "Thermal Vision"
|
||||
sight_mode = BORGTHERM
|
||||
icon_state = "thermal"
|
||||
icon = 'icons/obj/clothing/glasses.dmi'
|
||||
|
||||
|
||||
/obj/item/borg/sight/meson
|
||||
name = "Meson Vision"
|
||||
sight_mode = BORGMESON
|
||||
@@ -67,24 +65,22 @@
|
||||
name = "Hud"
|
||||
var/obj/item/clothing/glasses/hud/hud = null
|
||||
|
||||
|
||||
/obj/item/borg/sight/hud/med
|
||||
name = "medical hud"
|
||||
icon_state = "healthhud"
|
||||
icon = 'icons/obj/clothing/glasses.dmi'
|
||||
|
||||
New()
|
||||
..()
|
||||
hud = new /obj/item/clothing/glasses/hud/health(src)
|
||||
return
|
||||
|
||||
/obj/item/borg/sight/hud/med/New()
|
||||
..()
|
||||
hud = new /obj/item/clothing/glasses/hud/health(src)
|
||||
return
|
||||
|
||||
/obj/item/borg/sight/hud/sec
|
||||
name = "security hud"
|
||||
icon_state = "securityhud"
|
||||
icon = 'icons/obj/clothing/glasses.dmi'
|
||||
|
||||
New()
|
||||
..()
|
||||
hud = new /obj/item/clothing/glasses/hud/security(src)
|
||||
return
|
||||
/obj/item/borg/sight/hud/sec/New()
|
||||
..()
|
||||
hud = new /obj/item/clothing/glasses/hud/security(src)
|
||||
return
|
||||
|
||||
@@ -77,7 +77,7 @@ var/global/list/moneytypes=list(
|
||||
stack_color = "#663200"
|
||||
|
||||
/obj/item/weapon/spacecash/c200
|
||||
icon_state = "cash100"
|
||||
icon_state = "cash200"
|
||||
worth = 200
|
||||
stack_color = "#663200"
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
#define is_cleanable(A) (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/rune))
|
||||
|
||||
/obj/item/weapon/mop
|
||||
desc = "The world of janitalia wouldn't be complete without a mop."
|
||||
name = "mop"
|
||||
@@ -12,18 +14,22 @@
|
||||
var/mopping = 0
|
||||
var/mopcount = 0
|
||||
var/mopcap = 5
|
||||
var/mopspeed = 40
|
||||
var/mopspeed = 30
|
||||
|
||||
|
||||
/obj/item/weapon/mop/New()
|
||||
create_reagents(mopcap)
|
||||
janitorial_equipment += src
|
||||
|
||||
/obj/item/weapon/mop/Destroy()
|
||||
janitorial_equipment -= src
|
||||
return..()
|
||||
|
||||
/obj/item/weapon/mop/proc/clean(turf/simulated/A)
|
||||
if(reagents.has_reagent("water", 1) || reagents.has_reagent("cleaner", 1) || reagents.has_reagent("holywater", 1))
|
||||
A.clean_blood()
|
||||
for(var/obj/effect/O in A)
|
||||
if(istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay) || istype(O,/obj/effect/rune))
|
||||
if(is_cleanable(O))
|
||||
qdel(O)
|
||||
reagents.reaction(A, TOUCH, 10) //10 is the multiplier for the reaction effect. probably needed to wet the floor properly.
|
||||
reagents.remove_any(1) //reaction() doesn't use up the reagents
|
||||
@@ -33,20 +39,20 @@
|
||||
if(!proximity) return
|
||||
|
||||
if(reagents.total_volume < 1)
|
||||
user << "<span class='notice'>Your mop is dry!</span>"
|
||||
user << "<span class='warning'>Your mop is dry!</span>"
|
||||
return
|
||||
|
||||
var/turf/simulated/turf = A
|
||||
if(istype(A, /obj/effect/rune) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay))
|
||||
if(is_cleanable(A))
|
||||
turf = A.loc
|
||||
A = null
|
||||
|
||||
if(istype(turf))
|
||||
user.visible_message("<span class='warning'>[user] begins to clean \the [turf] with [src].</span>")
|
||||
user.visible_message("[user] begins to clean \the [turf] with [src].", "<span class='notice'>You begin to clean \the [turf] with [src]...</span>")
|
||||
|
||||
if(do_after(user, mopspeed, target = src))
|
||||
if(do_after(user, src.mopspeed, target = turf))
|
||||
user << "<span class='notice'>You finish mopping.</span>"
|
||||
clean(turf)
|
||||
user << "<span class='notice'>You have finished mopping!</span>"
|
||||
|
||||
|
||||
/obj/effect/attackby(obj/item/I, mob/user, params)
|
||||
|
||||
@@ -16,11 +16,9 @@
|
||||
icon_state = "soapnt"
|
||||
|
||||
/obj/item/weapon/soap/deluxe
|
||||
icon_state = "soapdeluxe"
|
||||
|
||||
/obj/item/weapon/soap/deluxe/New()
|
||||
desc = "A deluxe Waffle Co. brand bar of soap. Smells of comdoms."
|
||||
cleanspeed = 40 //same speed as mop because deluxe -- captain gets one of these
|
||||
icon_state = "soapdeluxe"
|
||||
cleanspeed = 40 //slightly better because deluxe -- captain gets one of these
|
||||
|
||||
/obj/item/weapon/soap/syndie
|
||||
desc = "An untrustworthy bar of soap made of strong chemical agents that dissolve blood faster."
|
||||
|
||||
@@ -29,8 +29,8 @@
|
||||
/obj/item/weapon/storage/bag/trash
|
||||
name = "trash bag"
|
||||
desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"
|
||||
icon = 'icons/obj/trash.dmi'
|
||||
icon_state = "trashbag0"
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
icon_state = "trashbag"
|
||||
item_state = "trashbag"
|
||||
|
||||
w_class = 4
|
||||
@@ -46,12 +46,12 @@
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/update_icon()
|
||||
if(contents.len == 0)
|
||||
icon_state = "trashbag0"
|
||||
icon_state = "[initial(icon_state)]"
|
||||
else if(contents.len < 12)
|
||||
icon_state = "trashbag1"
|
||||
icon_state = "[initial(icon_state)]1"
|
||||
else if(contents.len < 21)
|
||||
icon_state = "trashbag2"
|
||||
else icon_state = "trashbag3"
|
||||
icon_state = "[initial(icon_state)]2"
|
||||
else icon_state = "[initial(icon_state)]3"
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/cyborg
|
||||
|
||||
@@ -63,6 +63,13 @@
|
||||
/obj/item/weapon/storage/bag/trash/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/bluespace
|
||||
name = "trash bag of holding"
|
||||
desc = "The latest and greatest in custodial convenience, a trashbag that is capable of holding vast quantities of garbage."
|
||||
icon_state = "bluetrashbag"
|
||||
max_combined_w_class = 60
|
||||
storage_slots = 60
|
||||
|
||||
|
||||
// -----------------------------
|
||||
// Plastic Bag
|
||||
|
||||
@@ -258,8 +258,8 @@
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implantcase/death_alarm(src)
|
||||
new /obj/item/weapon/implanter(src)
|
||||
new /obj/item/weapon/implantpad(src)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/rxglasses
|
||||
|
||||
Reference in New Issue
Block a user