Merge branch 'dev' of https://github.com/Baystation12/Baystation12 into definecrusade

This commit is contained in:
Chinsky
2015-06-05 13:24:03 +03:00
17 changed files with 74 additions and 91 deletions

View File

@@ -29,7 +29,7 @@ var/global/list/GlobalPool = list()
if(!D) if(!D)
// So the GC knows we're pooling this type. // So the GC knows we're pooling this type.
if(!GlobalPool[get_type]) if(!GlobalPool[get_type])
GlobalPool[get_type] = list(new get_type) GlobalPool[get_type] = list()
if(islist(second_arg)) if(islist(second_arg))
return new get_type (arglist(second_arg)) return new get_type (arglist(second_arg))
else else
@@ -58,6 +58,9 @@ var/global/list/GlobalPool = list()
#ifdef DEBUG_ATOM_POOL #ifdef DEBUG_ATOM_POOL
world << text("DEBUG_DATUM_POOL: PlaceInPool([]) exceeds []. Discarding.", D.type, ATOM_POOL_COUNT) world << text("DEBUG_DATUM_POOL: PlaceInPool([]) exceeds []. Discarding.", D.type, ATOM_POOL_COUNT)
#endif #endif
if(garbage_collector)
garbage_collector.AddTrash(D)
else
del(D) del(D)
return return

View File

@@ -85,14 +85,8 @@ var/list/delayed_garbage = list()
/proc/qdel(var/datum/A) /proc/qdel(var/datum/A)
if(!A) if(!A)
return return
if(istype(A, /list))
var/list/L = A
for(var/E in L)
qdel(E)
return
if(!istype(A)) if(!istype(A))
//warning("qdel() passed object of type [A.type]. qdel() can only handle /datum types.") warning("qdel() passed object of type [A.type]. qdel() can only handle /datum types.")
del(A) del(A)
if(garbage_collector) if(garbage_collector)
garbage_collector.dels++ garbage_collector.dels++

View File

@@ -23,18 +23,6 @@
//Detective Work, used for the duplicate data points kept in the scanners //Detective Work, used for the duplicate data points kept in the scanners
var/list/original_atom var/list/original_atom
/atom/Destroy()
. = ..()
density = 0
set_opacity(0)
if(reagents)
qdel(reagents)
reagents = null
for(var/atom/movable/AM in contents)
qdel(AM)
invisibility = 101
/atom/proc/assume_air(datum/gas_mixture/giver) /atom/proc/assume_air(datum/gas_mixture/giver)
return null return null

View File

@@ -31,8 +31,15 @@
/atom/movable/Destroy() /atom/movable/Destroy()
. = ..() . = ..()
if(reagents)
qdel(reagents)
for(var/atom/movable/AM in contents)
qdel(AM)
loc = null loc = null
if (pulledby)
if (pulledby.pulling == src)
pulledby.pulling = null
pulledby = null
/atom/movable/proc/initialize() /atom/movable/proc/initialize()
return return

View File

@@ -17,8 +17,11 @@
if(!target) if(!target)
return return
for(var/i = 1 to step_count) for(var/i = 1 to step_count)
if(!loc)
return
step_towards(src, target) step_towards(src, target)
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
if(T && reagents)
reagents.touch_turf(T) reagents.touch_turf(T)
var/mob/M = locate() in T var/mob/M = locate() in T
if(M) if(M)

View File

@@ -255,6 +255,7 @@
var/orig_amount = src.amount var/orig_amount = src.amount
if (transfer && src.use(transfer)) if (transfer && src.use(transfer))
var/obj/item/stack/newstack = new src.type(loc, transfer) var/obj/item/stack/newstack = new src.type(loc, transfer)
newstack.color = color
if (prob(transfer/orig_amount * 100)) if (prob(transfer/orig_amount * 100))
transfer_fingerprints_to(newstack) transfer_fingerprints_to(newstack)
if(blood_DNA) if(blood_DNA)

View File

