- Added N20 scrubbing option to scrubbers.

- Implemented gauss distribution for asteroid generation (may come in handy for other things, so made it a global proc).
- Exosuit fixes.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@406 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
panurgomatic
2010-11-11 06:33:12 +00:00
parent fb86bf322d
commit c38e54f23d
6 changed files with 46 additions and 26 deletions

View File

@@ -15,6 +15,7 @@
var/scrubbing = 1 //0 = siphoning, 1 = scrubbing
var/scrub_CO2 = 1
var/scrub_Toxins = 0
var/scrub_N2O = 0
var/volume_rate = 120
var/panic = 0 //is this scrubber panicked?
@@ -52,6 +53,7 @@
signal.data["panic"] = panic
signal.data["filter_co2"] = scrub_CO2
signal.data["filter_toxins"] = scrub_Toxins
signal.data["filter_n2o"] = scrub_N2O
radio_connection.post_signal(src, signal)
return 1
@@ -92,6 +94,10 @@
if(istype(trace_gas, /datum/gas/oxygen_agent_b))
removed.trace_gases -= trace_gas
filtered_out.trace_gases += trace_gas
else if(istype(trace_gas, /datum/gas/sleeping_agent) && scrub_N2O)
removed.trace_gases -= trace_gas
filtered_out.trace_gases += trace_gas
//Remix the resulting gases
air_contents.merge(filtered_out)
@@ -138,6 +144,8 @@
scrub_CO2 = !scrub_CO2
if("toggle_tox_scrub")
scrub_Toxins = !scrub_Toxins
if("toggle_n2o_scrub")
scrub_N2O = !scrub_N2O
if("toggle_panic_siphon")
panic = !panic
if(panic)

View File

