Merge pull request #7 from ZomgPonies/master

Merge from Master
This commit is contained in:
Fox-McCloud
2014-01-30 19:37:36 -08:00
86 changed files with 405 additions and 289 deletions
+1
View File
@@ -79,6 +79,7 @@
#include "code\controllers\_DynamicAreaLighting_TG.dm"
#include "code\controllers\configuration.dm"
#include "code\controllers\failsafe.dm"
#include "code\controllers\garbage.dm"
#include "code\controllers\lighting_controller.dm"
#include "code\controllers\master_controller.dm"
#include "code\controllers\shuttle_controller.dm"
@@ -154,4 +154,4 @@
"\blue You have unfastened \the [src].", \
"You hear ratchet.")
new /obj/item/pipe(loc, make_from=src)
del(src)
qdel(src)
@@ -90,6 +90,9 @@
if(welded)
return 0
// New GC does this sometimes
if(!loc) return
var/datum/gas_mixture/environment = loc.return_air()
var/environment_pressure = environment.return_pressure()
@@ -107,6 +107,8 @@
//broadcast_status()
if(!on)
return 0
// New GC does this sometimes
if(!loc) return
var/datum/gas_mixture/environment = loc.return_air()
+2 -2
View File
@@ -30,7 +30,7 @@ datum/pipe_network
//Notes: Assuming that members will add themselves to appropriate roster in network_expand()
if(!start_normal)
del(src)
qdel(src)
start_normal.network_expand(src, reference)
@@ -39,7 +39,7 @@ datum/pipe_network
if((normal_members.len>0)||(line_members.len>0))
pipe_networks += src
else
del(src)
qdel(src)
proc/merge(datum/pipe_network/giver)
if(giver==src) return 0
+1 -1
View File
@@ -94,7 +94,7 @@
var/have_node2 = node2?1:0
icon_state = "exposed[have_node1][have_node2]"
if(!node1&&!node2)
del(src)
qdel(src)
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/initialize()
for(var/obj/machinery/atmospherics/target in get_step(src,initialize_directions))
+5 -6
View File
@@ -164,7 +164,7 @@ obj/machinery/atmospherics/pipe
var/datum/effect/effect/system/harmless_smoke_spread/smoke = new
smoke.set_up(1,0, src.loc, 0)
smoke.start()
del(src)
qdel(src)
proc/normalize_dir()
if(dir==3)
@@ -202,7 +202,7 @@ obj/machinery/atmospherics/pipe
else
if(!node1&&!node2)
del(src) //TODO: silent deleting looks weird
qdel(src) //TODO: silent deleting looks weird
var/have_node1 = node1?1:0
var/have_node2 = node2?1:0
icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]"
@@ -540,7 +540,6 @@ obj/machinery/atmospherics/pipe
dir = SOUTH
initialize_directions = SOUTH
var/build_killswitch = 1
var/obj/machinery/atmospherics/node1
@@ -740,7 +739,7 @@ obj/machinery/atmospherics/pipe
icon_state = "manifold_[connected]_[unconnected]"
if(!connected)
del(src)
qdel(src)
return
@@ -998,7 +997,7 @@ obj/machinery/atmospherics/pipe
overlays += new/image(con,dir=8)
if(!node1 && !node2 && !node3 && !node4)
del(src)
qdel(src)
return
initialize()
@@ -1228,4 +1227,4 @@ obj/machinery/atmospherics/pipe/attackby(var/obj/item/weapon/W as obj, var/mob/u
if (meter.target == src)
new /obj/item/pipe_meter(T)
del(meter)
del(src)
qdel(src)
+70
View File
@@ -0,0 +1,70 @@
#define GC_COLLECTIONS_PER_TICK 100
var/global/datum/controller/garbage_collector/garbage
var/global/list/uncollectable_vars=list(
"alpha",
"bestF",
"bounds",
"bound_height",
"bound_width",
"ckey",
"color",
"contents",
"gender",
"key",
//"loc",
"locs",
"luminosity",
"parent",
"parent_type",
"step_size",
"glide_size",
"step_x",
"step_y",
"step_z",
"tag",
"type",
"vars",
"verbs",
"x",
"y",
"z",
)
/datum/controller/garbage_collector
var/list/queue=list()
var/waiting=0
var/turf/trashbin=null
New()
trashbin=locate(0,0,CENTCOMM_Z)
proc/AddTrash(var/atom/movable/A)
if(!A)
return
A.loc=trashbin
queue.Add(A)
waiting++
proc/Pop()
var/atom/movable/A = queue[1]
if(!A) return
if(!istype(A,/atom/movable))
testing("GC given a [A.type].")
del(A)
return
for(var/vname in A.vars)
if(vname in uncollectable_vars)
continue
//testing("Unsetting [vname] in [A.type]!")
A.vars[vname]=null
A.loc=null
queue.Remove(A)
proc/process()
for(var/i=0;i<min(waiting,GC_COLLECTIONS_PER_TICK);i++)
if(waiting)
Pop()
waiting--
/proc/qdel(var/atom/A)
garbage.AddTrash(A)
+13 -3
View File
@@ -27,6 +27,7 @@ datum/controller/game_controller
var/nano_cost = 0
var/events_cost = 0
var/ticker_cost = 0
var/gc_cost = 0
var/total_cost = 0
var/last_thing_processed
@@ -64,6 +65,9 @@ datum/controller/game_controller/proc/setup()
if(!ticker)
ticker = new /datum/controller/gameticker()
if(!garbage)
garbage = new /datum/controller/garbage_collector()
setup_objects()
setupgenetics()
setupfactions()
@@ -216,8 +220,14 @@ datum/controller/game_controller/proc/process()
ticker.process()
ticker_cost = (world.timeofday - timer) / 10
// GC
timer = world.timeofday
last_thing_processed = garbage.type
garbage.process()
gc_cost = (world.timeofday - timer) / 10
//TIMING
total_cost = air_cost + sun_cost + mobs_cost + diseases_cost + machines_cost + objects_cost + networks_cost + powernets_cost + nano_cost + events_cost + ticker_cost
total_cost = air_cost + sun_cost + mobs_cost + diseases_cost + machines_cost + objects_cost + networks_cost + powernets_cost + nano_cost + events_cost + ticker_cost + gc_cost
var/end_time = world.timeofday
if(end_time < start_time)
@@ -252,7 +262,7 @@ datum/controller/game_controller/proc/process_machines()
var/i = 1
while(i<=machines.len)
var/obj/machinery/Machine = machines[i]
if(Machine)
if(Machine && Machine.loc)
last_thing_processed = Machine.type
if(Machine.process() != PROCESS_KILL)
if(Machine)
@@ -266,7 +276,7 @@ datum/controller/game_controller/proc/process_objects()
var/i = 1
while(i<=processing_objects.len)
var/obj/Object = processing_objects[i]
if(Object)
if(Object && Object.loc)
last_thing_processed = Object.type
Object.process()
i++
+5
View File
@@ -16,6 +16,11 @@
/datum/disease/appendicitis/stage_act()
..()
if(istype(affected_mob,/mob/living/carbon/human))
var/mob/living/carbon/human/H = affected_mob
if(H.species.name == "Diona" || H.species.name == "Machine" || H.species.name == "Vox") src.cure()
if(stage == 1)
if(affected_mob.op_stage.appendix == 2.0)
// appendix is removed, can't get infected again
+5 -5
View File
@@ -253,7 +253,7 @@
ex_act(severity)
//Foreach goto(35)
//SN src = null
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
@@ -262,7 +262,7 @@
ex_act(severity)
//Foreach goto(108)
//SN src = null
del(src)
qdel(src)
return
if(3.0)
if (prob(25))
@@ -271,7 +271,7 @@
ex_act(severity)
//Foreach goto(181)
//SN src = null
del(src)
qdel(src)
return
else
return
@@ -353,12 +353,12 @@
switch(severity)
if(1.0)
//SN src = null
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
//SN src = null
del(src)
qdel(src)
return
else
return
+1 -1
View File
@@ -162,7 +162,7 @@
loc=location
src.icon = I
spawn(duration)
del(src)
qdel(src)
///////////////////////////////////////////////////////////////////////////////////////////
+3 -3
View File
@@ -142,15 +142,15 @@
/obj/effect/biomass/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(90))
del(src)
qdel(src)
return
if(3.0)
if (prob(50))
del(src)
qdel(src)
return
return
+1 -1
View File
@@ -118,5 +118,5 @@ The "dust" will damage the hull of the station causin minor hull breaches.
ex_act(severity)
del(src)
qdel(src)
return
+3 -3
View File
@@ -227,15 +227,15 @@
/obj/effect/spacevine/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(90))
del(src)
qdel(src)
return
if(3.0)
if (prob(50))
del(src)
qdel(src)
return
return
+1 -1
View File
@@ -114,7 +114,7 @@
/obj/effect/meteor/ex_act(severity)
if (severity < 4)
del(src)
qdel(src)
return
/obj/effect/meteor/big
+2 -2
View File
@@ -28,12 +28,12 @@
switch(severity)
if(1.0)
//SN src = null
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
//SN src = null
del(src)
qdel(src)
return
if(3.0)
if (prob(25))
+5 -5
View File
@@ -21,12 +21,12 @@
switch(severity)
if(1.0)
//SN src = null
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
//SN src = null
del(src)
qdel(src)
return
else
return
@@ -250,21 +250,21 @@
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
if(2.0)
if(prob(50))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
if(3.0)
if(prob(25))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
return
emp_act(severity)
+5 -5
View File
@@ -102,7 +102,7 @@
ex_act(severity)
//Foreach goto(35)
//SN src = null
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
@@ -111,7 +111,7 @@
ex_act(severity)
//Foreach goto(108)
//SN src = null
del(src)
qdel(src)
return
if(3.0)
if (prob(25))
@@ -120,7 +120,7 @@
ex_act(severity)
//Foreach goto(181)
//SN src = null
del(src)
qdel(src)
return
else
return
@@ -136,12 +136,12 @@
switch(severity)
if(1.0)
//SN src = null
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
//SN src = null
del(src)
qdel(src)
return
else
return
+1 -1
View File
@@ -27,7 +27,7 @@
SetLuminosity(0)
/obj/machinery/bot/proc/explode()
del(src)
qdel(src)
/obj/machinery/bot/proc/healthcheck()
if (src.health <= 0)
+3 -3
View File
@@ -387,21 +387,21 @@
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
if(3.0)
if (prob(25))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
else
return
+2 -2
View File
@@ -44,11 +44,11 @@
/obj/machinery/computer/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(25))
del(src)
qdel(src)
return
if (prob(50))
for(var/x in verbs)
+3 -3
View File
@@ -96,7 +96,7 @@ for reference:
switch(severity)
if(1.0)
visible_message("\red <B>The barricade is blown apart!</B>")
del(src)
qdel(src)
return
if(2.0)
src.health -= 25
@@ -105,7 +105,7 @@ for reference:
new /obj/item/stack/sheet/wood(get_turf(src))
new /obj/item/stack/sheet/wood(get_turf(src))
new /obj/item/stack/sheet/wood(get_turf(src))
del(src)
qdel(src)
return
meteorhit()
@@ -269,4 +269,4 @@ for reference:
explosion(src.loc,-1,-1,0)
if(src)
del(src)
qdel(src)
+2 -2
View File
@@ -172,10 +172,10 @@
/obj/machinery/door/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
if(2.0)
if(prob(25))
del(src)
qdel(src)
if(3.0)
if(prob(80))
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+3 -3
View File
@@ -160,13 +160,13 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
/obj/machinery/hologram/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
if(2.0)
if (prob(50))
del(src)
qdel(src)
if(3.0)
if (prob(5))
del(src)
qdel(src)
return
/obj/machinery/hologram/blob_act()
+3 -3
View File
@@ -140,15 +140,15 @@ Class Procs:
/obj/machinery/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
if(3.0)
if (prob(25))
del(src)
qdel(src)
return
else
return
+2 -2
View File
@@ -152,12 +152,12 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
/obj/machinery/newscaster/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
src.isbroken=1
if(prob(50))
del(src)
qdel(src)
else
src.update_icon() //can't place it above the return and outside the if-else. or we might get runtimes of null.update_icon() if(prob(50)) goes in.
return
+2 -2
View File
@@ -406,7 +406,7 @@ Status: []<BR>"},
/obj/machinery/porta_turret/ex_act(severity)
if(severity >= 3) // turret dies if an explosion touches it!
del(src)
qdel(src)
else
src.die()
@@ -418,7 +418,7 @@ Status: []<BR>"},
invisibility=0
src.spark_system.start() // creates some sparks because they look cool
src.density=1
del(cover) // deletes the cover - no need on keeping it there!
qdel(cover) // deletes the cover - no need on keeping it there!
+4 -4
View File
@@ -92,13 +92,13 @@
switch(severity)
if(1.0)
if (prob(75))
del(src)
qdel(src)
if(2.0)
if (prob(50))
del(src)
qdel(src)
if(3.0)
if (prob(25))
del(src)
qdel(src)
return
/obj/machinery/shield/emp_act(severity)
@@ -164,7 +164,7 @@
/obj/machinery/shieldgen/Del()
for(var/obj/machinery/shield/shield_tile in deployed_shields)
del(shield_tile)
qdel(shield_tile)
..()
+2 -2
View File
@@ -78,12 +78,12 @@
if(1.0)
if(prob(50))
src.dump_everything() //So suits dont survive all the time
del(src)
qdel(src)
return
if(2.0)
if(prob(50))
src.dump_everything()
del(src)
qdel(src)
return
else
return
+1 -1
View File
@@ -301,7 +301,7 @@
sleep(3)
flick("explosion", src)
spawn(13)
del(src)
qdel(src)
/obj/machinery/turretid
name = "turret deactivation control"
+2 -2
View File
@@ -78,11 +78,11 @@
/obj/machinery/vending/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
if(3.0)
if(prob(25))
+1 -1
View File
@@ -23,7 +23,7 @@
/obj/effect/decal/mecha_wreckage/ex_act(severity)
if(severity < 2)
spawn
del src
qdel(src)
return
/obj/effect/decal/mecha_wreckage/bullet_act(var/obj/item/projectile/Proj)
+4 -4
View File
@@ -58,7 +58,7 @@
/obj/effect/alien/resin/proc/healthcheck()
if(health <=0)
density = 0
del(src)
qdel(src)
return
/obj/effect/alien/resin/bullet_act(var/obj/item/projectile/Proj)
@@ -255,13 +255,13 @@ Alien plants should do something if theres a lot of poison
/obj/effect/alien/weeds/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
if(2.0)
if (prob(50))
del(src)
qdel(src)
if(3.0)
if (prob(5))
del(src)
qdel(src)
return
/obj/effect/alien/weeds/attackby(var/obj/item/weapon/W, var/mob/user)
+1 -1
View File
@@ -1005,7 +1005,7 @@ steam.start() -- spawns the effect
ex_act(severity)
del(src)
qdel(src)
blob_act()
del(src)
+3 -3
View File
@@ -143,15 +143,15 @@
/obj/effect/glowshroom/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
if(3.0)
if (prob(5))
del(src)
qdel(src)
return
else
return
+3 -3
View File
@@ -11,13 +11,13 @@
/obj/effect/spider/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
if(2.0)
if (prob(50))
del(src)
qdel(src)
if(3.0)
if (prob(5))
del(src)
qdel(src)
return
/obj/effect/spider/attackby(var/obj/item/weapon/W, var/mob/user)
+3 -3
View File
@@ -46,15 +46,15 @@
/obj/item/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
if(3.0)
if (prob(5))
del(src)
qdel(src)
return
else
return
+2 -2
View File
@@ -30,10 +30,10 @@
burst()
switch(severity)
if (1)
del(src)
qdel(src)
if (2)
if (prob(50))
del(src)
qdel(src)
/obj/item/latexballon/bullet_act()
burst()
+2 -2
View File
@@ -8,11 +8,11 @@ obj/structure/blob_act()
obj/structure/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if(prob(50))
del(src)
qdel(src)
return
if(3.0)
return
@@ -141,19 +141,19 @@
for(var/atom/movable/A as mob|obj in src)//pulls everything out of the locker and hits it with an explosion
A.loc = src.loc
A.ex_act(severity++)
del(src)
qdel(src)
if(2)
if(prob(50))
for (var/atom/movable/A as mob|obj in src)
A.loc = src.loc
A.ex_act(severity++)
del(src)
qdel(src)
if(3)
if(prob(5))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
A.ex_act(severity++)
del(src)
qdel(src)
/obj/structure/closet/bullet_act(var/obj/item/projectile/Proj)
health -= Proj.damage
@@ -99,17 +99,17 @@
if(1.0)
for(var/obj/O in src.contents)
del(O)
del(src)
qdel(src)
return
if(2.0)
for(var/obj/O in src.contents)
if(prob(50))
del(O)
del(src)
qdel(src)
return
if(3.0)
if (prob(50))
del(src)
qdel(src)
return
else
return
@@ -448,4 +448,4 @@
// new /obj/item/weapon/weedspray(src)
// new /obj/item/weapon/pestspray(src)
// new /obj/item/weapon/pestspray(src)
// new /obj/item/weapon/pestspray(src)
// new /obj/item/weapon/pestspray(src)
+1 -1
View File
@@ -38,7 +38,7 @@
new /obj/item/weapon/shard( src.loc )
if (occupant)
dump()
del(src)
qdel(src)
if (2)
if (prob(50))
src.health -= 15
+6 -6
View File
@@ -184,19 +184,19 @@
ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(30))
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
new remains(loc)
del(src)
qdel(src)
return
if(3.0)
if (prob(5))
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
new remains(loc)
del(src)
qdel(src)
return
else
return
@@ -245,17 +245,17 @@
ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(30))
new /obj/effect/decal/remains/human(loc)
del(src)
qdel(src)
return
if(3.0)
if (prob(5))
new /obj/effect/decal/remains/human(loc)
del(src)
qdel(src)
return
else
return
+3 -3
View File
@@ -40,13 +40,13 @@
/obj/structure/grille/ex_act(severity)
del(src)
qdel(src)
/obj/structure/grille/blob_act()
del(src)
qdel(src)
/obj/structure/grille/meteorhit(var/obj/M)
del(src)
qdel(src)
/obj/structure/grille/Bumped(atom/user)
+3 -3
View File
@@ -15,7 +15,7 @@
if (1)
new /obj/item/weapon/shard( src.loc )
Break()
del(src)
qdel(src)
if (2)
if (prob(50))
src.health -= 15
@@ -37,13 +37,13 @@
if (prob(75))
new /obj/item/weapon/shard( src.loc )
Break()
del(src)
qdel(src)
/obj/structure/lamarr/meteorhit(obj/O as obj)
new /obj/item/weapon/shard( src.loc )
Break()
del(src)
qdel(src)
/obj/structure/lamarr/proc/healthcheck()
+2 -2
View File
@@ -39,10 +39,10 @@
/obj/structure/lattice/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
del(src)
qdel(src)
return
if(3.0)
return
@@ -138,7 +138,7 @@
var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
for(var/i = 3, i <= oreAmount, i++)
new ore(get_turf(src))
del(src)
qdel(src)
ex_act(severity = 1)
switch(severity)
+3 -3
View File
@@ -32,13 +32,13 @@
/obj/structure/mopbucket/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
if(3.0)
if (prob(5))
del(src)
qdel(src)
return
+6 -6
View File
@@ -48,21 +48,21 @@
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
if(3.0)
if (prob(5))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
return
@@ -213,21 +213,21 @@
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
if(3.0)
if (prob(5))
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
ex_act(severity)
del(src)
qdel(src)
return
return
+5 -5
View File
@@ -8,19 +8,19 @@
/obj/structure/sign/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
del(src)
qdel(src)
return
if(3.0)
del(src)
qdel(src)
return
else
return
/obj/structure/sign/blob_act()
del(src)
qdel(src)
return
/obj/structure/sign/attackby(obj/item/tool as obj, mob/user as mob) //deconstruction
@@ -228,4 +228,4 @@
/obj/structure/sign/directions/evac
name = "\improper Escape Arm"
desc = "A direction sign, pointing out which way escape shuttle dock is."
icon_state = "direction_evac"
icon_state = "direction_evac"
@@ -10,15 +10,15 @@
/obj/structure/stool/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
if(3.0)
if (prob(5))
del(src)
qdel(src)
return
return
+6 -7
View File
@@ -64,8 +64,7 @@
/obj/structure/table/proc/destroy()
new parts(loc)
density = 0
del(src)
qdel(src)
/obj/structure/table/proc/check_contents(datum/table_recipe/TR)
check_table()
@@ -362,11 +361,11 @@
/obj/structure/table/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
if(3.0)
if (prob(25))
@@ -793,14 +792,14 @@
/obj/structure/rack/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
if(2.0)
del(src)
qdel(src)
if(prob(50))
new /obj/item/weapon/rack_parts(src.loc)
if(3.0)
if(prob(25))
del(src)
qdel(src)
new /obj/item/weapon/rack_parts(src.loc)
/obj/structure/rack/blob_act()
@@ -61,9 +61,10 @@ obj/structure/ex_act(severity)
if(1.0)
for(var/atom/movable/AM in contents)
AM.loc = loc
// TODO: What the fuck are you doing
AM.ex_act(severity++)
del(src)
qdel(src)
return
if(2.0)
if(prob(50))
@@ -71,7 +72,7 @@ obj/structure/ex_act(severity)
AM.loc = loc
AM.ex_act(severity++)
del(src)
qdel(src)
return
if(3.0)
return
+3 -3
View File
@@ -64,13 +64,13 @@ var/list/mechtoys = list(
/obj/structure/plasticflaps/ex_act(severity)
switch(severity)
if (1)
del(src)
qdel(src)
if (2)
if (prob(50))
del(src)
qdel(src)
if (3)
if (prob(5))
del(src)
qdel(src)
/obj/structure/plasticflaps/mining //A specific type for mining that doesn't allow airflow because of them damn crates
name = "\improper Airtight plastic flaps"
@@ -25,7 +25,7 @@
originMachine.shut_up = 0
originMachine.shoot_inventory = 1
scaling_factor = num_players() / 25 //Tweak this value to change the number of hostile machines. Lower value = more hostile machines.
scaling_factor = num_players() / 60 //Tweak this value to change the number of hostile machines. Lower value = more hostile machines.
@@ -48,7 +48,7 @@
M.icon = upriser.icon
M.icon_state = initial(upriser.icon_state)
else
explosion(upriser.loc, -1, 1, 2, 4)
explosion(upriser.loc, 2, 4, 3, 5)
del(upriser)
kill()
+5 -5
View File
@@ -56,20 +56,20 @@
switch(severity)
if(1.0)
for(var/obj/item/weapon/book/b in contents)
del(b)
del(src)
qdel(b)
qdel(src)
return
if(2.0)
for(var/obj/item/weapon/book/b in contents)
if (prob(50)) b.loc = (get_turf(src))
else del(b)
del(src)
else qdel(b)
qdel(src)
return
if(3.0)
if (prob(50))
for(var/obj/item/weapon/book/b in contents)
b.loc = (get_turf(src))
del(src)
qdel(src)
return
else
return
+1 -2
View File
@@ -109,7 +109,6 @@ var/list/artifact_spawn = list() // Runtime fix for geometry loading before cont
else
icon_state = "rock_[mineral.name]"
//Not even going to touch this pile of spaghetti
attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -560,4 +559,4 @@ var/list/artifact_spawn = list() // Runtime fix for geometry loading before cont
else if(istype(R.module_state_3,/obj/item/weapon/storage/bag/ore))
attackby(R.module_state_3,R)
else
return
return
@@ -52,7 +52,8 @@
brainmob.real_name = H.real_name
brainmob.dna = H.dna
brainmob.timeofhostdeath = H.timeofdeath
brainmob.mind.assigned_role = "Positronic Brain"
if(brainmob.mind)
brainmob.mind.assigned_role = "Positronic Brain"
if(H.mind)
H.mind.transfer_to(brainmob)
brainmob << "\blue You feel slightly disoriented. That's normal when you're just a metal cube."
@@ -9,7 +9,7 @@
for(var/datum/organ/external/O in organs) //hardcoded to streamline things a bit
total_brute += O.brute_dam
total_burn += O.burn_dam
health = 100 - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute
health = 100 - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute - getBrainLoss()
//TODO: fix husking
if( ((100 - total_burn) < config.health_threshold_dead) && stat == DEAD) //100 only being used as the magic human max health number, feel free to change it if you add a var for it -- Urist
ChangeToHusk()
+10 -2
View File
@@ -336,7 +336,7 @@
if(reagents.has_reagent("lexorin")) return
if(M_NO_BREATH in mutations) return // No breath mutation means no breathing.
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
if(species && (species.flags & NO_BREATHE || species.flags & IS_SYNTHETIC)) return
if(species && (species.flags & NO_BREATHE)) return
var/datum/organ/internal/lungs/L = internal_organs["lungs"]
L.process()
@@ -929,6 +929,14 @@
proc/handle_chemicals_in_body()
if(reagents && !(species.flags & IS_SYNTHETIC)) //Synths don't process reagents.
var/alien = 0 //Not the best way to handle it, but neater than checking this for every single reagent proc.
if(species && species.name == "Diona")
alien = 1
else if(species && species.name == "Vox")
alien = 2
reagents.metabolize(src,alien)
if(reagents) reagents.metabolize(src)
var/total_plasmaloss = 0
for(var/obj/item/I in src)
@@ -1028,7 +1036,7 @@
if(species && species.flags & NO_INTORGANS) return
handle_trace_chems()
if(!(species.flags & IS_SYNTHETIC)) handle_trace_chems()
var/datum/organ/internal/liver/liver = internal_organs["liver"]
liver.process()
@@ -840,7 +840,7 @@ proc/get_damage_icon_part(damage_state, body_part)
/mob/living/carbon/human/proc/update_tail_showing(var/update_icons=1)
overlays_standing[TAIL_LAYER] = null
if(species.tail && species.flags & HAS_TAIL)
if(species.tail && species.bodyflags & HAS_TAIL)
if(!wear_suit || !(wear_suit.flags_inv & HIDEJUMPSUIT) && !istype(wear_suit, /obj/item/clothing/suit/space))
overlays_standing[TAIL_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s")
+6 -5
View File
@@ -52,7 +52,8 @@
for(var/datum/organ/external/E in H.organs)
if(E.status & ORGAN_CUT_AWAY || E.status & ORGAN_DESTROYED) continue
E.status |= ORGAN_ROBOT
for(var/datum/organ/internal/I in H.internal_organs)
I.robotic = 2
return
/datum/species/proc/handle_death(var/mob/living/carbon/human/H) //Handles any species-specific death events (such as dionaea nymph spawns).
@@ -77,8 +78,8 @@
primitive = /mob/living/carbon/monkey/unathi
darksight = 3
flags = HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL
bodyflags = FEET_CLAWS
flags = HAS_LIPS | HAS_UNDERWEAR
bodyflags = FEET_CLAWS | HAS_TAIL
cold_level_1 = 280 //Default 260 - Lower is better
cold_level_2 = 220 //Default 200
@@ -108,8 +109,8 @@
primitive = /mob/living/carbon/monkey/tajara
flags = HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL | CAN_BE_FAT
bodyflags = FEET_PADDED
flags = HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT
bodyflags = FEET_PADDED | HAS_TAIL
/datum/species/skrell
name = "Skrell"
+1 -1
View File
@@ -34,7 +34,7 @@
health = 100
stat = CONSCIOUS
else
health = maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() - halloss
health = maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() - getBrainLoss() - halloss
//This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually
+7 -6
View File
@@ -497,7 +497,9 @@ This function completely restores a damaged organ to perfect condition.
if(LOWER_TORSO)
owner << "\red You are now sterile."
if(HEAD)
if(owner.mutations & SKELETON)
if(owner.species.flags & IS_SYNTHETIC)
organ= new /obj/item/weapon/organ/head/posi(owner.loc, owner)
else if(owner.mutations & SKELETON)
organ= new /obj/item/weapon/skeleton/head(owner.loc)
else
organ= new /obj/item/weapon/organ/head(owner.loc, owner)
@@ -884,6 +886,9 @@ obj/item/weapon/organ/head
var/mob/living/carbon/brain/brainmob
var/brain_op_stage = 0
/obj/item/weapon/organ/head/posi
name = "robotic head"
obj/item/weapon/organ/head/New(loc, mob/living/carbon/human/H)
if(istype(H))
src.icon_state = H.gender == MALE? "head_m" : "head_f"
@@ -976,11 +981,7 @@ obj/item/weapon/organ/head/attackby(obj/item/weapon/W as obj, mob/user as mob)
else
brainmob.LAssailant = user
var/mob/living/carbon/human/H
if(istype(brainmob,/mob/living/carbon/human))
H = brainmob
if(istype(H) && H.species && H.species.flags & IS_SYNTHETIC)
if(istype(src,/obj/item/weapon/organ/head/posi))
var/obj/item/device/mmi/posibrain/B = new(loc)
B.transfer_identity(brainmob)
else
+2 -2
View File
@@ -200,7 +200,7 @@
ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
if(2.0)
if(prob(50))
del(src)
@@ -217,7 +217,7 @@
blob_act()
if(prob(50))
del(src)
qdel(src)
else
if(toner > 0)
new /obj/effect/decal/cleanable/oil(get_turf(src))
@@ -20,13 +20,13 @@
if(1.0)
explosion(get_turf(src), 1, 2, 3, 5)//Should likely be larger but this works fine for now I guess
if(src)
del(src)
qdel(src)
return
if(2.0)
if(prob((fuel/10)-stability))
explosion(get_turf(src), 1, 2, 3, 5)
if(src)
del(src)
qdel(src)
return
stability -= 40
if(3.0)
+32 -2
View File
@@ -440,7 +440,37 @@
if(!user)
return
src.add_fingerprint(user)
if(usr == user && opened)
//Synthetic human mob goes here.
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(H.species.flags & IS_SYNTHETIC && H.a_intent == "grab")
if(emagged || stat & BROKEN)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
H << "\red The APC power currents surge eratically, damaging your chassis!"
H.adjustFireLoss(10,0)
else if(src.cell && src.cell.charge > 0)
if(H.nutrition < 450)
if(src.cell.charge >= 500)
H.nutrition += 50
src.cell.charge -= 500
else
H.nutrition += src.cell.charge/10
src.cell.charge = 0
user << "\blue You slot your fingers into the APC interface and siphon off some of the stored charge for your own use."
if(src.cell.charge < 0) src.cell.charge = 0
if(H.nutrition > 500) H.nutrition = 500
else
user << "\blue You are already fully charged."
else
user << "There is no charge to draw from that APC."
return
if(usr == user && opened && (!issilicon(user)))
if(cell)
if(issilicon(user))
cell.loc=src.loc // Drop it, whoops.
@@ -1045,7 +1075,7 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on)
//set_broken() //now Del() do what we need
if (cell)
cell.ex_act(1.0) // more lags woohoo
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
+3 -3
View File
@@ -179,16 +179,16 @@
/obj/structure/cable/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
if(2.0)
if (prob(50))
new/obj/item/stack/cable_coil(src.loc, src.d1 ? 2 : 1, cable_color)
del(src)
qdel(src)
if(3.0)
if (prob(25))
new/obj/item/stack/cable_coil(src.loc, src.d1 ? 2 : 1, cable_color)
del(src)
qdel(src)
return
// the cable coil object, used for laying cable
+3 -3
View File
@@ -139,17 +139,17 @@
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
if (prob(50))
corrupt()
if(3.0)
if (prob(25))
del(src)
qdel(src)
return
if (prob(25))
corrupt()
+2 -2
View File
@@ -22,12 +22,12 @@
switch(severity)
if(1.0)
ChangeTurf(/turf/space)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
ChangeTurf(/turf/space)
del(src)
qdel(src)
return
else
return
+1 -1
View File
@@ -580,7 +580,7 @@
/obj/machinery/light/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(75))
@@ -67,7 +67,7 @@
/obj/effect/accelerated_particle/ex_act(severity)
del(src)
qdel(src)
return
@@ -137,15 +137,15 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
/obj/structure/particle_accelerator/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
if(3.0)
if (prob(25))
del(src)
qdel(src)
return
else
return
@@ -324,15 +324,15 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
/obj/machinery/particle_accelerator/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
if(3.0)
if (prob(25))
del(src)
qdel(src)
return
else
return
@@ -62,7 +62,7 @@ var/global/list/uneatable = list(
switch(severity)
if(1.0)
if(prob(25))
del(src)
qdel(src)
return
else
energy += 50
+3 -3
View File
@@ -161,14 +161,14 @@ var/list/solars_list = list()
/obj/machinery/power/solar/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
if(prob(15))
new /obj/item/weapon/shard( src.loc )
return
if(2.0)
if (prob(25))
new /obj/item/weapon/shard( src.loc )
del(src)
qdel(src)
return
if (prob(50))
broken()
@@ -516,7 +516,7 @@ var/list/solars_list = list()
switch(severity)
if(1.0)
//SN src = null
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
+6 -6
View File
@@ -83,11 +83,11 @@
/obj/machinery/chem_dispenser/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
/obj/machinery/chem_dispenser/blob_act()
@@ -294,19 +294,19 @@
/obj/machinery/chem_master/ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
del(src)
qdel(src)
return
/obj/machinery/chem_master/blob_act()
if (prob(50))
del(src)
qdel(src)
/obj/machinery/chem_master/meteorhit()
del(src)
qdel(src)
return
/obj/machinery/chem_master/power_change()
+49 -68
View File
@@ -338,11 +338,10 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.drowsyness = max(M.drowsyness-2*REM, 0)
if(holder.has_reagent("toxin"))
holder.remove_reagent("toxin", 2*REM)
holder.remove_reagent("toxin", 1*REM)
if(holder.has_reagent("stoxin"))
holder.remove_reagent("stoxin", 2*REM)
holder.remove_reagent("stoxin", 1*REM)
if(holder.has_reagent("plasma"))
holder.remove_reagent("plasma", 1*REM)
if(holder.has_reagent("sacid"))
@@ -350,17 +349,14 @@ datum
if(holder.has_reagent("cyanide"))
holder.remove_reagent("cyanide", 1*REM)
if(holder.has_reagent("amatoxin"))
holder.remove_reagent("amatoxin", 2*REM)
holder.remove_reagent("amatoxin", 1*REM)
if(holder.has_reagent("chloralhydrate"))
holder.remove_reagent("chloralhydrate", 5*REM)
holder.remove_reagent("chloralhydrate", 1*REM)
if(holder.has_reagent("carpotoxin"))
holder.remove_reagent("carpotoxin", 1*REM)
if(holder.has_reagent("zombiepowder"))
holder.remove_reagent("zombiepowder", 0.5*REM)
if(holder.has_reagent("mindbreaker"))
holder.remove_reagent("mindbreaker", 2*REM)
M.hallucination = max(0, M.hallucination - 5*REM)
M.adjustToxLoss(-2*REM)
holder.remove_reagent("zombiepowder", 1*REM)
M.adjustToxLoss(-1.5*REM)
..()
return
@@ -370,12 +366,10 @@ datum
description = "A Toxic chemical."
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
custom_metabolism = 0.01
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
// Toxins are really weak, but without being treated, last very long.
M.adjustToxLoss(0.2)
M.adjustToxLoss(2)
..()
return
@@ -385,12 +379,10 @@ datum
description = "Liquid plastic, do not eat."
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
custom_metabolism = 0.01
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
// Toxins are really weak, but without being treated, last very long.
M.adjustToxLoss(0.2)
M.adjustToxLoss(2)
..()
return
@@ -401,7 +393,6 @@ datum
description = "A highly toxic chemical."
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
custom_metabolism = 0.4
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -410,6 +401,7 @@ datum
M.sleeping += 1
..()
return
chefspecial
// Quiet and lethal, needs atleast 4 units in the person before they'll die
name = "Chef's Special"
@@ -507,8 +499,6 @@ datum
reagent_state = LIQUID
color = "#E895CC" // rgb: 232, 149, 204
custom_metabolism = 0.1
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(!data) data = 1
@@ -589,9 +579,9 @@ datum
return
holywater
name = "Holy Water"
name = "Water"
id = "holywater"
description = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen."
reagent_state = LIQUID
color = "#0064C8" // rgb: 0, 100, 200
@@ -741,12 +731,11 @@ datum
description = "A chemical element."
reagent_state = LIQUID
color = "#484848" // rgb: 72, 72, 72
custom_metabolism = 0.2
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(M.canmove && !M.restrained() && istype(M.loc, /turf/space))
step(M, pick(cardinal))
if(prob(5)) M.emote(pick("twitch","drool","moan"))
M.adjustBrainLoss(1)
..()
return
@@ -945,6 +934,7 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustToxLoss(1*REM)
M.take_organ_damage(0, 1*REM)
..()
return
@@ -1044,10 +1034,11 @@ datum
description = "Radium is an alkaline earth metal. It is extremely radioactive."
reagent_state = SOLID
color = "#C7C7C7" // rgb: 199,199,199
custom_metabolism = 0.3
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.apply_effect(8*REM,IRRADIATE,0)
M.apply_effect(4*REM,IRRADIATE,0)
// radium may increase your chances to cure a disease
if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs
var/mob/living/carbon/C = M
@@ -1122,6 +1113,7 @@ datum
description = "Might cause unpredictable mutations. Keep away from children."
reagent_state = LIQUID
color = "#13BC5E" // rgb: 19, 188, 94
custom_metabolism = 0.3
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
if(!..()) return
@@ -1139,7 +1131,7 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
if(!M) M = holder.my_atom
M.apply_effect(4*REM,IRRADIATE,0)
M.apply_effect(2*REM,IRRADIATE,0)
..()
return
@@ -1236,7 +1228,7 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.apply_effect(1,IRRADIATE,0)
M.apply_effect(2,IRRADIATE,0)
..()
return
@@ -1341,7 +1333,7 @@ datum
M.clean_blood()
plantbgone
name = "Plant-B-Gone"
name = "Atrazine"
id = "plantbgone"
description = "A harmful toxic mixture to kill plantlife. Do not ingest!"
reagent_state = LIQUID
@@ -1349,7 +1341,7 @@ datum
on_mob_life(var/mob/living/carbon/M)
if(!M) M = holder.my_atom
M.adjustToxLoss(1.0)
M.adjustToxLoss(2)
..()
return
@@ -1399,7 +1391,7 @@ datum
if(!M) M = holder.my_atom
if(holder.has_reagent("inaprovaline"))
holder.remove_reagent("inaprovaline", 2*REM)
M.adjustToxLoss(3*REM)
M.adjustToxLoss(2*REM)
..()
return
reaction_obj(var/obj/O, var/volume)
@@ -1649,14 +1641,13 @@ datum
..()
return
synaptizine
name = "Synaptizine"
id = "synaptizine"
description = "Synaptizine is used to treat various diseases."
reagent_state = LIQUID
color = "#FF4040" // rgb: 255, 64, 64
custom_metabolism = 0.01
custom_metabolism = 0.05
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -1682,7 +1673,7 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.jitteriness = max(M.jitteriness-5,0)
if(prob(80)) M.adjustBrainLoss(1*REM)
if(prob(80)) M.adjustBrainLoss(2*REM)
if(prob(50)) M.drowsyness = max(M.drowsyness, 3)
if(prob(10)) M.emote("drool")
..()
@@ -1694,7 +1685,6 @@ datum
description = "Hyronalin is a medicinal drug used to counter the effect of radiation poisoning."
reagent_state = LIQUID
color = "#74C365" // rgb: 116, 195, 101
custom_metabolism = 0.05
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -1708,7 +1698,6 @@ datum
description = "Arithrazine is an unstable medication used for the most extreme cases of radiation poisoning."
reagent_state = LIQUID
color = "#BFFF00" // rgb: 191, 255, 0
custom_metabolism = 0.05
on_mob_life(var/mob/living/M as mob)
if(M.stat == 2.0)
@@ -1716,7 +1705,7 @@ datum
if(!M) M = holder.my_atom
M.radiation = max(M.radiation-7*REM,0)
M.adjustToxLoss(-1*REM)
if(prob(15))
if(prob(33))
M.take_organ_damage(1, 0)
..()
return
@@ -1797,7 +1786,7 @@ datum
description = "Hyperzine is a highly effective, long lasting, muscle stimulant."
reagent_state = LIQUID
color = "#CCFF00" // rgb: 204, 255, 0
custom_metabolism = 0.03
custom_metabolism = 0.05
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -1816,9 +1805,9 @@ datum
if(!M) M = holder.my_atom
if(M.bodytemperature < 170)
M.adjustCloneLoss(-1)
M.adjustOxyLoss(-1)
M.heal_organ_damage(1,1)
M.adjustToxLoss(-1)
M.adjustOxyLoss(-2)
M.heal_organ_damage(2,2)
M.adjustToxLoss(-2)
..()
return
@@ -1832,10 +1821,7 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(M.bodytemperature < 170)
M.adjustCloneLoss(-3)
M.adjustOxyLoss(-3)
M.heal_organ_damage(3,3)
M.adjustToxLoss(-3)
M.adjustCloneLoss(-4)
..()
return
@@ -1872,7 +1858,6 @@ datum
description = "An all-purpose antiviral agent."
reagent_state = LIQUID
color = "#228B22" // rgb: 34, 139, 34
custom_metabolism = 0.01
on_mob_life(var/mob/living/M as mob)
..()
@@ -2382,10 +2367,9 @@ datum
return
amatoxin
name = "Amatoxin"
name = "Amanitin"
id = "amatoxin"
description = "A powerful poison derived from certain species of mushroom."
custom_metabolism = 0.1
color = "#792300" // rgb: 121, 35, 0
on_mob_life(var/mob/living/M as mob)
@@ -2404,7 +2388,7 @@ datum
to_remove = min(holder.get_reagent_amount("anti_toxin"),data)
holder.remove_reagent("anti_toxin", to_remove, 0)
data -= to_remove
M.adjustToxLoss(data)
M.adjustToxLoss((data-1)*rand(2,4))
..()
psilocybin
@@ -2705,6 +2689,23 @@ datum
data++
return
doctor_delight
name = "The Doctor's Delight"
id = "doctorsdelight"
description = "A gulp a day keeps the MediBot away. That's probably for the best."
reagent_state = LIQUID
nutriment_factor = 1 * FOOD_METABOLISM
color = "#664300" // rgb: 102, 67, 0
on_mob_life(var/mob/living/M as mob)
M:nutrition += nutriment_factor
holder.remove_reagent(src.id, FOOD_METABOLISM)
if(!M) M = holder.my_atom
if(M:getToxLoss() && prob(80)) M:adjustToxLoss(-1)
..()
return
berryjuice
name = "Berry Juice"
id = "berryjuice"
@@ -3403,26 +3404,6 @@ datum
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
doctor_delight
name = "The Doctor's Delight"
id = "doctorsdelight"
description = "A gulp a day keeps the MediBot away. That's probably for the best."
reagent_state = LIQUID
nutriment_factor = 1 * FOOD_METABOLISM
color = "#664300" // rgb: 102, 67, 0
on_mob_life(var/mob/living/M as mob)
M:nutrition += nutriment_factor
holder.remove_reagent(src.id, FOOD_METABOLISM)
if(!M) M = holder.my_atom
if(M:getOxyLoss() && prob(50)) M:adjustOxyLoss(-2)
if(M:getBruteLoss() && prob(60)) M:heal_organ_damage(2,0)
if(M:getFireLoss() && prob(50)) M:heal_organ_damage(0,2)
if(M:getToxLoss() && prob(50)) M:adjustToxLoss(-2)
if(M.dizziness !=0) M.dizziness = max(0,M.dizziness-15)
if(M.confused !=0) M.confused = max(0,M.confused - 5)
..()
return
changelingsting
name = "Changeling Sting"
id = "changelingsting"
+10 -3
View File
@@ -197,6 +197,13 @@ datum
required_catalysts = list("plasma" = 5)
result_amount = 2
holy_water
name = "Holy Water"
id = "holywater"
result = "holywater"
required_reagents = list("water" = 1, "mercury" = 1, "wine" = 1)
result_amount = 3
virus_food
name = "Virus Food"
id = "virusfood"
@@ -699,8 +706,8 @@ datum
name = "Plant-B-Gone"
id = "plantbgone"
result = "plantbgone"
required_reagents = list("toxin" = 1, "water" = 4)
result_amount = 5
required_reagents = list("chlorine" = 1, "hydrogen" = 1, "nitrogen" = 1)
result_amount = 3
/////////////////////////////////////OLD SLIME CORE REACTIONS ///////////////////////////////
@@ -1676,7 +1683,7 @@ datum
name = "The Doctor's Delight"
id = "doctordelight"
result = "doctorsdelight"
required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1, "tricordrazine" = 1)
required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1)
result_amount = 5
irish_cream
@@ -277,8 +277,8 @@
g_amt = 0
w_class = 3.0
amount_per_transfer_from_this = 20
possible_transfer_amounts = list(10,20,30,50,70)
volume = 70
possible_transfer_amounts = list(5,10,15,25,30,50,80,100,120)
volume = 120
flags = FPRINT | OPENCONTAINER
attackby(var/obj/D, mob/user as mob)
@@ -10,7 +10,7 @@
icon_state = "hypo"
amount_per_transfer_from_this = 5
volume = 30
possible_transfer_amounts = null
possible_transfer_amounts = list(1,2,3,4,5,10,15,20,25,30)
flags = FPRINT | TABLEPASS | OPENCONTAINER
slot_flags = SLOT_BELT
@@ -20,8 +20,7 @@
/obj/item/weapon/reagent_containers/hypospray/New() //comment this to make hypos start off empty
..()
reagents.add_reagent("doctorsdelight", 15)
reagents.add_reagent("dexalinp", 15)
reagents.add_reagent("tricordrazine", 30)
return
/obj/item/weapon/reagent_containers/hypospray/attack(mob/M as mob, mob/user as mob)
@@ -64,8 +63,7 @@
/obj/item/weapon/reagent_containers/hypospray/autoinjector/New()
..()
reagents.remove_reagent("doctorsdelight", 15)
reagents.remove_reagent("dexalinp", 15)
reagents.remove_reagent("tricordrazine", 30)
reagents.add_reagent("tramadol", 4)
reagents.add_reagent("hyperzine", 1)
update_icon()
+4 -4
View File
@@ -46,17 +46,17 @@
ex_act(severity)
switch(severity)
if(1.0)
del(src)
qdel(src)
return
if(2.0)
if (prob(50))
new /obj/effect/effect/water(src.loc)
del(src)
qdel(src)
return
if(3.0)
if (prob(5))
new /obj/effect/effect/water(src.loc)
del(src)
qdel(src)
return
else
return
@@ -64,7 +64,7 @@
blob_act()
if(prob(50))
new /obj/effect/effect/water(src.loc)
del(src)
qdel(src)
@@ -338,10 +338,10 @@ var/list/valid_secondary_effect_types = list(\
/obj/machinery/artifact/ex_act(severity)
switch(severity)
if(1.0) del src
if(1.0) qdel(src)
if(2.0)
if (prob(50))
del src
qdel(src)
else
if(my_effect.trigger == TRIGGER_FORCE || my_effect.trigger == TRIGGER_HEAT)
my_effect.ToggleActivate()
+1 -1
View File
@@ -104,7 +104,7 @@
H = target
var/obj/item/brain/B
if(istype(H) && H.species && H.species.flags & IS_SYNTHETIC)
if(H && H.species && H.species.flags & IS_SYNTHETIC)
var/obj/item/device/mmi/posibrain/P = new(target.loc)
P.transfer_identity(target)
else
+2 -2
View File
@@ -30,12 +30,12 @@
if(allowed_species)
for(var/species in allowed_species)
if(target.dna.mutantrace == species)
if(target.species.name == species)
return 1
if(disallowed_species)
for(var/species in disallowed_species)
if (target.dna.mutantrace == species)
if(target.species.name == species)
return 0
return 1
+4 -4
View File
@@ -757,22 +757,22 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
#define HAS_SKIN_TONE 256
#define HAS_LIPS 512
#define HAS_UNDERWEAR 1024
#define HAS_TAIL 2048
#define IS_SYNTHETIC 2048
#define IS_PLANT 4096
#define CAN_BE_FAT 8192
#define HAS_CHITTIN 16384
#define NO_INTORGANS 32768
//Species Blood Flags
#define BLOOD_GREEN 1
#define BLOOD_BLUE 2
#define BLOOD_SLIME 4
//Species Body Flags
#define FEET_CLAWS 1
#define FEET_PADDED 2
#define FEET_NOSLIP 4
#define HAS_TAIL 8
#define IS_SYNTHETIC 8192
//Language flags.
#define WHITELISTED 1 // Language is available if the speaker is whitelisted.