mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-20 04:17:33 +01:00
Ports the radiation subsystem and cleans up damage flags. (#15715)
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
/obj/item/device/geiger
|
||||
name = "geiger counter"
|
||||
desc = "A handheld device used for detecting and measuring radiation in an area."
|
||||
icon = 'icons/obj/geiger_counter.dmi'
|
||||
icon_state = "geiger_off"
|
||||
item_state = "multitool"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
action_button_name = "Toggle geiger counter"
|
||||
var/scanning = 0
|
||||
var/radiation_count = 0
|
||||
var/datum/sound_token/sound_token
|
||||
var/geiger_volume = 0
|
||||
var/sound_id
|
||||
|
||||
/obj/item/device/geiger/Initialize()
|
||||
. = ..()
|
||||
sound_id = "[type]_[sequential_id(type)]"
|
||||
|
||||
/obj/item/device/geiger/proc/update_sound(playing)
|
||||
if(playing && !sound_token)
|
||||
sound_token = sound_player.PlayLoopingSound(src, sound_id, "sound/items/geiger.ogg", volume = geiger_volume, range = 4, falloff = 3, prefer_mute = TRUE)
|
||||
else if(!playing && sound_token)
|
||||
QDEL_NULL(sound_token)
|
||||
|
||||
/obj/item/device/geiger/Destroy()
|
||||
. = ..()
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
update_sound(0)
|
||||
|
||||
/obj/item/device/geiger/process()
|
||||
if(!scanning)
|
||||
return
|
||||
radiation_count = SSradiation.get_rads_at_turf(get_turf(src))
|
||||
update_icon()
|
||||
|
||||
/obj/item/device/geiger/examine(mob/user)
|
||||
. = ..()
|
||||
var/msg = "[scanning ? "ambient" : "stored"] Radiation level: [radiation_count ? radiation_count : "0"] IU/s."
|
||||
if(radiation_count > RAD_LEVEL_LOW)
|
||||
to_chat(user, SPAN_WARNING("[msg]"))
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("[msg]"))
|
||||
|
||||
/obj/item/device/geiger/attack_self(mob/user)
|
||||
scanning = !scanning
|
||||
if(scanning)
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
else
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
update_icon()
|
||||
to_chat(user, SPAN_NOTICE("[icon2html(src, user)] You switch [scanning ? "on" : "off"] [src]."))
|
||||
|
||||
/obj/item/device/geiger/update_icon()
|
||||
if(!scanning)
|
||||
icon_state = "geiger_off"
|
||||
update_sound(0)
|
||||
return 1
|
||||
|
||||
if(!sound_token) update_sound(1)
|
||||
|
||||
switch(radiation_count)
|
||||
if(null) icon_state = "geiger_on_1"
|
||||
if(-INFINITY to RAD_LEVEL_LOW)
|
||||
icon_state = "geiger_on_1"
|
||||
geiger_volume = 0
|
||||
sound_token.SetVolume(geiger_volume)
|
||||
if(RAD_LEVEL_LOW + 0.01 to RAD_LEVEL_MODERATE)
|
||||
icon_state = "geiger_on_2"
|
||||
geiger_volume = 10
|
||||
sound_token.SetVolume(geiger_volume)
|
||||
if(RAD_LEVEL_MODERATE + 0.1 to RAD_LEVEL_HIGH)
|
||||
icon_state = "geiger_on_3"
|
||||
geiger_volume = 25
|
||||
sound_token.SetVolume(geiger_volume)
|
||||
if(RAD_LEVEL_HIGH + 1 to RAD_LEVEL_VERY_HIGH)
|
||||
icon_state = "geiger_on_4"
|
||||
geiger_volume = 40
|
||||
sound_token.SetVolume(geiger_volume)
|
||||
if(RAD_LEVEL_VERY_HIGH + 1 to INFINITY)
|
||||
icon_state = "geiger_on_5"
|
||||
geiger_volume = 60
|
||||
sound_token.SetVolume(geiger_volume)
|
||||
@@ -43,7 +43,7 @@
|
||||
to_chat(user, SPAN_WARNING("You break \the [src] apart, spilling its contents everywhere!"))
|
||||
fuel = 0
|
||||
new /obj/effect/decal/cleanable/greenglow(get_turf(user))
|
||||
user.apply_damage(rand(15,30), IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
user.apply_damage(rand(15,30), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
/obj/item/target/bullet_act(var/obj/item/projectile/Proj)
|
||||
var/p_x = Proj.p_x + pick(0,0,0,0,0,-1,1) // really ugly way of coding "sometimes offset Proj.p_x!"
|
||||
var/p_y = Proj.p_y + pick(0,0,0,0,0,-1,1)
|
||||
var/decaltype = (Proj.damage_flags & DAM_BULLET) ? DECAL_BULLET : DECAL_SCORCH
|
||||
var/decaltype = (Proj.damage_flags & DAMAGE_FLAG_BULLET) ? DECAL_BULLET : DECAL_SCORCH
|
||||
|
||||
virtual_icon = new(icon, icon_state)
|
||||
|
||||
|
||||
@@ -69,8 +69,8 @@ obj/item/clothing/mask/chewable/Destroy()
|
||||
|
||||
/obj/item/clothing/mask/chewable/proc/damagecrunch(mob/living/carbon/human/user)
|
||||
if(src == user.wear_mask) // are we still chewing the gum?
|
||||
user.apply_damage(damage_per_crunch, BRUTE, BP_HEAD)
|
||||
user.apply_damage(damage_per_crunch/2, PAIN, BP_HEAD)
|
||||
user.apply_damage(damage_per_crunch, DAMAGE_BRUTE, BP_HEAD)
|
||||
user.apply_damage(damage_per_crunch/2, DAMAGE_PAIN, BP_HEAD)
|
||||
to_chat(user, SPAN_DANGER("You bite down hard on \the [name]!"))
|
||||
crunching = FALSE
|
||||
|
||||
|
||||
@@ -853,9 +853,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if(user.IgniteMob())
|
||||
user.visible_message(SPAN_DANGER("<b>[user]</b> accidentally sets themselves on fire!"))
|
||||
if(user.l_hand == src)
|
||||
user.apply_damage(2, BURN,BP_L_HAND)
|
||||
user.apply_damage(2, DAMAGE_BURN,BP_L_HAND)
|
||||
else
|
||||
user.apply_damage(2, BURN,BP_R_HAND)
|
||||
user.apply_damage(2, DAMAGE_BURN,BP_R_HAND)
|
||||
if(last_open <= world.time - 20) //Spam limiter.
|
||||
last_open = world.time
|
||||
user.visible_message(SPAN_DANGER("After a few attempts, <b>[user]</b> manages to light \the [src], they however burn their finger in the process."), range = 3)
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
/obj/item/dnainjector/proc/inject(mob/M as mob, mob/user as mob)
|
||||
if(istype(M,/mob/living))
|
||||
var/mob/living/L = M
|
||||
L.apply_effect(rand(5,20), IRRADIATE, blocked = 0)
|
||||
L.apply_damage(rand(5,20), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
|
||||
if (NOT_FLAG(M.mutations, NOCLONE)) // prevents drained people from having their DNA changed
|
||||
if (buf.types & DNA2_BUF_UI)
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
H.attack_log += text("\[[time_stamp()]\] <span class='warning'>[s] ([H.ckey])</span>")
|
||||
log_attack("[s] ([H.ckey])",ckey=key_name(H))
|
||||
|
||||
if(O.take_damage(3, 0, damage_flags = DAM_SHARP|DAM_EDGE, used_weapon = "teeth marks"))
|
||||
if(O.take_damage(3, 0, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE, used_weapon = "teeth marks"))
|
||||
H:UpdateDamageIcon()
|
||||
|
||||
last_chew = world.time
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
part.take_damage(burn = 15, used_weapon = "Electronics meltdown")
|
||||
else
|
||||
var/mob/living/M = imp_in
|
||||
M.apply_damage(15,BURN)
|
||||
M.apply_damage(15,DAMAGE_BURN)
|
||||
name = "melted implant"
|
||||
desc = "Charred circuit in melted plastic case. Wonder what that used to be..."
|
||||
icon_state = "implant_melted"
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
damage_coef -= 0.2
|
||||
return
|
||||
|
||||
if(H.apply_damage(25 * damage_coef, BRUTE, affecting))
|
||||
if(H.apply_damage(25 * damage_coef, DAMAGE_BRUTE, affecting))
|
||||
H.updatehealth()
|
||||
|
||||
if(H.can_feel_pain())
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
for(var/thing in O.implants)
|
||||
var/obj/S = thing
|
||||
usr.visible_message("<span class='notice'>[usr] starts carefully digging out something in [H == usr ? "themselves" : H]...</span>")
|
||||
O.take_damage(8, 0, DAM_SHARP|DAM_EDGE, src)
|
||||
O.take_damage(8, 0, DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE, src)
|
||||
H.custom_pain("<font size=3><span class='danger'>It burns!</span></font>", 50)
|
||||
if(do_mob(usr, H, 100))
|
||||
H.remove_implant(S, FALSE)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
return FALSE
|
||||
|
||||
/obj/item/material/sword/perform_technique(var/mob/living/carbon/human/target, var/mob/living/carbon/human/user, var/target_zone)
|
||||
var/armor_reduction = target.get_blocked_ratio(target_zone, BRUTE, DAM_EDGE|DAM_SHARP, damage = force)*100
|
||||
var/armor_reduction = target.get_blocked_ratio(target_zone, DAMAGE_BRUTE, DAMAGE_FLAG_EDGE|DAMAGE_FLAG_SHARP, damage = force)*100
|
||||
var/obj/item/organ/external/affecting = target.get_organ(target_zone)
|
||||
if(!affecting)
|
||||
return
|
||||
|
||||
@@ -605,7 +605,7 @@
|
||||
icon_state = "flag_hegemony0"
|
||||
base_icon = "flag_hegemony"
|
||||
contained_sprite = TRUE
|
||||
damtype = BURN
|
||||
damtype = DAMAGE_BURN
|
||||
|
||||
/obj/item/material/twohanded/pike/silver/Initialize(newloc, material_key)
|
||||
. = ..(newloc, MATERIAL_SILVER)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
user.Weaken(3 * force)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.apply_damage(2*force, BRUTE, BP_HEAD)
|
||||
H.apply_damage(2*force, DAMAGE_BRUTE, BP_HEAD)
|
||||
else
|
||||
user.take_organ_damage(2*force)
|
||||
return
|
||||
@@ -96,14 +96,14 @@
|
||||
user.Weaken(3 * force)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.apply_damage(2 * force, BRUTE, BP_HEAD)
|
||||
H.apply_damage(2 * force, DAMAGE_BRUTE, BP_HEAD)
|
||||
else
|
||||
user.take_organ_damage(2 * force)
|
||||
return
|
||||
if(..() && user.a_intent == I_DISARM)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/T = target
|
||||
T.apply_damage(40, PAIN, target_zone)
|
||||
T.apply_damage(40, DAMAGE_PAIN, target_zone)
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -533,7 +533,7 @@
|
||||
T.visible_message("<span class='danger'>\The [src] turns on.</span>")
|
||||
playsound(loc, 'sound/items/welder_activate.ogg', 50, 1)
|
||||
force = 15
|
||||
damtype = BURN
|
||||
damtype = DAMAGE_BURN
|
||||
w_class = ITEMSIZE_LARGE
|
||||
welding = TRUE
|
||||
hitsound = SOUNDS_LASER_MEAT
|
||||
@@ -552,7 +552,7 @@
|
||||
T.visible_message("<span class='warning'>\The [src] turns off.</span>")
|
||||
playsound(loc, 'sound/items/welder_deactivate.ogg', 50, 1)
|
||||
force = 3
|
||||
damtype = BRUTE
|
||||
damtype = DAMAGE_BRUTE
|
||||
w_class = initial(w_class)
|
||||
welding = FALSE
|
||||
hitsound = /singleton/sound_category/swing_hit_sound
|
||||
@@ -946,10 +946,10 @@
|
||||
if(!user.gloves)
|
||||
var/UserLoc = get_equip_slot()
|
||||
if(UserLoc == slot_l_hand)
|
||||
user.apply_damage(5, BURN, BP_L_HAND)
|
||||
user.apply_damage(5, DAMAGE_BURN, BP_L_HAND)
|
||||
to_chat(user, SPAN_DANGER("The steel wool burns your left hand!"))
|
||||
else if(UserLoc == slot_r_hand)
|
||||
user.apply_damage(5, BURN, BP_R_HAND)
|
||||
user.apply_damage(5, DAMAGE_BURN, BP_R_HAND)
|
||||
to_chat(user, SPAN_DANGER("The steel wool burns your right hand!"))
|
||||
|
||||
new /obj/effect/decal/cleanable/ash(get_turf(src))
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
else
|
||||
target_zone = pick(BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG)
|
||||
|
||||
var/success = L.apply_damage(30, BRUTE, target_zone, used_weapon = src, armor_pen = activated_armor_penetration)
|
||||
var/success = L.apply_damage(30, DAMAGE_BRUTE, target_zone, used_weapon = src, armor_pen = activated_armor_penetration)
|
||||
if(!success)
|
||||
return FALSE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user