mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 12:41:09 +01:00
Merge remote-tracking branch 'remotes/upstream/master' into thaw
This commit is contained in:
@@ -58,7 +58,7 @@
|
||||
. = ..()
|
||||
var/area/A = get_area()
|
||||
if(get_area_type() == AREA_STATION)
|
||||
. += "<p>According to \the [src], you are now in <b>\"[strip_html_properly(A.name)]\"</b>.</p>"
|
||||
. += "<p>According to \the [src], you are now in <b>\"[html_encode(A.name)]\"</b>.</p>"
|
||||
var/datum/browser/popup = new(user, "blueprints", "[src]", 700, 500)
|
||||
popup.set_content(.)
|
||||
popup.open()
|
||||
@@ -83,8 +83,8 @@
|
||||
. = ..()
|
||||
var/area/A = get_area()
|
||||
if(get_area_type() == AREA_STATION)
|
||||
. += "<p>According to \the [src], you are now in <b>\"[strip_html_properly(A.name)]\"</b>.</p>"
|
||||
. += "<p>You may <a href='?src=\ref[src];edit_area=1'> move an amendment</a> to the drawing.</p>"
|
||||
. += "<p>According to \the [src], you are now in <b>\"[html_encode(A.name)]\"</b>.</p>"
|
||||
. += "<p>You may <a href='?src=\ref[src];edit_area=1'>move an amendment</a> to the drawing.</p>"
|
||||
var/datum/browser/popup = new(user, "blueprints", "[src]", 700, 500)
|
||||
popup.set_content(.)
|
||||
popup.open()
|
||||
|
||||
@@ -97,10 +97,7 @@
|
||||
|
||||
/obj/item/toy/crayon/spraycan/New()
|
||||
..()
|
||||
if(gang)
|
||||
name = "Modified Paint Applicator"
|
||||
else
|
||||
name = "NanoTrasen-brand Rapid Paint Applicator"
|
||||
name = "spray can"
|
||||
update_icon()
|
||||
|
||||
/obj/item/toy/crayon/spraycan/examine(mob/user)
|
||||
@@ -116,7 +113,7 @@
|
||||
if("Toggle Cap")
|
||||
user << "<span class='notice'>You [capped ? "Remove" : "Replace"] the cap of the [src]</span>"
|
||||
capped = capped ? 0 : 1
|
||||
icon_state = "spraycan[gang ? "_gang" : ""][capped ? "_cap" : ""]"
|
||||
icon_state = "spraycan[capped ? "_cap" : ""]"
|
||||
update_icon()
|
||||
if("Change Drawing")
|
||||
..()
|
||||
@@ -155,8 +152,7 @@
|
||||
overlays += I
|
||||
|
||||
/obj/item/toy/crayon/spraycan/gang
|
||||
desc = "A suspicious-looking spraycan modified to use special paint used by gangsters to mark territory."
|
||||
icon_state = "spraycan_gang_cap"
|
||||
desc = "A modified container containing suspicious paint."
|
||||
gang = 1
|
||||
uses = 20
|
||||
instant = -1
|
||||
|
||||
@@ -904,16 +904,16 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
else
|
||||
var/obj/item/I = user.get_active_hand()
|
||||
if (istype(I, /obj/item/weapon/card/id))
|
||||
if(!user.drop_item())
|
||||
if(!user.unEquip(I))
|
||||
return 0
|
||||
I.loc = src
|
||||
id = I
|
||||
else
|
||||
var/obj/item/weapon/card/I = user.get_active_hand()
|
||||
if (istype(I, /obj/item/weapon/card/id) && I:registered_name)
|
||||
var/obj/old_id = id
|
||||
if(!user.drop_item())
|
||||
if(!user.unEquip(I))
|
||||
return 0
|
||||
var/obj/old_id = id
|
||||
I.loc = src
|
||||
id = I
|
||||
user.put_in_hands(old_id)
|
||||
@@ -924,7 +924,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
..()
|
||||
if(istype(C, /obj/item/weapon/cartridge) && !cartridge)
|
||||
cartridge = C
|
||||
if(!user.drop_item())
|
||||
if(!user.unEquip(C))
|
||||
return
|
||||
cartridge.loc = src
|
||||
user << "<span class='notice'>You insert [cartridge] into [src].</span>"
|
||||
@@ -952,7 +952,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
return //Return in case of failed check or when successful.
|
||||
updateSelfDialog()//For the non-input related code.
|
||||
else if(istype(C, /obj/item/device/paicard) && !src.pai)
|
||||
if(!user.drop_item())
|
||||
if(!user.unEquip(C))
|
||||
return
|
||||
C.loc = src
|
||||
pai = C
|
||||
@@ -963,7 +963,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if(O)
|
||||
user << "<span class='warning'>There is already a pen in \the [src]!</span>"
|
||||
else
|
||||
if(!user.drop_item())
|
||||
if(!user.unEquip(C))
|
||||
return
|
||||
C.loc = src
|
||||
user << "<span class='notice'>You slide \the [C] into \the [src].</span>"
|
||||
@@ -1032,7 +1032,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
note = replacetext(note, "<li>", "\[*\]")
|
||||
note = replacetext(note, "<ul>", "\[list\]")
|
||||
note = replacetext(note, "</ul>", "\[/list\]")
|
||||
note = strip_html_properly(note)
|
||||
note = html_encode(note)
|
||||
notescanned = 1
|
||||
user << "<span class='notice'>Paper scanned. Saved to PDA's notekeeper.</span>" //concept of scanning paper copyright brainoblivion 2009
|
||||
|
||||
@@ -1186,7 +1186,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
//ntrc handler proc
|
||||
/obj/item/device/pda/proc/msg_chat(channel as text, sender as text, message as text)
|
||||
var/msg = "<b>[strip_html_properly(sender)]</b>| [strip_html_properly(message)]<br>"
|
||||
var/msg = "<b>[html_encode(sender)]</b>| [html_encode(message)]<br>"
|
||||
if(!channel)
|
||||
for(var/C in ntrclog)
|
||||
ntrclog[C] = msg + ntrclog[C]
|
||||
|
||||
@@ -331,7 +331,7 @@ Code:
|
||||
var/count = 0
|
||||
for(var/obj/machinery/computer/monitor/pMon in powermonitors)
|
||||
count++
|
||||
menu += "<a href='byond://?src=\ref[src];choice=Power Select;target=[count]'> [pMon] </a><BR>"
|
||||
menu += "<a href='byond://?src=\ref[src];choice=Power Select;target=[count]'>[pMon] </a><BR>"
|
||||
|
||||
menu += "</FONT>"
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ var/list/chatchannels = list(default_ntrc_chatroom.name = default_ntrc_chatroom)
|
||||
/datum/chatroom/proc/send_message(client,nick,message) //standard message
|
||||
if(!message)
|
||||
return 0
|
||||
logs.Insert(1,"[strip_html_properly(nick)]> [strip_html_properly(message)]")
|
||||
logs.Insert(1,"[html_encode(nick)]> [html_encode(message)]")
|
||||
log_chat("[usr]/([usr.ckey]) as [nick] sent to [name]: [message]")
|
||||
events.fireEvent("msg_chat",name,nick,message)
|
||||
return 1
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
dat += "<br>"
|
||||
dat += {"<a href='byond://?src=\ref[src];choice=Radio'>[A.radio_enabled ? "Disable" : "Enable"] Subspace Radio</a>"}
|
||||
dat += "<br>"
|
||||
dat += {"<a href='byond://?src=\ref[src];choice=Close'> Close</a>"}
|
||||
dat += {"<a href='byond://?src=\ref[src];choice=Close'>Close</a>"}
|
||||
user << browse(dat, "window=aicard")
|
||||
onclose(user, "aicard")
|
||||
return
|
||||
|
||||
@@ -30,23 +30,24 @@
|
||||
..()
|
||||
SSobj.processing += src
|
||||
|
||||
|
||||
/obj/item/device/multitool/ai_detect/Destroy()
|
||||
SSobj.processing -= src
|
||||
..()
|
||||
|
||||
/obj/item/device/multitool/ai_detect/process()
|
||||
|
||||
if(track_delay > world.time)
|
||||
return
|
||||
|
||||
var/found_eye = 0
|
||||
var/turf/our_turf = get_turf(src)
|
||||
|
||||
if(cameranet.chunkGenerated(our_turf.x, our_turf.y, our_turf.z))
|
||||
for(var/mob/living/silicon/ai/AI in ai_list)
|
||||
if(AI.cameraFollow == src)
|
||||
found_eye = 1
|
||||
break
|
||||
|
||||
if(!found_eye && cameranet.chunkGenerated(our_turf.x, our_turf.y, our_turf.z))
|
||||
var/datum/camerachunk/chunk = cameranet.getCameraChunk(our_turf.x, our_turf.y, our_turf.z)
|
||||
|
||||
if(chunk)
|
||||
if(chunk.seenby.len)
|
||||
for(var/mob/camera/aiEye/A in chunk.seenby)
|
||||
@@ -62,4 +63,3 @@
|
||||
|
||||
track_delay = world.time + 10 // 1 second
|
||||
return
|
||||
|
||||
|
||||
@@ -1,287 +0,0 @@
|
||||
//gangtool device
|
||||
/obj/item/device/gangtool
|
||||
name = "suspicious device"
|
||||
desc = "A strange device of sorts. Hard to really make out what it actually does just by looking."
|
||||
icon_state = "recaller"
|
||||
item_state = "walkietalkie"
|
||||
throwforce = 0
|
||||
w_class = 1.0
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
flags = CONDUCT
|
||||
var/gang //Which gang uses this?
|
||||
var/boss = 1 //If it has the power to promote gang members
|
||||
var/recalling = 0
|
||||
var/promotions = 0
|
||||
|
||||
/obj/item/device/gangtool/New() //Initialize supply point income if it hasn't already been started
|
||||
if(!ticker.mode.gang_points)
|
||||
ticker.mode.gang_points = new /datum/gang_points(ticker.mode)
|
||||
ticker.mode.gang_points.start()
|
||||
if(boss)
|
||||
desc += " Looks important."
|
||||
|
||||
/obj/item/device/gangtool/attack_self(mob/user)
|
||||
if (!can_use(user))
|
||||
return
|
||||
|
||||
var/dat
|
||||
if(!gang)
|
||||
dat += "This device is not registered.<br>"
|
||||
if(user.mind in (ticker.mode.A_bosses | ticker.mode.B_bosses))
|
||||
dat += "Give this device to another member of your organization to use.<br>"
|
||||
else
|
||||
dat += "<a href='?src=\ref[src];register=1'>Register Device</a><br>"
|
||||
else
|
||||
var/gang_size = ((gang == "A")? (ticker.mode.A_gang.len + ticker.mode.A_bosses.len) : (ticker.mode.B_gang.len + ticker.mode.B_bosses.len))
|
||||
var/gang_territory = ((gang == "A")? ticker.mode.A_territory.len : ticker.mode.B_territory.len)
|
||||
var/points = ((gang == "A") ? ticker.mode.gang_points.A : ticker.mode.gang_points.B)
|
||||
|
||||
dat += "Registration: <B>[(gang == "A")? gang_name("A") : gang_name("B")] Gang [boss ? "Administrator" : "Lieutenant"]</B><br>"
|
||||
dat += "Organization Size: <B>[gang_size]</B><br>"
|
||||
dat += "Station Control: <B>[round((gang_territory/start_state.num_territories)*100, 1)]%</B><br>"
|
||||
dat += "<a href='?src=\ref[src];choice=recall'>Recall Emergency Shuttle</a><br>"
|
||||
dat += "<br>"
|
||||
dat += "Influence: <B>[points]</B><br>"
|
||||
dat += "Time until Influence grows: <B>[(points >= 100) ? ("--:--") : (time2text(ticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]</B><br>"
|
||||
dat += "<B>Purchase Items:</B><br>"
|
||||
|
||||
dat += "(5 Influence) "
|
||||
if(points >= 5)
|
||||
dat += "<a href='?src=\ref[src];choice=ping'>Send Gang-wide Message</a><br>"
|
||||
else
|
||||
dat += "Send Gang-wide Message<br>"
|
||||
|
||||
dat += "(10 Influence) "
|
||||
if(points >= 10)
|
||||
dat += "<a href='?src=\ref[src];purchase=spraycan'><b>Territory Spraycan</b></a><br>"
|
||||
else
|
||||
dat += "<b>Territory Spraycan</b><br>"
|
||||
|
||||
dat += "(10 Influence) "
|
||||
if(points >= 10)
|
||||
dat += "<a href='?src=\ref[src];purchase=switchblade'>Switchblade</a><br>"
|
||||
else
|
||||
dat += "Switchblade<br>"
|
||||
|
||||
dat += "(25 Influence) "
|
||||
if(points >= 25)
|
||||
dat += "<a href='?src=\ref[src];purchase=pistol'>10mm Pistol</a><br>"
|
||||
else
|
||||
dat += "10mm Pistol<br>"
|
||||
|
||||
dat += "(10 Influence) "
|
||||
if(points >= 10)
|
||||
dat += "<a href='?src=\ref[src];purchase=ammo'>10mm Ammo</a><br>"
|
||||
else
|
||||
dat += "10mm Ammo<br>"
|
||||
|
||||
dat += "(40 Influence) "
|
||||
if(points >= 40)
|
||||
dat += "<a href='?src=\ref[src];purchase=pen'>Recruitment Pen</a><br>"
|
||||
else
|
||||
dat += "Recruitment Pen<br>"
|
||||
|
||||
if(boss)
|
||||
if(promotions >= 3)
|
||||
dat += "(Out of stock) Promote a Gangster<br>"
|
||||
else
|
||||
dat += "([(promotions*20)+10] Influence, [3-promotions] left) "
|
||||
if(points >= (promotions*20)+10)
|
||||
dat += "<a href='?src=\ref[src];purchase=gangtool'>Promote a Gangster</a><br>"
|
||||
else
|
||||
dat += "Promote a Gangster<br>"
|
||||
|
||||
dat += "<br>"
|
||||
dat += "<a href='?src=\ref[src];choice=refresh'>Refresh</a><br>"
|
||||
|
||||
var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v0.4")
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
|
||||
/obj/item/device/gangtool/Topic(href, href_list)
|
||||
if(!can_use(usr))
|
||||
return
|
||||
|
||||
add_fingerprint(usr)
|
||||
|
||||
if(href_list["register"])
|
||||
register_device(usr)
|
||||
|
||||
else if(!gang) //Gangtool must be registered before you can use the functions below
|
||||
return
|
||||
|
||||
if(href_list["purchase"])
|
||||
var/points = ((gang == "A") ? ticker.mode.gang_points.A : ticker.mode.gang_points.B)
|
||||
var/item_type
|
||||
switch(href_list["purchase"])
|
||||
if("spraycan")
|
||||
if(points >= 10)
|
||||
item_type = /obj/item/toy/crayon/spraycan/gang
|
||||
points = 10
|
||||
if("switchblade")
|
||||
if(points >= 10)
|
||||
item_type = /obj/item/weapon/switchblade
|
||||
points = 10
|
||||
if("pistol")
|
||||
if(points >= 25)
|
||||
item_type = /obj/item/weapon/gun/projectile/automatic/pistol
|
||||
points = 25
|
||||
if("ammo")
|
||||
if(points >= 10)
|
||||
item_type = /obj/item/ammo_box/magazine/m10mm
|
||||
points = 10
|
||||
if("pen")
|
||||
if(points >= 40)
|
||||
item_type = /obj/item/weapon/pen/gang
|
||||
points = 40
|
||||
if("gangtool")
|
||||
if((promotions < 3) && (points >= (promotions*20)+10))
|
||||
item_type = /obj/item/device/gangtool/lt
|
||||
points = (promotions*20)+10
|
||||
promotions++
|
||||
|
||||
if(item_type)
|
||||
if(gang == "A")
|
||||
ticker.mode.gang_points.A -= points
|
||||
else if(gang == "B")
|
||||
ticker.mode.gang_points.B -= points
|
||||
var/obj/purchased = new item_type(get_turf(usr))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
H.put_in_any_hand_if_possible(purchased)
|
||||
ticker.mode.message_gangtools(((gang=="A")? ticker.mode.A_tools : ticker.mode.B_tools), "A [href_list["purchase"]] was purchased by [usr] for [points] Influence.")
|
||||
log_game("A [href_list["purchase"]] was purchased by [key_name(usr)] for [points] Influence.")
|
||||
|
||||
else if(href_list["choice"])
|
||||
switch(href_list["choice"])
|
||||
if("recall")
|
||||
recall(usr)
|
||||
if("ping")
|
||||
ping_gang(usr)
|
||||
attack_self(usr)
|
||||
|
||||
|
||||
/obj/item/device/gangtool/proc/ping_gang(var/mob/user)
|
||||
if(!user)
|
||||
return
|
||||
var/message = stripped_input(user,"Discreetly send a gang-wide message.","Send Message") as null|text
|
||||
if(!message || (message == "") || !can_use(user))
|
||||
return
|
||||
if(user.z > 2)
|
||||
user << "<span class='info'>\icon[src]Error: Station out of range.</span>"
|
||||
return
|
||||
var/list/members = list()
|
||||
if(gang == "A")
|
||||
if(ticker.mode.gang_points.A >= 5)
|
||||
members += ticker.mode.A_bosses | ticker.mode.A_gang
|
||||
ticker.mode.gang_points.A -= 5
|
||||
else if(gang == "B")
|
||||
if(ticker.mode.gang_points.B >= 5)
|
||||
members += ticker.mode.B_bosses | ticker.mode.B_gang
|
||||
ticker.mode.gang_points.B -= 5
|
||||
if(members.len)
|
||||
for(var/datum/mind/ganger in members)
|
||||
if(ganger.current.z <= 2)
|
||||
ganger.current << "<span class='danger'><b>BOSS:</b> [message]</span>"
|
||||
message_admins("[key_name_admin(user)] sent a global message to the [gang_name(gang)] Gang ([gang]): [message].")
|
||||
log_game("[key_name(user)] sent a global message to the [gang_name(gang)] Gang ([gang]): [message].")
|
||||
|
||||
|
||||
/obj/item/device/gangtool/proc/register_device(var/mob/user)
|
||||
if(jobban_isbanned(user, "gangster") || jobban_isbanned(user, "Syndicate"))
|
||||
user << "<span class='warning'>\icon[src] ACCESS DENIED: Blacklisted user.</span>"
|
||||
return 0
|
||||
|
||||
var/promoted
|
||||
if(user.mind in (ticker.mode.A_gang | ticker.mode.A_bosses))
|
||||
ticker.mode.A_tools += src
|
||||
gang = "A"
|
||||
if(!(user.mind in ticker.mode.A_bosses))
|
||||
ticker.mode.remove_gangster(user.mind, 0, 2)
|
||||
ticker.mode.A_bosses += user.mind
|
||||
user.mind.special_role = "[gang_name("A")] Gang (A) Lieutenant"
|
||||
ticker.mode.update_gang_icons_added(user.mind, "A")
|
||||
log_game("[key_name(user)] has been promoted to Lieutenant in the [gang_name("A")] Gang (A)")
|
||||
promoted = 1
|
||||
else if(user.mind in (ticker.mode.B_gang | ticker.mode.B_bosses))
|
||||
ticker.mode.B_tools += src
|
||||
gang = "B"
|
||||
if(!(user.mind in ticker.mode.B_bosses))
|
||||
ticker.mode.remove_gangster(user.mind, 0, 2)
|
||||
ticker.mode.B_bosses += user.mind
|
||||
user.mind.special_role = "[gang_name("B")] Gang (B) Lieutenant"
|
||||
ticker.mode.update_gang_icons_added(user.mind, "B")
|
||||
log_game("[key_name(user)] has been promoted to Lieutenant in the [gang_name("B")] Gang (B)")
|
||||
promoted = 1
|
||||
if(promoted)
|
||||
ticker.mode.message_gangtools(((gang=="A")? ticker.mode.A_tools : ticker.mode.B_tools), "[user] has been promoted to Lieutenant.")
|
||||
user << "<FONT size=3 color=red><B>You have been promoted to Lieutenant!</B></FONT>"
|
||||
ticker.mode.forge_gang_objectives(user.mind)
|
||||
ticker.mode.greet_gang(user.mind,0)
|
||||
user << "The <b>Gangtool</b> you registered will allow you to use your gang's influence to purchase items and prevent the station from evacuating before your gang can take over. Use it to recall the emergency shuttle from anywhere on the station."
|
||||
user << "You may also now use <b>recruitment pens</b> to grow your gang membership. Use them on unsuspecting crew members to recruit them."
|
||||
if(!gang)
|
||||
usr << "<span class='warning'>ACCESS DENIED: Unauthorized user.</span>"
|
||||
|
||||
/obj/item/device/gangtool/proc/recall(mob/user)
|
||||
if(recalling || !can_use(user))
|
||||
return
|
||||
|
||||
recalling = 1
|
||||
loc << "<span class='info'>\icon[src]Generating shuttle recall order with codes retrieved from last call signal...</span>"
|
||||
|
||||
sleep(rand(10,30))
|
||||
|
||||
if(SSshuttle.emergency.mode != SHUTTLE_CALL) //Shuttle can only be recalled when it's moving to the station
|
||||
user << "<span class='info'>\icon[src]Emergency shuttle cannot be recalled at this time.</span>"
|
||||
recalling = 0
|
||||
return
|
||||
loc << "<span class='info'>\icon[src]Shuttle recall order generated. Accessing station long-range communication arrays...</span>"
|
||||
|
||||
sleep(rand(10,30))
|
||||
|
||||
var/turf/userturf = get_turf(user)
|
||||
if(userturf.z != 1) //Shuttle can only be recalled while on station
|
||||
user << "<span class='info'>\icon[src]Error: Device out of range of station communication arrays.</span>"
|
||||
recalling = 0
|
||||
return
|
||||
var/datum/station_state/end_state = new /datum/station_state()
|
||||
end_state.count()
|
||||
if((100 * start_state.score(end_state)) < 70) //Shuttle cannot be recalled if the station is too damaged
|
||||
user << "<span class='info'>\icon[src]Error: Station communication systems compromised. Unable to establish connection.</span>"
|
||||
recalling = 0
|
||||
return
|
||||
loc << "<span class='info'>\icon[src]Comm arrays accessed. Broadcasting recall signal...</span>"
|
||||
|
||||
sleep(rand(10,30))
|
||||
|
||||
recalling = 0
|
||||
log_game("[key_name(user)] has tried to recall the shuttle with a gangtool.")
|
||||
message_admins("[key_name_admin(user)] has tried to recall the shuttle with a gangtool.", 1)
|
||||
if(!SSshuttle.cancelEvac(user))
|
||||
loc << "<span class='info'>\icon[src]No response recieved. Emergency shuttle cannot be recalled at this time.</span>"
|
||||
|
||||
/obj/item/device/gangtool/proc/can_use(mob/living/carbon/human/user)
|
||||
if(!istype(user))
|
||||
return
|
||||
if(user.restrained() || user.lying || user.stat || user.stunned || user.weakened)
|
||||
return
|
||||
if(!(src in user.contents))
|
||||
return
|
||||
|
||||
var/success
|
||||
if(user.mind)
|
||||
if(gang)
|
||||
if((gang == "A") && (user.mind in ticker.mode.A_bosses))
|
||||
success = 1
|
||||
else if((gang == "B") && (user.mind in ticker.mode.B_bosses))
|
||||
success = 1
|
||||
else
|
||||
success = 1
|
||||
if(success)
|
||||
return 1
|
||||
user << "<span class='warning'>\icon[src] ACCESS DENIED: Unauthorized user.</span>"
|
||||
return 0
|
||||
|
||||
/obj/item/device/gangtool/lt
|
||||
boss = 0
|
||||
@@ -80,10 +80,10 @@ MASS SPECTROMETER
|
||||
|
||||
/obj/item/device/healthanalyzer/attack_self(mob/user)
|
||||
if(!scanchems)
|
||||
user << "<span class = 'notice'>You switch the health analyzer to scan chemical contents.</span>"
|
||||
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>"
|
||||
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)
|
||||
@@ -198,9 +198,9 @@ MASS SPECTROMETER
|
||||
if(H.reagents.reagent_list.len)
|
||||
user << "<span class='notice'>Subject contains the following reagents:</span>"
|
||||
for(var/datum/reagent/R in H.reagents.reagent_list)
|
||||
user << "<span class='notice'>[R.volume] units of [R.name][R.overdosed == 1 ? "</span> - <span class = 'boldannounce'>OVERDOSING</span>" : ".</span>"]"
|
||||
user << "<span class='notice'>[R.volume] units of [R.name][R.overdosed == 1 ? "</span> - <span class='boldannounce'>OVERDOSING</span>" : ".</span>"]"
|
||||
else
|
||||
user << "<span class = 'notice'>Subject contains no reagents.</span>"
|
||||
user << "<span class='notice'>Subject contains no reagents.</span>"
|
||||
if(H.reagents.addiction_list.len)
|
||||
user << "<span class='boldannounce'>Subject is addicted to the following reagents:</span>"
|
||||
for(var/datum/reagent/R in H.reagents.addiction_list)
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
/obj/item/device/taperecorder/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans)
|
||||
if(mytape && recording)
|
||||
mytape.timestamp += mytape.used_capacity
|
||||
mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [strip_html_properly(message)]"
|
||||
mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [html_encode(message)]"
|
||||
|
||||
/obj/item/device/taperecorder/verb/record()
|
||||
set name = "Start Recording"
|
||||
|
||||
@@ -153,6 +153,8 @@
|
||||
charging = 0
|
||||
|
||||
/obj/item/holotape/Bumped(var/mob/M)
|
||||
if(!ismob(M))
|
||||
return
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(C.m_intent == "walk")
|
||||
@@ -227,11 +229,11 @@
|
||||
|
||||
/obj/item/holotape/proc/breaktape()
|
||||
var/dir[2]
|
||||
var/icon_dir = src.icon_state
|
||||
if(icon_dir == "[src.icon_base]_h")
|
||||
var/icon_dir = icon_state
|
||||
if(icon_dir == "[icon_base]_h")
|
||||
dir[1] = EAST
|
||||
dir[2] = WEST
|
||||
if(icon_dir == "[src.icon_base]_v")
|
||||
if(icon_dir == "[icon_base]_v")
|
||||
dir[1] = NORTH
|
||||
dir[2] = SOUTH
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
item_state = "latexballon"
|
||||
user.update_inv_r_hand()
|
||||
user.update_inv_l_hand()
|
||||
user << "<span class='notice'> You blow up [src] with [tank].</span>"
|
||||
user << "<span class='notice'>You blow up [src] with [tank].</span>"
|
||||
air_contents = tank.remove_air_volume(3)
|
||||
|
||||
/obj/item/latexballon/proc/burst()
|
||||
|
||||
@@ -8,18 +8,4 @@
|
||||
throw_range = 3
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed")
|
||||
var/perunit = MINERAL_MATERIAL_AMOUNT
|
||||
var/sheettype = null //this is used for girders in the creation of walls/false walls
|
||||
|
||||
|
||||
// Since the sheetsnatcher was consolidated into weapon/storage/bag we now use
|
||||
// item/attackby() properly, making this unnecessary
|
||||
|
||||
/*/obj/item/stack/sheet/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/storage/bag/sheetsnatcher))
|
||||
var/obj/item/weapon/storage/bag/sheetsnatcher/S = W
|
||||
if(!S.mode)
|
||||
S.add(src,user)
|
||||
else
|
||||
for (var/obj/item/stack/sheet/stack in locate(src.x,src.y,src.z))
|
||||
S.add(stack,user)
|
||||
..()*/
|
||||
var/sheettype = null //this is used for girders in the creation of walls/false walls
|
||||
@@ -168,7 +168,7 @@
|
||||
src.bullets--
|
||||
user.visible_message("<span class='danger'>[user] fires [src] at [target]!</span>", \
|
||||
"<span class='danger'>You fire [src] at [target]!</span>", \
|
||||
"<span class='italics'> You hear a gunshot!</span>")
|
||||
"<span class='italics'>You hear a gunshot!</span>")
|
||||
|
||||
/obj/item/toy/ammo/gun
|
||||
name = "capgun ammo"
|
||||
@@ -533,7 +533,7 @@
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
new /obj/effect/decal/cleanable/ash(src.loc)
|
||||
src.visible_message("<span class='suicide'> The [src.name] explodes!</span>","<span class='italics'>You hear a snap!</span>")
|
||||
src.visible_message("<span class='suicide'>The [src.name] explodes!</span>","<span class='italics'>You hear a snap!</span>")
|
||||
playsound(src, 'sound/effects/snap.ogg', 50, 1)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -239,11 +239,13 @@ AI MODULES
|
||||
/obj/item/weapon/aiModule/reset/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
..()
|
||||
target.clear_inherent_laws()
|
||||
target.clear_zeroth_law(0)
|
||||
|
||||
/******************* Full Core Boards *******************/
|
||||
|
||||
/obj/item/weapon/aiModule/core/full/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender) //These boards replace inherent laws.
|
||||
target.clear_inherent_laws()
|
||||
target.clear_zeroth_law(0)
|
||||
..()
|
||||
|
||||
/******************** Asimov ********************/
|
||||
|
||||
@@ -185,8 +185,5 @@
|
||||
/obj/item/weapon/melee/energy/blade/dropped()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/melee/energy/blade/proc/throw()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/melee/energy/blade/attack_self(mob/user)
|
||||
return
|
||||
|
||||
@@ -335,3 +335,17 @@
|
||||
..()
|
||||
|
||||
|
||||
/*
|
||||
* Chemistry bag
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/bag/chemistry
|
||||
name = "chemistry bag"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bag"
|
||||
desc = "A bag for storing pills, patches, and bottles."
|
||||
storage_slots = 50
|
||||
max_combined_w_class = 200
|
||||
w_class = 1
|
||||
preposition = "in"
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/pill, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle)
|
||||
|
||||
@@ -68,11 +68,9 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", "
|
||||
/obj/item/weapon/storage/book/bible/proc/setupbiblespecifics(var/obj/item/weapon/storage/book/bible/B, var/mob/living/carbon/human/H)
|
||||
switch(B.icon_state)
|
||||
if("honk1","honk2")
|
||||
new /obj/item/weapon/grown/bananapeel(B)
|
||||
new /obj/item/weapon/grown/bananapeel(B)
|
||||
|
||||
if(B.icon_state == "honk1")
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask)
|
||||
new /obj/item/weapon/bikehorn(B)
|
||||
H.dna.add_mutation(CLOWNMUT)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask)
|
||||
|
||||
if("bible")
|
||||
for(var/area/chapel/main/A in world)
|
||||
@@ -204,11 +202,11 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", "
|
||||
A.reagents.del_reagent("water")
|
||||
A.reagents.add_reagent("holywater",water2holy)
|
||||
if(A.reagents && A.reagents.has_reagent("unholywater")) //yeah yeah, copy pasted code - sue me
|
||||
user << "<span class='notice'> You purify [A].</span>"
|
||||
user << "<span class='notice'>You purify [A].</span>"
|
||||
var/unholy2clean = A.reagents.get_reagent_amount("unholywater")
|
||||
A.reagents.del_reagent("unholywater")
|
||||
A.reagents.add_reagent("holywater",unholy2clean)
|
||||
|
||||
/obj/item/weapon/storage/book/bible/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
playsound(src.loc, "rustle", 50, 1, -5)
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -144,6 +144,7 @@
|
||||
*/
|
||||
/obj/item/weapon/weldingtool
|
||||
name = "welding tool"
|
||||
desc = "A standard edition welder provided by NanoTrasen."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "welder"
|
||||
item_state = "welder"
|
||||
@@ -162,6 +163,7 @@
|
||||
var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
|
||||
var/max_fuel = 20 //The max amount of fuel the welder can hold
|
||||
var/change_icons = 1
|
||||
var/can_off_process = 0
|
||||
|
||||
/obj/item/weapon/weldingtool/New()
|
||||
..()
|
||||
@@ -223,7 +225,8 @@
|
||||
force = 3
|
||||
damtype = "brute"
|
||||
update_icon()
|
||||
SSobj.processing.Remove(src)
|
||||
if(!can_off_process)
|
||||
SSobj.processing.Remove(src)
|
||||
return
|
||||
//Welders left on now use up fuel, but lets not have them run out quite that fast
|
||||
if(1)
|
||||
@@ -369,6 +372,7 @@
|
||||
|
||||
/obj/item/weapon/weldingtool/largetank
|
||||
name = "industrial welding tool"
|
||||
desc = "A slightly larger welder with a larger tank."
|
||||
icon_state = "indwelder"
|
||||
max_fuel = 40
|
||||
g_amt = 60
|
||||
@@ -382,6 +386,7 @@
|
||||
|
||||
/obj/item/weapon/weldingtool/mini
|
||||
name = "emergency welding tool"
|
||||
desc = "A miniature welder used during emergencies."
|
||||
icon_state = "miniwelder"
|
||||
max_fuel = 10
|
||||
w_class = 1
|
||||
@@ -395,6 +400,7 @@
|
||||
|
||||
/obj/item/weapon/weldingtool/hugetank
|
||||
name = "upgraded industrial welding tool"
|
||||
desc = "An upgraded welder based of the industrial welder."
|
||||
icon_state = "upindwelder"
|
||||
item_state = "upindwelder"
|
||||
max_fuel = 80
|
||||
@@ -404,19 +410,22 @@
|
||||
|
||||
/obj/item/weapon/weldingtool/experimental
|
||||
name = "experimental welding tool"
|
||||
desc = "An experimental welder capable of self-fuel generation."
|
||||
icon_state = "exwelder"
|
||||
item_state = "exwelder"
|
||||
max_fuel = 40
|
||||
m_amt = 70
|
||||
g_amt = 120
|
||||
origin_tech = "engineering=4;plasmatech=3"
|
||||
origin_tech = "materials=4;engineering=4;bluespace=3;plasmatech=3"
|
||||
var/last_gen = 0
|
||||
change_icons = 0
|
||||
can_off_process = 1
|
||||
|
||||
|
||||
//Proc to make the experimental welder generate fuel, optimized as fuck -Sieve
|
||||
//i don't think this is actually used, yaaaaay -Pete
|
||||
/obj/item/weapon/weldingtool/experimental/proc/fuel_gen()
|
||||
if(!last_gen)
|
||||
if(!welding && !last_gen)
|
||||
last_gen = 1
|
||||
reagents.add_reagent("welding_fuel",1)
|
||||
spawn(10)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/obj/item/weapon/banhammer/attack(mob/M, mob/user)
|
||||
M << "<font color='red'><b> You have been banned FOR NO REISIN by [user]<b></font>"
|
||||
user << "<font color='red'> You have <b>BANNED</b> [M]</font>"
|
||||
user << "<font color='red'>You have <b>BANNED</b> [M]</font>"
|
||||
playsound(loc, 'sound/effects/adminhelp.ogg', 15) //keep it at 15% volume so people don't jump out of their skin too much
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user