@@ -1,17 +1,20 @@
proc/spawn_asteroid(var/atom/start_loc,var/type,var/size)//type: 0 or null - random, 1 - nothing, 2 - iron, 3 - silicon
proc/spawn_asteroid(var/atom/start_loc,var/type,var/size,var/richness)//type: 0 or null - random, 1 - nothing, 2 - iron, 3 - silicon
if(start_loc.x - size < 3 || start_loc.x + size >= world.maxx - 3 || start_loc.y - size < 3 || start_loc.y + size > world.maxy -3)
return 0
if(!size)
size = pick(100;2,50;3,35;4,25;6,10;12)
if(!type)
type = pick(50;1,2,3)
if(!richness)
richness = rand(10,40)
// world << "Asteroid size: [size]; Asteroid type: [type]"
if(start_loc.x - size < 3 || start_loc.x + size >= world.maxx - 3 || start_loc.y - size < 3 || start_loc.y + size > world.maxy -3)
return 0
var/list/turfs = circlerange(start_loc,size)
var/area/asteroid/AstAr = new
for(var/turf/T in turfs)
var/dist = get_dist(start_loc,T)
if(prob(100-(dist*rand(2,4))))//I'm terrible at generating random things.
if(abs(GaussRand(dist))<size) //prob(100-(dist*rand(2,4))))//I'm terrible at generating random things.
var/turf/simulated/wall/asteroid/A
if(type > 1 && prob(25))
if(type > 1 && prob(richness))
switch(type)
if(2)
A = new /turf/simulated/wall/asteroid/iron(T)
@@ -21,6 +24,7 @@ proc/spawn_asteroid(var/atom/start_loc,var/type,var/size)//type: 0 or null - ran
A = new /turf/simulated/wall/asteroid(T)
A.opacity = 0
A.sd_NewOpacity(1)
AstAr.contents += A
/*
if(max_secret_rooms && size == 12)
var/x_len = rand(4,12)
@@ -114,3 +118,13 @@ proc/spawn_room(var/atom/start_loc,var/x_size,var/y_size,var/wall,var/floor)
var/global/max_secret_rooms = 3
proc/GaussRand(var/sigma)
var/x,y,rsq
do
x=2*rand()-1
y=2*rand()-1
rsq=x*x+y*y
while(rsq>1 || !rsq)
return sigma*y*sqrt((-2*log(rsq))/rsq)

View File

@@ -84,7 +84,7 @@
sensor_part += {"<B>Operating:</B> <A href='?src=\ref[src];scr_toggle_power=[id_tag]'>[(data["on"]?"on":"off")]</A><BR>
<B>Type:</B> <A href='?src=\ref[src];scr_toggle_scrubbing=[id_tag]'>[(data["scrubbing"]?"scrubbing":"syphoning")]</A><BR>"}
if(data["scrubbing"])
sensor_part += "<B>Filtering:</B> Carbon Dioxide <A href='?src=\ref[src];scr_toggle_co2_scrub=[id_tag]'>([(data["filter_co2"]?"on":"off")])</A>; Toxins <A href='?src=\ref[src];scr_toggle_tox_scrub=[id_tag]'>([data["filter_toxins"]?"on":"off"])</A><BR>"
sensor_part += "<B>Filtering:</B> Carbon Dioxide <A href='?src=\ref[src];scr_toggle_co2_scrub=[id_tag]'>([(data["filter_co2"]?"on":"off")])</A>; Toxins <A href='?src=\ref[src];scr_toggle_tox_scrub=[id_tag]'>([data["filter_toxins"]?"on":"off"])</A>; Nitrous Oxide <A href='?src=\ref[src];scr_toggle_n2o_scrub=[id_tag]'>([data["filter_n2o"]?"on":"off"])</A><BR>"
sensor_part += "<A href='?src=\ref[src];scr_toggle_panic_siphon=[id_tag]'><font color='[(data["panic"]?"blue'>Dea":"red'>A")]ctivate panic syphon</A></font><BR>"
if(data["panic"])
sensor_part += "<font color='red'><B>PANIC SYPHON ACTIVATED</B></font>"
@@ -143,6 +143,9 @@
if(href_list["scr_toggle_tox_scrub"])
send_signal(href_list["scr_toggle_tox_scrub"], "toggle_tox_scrub")
if(href_list["scr_toggle_n2o_scrub"])
send_signal(href_list["scr_toggle_n2o_scrub"], "toggle_n2o_scrub")
if(href_list["scr_toggle_panic_siphon"])
send_signal(href_list["scr_toggle_panic_siphon"], "toggle_panic_siphon")

View File

@@ -52,6 +52,7 @@
/obj/mecha/combat/click_action(target)
if(state || !cell || cell.charge<=0) return
if(src == target) return
if(get_dist(src,target)<=1)
src.mega_punch(target)
@@ -94,7 +95,6 @@
playsound(src, 'Laser.ogg', 50, 1)
if (targloc == curloc)
src.bullet_act(PROJECTILE_PULSE)
return
var/obj/beam/a_laser/A = new weapon_type(src.loc)

View File

@@ -4,11 +4,11 @@
icon_state = "gygax"
step_in = 8
weapon_1 = /obj/beam/a_laser/pulse_laser
weapon_1 = "/obj/beam/a_laser/pulse_laser"
weapon_1_cooldown = 50
weapon_1_name = "eZ-13 mk2 Heavy pulse rifle"
weapon_1_energy_drain = 50
weapon_2 = /obj/beam/a_laser
weapon_2 = "/obj/beam/a_laser"
weapon_2_cooldown = 10
weapon_2_name = "CH-PS \"Immolator\" Laser"
weapon_2_energy_drain = 20

View File

@@ -69,21 +69,14 @@
return 0
if(state || !cell || cell.charge<=0) return 0
if(can_move)
if(istype(src.loc, /turf/space))
var/new_pos = get_step(src,direction)
/* world << "Next pos = [new_pos]"
var/turf = locate(new_pos)
world << "Turf is [turf]"*/
if(istype(new_pos, /turf/space))
if(!src.check_for_support())
src.inertia_dir = direction
src.inertial_movement()
return 0
if(step(src,direction))
can_move = 0
spawn(step_in) can_move = 1
cell.use(src.step_energy_drain)
if(istype(src.loc, /turf/space))
if(!src.check_for_support())
src.inertia_dir = direction
src.inertial_movement()
return 1
return 0
@@ -91,9 +84,11 @@
if(check_for_support())
src.inertia_dir = null
if(src.inertia_dir)
step(src, src.inertia_dir)
spawn(5)
.()
if(step(src, src.inertia_dir))
spawn(5)
.()
else
src.inertia_dir = null
return
/obj/mecha/proc/check_for_support()
@@ -103,14 +98,14 @@
return 0
/obj/mecha/Bump(var/atom/obstacle)
src.inertia_dir = null
// src.inertia_dir = null
if(src.occupant)
if(istype(obstacle , /obj/machinery/door))
var/obj/machinery/door/D = obstacle
D.Bumped(src.occupant)
return
else
obstacle.Bumped(src)
// else
// obstacle.Bumped(src)
return