@@ -10,40 +10,3 @@
w_class = 4 w_class = 4
max_w_class = 3 max_w_class = 3
max_storage_space = 16 max_storage_space = 16
/obj/item/weapon/storage/briefcase/New()
..()
/obj/item/weapon/storage/briefcase/attack(mob/living/M as mob, mob/living/user as mob)
//..()
if ((CLUMSY in user.mutations) && prob(50))
user << "<span class='warning'>\The [src] slips out of your hand and hits your head.</span>"
user.take_organ_damage(10)
user.Paralyse(2)
return
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
msg_admin_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>)")
if (M.stat < 2 && M.health < 50 && prob(90))
var/mob/H = M
// ******* Check
if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80)))
M << "<span class='warning'>The helmet protects you from being hit hard in the head!</span>"
return
var/time = rand(2, 6)
if (prob(75))
M.Paralyse(time)
else
M.Stun(time)
if(M.stat != 2) M.stat = 1
for(var/mob/O in viewers(M, null))
O.show_message("<span class='warning'>\The [M] has been knocked unconscious!</span>", 1, "<span class='warning'>You hear someone fall.</span>", 2)
else
M << "<span class='warning'>\The [user] tried to knock you unconcious!</span>"
M.eye_blurry += 3
return

View File

@@ -112,6 +112,8 @@
else if (R_MOD & C.holder.rights || R_MENTOR & C.holder.rights) else if (R_MOD & C.holder.rights || R_MENTOR & C.holder.rights)
modmsg += "\t[C] is a [C.holder.rank]\n" modmsg += "\t[C] is a [C.holder.rank]\n"
num_mods_online++ num_mods_online++
if(config.admin_irc)
src << "<span class='info'>Adminhelps are also sent to IRC. If no admins are available in game try anyway and an admin on IRC may see it and respond.</span>"
msg = "<b>Current Admins ([num_admins_online]):</b>\n" + msg + "\n<b> Current [config.mods_are_mentors ? "Mentors" : "Moderators"]([num_mods_online]):</b>\n" + modmsg msg = "<b>Current Admins ([num_admins_online]):</b>\n" + msg + "\n<b> Current [config.mods_are_mentors ? "Mentors" : "Moderators"]([num_mods_online]):</b>\n" + modmsg
src << msg src << msg

View File

@@ -613,6 +613,12 @@ obj/structure/cable/proc/cableColor(var/colorC)
// Items usable on a cable coil : // Items usable on a cable coil :
// - Wirecutters : cut them duh ! // - Wirecutters : cut them duh !
// - Cable coil : merge cables // - Cable coil : merge cables
/obj/item/stack/cable_coil/proc/can_merge(var/obj/item/stack/cable_coil/C)
return color == C.color
/obj/item/stack/cable_coil/cyborg/can_merge()
return 1
/obj/item/stack/cable_coil/attackby(obj/item/weapon/W, mob/user) /obj/item/stack/cable_coil/attackby(obj/item/weapon/W, mob/user)
..() ..()
if( istype(W, /obj/item/weapon/wirecutters) && src.get_amount() > 1) if( istype(W, /obj/item/weapon/wirecutters) && src.get_amount() > 1)
@@ -623,6 +629,11 @@ obj/structure/cable/proc/cableColor(var/colorC)
return return
else if(istype(W, /obj/item/stack/cable_coil)) else if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = W var/obj/item/stack/cable_coil/C = W
if(!can_merge(C))
user << "These coils do not go together."
return
if(C.get_amount() >= get_max_amount()) if(C.get_amount() >= get_max_amount())
user << "The coil is too long, you cannot add any more cable to it." user << "The coil is too long, you cannot add any more cable to it."
return return

View File

@@ -289,6 +289,7 @@
SortP.sortType = sortType SortP.sortType = sortType
SortP.updatedir() SortP.updatedir()
SortP.updatedesc() SortP.updatedesc()
SortP.updatename()
else if(ptype==6) // Disposal bin else if(ptype==6) // Disposal bin
var/obj/machinery/disposal/P = new /obj/machinery/disposal(src.loc) var/obj/machinery/disposal/P = new /obj/machinery/disposal(src.loc)

View File

