Merge pull request #3642 from Citadel-Station-13/upstream-merge-32051

[MIRROR] More radiation balance changes and fixes
This commit is contained in:
LetterJay
2017-10-29 02:41:44 -04:00
committed by GitHub
14 changed files with 213 additions and 106 deletions
@@ -19,15 +19,8 @@
slot_flags = SLOT_BELT
materials = list(MAT_METAL = 150, MAT_GLASS = 150)
var/muted = TRUE
var/danger = 0
var/grace = RAD_GRACE_PERIOD
var/static/list/sounds = list( //hah, static. get it?
list('sound/items/geiger/low1.ogg'=1, 'sound/items/geiger/low2.ogg'=1, 'sound/items/geiger/low3.ogg'=1, 'sound/items/geiger/low4.ogg'=1),
list('sound/items/geiger/med1.ogg'=1, 'sound/items/geiger/med2.ogg'=1, 'sound/items/geiger/med3.ogg'=1, 'sound/items/geiger/med4.ogg'=1),
list('sound/items/geiger/high1.ogg'=1, 'sound/items/geiger/high2.ogg'=1, 'sound/items/geiger/high3.ogg'=1, 'sound/items/geiger/high4.ogg'=1),
list('sound/items/geiger/ext1.ogg'=1, 'sound/items/geiger/ext2.ogg'=1, 'sound/items/geiger/ext3.ogg'=1, 'sound/items/geiger/ext4.ogg'=1)
)
var/datum/looping_sound/geiger/soundloop
var/scanning = FALSE
var/radiation_count = 0
@@ -40,7 +33,7 @@
. = ..()
START_PROCESSING(SSobj, src)
soundLoop()
soundloop = new(list(src), FALSE)
/obj/item/device/geiger_counter/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -48,6 +41,7 @@
/obj/item/device/geiger_counter/process()
update_icon()
update_sound()
if(!scanning)
current_tick_amount = 0
@@ -64,8 +58,6 @@
grace--
if(grace <= 0)
radiation_count = 0
update_sound()
current_tick_amount = 0
@@ -116,28 +108,15 @@
..()
/obj/item/device/geiger_counter/proc/update_sound()
switch(radiation_count)
if(RAD_BACKGROUND_RADIATION to RAD_LEVEL_MODERATE)
danger = 1
if(RAD_LEVEL_MODERATE to RAD_LEVEL_VERY_HIGH)
danger = 2
if(RAD_LEVEL_VERY_HIGH to RAD_LEVEL_CRITICAL)
danger = 3
if(RAD_LEVEL_CRITICAL to INFINITY)
danger = 4
else
danger = 0
if(!danger)
muted = TRUE
else if(muted)
muted = FALSE
soundLoop()
/obj/item/device/geiger_counter/proc/soundLoop()
if(muted || !danger)
var/datum/looping_sound/geiger/loop = soundloop
if(!scanning)
loop.stop()
return
playsound(src, pickweight(sounds[danger]), 25)
addtimer(CALLBACK(src, .proc/soundLoop), 2)
if(!radiation_count)
loop.stop()
return
loop.last_radiation = radiation_count
loop.start()
/obj/item/device/geiger_counter/rad_act(amount)
if(amount <= RAD_BACKGROUND_RADIATION || !scanning)
@@ -147,11 +126,6 @@
/obj/item/device/geiger_counter/attack_self(mob/user)
scanning = !scanning
if(!scanning)
muted = TRUE
else
muted = FALSE
soundLoop()
update_icon()
to_chat(user, "<span class='notice'>[icon2html(src, user)] You switch [scanning ? "on" : "off"] [src].</span>")