Merge remote-tracking branch 'upstream/dev' into !

Conflicts:
	code/modules/mob/hear_say.dm
This commit is contained in:
GinjaNinja32
2014-12-08 15:32:49 +00:00
96 changed files with 878 additions and 939 deletions
+1 -1
View File
@@ -341,7 +341,7 @@
if(slot_w_uniform)
if(H.w_uniform)
return 0
if(H.wear_suit)
if(H.wear_suit && (H.wear_suit.body_parts_covered & src.body_parts_covered))
if(!disable_warning)
H << "<span class='warning'>\The [H.wear_suit] is in the way.</span>"
return 0
+1 -1
View File
@@ -67,7 +67,7 @@
/obj/item/device/aicard/Topic(href, href_list)
var/mob/U = usr
if (!(get_turf(U) == get_turf(src)) || U.machine != src)//If they are not in range of 1 or less or their machine is not the card (ie, clicked on something else).
if (get_dist(get_turf(U),get_turf(src)) > 1 || U.machine != src)//If they are not in range of 1 or less or their machine is not the card (ie, clicked on something else).
U << browse(null, "window=aicard")
U.unset_machine()
return
+7 -1
View File
@@ -309,4 +309,10 @@
/obj/item/device/paicard/emp_act(severity)
for(var/mob/M in src)
M.emp_act(severity)
..()
..()
/obj/item/device/paicard/ex_act(severity)
if(pai)
pai.ex_act(severity)
else
del(src)
@@ -3,128 +3,159 @@
/obj/item/weapon/implantcase
name = "Glass Case"
desc = "A case containing an implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-0"
item_state = "implantcase"
throw_speed = 1
throw_range = 5
w_class = 1.0
var/obj/item/weapon/implant/imp = null
proc
update()
/obj/item/weapon/implantcase/proc/update()
if (src.imp)
src.icon_state = text("implantcase-[]", src.imp.item_color)
else
src.icon_state = "implantcase-0"
return
update()
if (src.imp)
src.icon_state = text("implantcase-[]", src.imp.item_color)
/obj/item/weapon/implantcase/attackby(obj/item/weapon/I as obj, mob/user as mob)
..()
if (istype(I, /obj/item/weapon/pen))
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
if (user.get_active_hand() != I)
return
if((!in_range(src, usr) && src.loc != user))
return
t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
if(t)
src.name = text("Glass Case - '[]'", t)
else
src.icon_state = "implantcase-0"
return
attackby(obj/item/weapon/I as obj, mob/user as mob)
..()
if (istype(I, /obj/item/weapon/pen))
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
if (user.get_active_hand() != I)
src.name = "Glass Case"
else if(istype(I, /obj/item/weapon/reagent_containers/syringe))
if(!src.imp) return
if(!src.imp.allow_reagents) return
if(src.imp.reagents.total_volume >= src.imp.reagents.maximum_volume)
user << "\red [src] is full."
else
spawn(5)
I.reagents.trans_to(src.imp, 5)
user << "\blue You inject 5 units of the solution. The syringe now contains [I.reagents.total_volume] units."
else if (istype(I, /obj/item/weapon/implanter))
var/obj/item/weapon/implanter/M = I
if (M.imp)
if ((src.imp || M.imp.implanted))
return
if((!in_range(src, usr) && src.loc != user))
return
t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
if(t)
src.name = text("Glass Case- '[]'", t)
else
src.name = "Glass Case"
else if(istype(I, /obj/item/weapon/reagent_containers/syringe))
if(!src.imp) return
if(!src.imp.allow_reagents) return
if(src.imp.reagents.total_volume >= src.imp.reagents.maximum_volume)
user << "\red [src] is full."
else
spawn(5)
I.reagents.trans_to(src.imp, 5)
user << "\blue You inject 5 units of the solution. The syringe now contains [I.reagents.total_volume] units."
else if (istype(I, /obj/item/weapon/implanter))
if (I:imp)
if ((src.imp || I:imp.implanted))
M.imp.loc = src
src.imp = M.imp
M.imp = null
src.update()
M.update()
else
if (src.imp)
if (M.imp)
return
I:imp.loc = src
src.imp = I:imp
I:imp = null
src.update()
I:update()
else
if (src.imp)
if (I:imp)
return
src.imp.loc = I
I:imp = src.imp
src.imp = null
update()
I:update()
return
src.imp.loc = M
M.imp = src.imp
src.imp = null
update()
M.update()
return
/obj/item/weapon/implantcase/tracking
name = "Glass Case- 'Tracking'"
name = "Glass Case - 'Tracking'"
desc = "A case containing a tracking implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-b"
New()
src.imp = new /obj/item/weapon/implant/tracking( src )
..()
return
/obj/item/weapon/implantcase/tracking/New()
src.imp = new /obj/item/weapon/implant/tracking( src )
..()
return
/obj/item/weapon/implantcase/explosive
name = "Glass Case- 'Explosive'"
name = "Glass Case - 'Explosive'"
desc = "A case containing an explosive implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-r"
New()
src.imp = new /obj/item/weapon/implant/explosive( src )
..()
return
/obj/item/weapon/implantcase/explosive/New()
src.imp = new /obj/item/weapon/implant/explosive( src )
..()
return
/obj/item/weapon/implantcase/chem
name = "Glass Case- 'Chem'"
name = "Glass Case - 'Chem'"
desc = "A case containing a chemical implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-b"
/obj/item/weapon/implantcase/chem/New()
/obj/item/weapon/implantcase/chem/New()
src.imp = new /obj/item/weapon/implant/chem( src )
..()
return
/obj/item/weapon/implantcase/loyalty
name = "Glass Case- 'Loyalty'"
name = "Glass Case - 'Loyalty'"
desc = "A case containing a loyalty implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-r"
New()
src.imp = new /obj/item/weapon/implant/loyalty( src )
..()
return
/obj/item/weapon/implantcase/loyalty/New()
src.imp = new /obj/item/weapon/implant/loyalty( src )
..()
return
/obj/item/weapon/implantcase/death_alarm
name = "Glass Case- 'Death Alarm'"
name = "Glass Case - 'Death Alarm'"
desc = "A case containing a death alarm implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-b"
New()
src.imp = new /obj/item/weapon/implant/death_alarm( src )
..()
return
/obj/item/weapon/implantcase/death_alarm/New()
src.imp = new /obj/item/weapon/implant/death_alarm( src )
..()
return
/obj/item/weapon/implantcase/freedom
name = "Glass Case - 'Freedom'"
desc = "A case containing a freedom implant."
icon_state = "implantcase-r"
/obj/item/weapon/implantcase/freedom/New()
src.imp = new /obj/item/weapon/implant/freedom( src )
..()
return
/obj/item/weapon/implantcase/adrenalin
name = "Glass Case - 'Adrenalin'"
desc = "A case containing an adrenalin implant."
icon_state = "implantcase-b"
/obj/item/weapon/implantcase/adrenalin/New()
src.imp = new /obj/item/weapon/implant/adrenalin( src )
..()
return
/obj/item/weapon/implantcase/dexplosive
name = "Glass Case - 'Explosive'"
desc = "A case containing an explosive."
icon_state = "implantcase-r"
/obj/item/weapon/implantcase/dexplosive/New()
src.imp = new /obj/item/weapon/implant/dexplosive( src )
..()
return
/obj/item/weapon/implantcase/health
name = "Glass Case - 'Health'"
desc = "A case containing a health tracking implant."
icon_state = "implantcase-b"
/obj/item/weapon/implantcase/health/New()
src.imp = new /obj/item/weapon/implant/health( src )
..()
return
@@ -1,4 +1,5 @@
//Alium nests. Essentially beds with an unbuckle delay that only aliums can buckle mobs to.
#define NEST_RESIST_TIME 1200
/obj/structure/stool/bed/nest
name = "alien nest"
@@ -19,12 +20,16 @@
buckled_mob.old_y = 0
unbuckle()
else
if(world.time <= buckled_mob.last_special+NEST_RESIST_TIME)
return
buckled_mob.last_special = world.time
buckled_mob.visible_message(\
"<span class='warning'>[buckled_mob.name] struggles to break free of the gelatinous resin...</span>",\
"<span class='warning'>You struggle to break free from the gelatinous resin...</span>",\
"<span class='notice'>You hear squelching...</span>")
spawn(1200)
spawn(NEST_RESIST_TIME)
if(user && buckled_mob && user.buckled == src)
buckled_mob.last_special = world.time
buckled_mob.pixel_y = 0
buckled_mob.old_y = 0
unbuckle()
+7 -6
View File
@@ -163,31 +163,32 @@
/obj/structure/window/attackby(obj/item/W as obj, mob/user as mob)
if(!istype(W)) return//I really wish I did not need this
if(W.flags & NOBLUDGEON) return
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
var/obj/item/weapon/grab/G = W
if (istype(G.affecting, /mob/living))
if(istype(G.affecting,/mob/living))
var/mob/living/M = G.affecting
var/state = G.state
del(W) //gotta delete it here because if window breaks, it won't get deleted
switch (state)
if(1)
M.visible_message("<span class='warning'>[user] slams [M] against \the [src]!</span>")
M.apply_damage(7)
hit(10)
visible_message("\red [user] slams [M] against \the [src]!")
if(2)
M.visible_message("<span class='danger'>[user] bashes [M] against \the [src]!</span>")
if (prob(50))
M.Weaken(1)
M.apply_damage(10)
hit(25)
visible_message("\red <b>[user] bashes [M] against \the [src]!</b>")
if(3)
M.visible_message("<span class='danger'><big>[user] crushes [M] against \the [src]!</big></span>")
M.Weaken(5)
M.apply_damage(20)
hit(50)
visible_message("\red <big><b>[user] crushes [M] against \the [src]!</b></big>")
return
if(W.flags & NOBLUDGEON) return
if(istype(W, /obj/item/weapon/screwdriver))
if(reinf && state >= 1)
state = 3 - state