Merge branch 'master' of https://github.com/tgstation/-tg-station into explosive

Conflicts:
	code/modules/mob/living/carbon/carbon.dm
	code/modules/mob/living/carbon/carbon_defines.dm
	code/modules/mob/living/carbon/human/life.dm
	code/modules/reagents/Chemistry-Goon-420BlazeIt.dm
	code/modules/reagents/Chemistry-Goon-Pyrotechnics.dm
This commit is contained in:
Iamgoofball
2015-03-08 14:26:52 -07:00
285 changed files with 9871 additions and 13276 deletions
+19 -2
View File
@@ -816,6 +816,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
tnote += "<i><b>&rarr; To [P.owner]:</b></i><br>[t]<br>"
P.tnote += "<i><b>&larr; From <a href='byond://?src=\ref[P];choice=Message;target=\ref[src]'>[owner]</a> ([ownjob]):</b></i><br>[t]<br>"
for(var/mob/M in player_list)
if(isobserver(M) && M.client && (M.client.prefs.toggles & CHAT_GHOSTPDA))
M.show_message("<span class='game say'>PDA Message - <span class='name'>[owner]</span> -> <span class='name'>[P.owner]</span>: <span class='message'>[t]</span></span>")
if (!P.silent)
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
@@ -837,9 +840,23 @@ var/global/list/obj/item/device/pda/PDAs = list()
else
U << "<span class='notice'>ERROR: Server isn't responding.</span>"
/obj/item/device/pda/AltClick()
..()
if(issilicon(usr))
return
if(can_use(usr))
if(id)
remove_id()
else
usr << "<span class='notice'>This PDA does not have an ID in it.</span>"
else
usr << "<span class='notice'>You cannot do this while restrained.</span>"
/obj/item/device/pda/verb/verb_remove_id()
set category = "Object"
set name = "Remove id"
set name = "Eject ID"
set src in usr
if(issilicon(usr))
@@ -856,7 +873,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/verb/verb_remove_pen()
set category = "Object"
set name = "Remove pen"
set name = "Remove Pen"
set src in usr
if(issilicon(usr))
+1 -1
View File
@@ -36,7 +36,7 @@ MASS SPECTROMETER
/obj/item/device/t_scanner/proc/scan()
for(var/turf/T in range(1, src.loc) )
for(var/turf/T in range(2, src.loc) )
if(!T.intact)
continue
+17 -12
View File
@@ -119,23 +119,13 @@
var/multiplier = text2num(href_list["multiplier"])
if (!multiplier ||(multiplier <= 0)) //href protection
return
if (src.get_amount() < R.req_amount*multiplier)
if (R.req_amount*multiplier>1)
usr << "<span class='danger'>You haven't got enough [src] to build \the [R.req_amount*multiplier] [R.title]\s!</span>"
else
usr << "<span class='danger'>You haven't got enough [src] to build \the [R.title]!</span>"
return
if (R.one_per_turf && (locate(R.result_type) in usr.loc))
usr << "<span class='danger'>There is another [R.title] here!</span>"
return
if (R.on_floor && !istype(usr.loc, /turf/simulated/floor))
usr << "<span class='danger'>\The [R.title] must be constructed on the floor!</span>"
if(!building_checks(R, multiplier))
return
if (R.time)
usr << "<span class='notice'>Building [R.title] ...</span>"
if (!do_after(usr, R.time))
return
if (src.get_amount() < R.req_amount*multiplier)
if(!building_checks(R, multiplier))
return
var/atom/O = new R.result_type( usr.loc )
@@ -167,6 +157,21 @@
return
return
/obj/item/stack/proc/building_checks(datum/stack_recipe/R, multiplier)
if (src.get_amount() < R.req_amount*multiplier)
if (R.req_amount*multiplier>1)
usr << "<span class='danger'>You haven't got enough [src] to build \the [R.req_amount*multiplier] [R.title]\s!</span>"
else
usr << "<span class='danger'>You haven't got enough [src] to build \the [R.title]!</span>"
return 0
if (R.one_per_turf && (locate(R.result_type) in usr.loc))
usr << "<span class='danger'>There is another [R.title] here!</span>"
return 0
if (R.on_floor && !istype(usr.loc, /turf/simulated/floor))
usr << "<span class='danger'>\The [R.title] must be constructed on the floor!</span>"
return 0
return 1
/obj/item/stack/proc/use(var/used) // return 0 = borked; return 1 = had enough
if (is_cyborg)
return source.use_charge(used * cost)
+36
View File
@@ -686,7 +686,43 @@
return
..()
/obj/item/toy/owl
name = "owl action figure"
desc = "An action figure modeled after 'The Owl', defender of justice."
icon = 'icons/obj/toy.dmi'
icon_state = "owlprize"
w_class = 2.0
var/cooldown = 0
/obj/item/toy/owl/attack_self(mob/user)
if(!cooldown) //for the sanity of everyone
var/message = pick("You won't get away this time, Griffin!", "Stop right there, criminal!", "Hoot! Hoot!", "I am the night!")
user << "<span class='notice'>You pull the string on the [src].</span>"
playsound(user, 'sound/machines/click.ogg', 20, 1)
src.loc.visible_message("<span class='danger'>\icon[src] [message]</span>")
cooldown = 1
spawn(30) cooldown = 0
return
..()
/obj/item/toy/griffin
name = "griffin action figure"
desc = "An action figure modeled after 'The Griffin', criminal mastermind."
icon = 'icons/obj/toy.dmi'
icon_state = "griffinprize"
w_class = 2.0
var/cooldown = 0
/obj/item/toy/griffin/attack_self(mob/user)
if(!cooldown) //for the sanity of everyone
var/message = pick("You can't stop me, Owl!", "My plan is flawless! The vault is mine!", "Caaaawwww!", "You will never catch me!")
user << "<span class='notice'>You pull the string on the [src].</span>"
playsound(user, 'sound/machines/click.ogg', 20, 1)
src.loc.visible_message("<span class='danger'>\icon[src] [message]</span>")
cooldown = 1
spawn(30) cooldown = 0
return
..()
/*
+1 -1
View File
@@ -33,7 +33,7 @@
icon_state = "syndi_cakes"
/obj/item/trash/waffles
name = "waffles"
name = "waffles tray"
icon_state = "waffles"
/obj/item/trash/plate
@@ -439,6 +439,20 @@ CIGARETTE PACKETS ARE IN FANCY.DM
attack_verb = null
var/lit = 0
/obj/item/weapon/lighter/grayscale
name = "cheap lighter"
desc ="A cheap-as-free lighter."
icon = 'icons/obj/cigarettes.dmi'
icon_state = "lighter-off"
item_state = "lighter-off"
icon_on = "lighter-on"
icon_off = "lighter-off"
/obj/item/weapon/lighter/grayscale/New()
var/icon/overlay = new /icon('icons/obj/cigarettes.dmi',"lighter-overlay")
overlay.ColorTone(color2hex(randomColor(1)))
overlays += overlay
/obj/item/weapon/lighter/zippo
name = "\improper Zippo lighter"
desc = "The zippo."
@@ -447,6 +461,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_on = "zippoon"
icon_off = "zippo"
/obj/item/weapon/lighter/update_icon()
icon_state = lit ? icon_on : icon_off
/obj/item/weapon/lighter/random
New()
var/color = pick("r","c","y","g")
@@ -458,8 +475,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(user.r_hand == src || user.l_hand == src)
if(!lit)
lit = 1
icon_state = icon_on
item_state = icon_on
update_icon()
force = 5
damtype = "fire"
hitsound = 'sound/items/welder.ogg'
@@ -478,8 +494,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
SSobj.processing |= src
else
lit = 0
icon_state = icon_off
item_state = icon_off
update_icon()
hitsound = "swing_hit"
force = 0
attack_verb = null //human_defense.dm takes care of it
@@ -44,6 +44,7 @@
/obj/item/weapon/restraints/handcuffs/proc/apply_cuffs(mob/living/carbon/target, mob/user)
if(!target.handcuffed)
user.drop_item()
//target.throw_alert("handcuffed", src) // Can't do this because escaping cuffs isn't standardized. Also zipties.
if(trashtype)
target.handcuffed = new trashtype(target)
qdel(src)
@@ -168,11 +168,12 @@
/obj/item/weapon/implant/loyalty/implanted(mob/target)
..()
if(target.mind in ticker.mode.head_revolutionaries)
if((target.mind in ticker.mode.head_revolutionaries) || (target.mind in ticker.mode.A_bosses) || (target.mind in ticker.mode.B_bosses))
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>")
return 0
if(target.mind in ticker.mode.revolutionaries)
if((target.mind in ticker.mode.revolutionaries) || (target.mind in ticker.mode.A_gangsters) || (target.mind in ticker.mode.B_gangsters))
ticker.mode.remove_revolutionary(target.mind)
ticker.mode.remove_gangster(target.mind, exclude_bosses=0)
target << "<span class='notice'>You feel a surge of loyalty towards Nanotrasen.</span>"
return 1
@@ -113,7 +113,7 @@
name = "potato battery"
desc = "A rechargable starch based power cell."
origin_tech = "powerstorage=1"
icon = 'icons/obj/power.dmi' //'icons/obj/harvest.dmi'
icon = 'icons/obj/power.dmi' //'icons/obj/hydroponics/harvest.dmi'
icon_state = "potato_cell" //"potato_battery"
charge = 100
maxcharge = 300
@@ -124,6 +124,37 @@
icon_state = "engiepack"
item_state = "engiepack"
/obj/item/weapon/storage/backpack/botany
name = "botany backpack"
desc = "It's a backpack made of all-natural fibers."
icon_state = "botpack"
item_state = "botpack"
/obj/item/weapon/storage/backpack/chemistry
name = "chemistry backpack"
desc = "A backpack specially designed to repel stains and hazardous liquids."
icon_state = "chempack"
item_state = "chempack"
/obj/item/weapon/storage/backpack/genetics
name = "genetics backpack"
desc = "A bag designed to be super tough, just in case someone hulks out on you."
icon_state = "genepack"
item_state = "genepack"
/obj/item/weapon/storage/backpack/science
name = "science backpack"
desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma."
icon_state = "toxpack"
item_state = "toxpack"
/obj/item/weapon/storage/backpack/virology
name = "virology backpack"
desc = "A backpack made of hypo-allergenic fibers. It's designed to help prevent the spread of disease. Smells like monkey."
icon_state = "viropack"
item_state = "viropack"
/*
* Satchel Types
*/
@@ -158,21 +189,31 @@
name = "virologist satchel"
desc = "A sterile satchel with virologist colours."
icon_state = "satchel-vir"
item_state = "satchel-vir"
/obj/item/weapon/storage/backpack/satchel_chem
name = "chemist satchel"
desc = "A sterile satchel with chemist colours."
icon_state = "satchel-chem"
item_state = "satchel-chem"
/obj/item/weapon/storage/backpack/satchel_gen
name = "geneticist satchel"
desc = "A sterile satchel with geneticist colours."
icon_state = "satchel-gen"
item_state = "satchel-gen"
/obj/item/weapon/storage/backpack/satchel_tox
name = "scientist satchel"
desc = "Useful for holding research materials."
icon_state = "satchel-tox"
item_state = "satchel-tox"
/obj/item/weapon/storage/backpack/satchel_hyd
name = "botanist satchel"
desc = "A satchel made of all natural fibers."
icon_state = "satchel-hyd"
item_state = "satchel-hyd"
/obj/item/weapon/storage/backpack/satchel_sec
name = "security satchel"
@@ -180,11 +221,6 @@
icon_state = "satchel-sec"
item_state = "securitypack"
/obj/item/weapon/storage/backpack/satchel_hyd
name = "hydroponics satchel"
desc = "A green satchel for plant related work."
icon_state = "satchel_hyd"
/obj/item/weapon/storage/backpack/satchel_cap
name = "captain's satchel"
desc = "An exclusive satchel for Nanotrasen officers."
@@ -79,6 +79,14 @@
max_w_class = 3
can_hold = list(/obj/item/weapon/ore)
/obj/item/weapon/storage/bag/ore/holding //miners, your messiah has arrived
name = "mining satchel of holding"
desc = "A revolution in convenience, this satchel allows for infinite ore storage. It's been outfitted with anti-malfunction safety measures."
storage_slots = INFINITY
max_combined_w_class = INFINITY
origin_tech = "bluespace=3"
icon_state = "satchel_bspace"
// -----------------------------
// Plant bag
@@ -86,7 +94,7 @@
/obj/item/weapon/storage/bag/plants
name = "plant bag"
icon = 'icons/obj/hydroponics.dmi'
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "plantbag"
storage_slots = 50; //the number of plant pieces it can carry.
max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class
@@ -2,7 +2,7 @@
/obj/item/weapon/watertank
name = "backpack water tank"
desc = "A S.U.N.S.H.I.N.E. brand watertank backpack with nozzle to water plants."
icon = 'icons/obj/hydroponics.dmi'
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "waterbackpack"
item_state = "waterbackpack"
w_class = 4.0
@@ -106,7 +106,7 @@
/obj/item/weapon/reagent_containers/spray/mister
name = "water mister"
desc = "A mister nozzle attached to a water tank."
icon = 'icons/obj/hydroponics.dmi'
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "mister"
item_state = "mister"
w_class = 4.0
@@ -165,7 +165,7 @@
/obj/item/weapon/reagent_containers/spray/mister/janitor
name = "janitor spray nozzle"
desc = "A janitorial spray nozzle attached to a watertank, designed to clean up large messes."
icon = 'icons/obj/hydroponics.dmi'
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "misterjani"
item_state = "misterjani"
amount_per_transfer_from_this = 5
@@ -203,7 +203,7 @@
/obj/item/weapon/extinguisher/mini/nozzle
name = "extinguisher nozzle"
desc = "A heavy duty nozzle attached to a firefighter's backpack tank."
icon = 'icons/obj/hydroponics.dmi'
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "atmos_nozzle"
item_state = "nozzleatmos"
safety = 0
@@ -290,7 +290,7 @@
if(!Adj|| !istype(target, /turf))
return
if(metal_synthesis_cooldown < 5)
var/obj/effect/effect/foam/F = new /obj/effect/effect/foam(get_turf(target), 1)
var/obj/effect/effect/foam/metal/F = new /obj/effect/effect/foam/metal(get_turf(target))
F.amount = 0
metal_synthesis_cooldown++
spawn(100)