@@ -214,7 +214,7 @@
for(var/turf/O in covered_turfs) for(var/turf/O in covered_turfs)
var/obj/effect/energy_field/E = new(O) var/obj/effect/energy_field/E = new(O)
field.Add(E) field.Add(E)
qdel(covered_turfs) covered_turfs = null
for(var/mob/M in view(5,src)) for(var/mob/M in view(5,src))
M << "\icon[src] You hear heavy droning start up." M << "\icon[src] You hear heavy droning start up."

View File

@@ -56,6 +56,20 @@
--> -->
<div class="commit sansserif"> <div class="commit sansserif">
<h2 class="date">05 June 2015</h2>
<h3 class="author">PsiOmegaDelta updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Split stacks no longer lose their coloring.</li>
<li class="tweak">Can no longer merge cables of different colors.</li>
<li class="tweak">Blobs and simple mobs now attack all external organs instead of a subset. The overall damage remains the same but the number of fractures caused will, in general, be fewer.</li>
<li class="rscadd">Spider nurses now have a chance of injecting their victims with spider eggs which eventually hatch. If the limb is removed from the host, the host dies, or the spiderling has matured sufficiently it will crawl out into freedom. Medical scanners will pick upp eggs and spiderlings as foreign bodies.</li>
</ul>
<h3 class="author">Yoshax updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Makes hyposprays start empty instead of filled with Tricord.</li>
<li class="tweak">Makes the special wizard projectile staffs, Animate, Change, Focus and any future ones only usable by wizards. Also makes it so only wizards can use spellbooks and teleportation scrolls.</li>
</ul>
<h2 class="date">04 June 2015</h2> <h2 class="date">04 June 2015</h2>
<h3 class="author">PsiOmegaDelta updated:</h3> <h3 class="author">PsiOmegaDelta updated:</h3>
<ul class="changes bgimages16"> <ul class="changes bgimages16">

View File

@@ -1947,3 +1947,19 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
- rscadd: Prison break event will warn Enginering and the AI beforehand so they - rscadd: Prison break event will warn Enginering and the AI beforehand so they
can take preventive measures. can take preventive measures.
- bugfix: Disabling area power will now prevent doors from opening during the event - bugfix: Disabling area power will now prevent doors from opening during the event
2015-06-05:
PsiOmegaDelta:
- bugfix: Split stacks no longer lose their coloring.
- tweak: Can no longer merge cables of different colors.
- tweak: Blobs and simple mobs now attack all external organs instead of a subset.
The overall damage remains the same but the number of fractures caused will,
in general, be fewer.
- rscadd: Spider nurses now have a chance of injecting their victims with spider
eggs which eventually hatch. If the limb is removed from the host, the host
dies, or the spiderling has matured sufficiently it will crawl out into freedom.
Medical scanners will pick upp eggs and spiderlings as foreign bodies.
Yoshax:
- tweak: Makes hyposprays start empty instead of filled with Tricord.
- tweak: Makes the special wizard projectile staffs, Animate, Change, Focus and
any future ones only usable by wizards. Also makes it so only wizards can use
spellbooks and teleportation scrolls.

View File

@@ -1,5 +0,0 @@
author: PsiOmegaDelta
delete-after: True
changes:
- tweak: "Blobs and simple mobs now attack all external organs instead of a subset. The overall damage remains the same but the number of fractures caused will, in general, be fewer."

View File

@@ -1,5 +0,0 @@
author: PsiOmegaDelta
delete-after: True
changes:
- rscadd: "Spider nurses now have a chance of injecting their victims with spider eggs which eventually hatch. If the limb is removed from the host, the host dies, or the spiderling has matured sufficiently it will crawl out into freedom. Medical scanners will pick upp eggs and spiderlings as foreign bodies."

View File

@@ -1,5 +0,0 @@
author: Yoshax
delete-after: True
changes:
- tweak: "Makes hyposprays start empty instead of filled with Tricord."

View File

@@ -1,5 +0,0 @@
author: Yoshax
delete-after: True
changes:
- tweak: "Makes the special wizard projectile staffs, Animate, Change, Focus and any future ones only usable by wizards. Also makes it so only wizards can use spellbooks and teleportation scrolls."