Merge pull request #563 from SkyMarshal/master

Disposals for mining, final blood_DNA stuff, cleaned up more code, fixed some scattered bugs, added 50% chance to end up in deep space.
This commit is contained in:
Mloc
2012-02-29 12:51:48 -08:00
21 changed files with 4979 additions and 4880 deletions
+1
View File
@@ -34,6 +34,7 @@
sleep(3)
if (i > 0)
var/obj/effect/decal/cleanable/xenoblood/b = new /obj/effect/decal/cleanable/xenoblood/xsplatter(src.loc)
b.blood_DNA = blood_DNA
for(var/datum/disease/D in src.viruses)
b.viruses += D
if (step_to(src, get_step(src, direction), 0))
+8 -18
View File
@@ -6,7 +6,7 @@
return (!density)
/obj/structure/closet/proc/can_open()
if(src.welded || istype(src.loc,/obj/effect/bigDelivery))
if(src.welded || istype(src.loc,/obj/structure/bigDelivery))
return 0
return 1
@@ -117,20 +117,7 @@
del(src)
/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/packageWrap))
var/obj/item/weapon/packageWrap/O = W
if (O.amount > 3)
src.close()
var/obj/effect/bigDelivery/P = new /obj/effect/bigDelivery(get_turf(src.loc))
P.wrapped = src
P.waswelded = welded
src.welded = 0
src.loc = P
src.opened = 0
O.amount -= 3
else
user << "\blue You need more paper."
else if(src.opened)
if(src.opened)
if(istype(W, /obj/item/weapon/grab))
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
@@ -147,6 +134,9 @@
if(isrobot(user))
return
if(istype(W, /obj/item/weapon/packageWrap))
return
usr.drop_item()
if(W)
@@ -187,8 +177,8 @@
return
if(!src.open())
if(istype(src.loc,/obj/effect/bigDelivery) && lasttry == 0)
var/obj/effect/bigDelivery/Pack = src.loc
if(istype(src.loc,/obj/structure/bigDelivery) && lasttry == 0)
var/obj/structure/bigDelivery/Pack = src.loc
if(istype(Pack.loc,/turf) && Pack.waswelded == 0)
for (var/mob/M in hearers(src.loc, null))
M << text("<FONT size=[] color=red>BANG, bang, rrrrrip!</FONT>", max(0, 5 - get_dist(src, M)))
@@ -199,7 +189,7 @@
src.open()
spawn(30)
lasttry = 0
else if(!istype(src.loc,/obj/effect/bigDelivery))
else if(!istype(src.loc,/obj/structure/bigDelivery))
user << "\blue It won't budge!"
if(!lastbang)
lastbang = 1
+4
View File
@@ -54,6 +54,10 @@
gib.blood_DNA = list(list(MobDNA.unique_enzymes, MobDNA.b_type))
if(MobDNA.original_name != "Unknown")
gib.OriginalMob = MobDNA.original_name
else if(istype(src, /obj/effect/gibspawner/xeno))
gib.blood_DNA = list(list("UNKNOWN DNA", "X*"))
else if(istype(src, /obj/effect/gibspawner/human)) // Probably a monkey
gib.blood_DNA = list(list("Non-human DNA", "A+"))
var/list/directions = gibdirections[i]
if(directions.len)
gib.streak(directions)
+2 -21
View File
@@ -105,6 +105,7 @@
var/turf/Z = get_turf(src)
message_admins("\red ERROR: [src] at [Z.x], [Z.y], [Z.z] is missing it's blood_DNA list!")
log_game("\red ERROR: [src] at [Z.x], [Z.y], [Z.z] is missing it's blood_DNA list!")
blood_DNA = list()
return
usr << text("This is a []\icon[][]. It is a [] item.", !src.blood_DNA.len ? "" : "bloody ",src, src.name, t)
if(src.desc)
@@ -200,30 +201,10 @@
user.update_clothing()
return
/*
/obj/item/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/device/detective_scanner))
return
if (istype(W, /obj/item/weapon/packageWrap))
var/location = get_turf(src.loc)
if(istype(src,/obj/item/weapon/storage) && istype(src.loc, /mob)) //Put it into the bag
return
if(istype(src.loc,/obj/item/weapon/storage)) //Taking stuff out of storage duplicates it.
var/obj/item/weapon/storage/U = src.loc
user.client.screen -= src //Fixed!
U.contents.Remove(src)
if(istype(src.loc,/obj/item/clothing/suit/storage/))
var/obj/item/clothing/suit/storage/X = src.loc
user.client.screen -= src
X.contents.Remove(src)
if(src in user)
user.remove_from_mob(src)
var/obj/item/weapon/packageWrap/O = W
if (O.amount > 1)
var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(location)
P.wrapped = src
src.loc = P
O.amount -= 1*/
/obj/item/attack_self(mob/user as mob)
..()
+43 -2
View File
@@ -1,6 +1,6 @@
/obj/effect/portal/Bumped(mob/M as mob|obj)
/obj/effect/portal/Bumped(atom/M as mob|obj)
spawn(0)
src.teleport(M)
return
@@ -31,7 +31,48 @@
if (istype(M, /atom/movable))
if(prob(failchance)) //oh dear a problem, put em in deep space
src.icon_state = "portal1"
do_teleport(M, locate(rand(5, world.maxx - 5), rand(5, world.maxy -5), 3), 0)
do_teleport(M, locate(rand(5, world.maxx - 5), rand(5, world.maxy -5), pick(3,4,5,6)), 0)
else
do_teleport(M, target, 1) ///You will appear adjacent to the beacon
//Adding in special portals to permit the use of trans-level disposals/mailing.
/obj/effect/portal/zlev
failchance = 0
target = null
invisibility = 101
var/ID = 0
New()
CanPass(atom/A, turf/T)
if(istype(A, /mob) || istype(A, /obj)) // You Shall Not Pass!
teleport(A)
return 1
teleport(var/atom/movable/M as mob|obj)
if(istype(M, /obj/effect)) //sparks don't teleport
return
if (!( target ))
for(var/obj/effect/portal/zlev/dest/A in world)
if(ID == A.ID)
target = A
break
if(!target)
del(src)
return
if (istype(M, /atom/movable))
var/temp = get_dir(M,src)
do_teleport(M, target) ///You will appear at the beacon
var/turf/target2 = get_edge_target_turf(M, temp)
M.throw_at(target2,100,2)
dest //Holy shit that was bad.
HasEntered(AM as mob|obj)
return
Bumped(atom/M as mob|obj)
return
CanPass(atom/A, turf/T)
return 1
+1 -1
View File
@@ -296,7 +296,7 @@
if (!ticker)
user << "You can't buckle anyone in before the game starts."
return 0
if ((!( istype(M, /mob) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat || M.buckled))
if ((!( istype(M, /mob) ) || get_dist(src, user) >= 1 || M.loc != src.loc || user.restrained() || usr.stat || M.buckled))
return 0
if (M == usr)
M.visible_message(\
+1 -8
View File
@@ -280,14 +280,7 @@
return attack_hand(user)
/obj/structure/closet/crate/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/packageWrap))
var/obj/item/weapon/packageWrap/O = W
if (O.amount > 3)
var/obj/effect/bigDelivery/P = new /obj/effect/bigDelivery(get_turf(src.loc))
P.wrapped = src
src.loc = P
O.amount -= 3
else if(opened)
if(opened)
if(isrobot(user))
return
user.drop_item()
+2 -2
View File
@@ -108,7 +108,7 @@ TABLE AND RACK OBJECT INTERATIONS
/obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0)) return 1
if(istype(mover) && (mover.checkpass(PASSTABLE) || mover.flags & TABLEPASS)) //WTF do things hit tables like that? Jeez.
if(istype(mover) && (mover.checkpass(PASSTABLE) || (mover.flags & TABLEPASS) || mover.throwing)) //WTF do things hit tables like that? Jeez.
return 1
else
return 0
@@ -309,7 +309,7 @@ TABLE AND RACK OBJECT INTERATIONS
if(air_group || (height==0)) return 1
if(src.density == 0) //Because broken racks -Agouri |TODO: SPRITE!|
return 1
if(istype(mover) && (mover.checkpass(PASSTABLE) || mover.flags & TABLEPASS))
if(istype(mover) && (mover.checkpass(PASSTABLE) || mover.flags & TABLEPASS || mover.throwing))
return 1
else
return 0