Merge remote-tracking branch 'remotes/upstream/master' into thaw

This commit is contained in:
Xhuis
2015-06-16 11:42:47 -04:00
359 changed files with 5479 additions and 2929 deletions
+3 -3
View File
@@ -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()
+3 -7
View File
@@ -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
+8 -8
View File
@@ -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]
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+5 -5
View File
@@ -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
-287
View File
@@ -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
+4 -4
View File
@@ -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"
+5 -3
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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)
..()
..()
+12 -3
View File
@@ -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)
+1 -1
View File
@@ -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