mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
81 lines
2.2 KiB
Plaintext
81 lines
2.2 KiB
Plaintext
|
|
/obj/machinery/rust/rad_source
|
|
var/mega_energy = 0
|
|
var/time_alive = 0
|
|
var/source_alive = 2
|
|
|
|
/obj/machinery/rust/rad_source/process()
|
|
..()
|
|
//fade away over time
|
|
if(source_alive > 0)
|
|
time_alive++
|
|
source_alive--
|
|
else
|
|
time_alive -= 0.1
|
|
if(time_alive < 0)
|
|
del(src)
|
|
|
|
//radiate mobs nearby here
|
|
//
|
|
|
|
/*
|
|
/obj/machinery/rust
|
|
proc/RadiateParticle(var/energy, var/ionizing, var/dir = 0)
|
|
writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\proc/RadiateParticle() called tick#: [world.time]")
|
|
if(!dir)
|
|
RadiateParticleRand(energy, ionizing)
|
|
var/obj/effect/accelerated_particle/particle = getFromPool(/obj/effect/accelerated_particle/particle, get_turf(src))
|
|
particle.target = target
|
|
particle.ionizing = ionizing
|
|
particle.dir = dir
|
|
particle.startMove(1)
|
|
if(energy)
|
|
particle.energy = energy
|
|
//particle.invisibility = 2
|
|
//
|
|
return particle
|
|
|
|
proc/RadiateParticleRand(var/energy, var/ionizing)
|
|
writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\proc/RadiateParticleRand() called tick#: [world.time]")
|
|
var/turf/target
|
|
var/particle_range = 3 * round(energy) + rand(3,20)
|
|
if(energy > 1)
|
|
//for penetrating radiation
|
|
for(var/mob/M in range(particle_range))
|
|
var/dist_ratio = particle_range / get_dist(M, src)
|
|
//particles are more likely to hit a person if the person is closer
|
|
// 1/8 = 12.5% (closest)
|
|
// 1/360 = 0.27% (furthest)
|
|
// variation of 12.2%
|
|
if( rand() < (0.25 + dist_ratio * 12.5) )
|
|
target = get_turf(M)
|
|
break
|
|
if(!target)
|
|
target = pick(range(particle_range))
|
|
else
|
|
//for slower, non-penetrating radiation
|
|
for(var/mob/M in view(particle_range))
|
|
var/dist_ratio = particle_range / get_dist(M, src)
|
|
if( rand() < (0.25 + dist_ratio * 12.5) )
|
|
target = get_turf(M)
|
|
break
|
|
if(!target)
|
|
target = pick(view(particle_range))
|
|
var/obj/effect/accelerated_particle/particle = getFromPool(/obj/effect/accelerated_particle/particle, get_turf(src))
|
|
particle.target = target
|
|
particle.ionizing = ionizing
|
|
particle.dir = dir
|
|
particle.startMove(1)
|
|
if(energy)
|
|
particle.energy = energy
|
|
//particle.invisibility = 2
|
|
//
|
|
return particle
|
|
*/
|
|
|
|
/*
|
|
/obj/machinery/computer/rust_radiation_monitor
|
|
name = "Radiation Monitor"
|
|
icon_state = "power"
|
|
*/
|