mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 03:27:05 +01:00
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:
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
..()
|
||||
|
||||
@@ -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
|
||||
@@ -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(\
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user