mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-12 08:27:13 +01:00
Ports the radiation subsystem and cleans up damage flags. (#15715)
This commit is contained in:
@@ -39,15 +39,15 @@
|
||||
if("feet")
|
||||
zone = pick(BP_L_FOOT, BP_R_FOOT)
|
||||
if(!H.shoes)
|
||||
H.apply_effect(400 / (target.mob_size * (target.mob_size * 0.25)), PAIN)//Halloss instead of instant knockdown
|
||||
H.apply_effect(400 / (target.mob_size * (target.mob_size * 0.25)), DAMAGE_PAIN)//Halloss instead of instant knockdown
|
||||
//Mainly for the benefit of giant monsters like vaurca breeders
|
||||
if(BP_L_HAND, BP_R_HAND)
|
||||
zone = type
|
||||
if(!H.gloves)
|
||||
H.apply_effect(250 / (target.mob_size * (target.mob_size * 0.25)), PAIN)
|
||||
H.apply_effect(250 / (target.mob_size * (target.mob_size * 0.25)), DAMAGE_PAIN)
|
||||
if(!(types & TYPE_SYNTHETIC))
|
||||
target.apply_damage(rand(6 , 14), PAIN, def_zone = zone, used_weapon = src)
|
||||
target.apply_damage(rand(1 , 3), BRUTE, def_zone = zone, used_weapon = src)
|
||||
target.apply_damage(rand(6 , 14), DAMAGE_PAIN, def_zone = zone, used_weapon = src)
|
||||
target.apply_damage(rand(1 , 3), DAMAGE_BRUTE, def_zone = zone, used_weapon = src)
|
||||
|
||||
playsound(target.loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
layer = MOB_LAYER - 0.2
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
heat_limit = H.species.heat_level_3
|
||||
|
||||
if(pipe_air.temperature > heat_limit + 1)
|
||||
M.apply_damage(4 * log(pipe_air.temperature - heat_limit), BURN, BP_CHEST, used_weapon = "Excessive Heat")
|
||||
M.apply_damage(4 * log(pipe_air.temperature - heat_limit), DAMAGE_BURN, BP_CHEST, used_weapon = "Excessive Heat")
|
||||
|
||||
//fancy radiation glowing
|
||||
if(pipe_air.temperature && (icon_temperature > 500 || pipe_air.temperature > 500)) //start glowing at 500K
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
/obj/effect/blob/proc/attack_living(var/mob/living/L)
|
||||
if(!L)
|
||||
return
|
||||
var/blob_damage = pick(BRUTE, BURN)
|
||||
var/blob_damage = pick(DAMAGE_BRUTE, DAMAGE_BURN)
|
||||
attack_msg(L)
|
||||
L.apply_damage(rand(damage_min, damage_max), blob_damage, used_weapon = "blob tendril")
|
||||
|
||||
@@ -195,9 +195,9 @@
|
||||
return
|
||||
|
||||
switch(Proj.damage_type)
|
||||
if(BRUTE)
|
||||
if(DAMAGE_BRUTE)
|
||||
take_damage(Proj.damage / brute_resist)
|
||||
if(BURN)
|
||||
if(DAMAGE_BURN)
|
||||
take_damage((Proj.damage / laser_resist) / fire_resist)
|
||||
return FALSE
|
||||
|
||||
@@ -218,11 +218,11 @@
|
||||
|
||||
var/damage = 0
|
||||
switch(W.damtype)
|
||||
if(BURN)
|
||||
if(DAMAGE_BURN)
|
||||
damage = (W.force / fire_resist)
|
||||
if(W.iswelder())
|
||||
playsound(get_turf(src), 'sound/items/Welder.ogg', 100, TRUE)
|
||||
if(BRUTE)
|
||||
if(DAMAGE_BRUTE)
|
||||
damage = (W.force / brute_resist)
|
||||
|
||||
take_damage(damage)
|
||||
@@ -391,7 +391,7 @@
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2)
|
||||
if(TENDRIL_FIRE)
|
||||
desc = "A tendril removed from an asteroclast. It's hot to the touch."
|
||||
damtype = BURN
|
||||
damtype = DAMAGE_BURN
|
||||
force = 15
|
||||
color = COLOR_AMBER
|
||||
origin_tech = list(TECH_POWER = 2, TECH_BIO = 2)
|
||||
|
||||
@@ -399,7 +399,7 @@
|
||||
var/obj/item/clothing/ring/ring = null //Covered ring
|
||||
var/mob/living/carbon/human/wearer = null //Used for covered rings when dropping
|
||||
var/punch_force = 0 //How much damage do these gloves add to a punch?
|
||||
var/punch_damtype = BRUTE //What type of damage does this make fists be?
|
||||
var/punch_damtype = DAMAGE_BRUTE //What type of damage does this make fists be?
|
||||
body_parts_covered = HANDS
|
||||
slot_flags = SLOT_GLOVES
|
||||
attack_verb = list("challenged")
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/datum/breach
|
||||
var/class = 0 // Size. Lower is smaller. Uses floating point values!
|
||||
var/descriptor // 'gaping hole' etc.
|
||||
var/damtype = BURN // Punctured or melted
|
||||
var/damtype = DAMAGE_BURN // Punctured or melted
|
||||
var/obj/item/clothing/suit/space/holder // Suit containing the list of breaches holding this instance.
|
||||
|
||||
/obj/item/clothing/suit/space
|
||||
@@ -46,9 +46,9 @@ var/global/list/breach_burn_descriptors = list(
|
||||
//Sanity...
|
||||
class = between(1, round(class), 5)
|
||||
//Apply the correct descriptor.
|
||||
if(damtype == BURN)
|
||||
if(damtype == DAMAGE_BURN)
|
||||
descriptor = breach_burn_descriptors[class]
|
||||
else if(damtype == BRUTE)
|
||||
else if(damtype == DAMAGE_BRUTE)
|
||||
descriptor = breach_brute_descriptors[class]
|
||||
|
||||
//Repair a certain amount of brute or burn damage to the suit.
|
||||
@@ -118,9 +118,9 @@ var/global/list/breach_burn_descriptors = list(
|
||||
existing.class = 5
|
||||
amount -= needs
|
||||
|
||||
if(existing.damtype == BRUTE)
|
||||
if(existing.damtype == DAMAGE_BRUTE)
|
||||
T.visible_message("<span class = 'warning'>\The [existing.descriptor] on [src] gapes wider!</span>")
|
||||
else if(existing.damtype == BURN)
|
||||
else if(existing.damtype == DAMAGE_BURN)
|
||||
T.visible_message("<span class = 'warning'>\The [existing.descriptor] on [src] widens!</span>")
|
||||
|
||||
if (amount)
|
||||
@@ -134,9 +134,9 @@ var/global/list/breach_burn_descriptors = list(
|
||||
B.update_descriptor()
|
||||
B.holder = src
|
||||
|
||||
if(B.damtype == BRUTE)
|
||||
if(B.damtype == DAMAGE_BRUTE)
|
||||
T.visible_message("<span class = 'warning'>\A [B.descriptor] opens up on [src]!</span>")
|
||||
else if(B.damtype == BURN)
|
||||
else if(B.damtype == DAMAGE_BURN)
|
||||
T.visible_message("<span class = 'warning'>\A [B.descriptor] marks the surface of [src]!</span>")
|
||||
|
||||
calc_breach_damage()
|
||||
@@ -158,9 +158,9 @@ var/global/list/breach_burn_descriptors = list(
|
||||
qdel(B)
|
||||
else
|
||||
damage += B.class
|
||||
if(B.damtype == BRUTE)
|
||||
if(B.damtype == DAMAGE_BRUTE)
|
||||
brute_damage += B.class
|
||||
else if(B.damtype == BURN)
|
||||
else if(B.damtype == DAMAGE_BURN)
|
||||
burn_damage += B.class
|
||||
|
||||
if(damage >= 3)
|
||||
@@ -200,7 +200,7 @@ var/global/list/breach_burn_descriptors = list(
|
||||
var/obj/item/stack/P = W
|
||||
var/use_amt = min(P.get_amount(), 3)
|
||||
if(use_amt && P.use(use_amt))
|
||||
repair_breaches(BURN, use_amt * repair_power, user)
|
||||
repair_breaches(DAMAGE_BURN, use_amt * repair_power, user)
|
||||
return
|
||||
|
||||
else if(W.iswelder())
|
||||
@@ -218,7 +218,7 @@ var/global/list/breach_burn_descriptors = list(
|
||||
to_chat(user, "<span class='warning'>You need more welding fuel to repair this suit.</span>")
|
||||
return
|
||||
|
||||
repair_breaches(BRUTE, 3, user)
|
||||
repair_breaches(DAMAGE_BRUTE, 3, user)
|
||||
return
|
||||
|
||||
..()
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
var/cooking // Whether or not the machine is currently operating.
|
||||
var/cook_type // A string value used to track what kind of food this machine makes.
|
||||
var/can_cook_mobs // Whether or not this machine accepts grabbed mobs.
|
||||
var/mobdamagetype = BRUTE // Burn damage for cooking appliances, brute for cereal/candy
|
||||
var/mobdamagetype = DAMAGE_BRUTE // Burn damage for cooking appliances, brute for cereal/candy
|
||||
var/food_color // Colour of resulting food item.
|
||||
var/cooked_sound = 'sound/machines/ding.ogg' // Sound played when cooking completes.
|
||||
var/can_burn_food // Can the object burn food that is left inside?
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
var/light_x = 0
|
||||
var/light_y = 0
|
||||
mobdamagetype = BURN
|
||||
mobdamagetype = DAMAGE_BURN
|
||||
cooking_coeff = 0
|
||||
cooking_power = 0
|
||||
flags = null
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
|
||||
E.take_damage(0, damage, used_weapon = "hot oil")
|
||||
else
|
||||
victim.apply_damage(damage, BURN, user.zone_sel.selecting)
|
||||
victim.apply_damage(damage, DAMAGE_BURN, user.zone_sel.selecting)
|
||||
|
||||
if(!nopain)
|
||||
var/arrows_var1 = E ? E.name : "flesh"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "kinetic force"
|
||||
icon_state = null
|
||||
damage = 0 //Base damage handled elsewhere.
|
||||
damage_type = BRUTE
|
||||
damage_type = DAMAGE_BRUTE
|
||||
check_armor = "bomb"
|
||||
range = 5
|
||||
var/pressure_decrease = 0.25
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "loader_arms"
|
||||
has_hardpoints = list(HARDPOINT_LEFT_HAND, HARDPOINT_RIGHT_HAND)
|
||||
power_use = 50
|
||||
var/damagetype = BRUTE
|
||||
var/damagetype = DAMAGE_BRUTE
|
||||
|
||||
var/punch_sound = 'sound/mecha/mech_punch.ogg'
|
||||
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
return 0
|
||||
|
||||
if(LAZYLEN(pilots) && (!hatch_closed || !prob(body.pilot_coverage)))
|
||||
if(effect > 0 && effecttype == IRRADIATE)
|
||||
if(effect > 0 && effecttype == DAMAGE_RADIATION)
|
||||
var/mob/living/pilot = pick(pilots)
|
||||
return pilot.apply_effect(effect, effecttype, blocked)
|
||||
if(!(effecttype in list(PAIN, STUTTER, EYE_BLUR, DROWSY, STUN, WEAKEN)))
|
||||
if(!(effecttype in list(DAMAGE_PAIN, STUTTER, EYE_BLUR, DROWSY, STUN, WEAKEN)))
|
||||
. = ..()
|
||||
|
||||
/mob/living/heavy_vehicle/hitby(atom/movable/AM, speed)
|
||||
@@ -66,7 +66,7 @@
|
||||
else
|
||||
return body
|
||||
|
||||
/mob/living/heavy_vehicle/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone, var/used_weapon, var/damage_flags, var/armor_pen, var/silent = FALSE)
|
||||
/mob/living/heavy_vehicle/apply_damage(var/damage = 0, var/damagetype = DAMAGE_BRUTE, var/def_zone, var/used_weapon, var/damage_flags, var/armor_pen, var/silent = FALSE)
|
||||
if(!damage)
|
||||
return 0
|
||||
|
||||
@@ -80,12 +80,12 @@
|
||||
var/target = zoneToComponent(def_zone)
|
||||
//Only 2 types of damage concern mechs and vehicles
|
||||
switch(damagetype)
|
||||
if(BRUTE)
|
||||
if(DAMAGE_BRUTE)
|
||||
adjustBruteLoss(damage, target)
|
||||
if(BURN)
|
||||
if(DAMAGE_BURN)
|
||||
adjustFireLoss(damage, target)
|
||||
|
||||
if((damagetype == BRUTE || damagetype == BURN) && prob(25+(damage*2)))
|
||||
if((damagetype == DAMAGE_BRUTE || damagetype == DAMAGE_BURN) && prob(25+(damage*2)))
|
||||
spark(src, 3)
|
||||
updatehealth()
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
return total
|
||||
|
||||
/mob/living/heavy_vehicle/emp_act(var/severity)
|
||||
var/ratio = get_blocked_ratio(null, BURN, null, (4-severity) * 20)
|
||||
var/ratio = get_blocked_ratio(null, DAMAGE_BURN, null, (4-severity) * 20)
|
||||
|
||||
if(ratio >= 0.5)
|
||||
for(var/mob/living/m in pilots)
|
||||
@@ -136,7 +136,7 @@
|
||||
var/z_velocity = 5 * (levels_fallen**2) // 1z - 5, 2z - 20, 3z - 45
|
||||
var/damage = max((z_velocity + rand(-10, 10)) * damage_mod, 0)
|
||||
|
||||
apply_damage(damage, BRUTE, BP_L_LEG) // can target any leg, it will be changed to the proper component
|
||||
apply_damage(damage, DAMAGE_BRUTE, BP_L_LEG) // can target any leg, it will be changed to the proper component
|
||||
|
||||
playsound(loc, "sound/effects/bang.ogg", 100, 1)
|
||||
playsound(loc, "sound/effects/bamf.ogg", 100, 1)
|
||||
|
||||
@@ -550,7 +550,7 @@
|
||||
attack_log += text("\[[time_stamp()]\] <span class='warning'>trampled [D.name] ([D.ckey]) with \the [src].</span>")
|
||||
msg_admin_attack("[src] trampled [key_name(D)] at (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[D.x];Y=[D.y];Z=[D.z]'>JMP</a>)" )
|
||||
src.visible_message("<span class='danger'>\The [src] runs over \the [D]!</span>")
|
||||
D.apply_damage(legs.trample_damage, BRUTE)
|
||||
D.apply_damage(legs.trample_damage, DAMAGE_BRUTE)
|
||||
return TRUE
|
||||
|
||||
else
|
||||
@@ -560,7 +560,7 @@
|
||||
if(issmall(L) && (L.stat == DEAD))
|
||||
L.gib()
|
||||
return TRUE
|
||||
L.apply_damage(legs.trample_damage, BRUTE)
|
||||
L.apply_damage(legs.trample_damage, DAMAGE_BRUTE)
|
||||
return TRUE
|
||||
|
||||
/mob/living/heavy_vehicle/proc/ToggleLockdown()
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
bodytemperature += ((environment.temperature - bodytemperature) / 3)
|
||||
|
||||
if(environment.temperature >= T0C+1400) //A bit higher because I like to assume there's a difference between a mech and a wall
|
||||
apply_damage(damage = environment.temperature /5 , damagetype = BURN)
|
||||
apply_damage(damage = environment.temperature /5 , damagetype = DAMAGE_BURN)
|
||||
//A possibility is to hook up interface icons here. But this works pretty well in my experience
|
||||
if(prob(5))
|
||||
visible_message("<span class='danger'>\The [src]'s hull bends and buckles under the intense heat!</span>")
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
if (safety_disabled)
|
||||
item_power_usage = 2500
|
||||
for(var/obj/item/holo/esword/H in linkedholodeck)
|
||||
H.damtype = BRUTE
|
||||
H.damtype = DAMAGE_BRUTE
|
||||
else
|
||||
item_power_usage = initial(item_power_usage)
|
||||
for(var/obj/item/holo/esword/H in linkedholodeck)
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
if (istype(W, /obj/item/grab) && get_dist(src,user)<2)
|
||||
var/obj/item/grab/G = W
|
||||
if(istype(G.affecting,/mob/living))
|
||||
grab_smash_attack(G, PAIN)
|
||||
grab_smash_attack(G, DAMAGE_PAIN)
|
||||
return
|
||||
|
||||
if(W.flags & NOBLUDGEON) return
|
||||
@@ -183,7 +183,7 @@
|
||||
else if(W.iswrench() && !anchored && (!state || !reinf))
|
||||
to_chat(user, ("<span class='notice'>It's a holowindow, you can't dismantle it!</span>"))
|
||||
else
|
||||
if(W.damtype == BRUTE || W.damtype == BURN)
|
||||
if(W.damtype == DAMAGE_BRUTE || W.damtype == DAMAGE_BURN)
|
||||
hit(W.force)
|
||||
if(health <= 7)
|
||||
anchored = 0
|
||||
@@ -216,7 +216,7 @@
|
||||
var/aforce = I.force
|
||||
playsound(src.loc, 'sound/effects/glass_hit.ogg', 75, 1)
|
||||
visible_message("<span class='danger'>[src] was hit by [I].</span>")
|
||||
if(I.damtype == BRUTE || I.damtype == BURN)
|
||||
if(I.damtype == DAMAGE_BRUTE || I.damtype == DAMAGE_BURN)
|
||||
take_damage(aforce)
|
||||
return
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
return
|
||||
|
||||
/obj/item/holo
|
||||
damtype = PAIN
|
||||
damtype = DAMAGE_PAIN
|
||||
no_attack_log = 1
|
||||
|
||||
/obj/item/holo/esword
|
||||
|
||||
@@ -119,13 +119,13 @@
|
||||
real_damage += G.punch_force
|
||||
hit_dam_type = G.punch_damtype
|
||||
if(A.pulling_punches)
|
||||
hit_dam_type = PAIN
|
||||
hit_dam_type = DAMAGE_PAIN
|
||||
|
||||
if(G.sharp)
|
||||
damage_flags |= DAM_SHARP
|
||||
damage_flags |= DAMAGE_FLAG_SHARP
|
||||
|
||||
if(G.edge)
|
||||
damage_flags |= DAM_EDGE
|
||||
damage_flags |= DAMAGE_FLAG_EDGE
|
||||
|
||||
if(istype(A.gloves,/obj/item/clothing/gloves/force))
|
||||
var/obj/item/clothing/gloves/force/X = A.gloves
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
/datum/martial_art/revenant/proc/bash_slash(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
A.do_attack_animation(D)
|
||||
D.visible_message(SPAN_DANGER("[A] bashes [D] away!"), SPAN_DANGER("[A] bashes you away!"))
|
||||
D.apply_damage(rand(5, 10), BRUTE, damage_flags = DAM_SHARP)
|
||||
D.apply_damage(rand(5, 10), DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_SHARP)
|
||||
var/throw_range = rand(1, 2)
|
||||
D.throw_at(get_step_away(D, A, throw_range), throw_range, THROWNOBJ_KNOCKBACK_SPEED / 3, A, FALSE)
|
||||
playsound(get_turf(D), 'sound/weapons/slash.ogg', 25, 1, -1)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
return 0
|
||||
D.visible_message("<span class='warning'>[A] leg sweeps [D]!</span>")
|
||||
playsound(get_turf(A), /singleton/sound_category/swing_hit_sound, 50, 1, -1)
|
||||
D.apply_damage(5, BRUTE)
|
||||
D.apply_damage(5, DAMAGE_BRUTE)
|
||||
D.Weaken(2)
|
||||
return 1
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
A.visible_message("<span class='warning'>[A] strikes [D] with their open palm!</span>")
|
||||
playsound(get_turf(A), /singleton/sound_category/punch_sound, 50, 1, -1)
|
||||
var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting))
|
||||
D.apply_damage(25, PAIN, affecting)
|
||||
D.apply_damage(25, DAMAGE_PAIN, affecting)
|
||||
return 1
|
||||
|
||||
/datum/martial_art/karak_virul/proc/dislocating_strike(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
@@ -53,7 +53,7 @@
|
||||
return 1
|
||||
else
|
||||
playsound(get_turf(A), /singleton/sound_category/punch_sound, 50, 1, -1)
|
||||
D.apply_damage(5, BRUTE)
|
||||
D.apply_damage(5, DAMAGE_BRUTE)
|
||||
A.visible_message("<span class='warning'>[A] strikes [D] with their closed fist!</span>")
|
||||
return 1
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
D.visible_message("<span class='warning'>[A] grabs [D]'s wrist and wrenches it sideways!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
D.drop_item()
|
||||
D.apply_damage(5, BRUTE, pick(BP_L_ARM, BP_R_ARM))
|
||||
D.apply_damage(5, DAMAGE_BRUTE, pick(BP_L_ARM, BP_R_ARM))
|
||||
D.Stun(3)
|
||||
return 1
|
||||
return basic_hit(A,D)
|
||||
@@ -76,7 +76,7 @@
|
||||
A.do_attack_animation(D)
|
||||
D.visible_message("<span class='warning'>[A] kicks [D] in the head!</span>", \
|
||||
"<span class='danger'>[A] kicks you in the jaw!</span>")
|
||||
D.apply_damage(20, BRUTE, BP_HEAD)
|
||||
D.apply_damage(20, DAMAGE_BRUTE, BP_HEAD)
|
||||
D.drop_item()
|
||||
playsound(get_turf(D), "punch", 50, 1, -1)
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
D.visible_message("<span class='danger'>[A] elbow drops [D]!</span>")
|
||||
if(D.shock_stage >= 60)
|
||||
D.death() //FINISH HIM!
|
||||
D.apply_damage(50, BRUTE, BP_CHEST)
|
||||
D.apply_damage(50, DAMAGE_BRUTE, BP_CHEST)
|
||||
playsound(get_turf(D), "punch", 75, 1, -1)
|
||||
return 1
|
||||
return basic_hit(A,D)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
return 0
|
||||
A.visible_message("<span class='warning'>[A] leg sweeps [D]!</span>")
|
||||
playsound(get_turf(A), /singleton/sound_category/swing_hit_sound, 50, 1, -1)
|
||||
D.apply_damage(5, BRUTE)
|
||||
D.apply_damage(5, DAMAGE_BRUTE)
|
||||
D.Weaken(2)
|
||||
return 1
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
A.do_attack_animation(D)
|
||||
A.visible_message("<span class='warning'>[A] karate chops [D]'s neck!</span>")
|
||||
playsound(get_turf(A), /singleton/sound_category/punch_sound, 50, 1, -1)
|
||||
D.apply_damage(5, BRUTE)
|
||||
D.apply_damage(5, DAMAGE_BRUTE)
|
||||
D.silent += 10
|
||||
return 1
|
||||
|
||||
@@ -64,7 +64,7 @@ datum/martial_art/sol_combat/grab_act(var/mob/living/carbon/human/A, var/mob/liv
|
||||
if(D.weakened || D.resting || D.lying)
|
||||
bonus_damage += 5
|
||||
picked_hit_type = "stomped on"
|
||||
D.apply_damage(bonus_damage, BRUTE)
|
||||
D.apply_damage(bonus_damage, DAMAGE_BRUTE)
|
||||
if(picked_hit_type == "kicked" || picked_hit_type == "stomped")
|
||||
playsound(get_turf(D), /singleton/sound_category/swing_hit_sound, 50, 1, -1)
|
||||
else
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
var/obj/item/organ/internal/eyes/eyes = D.get_eyes()
|
||||
eyes.take_damage(rand(3,4), 1)
|
||||
D.apply_damage(10,BRUTE, BP_HEAD, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
D.apply_damage(10,DAMAGE_BRUTE, BP_HEAD, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
A.visible_message("<span class='danger'>[A] lunges forwards and strikes [D] with their claws!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/slice.ogg', 50, 1, -1)
|
||||
var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting))
|
||||
D.apply_damage(20, BRUTE, affecting, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
D.apply_damage(20, DAMAGE_BRUTE, affecting, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE)
|
||||
if(prob(20))
|
||||
D.apply_effect(4, WEAKEN)
|
||||
return 1
|
||||
@@ -68,7 +68,7 @@
|
||||
A.do_attack_animation(D)
|
||||
var/obj/item/organ/external/organ = D.get_organ(A.zone_sel.selecting)
|
||||
A.visible_message("<span class='danger'>[A] stabs [D]'s [organ.name] with their claws!</span>")
|
||||
D.apply_damage(organ.brute_dam, BRUTE, organ, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
D.apply_damage(organ.brute_dam, DAMAGE_BRUTE, organ, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE)
|
||||
return 1
|
||||
|
||||
/datum/martial_art/baghrar/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
TornadoAnimate(A)
|
||||
A.visible_message("<span class='warning'>[A] sweeps [D] with their tail!</span>")
|
||||
playsound(get_turf(A), /singleton/sound_category/swing_hit_sound, 50, 1, -1)
|
||||
D.apply_damage(5, BRUTE)
|
||||
D.apply_damage(5, DAMAGE_BRUTE)
|
||||
D.Weaken(2)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
var/atk_verb = pick("slices", "pinches", "chops", "bites", "claws")
|
||||
D.visible_message("<span class='danger'>[A] [atk_verb] [D]!</span>", \
|
||||
"<span class='danger'>[A] [atk_verb] you!</span>")
|
||||
D.apply_damage(rand(5,15), BRUTE, damage_flags = DAM_SHARP)
|
||||
D.apply_damage(rand(5,15), DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_SHARP)
|
||||
playsound(get_turf(D), 'sound/weapons/slash.ogg', 25, 1, -1)
|
||||
|
||||
return 1
|
||||
@@ -74,7 +74,7 @@
|
||||
var/obj/item/grab/G = A.get_active_hand()
|
||||
if(G && G.affecting == D)
|
||||
A.visible_message("<span class='warning'>[A] crushes [D] with its mandibles!</span>")
|
||||
D.apply_damage(30, BRUTE)
|
||||
D.apply_damage(30, DAMAGE_BRUTE)
|
||||
D.apply_effect(6, WEAKEN)
|
||||
qdel(G)
|
||||
return 1
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
D.visible_message("<span class='danger'>[A] suplexes [D]!</span>")
|
||||
D.forceMove(A.loc)
|
||||
D.apply_damage(30, BRUTE)
|
||||
D.apply_damage(30, DAMAGE_BRUTE)
|
||||
D.apply_effect(6, WEAKEN)
|
||||
add_logs(A, D, "suplexed")
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
D.grabbedby(A,1)
|
||||
D.visible_message("<span class='danger'>[A] holds [D] down!</span>")
|
||||
var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting))
|
||||
D.apply_damage(40, PAIN, affecting)
|
||||
D.apply_damage(40, DAMAGE_PAIN, affecting)
|
||||
return 1
|
||||
|
||||
/datum/martial_art/wrestling/proc/wrestling_help()
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
A.do_attack_animation(D)
|
||||
var/atk_verb = pick("chomps", "bites")
|
||||
D.visible_message(SPAN_DANGER("[A] [atk_verb] down hard on [D]!"), SPAN_DANGER("[A] [atk_verb] down hard on you!"))
|
||||
D.apply_damage(rand(5, 10), BRUTE, damage_flags = DAM_SHARP, armor_pen = 100)
|
||||
D.apply_damage(rand(5, 10), DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_SHARP, armor_pen = 100)
|
||||
playsound(get_turf(D), 'sound/weapons/bloodyslice.ogg', 25, 1, -1)
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -493,12 +493,12 @@
|
||||
connected.system_error("Unexpected user interface error.")
|
||||
return
|
||||
else
|
||||
H.apply_damage(25, BRUTE, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
H.apply_damage(25, DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE)
|
||||
connected.system_error("Unexpected user interface error.")
|
||||
return
|
||||
else
|
||||
var/mob/living/M = user
|
||||
M.apply_damage(25, BRUTE, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
M.apply_damage(25, DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE)
|
||||
|
||||
if(default_deconstruction_screwdriver(user, W))
|
||||
return
|
||||
|
||||
@@ -1095,7 +1095,7 @@ var/list/total_extraction_beacons = list()
|
||||
if(creator)
|
||||
add_logs(creator, L, "used a resonator field on", "resonator")
|
||||
to_chat(L, SPAN_DANGER("\The [src] ruptured with you in it!"))
|
||||
L.apply_damage(resonance_damage, BRUTE)
|
||||
L.apply_damage(resonance_damage, DAMAGE_BRUTE)
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
@@ -488,5 +488,5 @@ var/list/slot_equipment_priority = list( \
|
||||
|
||||
//When you drop an extremely heavy 406mm shell onto your foot. Oops!
|
||||
/mob/living/carbon/proc/throw_fail_consequences(var/obj/item/I)
|
||||
apply_damage(45, BRUTE, pick(list(BP_L_FOOT, BP_R_FOOT)), I, armor_pen = 30)
|
||||
apply_damage(45, DAMAGE_BRUTE, pick(list(BP_L_FOOT, BP_R_FOOT)), I, armor_pen = 30)
|
||||
I.throw_fail_consequences(src)
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
if(shock_damage<1)
|
||||
return 0
|
||||
|
||||
src.apply_damage(shock_damage, BURN, def_zone, used_weapon="Electrocution")
|
||||
src.apply_damage(shock_damage, DAMAGE_BURN, def_zone, used_weapon="Electrocution")
|
||||
playsound(loc, /singleton/sound_category/spark_sound, 50, 1, -1)
|
||||
if(shock_damage > 15 || tesla_shock)
|
||||
src.visible_message(
|
||||
|
||||
@@ -102,14 +102,14 @@
|
||||
apply_damage(effective_force, I.damtype, hit_zone, I, damage_flags, I.armor_penetration)
|
||||
|
||||
//Melee weapon embedded object code.
|
||||
if (I && I.damtype == BRUTE && !I.anchored && !is_robot_module(I) && I.canremove)
|
||||
if (I && I.damtype == DAMAGE_BRUTE && !I.anchored && !is_robot_module(I) && I.canremove)
|
||||
var/damage = effective_force //just the effective damage used for sorting out embedding, no further damage is applied here
|
||||
damage *= 1 - get_blocked_ratio(hit_zone, I.damtype, I.damage_flags(), I.armor_penetration, I.force)
|
||||
|
||||
if(I.can_embed) //If this weapon is allowed to embed in people.
|
||||
//blunt objects should really not be embedding in things unless a huge amount of force is involved
|
||||
var/sharp = damage_flags & DAM_SHARP
|
||||
var/edge = damage_flags & DAM_EDGE
|
||||
var/sharp = damage_flags & DAMAGE_FLAG_SHARP
|
||||
var/edge = damage_flags & DAMAGE_FLAG_EDGE
|
||||
var/embed_chance = sharp? damage/I.w_class : damage/(I.w_class*3)
|
||||
var/embed_threshold = edge? 5*I.w_class : 15*I.w_class
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
// Knifing
|
||||
/mob/living/carbon/proc/attack_throat(obj/item/W, obj/item/grab/G, mob/user)
|
||||
var/damage_flags = W.damage_flags()
|
||||
if(!(damage_flags & (DAM_SHARP|DAM_EDGE)) || W.damtype != BRUTE)
|
||||
if(!(damage_flags & (DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE)) || W.damtype != DAMAGE_BRUTE)
|
||||
return FALSE //unsuitable weapon
|
||||
|
||||
user.visible_message("<span class='danger'>\The [user] begins to slit [src]'s throat with \the [W]!</span>")
|
||||
@@ -148,7 +148,7 @@
|
||||
if(istype(helmet) && (helmet.body_parts_covered & HEAD) && (helmet.min_pressure_protection == 0))
|
||||
var/datum/component/armor/armor_component = helmet.GetComponent(/datum/component/armor)
|
||||
if(armor_component)
|
||||
damage_mod -= armor_component.get_blocked(BRUTE, damage_flags, W.armor_penetration, W.force*1.5)
|
||||
damage_mod -= armor_component.get_blocked(DAMAGE_BRUTE, damage_flags, W.armor_penetration, W.force*1.5)
|
||||
|
||||
var/total_damage = 0
|
||||
for(var/i in 1 to 3)
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
for (var/i = 0 to num_bites_needed)
|
||||
if(do_mob(src, victim, bite_delay * 10, extra_checks = CALLBACK(src, PROC_REF(devouring_equals), victim)))
|
||||
face_atom(victim)
|
||||
victim.apply_damage(damage_dealt, BRUTE)
|
||||
victim.apply_damage(damage_dealt, DAMAGE_BRUTE)
|
||||
var/obj/item/organ/internal/stomach/S = internal_organs_by_name[BP_STOMACH]
|
||||
if(S)
|
||||
S.ingested.add_reagent(victim.composition_reagent, (victim.composition_reagent_quantity * 0.5) * PEPB)
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
if (severity)
|
||||
damage_factor = (1 / severity)
|
||||
|
||||
var/armorval = get_blocked_ratio(BP_CHEST, BRUTE, DAM_DISPERSED, damage = damage)
|
||||
var/armorval = get_blocked_ratio(BP_CHEST, DAMAGE_BRUTE, DAMAGE_FLAG_DISPERSED, damage = damage)
|
||||
if (armorval)
|
||||
damage_factor *= (1 - (armorval * 0.01))
|
||||
|
||||
|
||||
@@ -263,12 +263,12 @@
|
||||
Paralyse(10)
|
||||
|
||||
// focus most of the blast on one organ
|
||||
apply_damage(0.7 * b_loss, BRUTE, null, DAM_EXPLODE, used_weapon = "Explosive blast")
|
||||
apply_damage(0.7 * f_loss, BURN, null, DAM_EXPLODE, used_weapon = "Explosive blast")
|
||||
apply_damage(0.7 * b_loss, DAMAGE_BRUTE, null, DAMAGE_FLAG_EXPLODE, used_weapon = "Explosive blast")
|
||||
apply_damage(0.7 * f_loss, DAMAGE_BURN, null, DAMAGE_FLAG_EXPLODE, used_weapon = "Explosive blast")
|
||||
|
||||
// distribute the remaining 30% on all limbs equally (including the one already dealt damage)
|
||||
apply_damage(0.3 * b_loss, BRUTE, null, DAM_EXPLODE | DAM_DISPERSED, used_weapon = "Explosive blast")
|
||||
apply_damage(0.3 * f_loss, BURN, null, DAM_EXPLODE | DAM_DISPERSED, used_weapon = "Explosive blast")
|
||||
apply_damage(0.3 * b_loss, DAMAGE_BRUTE, null, DAMAGE_FLAG_EXPLODE | DAMAGE_FLAG_DISPERSED, used_weapon = "Explosive blast")
|
||||
apply_damage(0.3 * f_loss, DAMAGE_BURN, null, DAMAGE_FLAG_EXPLODE | DAMAGE_FLAG_DISPERSED, used_weapon = "Explosive blast")
|
||||
|
||||
UpdateDamageIcon()
|
||||
|
||||
@@ -517,7 +517,7 @@
|
||||
I.emp_act(emp_damage)
|
||||
emp_damage *= 0.4
|
||||
|
||||
apply_damage(shock_damage, BURN, area, used_weapon="Electrocution")
|
||||
apply_damage(shock_damage, DAMAGE_BURN, area, used_weapon="Electrocution")
|
||||
shock_damage *= 0.4
|
||||
playsound(loc, /singleton/sound_category/spark_sound, 50, 1, -1)
|
||||
|
||||
@@ -1346,7 +1346,7 @@
|
||||
SPAN_WARNING("Your movement jostles [O] in your [organ.name] painfully.") \
|
||||
)
|
||||
custom_pain(msg, 10, 10, organ)
|
||||
organ.take_damage(rand(1, 3), 0, DAM_EDGE)
|
||||
organ.take_damage(rand(1, 3), 0, DAMAGE_FLAG_EDGE)
|
||||
|
||||
/mob/living/carbon/human/verb/check_pulse()
|
||||
set category = "Object"
|
||||
@@ -2004,7 +2004,7 @@
|
||||
return
|
||||
switch(get_bullet_impact_effect_type(def_zone))
|
||||
if(BULLET_IMPACT_MEAT)
|
||||
if(P.damage_type == BRUTE)
|
||||
if(P.damage_type == DAMAGE_BRUTE)
|
||||
var/hit_dir = get_dir(P.starting, src)
|
||||
var/obj/effect/decal/cleanable/blood/B = blood_splatter(get_step(src, hit_dir), src, 1, hit_dir)
|
||||
B.icon_state = pick("dir_splatter_1","dir_splatter_2")
|
||||
@@ -2026,9 +2026,9 @@
|
||||
if(species.radiation_mod <= 0)
|
||||
return
|
||||
|
||||
apply_damage((rand(15,30)), IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
apply_damage((rand(15,30)), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
if(prob(4))
|
||||
apply_damage((rand(20,60)), IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
apply_damage((rand(20,60)), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
if (prob(75))
|
||||
randmutb(src) // Applies bad mutation
|
||||
domutcheck(src,null,MUTCHK_FORCED)
|
||||
|
||||
@@ -53,14 +53,14 @@
|
||||
msg_admin_attack("[key_name_admin(M)] stungloved [src.name] ([src.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[M.x];Y=[M.y];Z=[M.z]'>JMP</a>)",ckey=key_name(M),ckey_target=key_name(src))
|
||||
|
||||
apply_effects(5,5,0,0,5,0,0,0,0)
|
||||
apply_damage(rand(5,25), BURN, M.zone_sel.selecting)
|
||||
apply_damage(rand(5,25), DAMAGE_BURN, M.zone_sel.selecting)
|
||||
|
||||
if(prob(15))
|
||||
playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1)
|
||||
M.visible_message("<span class='warning'>The power source on [M]'s stun gloves overloads in a terrific fashion!</span>", "<span class='warning'>Your jury rigged stun gloves malfunction!</span>", "<span class='warning'>You hear a loud sparking.</span>")
|
||||
|
||||
if(prob(50))
|
||||
M.apply_damage(rand(1,5), BURN)
|
||||
M.apply_damage(rand(1,5), DAMAGE_BURN)
|
||||
|
||||
for(M in viewers(3, null))
|
||||
M.flash_act(ignore_inherent = TRUE)
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
visible_message("<span class='danger'>[H] has punched [src]!</span>")
|
||||
|
||||
apply_damage(damage, PAIN, affecting)
|
||||
apply_damage(damage, DAMAGE_PAIN, affecting)
|
||||
if(damage >= 9)
|
||||
visible_message("<span class='danger'>[H] has weakened [src]!</span>")
|
||||
apply_effect(4, WEAKEN)
|
||||
@@ -276,7 +276,7 @@
|
||||
real_damage += G.punch_force
|
||||
hit_dam_type = G.punch_damtype
|
||||
if(H.pulling_punches)
|
||||
hit_dam_type = PAIN
|
||||
hit_dam_type = DAMAGE_PAIN
|
||||
|
||||
if(istype(H.gloves,/obj/item/clothing/gloves/force))
|
||||
var/obj/item/clothing/gloves/force/X = H.gloves
|
||||
@@ -410,7 +410,7 @@
|
||||
return
|
||||
|
||||
else
|
||||
var/armor_check = 100 * get_blocked_ratio(affecting, BRUTE, damage = 20)
|
||||
var/armor_check = 100 * get_blocked_ratio(affecting, DAMAGE_BRUTE, damage = 20)
|
||||
apply_effect(3, WEAKEN, armor_check)
|
||||
if(armor_check < 100)
|
||||
visible_message("<span class='danger'>[M] has pushed [src]!</span>")
|
||||
@@ -432,7 +432,7 @@
|
||||
sleep(1)
|
||||
step_away(src,M,15)
|
||||
sleep(1)
|
||||
apply_effect(1, WEAKEN, get_blocked_ratio(M.zone_sel.selecting, BRUTE, damage = 20)*100)
|
||||
apply_effect(1, WEAKEN, get_blocked_ratio(M.zone_sel.selecting, DAMAGE_BRUTE, damage = 20)*100)
|
||||
return
|
||||
|
||||
//See about breaking grips or pulls
|
||||
@@ -558,7 +558,7 @@
|
||||
if(!dam_zone)
|
||||
dam_zone = pick(organs)
|
||||
var/obj/item/organ/external/affecting = get_organ(dam_zone)
|
||||
apply_damage(damage, BRUTE, affecting, armor_pen = armor_penetration, damage_flags = attack_flags)
|
||||
apply_damage(damage, DAMAGE_BRUTE, affecting, armor_pen = armor_penetration, damage_flags = attack_flags)
|
||||
updatehealth()
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -391,7 +391,7 @@ This function restores all organs.
|
||||
zone = BP_HEAD
|
||||
return organs_by_name[zone]
|
||||
|
||||
/mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone, var/obj/used_weapon, var/damage_flags, var/armor_pen, var/silent = FALSE)
|
||||
/mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = DAMAGE_BRUTE, var/def_zone, var/obj/used_weapon, var/damage_flags, var/armor_pen, var/silent = FALSE)
|
||||
if (invisibility == INVISIBILITY_LEVEL_TWO && back && (istype(back, /obj/item/rig)))
|
||||
if(damage > 0)
|
||||
to_chat(src, "<span class='danger'>You are now visible.</span>")
|
||||
@@ -403,7 +403,7 @@ This function restores all organs.
|
||||
organ = def_zone
|
||||
else
|
||||
if(!def_zone)
|
||||
if(damage_flags & DAM_DISPERSED)
|
||||
if(damage_flags & DAMAGE_FLAG_DISPERSED)
|
||||
var/old_damage = damage
|
||||
var/tally
|
||||
silent = TRUE // Will damage a lot of organs, probably, so avoid spam.
|
||||
@@ -418,8 +418,8 @@ This function restores all organs.
|
||||
organ = get_organ(check_zone(def_zone))
|
||||
|
||||
//Handle other types of damage
|
||||
if(!(damagetype in list(BRUTE, BURN, PAIN, CLONE)))
|
||||
if(!stat && damagetype == PAIN)
|
||||
if(!(damagetype in list(DAMAGE_BRUTE, DAMAGE_BURN, DAMAGE_PAIN, DAMAGE_CLONE)))
|
||||
if(!stat && damagetype == DAMAGE_PAIN)
|
||||
if((damage > 25 && prob(20)) || (damage > 50 && prob(60)))
|
||||
emote("scream")
|
||||
return ..()
|
||||
@@ -441,21 +441,21 @@ This function restores all organs.
|
||||
make_adrenaline(round(damage/10))
|
||||
|
||||
switch(damagetype)
|
||||
if(BRUTE)
|
||||
if(DAMAGE_BRUTE)
|
||||
damageoverlaytemp = 20
|
||||
if(damage > 0)
|
||||
damage *= species.brute_mod
|
||||
organ.take_damage(damage, 0, damage_flags, used_weapon)
|
||||
UpdateDamageIcon()
|
||||
if(BURN)
|
||||
if(DAMAGE_BURN)
|
||||
damageoverlaytemp = 20
|
||||
if(damage > 0)
|
||||
damage *= species.burn_mod
|
||||
organ.take_damage(0, damage, damage_flags, used_weapon)
|
||||
UpdateDamageIcon()
|
||||
if(PAIN)
|
||||
if(DAMAGE_PAIN)
|
||||
organ.add_pain(damage)
|
||||
if(CLONE)
|
||||
if(DAMAGE_CLONE)
|
||||
organ.add_genetic_damage(damage)
|
||||
|
||||
// Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life().
|
||||
|
||||
@@ -43,7 +43,7 @@ emp_act
|
||||
|
||||
//Shrapnel
|
||||
if(!(species.flags & NO_EMBED) && P.can_embed())
|
||||
var/armor = get_blocked_ratio(def_zone, BRUTE, P.damage_flags(), armor_pen = P.armor_penetration, damage = P.damage)*100
|
||||
var/armor = get_blocked_ratio(def_zone, DAMAGE_BRUTE, P.damage_flags(), armor_pen = P.armor_penetration, damage = P.damage)*100
|
||||
if(prob(20 + max(P.damage + P.embed_chance - armor, -10)))
|
||||
P.do_embed(organ)
|
||||
|
||||
@@ -81,7 +81,7 @@ emp_act
|
||||
..(stun_amount, agony_amount, def_zone, used_weapon, damage_flags)
|
||||
|
||||
/mob/living/carbon/human/get_blocked_ratio(def_zone, damage_type, damage_flags, armor_pen, damage)
|
||||
if(!def_zone && (damage_flags & DAM_DISPERSED))
|
||||
if(!def_zone && (damage_flags & DAMAGE_FLAG_DISPERSED))
|
||||
var/tally
|
||||
for(var/zone in organ_rel_size)
|
||||
tally += organ_rel_size[zone]
|
||||
@@ -254,7 +254,7 @@ emp_act
|
||||
var/obj/item/clothing/gloves/force/G = X.gloves
|
||||
effective_force *= G.amplification
|
||||
|
||||
if((I.damtype == BRUTE || I.damtype == PAIN) && prob(25 + (effective_force * 2)))
|
||||
if((I.damtype == DAMAGE_BRUTE || I.damtype == DAMAGE_PAIN) && prob(25 + (effective_force * 2)))
|
||||
if(!stat)
|
||||
if(headcheck(hit_zone))
|
||||
//Harder to score a stun but if you do it lasts a bit longer
|
||||
@@ -387,12 +387,12 @@ emp_act
|
||||
msg_admin_attack("[src.name] ([src.ckey]) was hit by a [O], thrown by [M.name] ([assailant.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)",ckey=key_name(M),ckey_target=key_name(src))
|
||||
|
||||
//thrown weapon embedded object code.
|
||||
if(dtype == BRUTE && istype(O,/obj/item))
|
||||
if(dtype == DAMAGE_BRUTE && istype(O,/obj/item))
|
||||
var/obj/item/I = O
|
||||
if (!is_robot_module(I))
|
||||
var/sharp = is_sharp(I)
|
||||
var/damage = throw_damage
|
||||
damage *= (1 - get_blocked_ratio(zone, BRUTE, O.damage_flags(), O.armor_penetration, damage))
|
||||
damage *= (1 - get_blocked_ratio(zone, DAMAGE_BRUTE, O.damage_flags(), O.armor_penetration, damage))
|
||||
|
||||
//blunt objects should really not be embedding in things unless a huge amount of force is involved
|
||||
var/embed_chance = sharp ? damage/I.w_class : damage/(I.w_class*3)
|
||||
@@ -463,7 +463,7 @@ emp_act
|
||||
/mob/living/carbon/human/proc/handle_suit_punctures(var/damtype, var/damage, var/def_zone)
|
||||
|
||||
// Tox and oxy don't matter to suits.
|
||||
if(damtype != BURN && damtype != BRUTE) return
|
||||
if(damtype != DAMAGE_BURN && damtype != DAMAGE_BRUTE) return
|
||||
|
||||
// The rig might soak this hit, if we're wearing one.
|
||||
if(back && istype(back,/obj/item/rig))
|
||||
|
||||
@@ -228,13 +228,13 @@ mob/living/carbon/human/proc/change_monitor()
|
||||
|
||||
if(istype(G.affecting,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = G.affecting
|
||||
H.apply_damage(50,BRUTE)
|
||||
H.apply_damage(50,DAMAGE_BRUTE)
|
||||
if(H.stat == 2)
|
||||
H.gib()
|
||||
else
|
||||
var/mob/living/M = G.affecting
|
||||
if(!istype(M)) return //wut
|
||||
M.apply_damage(50,BRUTE)
|
||||
M.apply_damage(50,DAMAGE_BRUTE)
|
||||
if(M.stat == 2)
|
||||
M.gib()
|
||||
|
||||
@@ -393,14 +393,14 @@ mob/living/carbon/human/proc/change_monitor()
|
||||
to_chat(H, SPAN_WARNING("They are missing that limb!"))
|
||||
return
|
||||
|
||||
H.apply_damage(25, BRUTE, hit_zone, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
H.apply_damage(25, DAMAGE_BRUTE, hit_zone, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE)
|
||||
visible_message(SPAN_WARNING("<b>[src]</b> rips viciously at \the [G.affecting]'s [affected] with its mandibles!"))
|
||||
msg_admin_attack("[key_name_admin(src)] mandible'd [key_name_admin(H)] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)",ckey=key_name(src),ckey_target=key_name(H))
|
||||
else
|
||||
var/mob/living/M = G.affecting
|
||||
if(!istype(M))
|
||||
return
|
||||
M.apply_damage(25, BRUTE, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
M.apply_damage(25, DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE)
|
||||
visible_message(SPAN_WARNING("<b>[src]</b> rips viciously at \the [G.affecting]'s flesh with its mandibles!"))
|
||||
msg_admin_attack("[key_name_admin(src)] mandible'd [key_name_admin(M)] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)",ckey=key_name(src),ckey_target=key_name(M))
|
||||
playsound(get_turf(src), 'sound/weapons/slash.ogg', 50, TRUE)
|
||||
@@ -421,8 +421,8 @@ mob/living/carbon/human/proc/change_monitor()
|
||||
playsound(F, 'sound/items/countdown.ogg', 125, 1)
|
||||
spawn(20)
|
||||
explosion(F.loc, -1, -1, 2)
|
||||
M.apply_damage(20,BRUTE)
|
||||
M.apply_damage(15,BURN)
|
||||
M.apply_damage(20,DAMAGE_BRUTE)
|
||||
M.apply_damage(15,DAMAGE_BURN)
|
||||
qdel(F)
|
||||
|
||||
for(var/obj/item/material/shard/shrapnel/flechette/F in range(7, src))
|
||||
@@ -602,7 +602,7 @@ mob/living/carbon/human/proc/change_monitor()
|
||||
|
||||
visible_message("<span class='warning'><b>[src]</b> launches a spine-quill at [target]!</span>")
|
||||
|
||||
src.apply_damage(10,BRUTE)
|
||||
src.apply_damage(10,DAMAGE_BRUTE)
|
||||
playsound(src.loc, 'sound/weapons/bladeslice.ogg', 50, 1)
|
||||
var/obj/item/arrow/quill/A = new /obj/item/arrow/quill(usr.loc)
|
||||
A.throw_at(target, 10, 30, usr)
|
||||
|
||||
@@ -663,9 +663,9 @@
|
||||
for(var/obj/item/I in src)
|
||||
if(I.contaminated && !(species.flags & PHORON_IMMUNE))
|
||||
if(I == r_hand)
|
||||
apply_damage(vsc.plc.CONTAMINATION_LOSS, BURN, BP_R_HAND)
|
||||
apply_damage(vsc.plc.CONTAMINATION_LOSS, DAMAGE_BURN, BP_R_HAND)
|
||||
else if(I == l_hand)
|
||||
apply_damage(vsc.plc.CONTAMINATION_LOSS, BURN, BP_L_HAND)
|
||||
apply_damage(vsc.plc.CONTAMINATION_LOSS, DAMAGE_BURN, BP_L_HAND)
|
||||
else
|
||||
adjustFireLoss(vsc.plc.CONTAMINATION_LOSS)
|
||||
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
continue
|
||||
if(L == target)
|
||||
continue
|
||||
L.apply_damage(rand(5,20), BRUTE, zone, armor)
|
||||
L.apply_damage(rand(5,20), DAMAGE_BRUTE, zone, armor)
|
||||
to_chat(L, "<span class='danger'>\The [user] [pick(attack_verb)] you with its [attack_noun]!</span>")
|
||||
hit_mobs++
|
||||
if(hit_mobs)
|
||||
@@ -208,7 +208,7 @@
|
||||
to_chat(user, SPAN_WARNING("You feel that \the [target] has been already infected!"))
|
||||
|
||||
var/infection_chance = 80
|
||||
infection_chance -= target.get_blocked_ratio(zone, BRUTE, damage_flags = DAM_SHARP|DAM_EDGE, damage = damage)*100
|
||||
infection_chance -= target.get_blocked_ratio(zone, DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE, damage = damage)*100
|
||||
if(prob(infection_chance))
|
||||
if(target.reagents)
|
||||
var/trioxin_amount = REAGENT_VOLUME(target.reagents, /singleton/reagent/toxin/trioxin)
|
||||
@@ -240,7 +240,7 @@
|
||||
damage = 10
|
||||
attack_sound = 'sound/items/welder.ogg'
|
||||
attack_name = "flaming touch"
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
|
||||
/datum/unarmed_attack/flame/apply_effects(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/armor,var/attack_damage,var/zone)
|
||||
..()
|
||||
|
||||
@@ -768,7 +768,7 @@ var/global/list/golem_types = list(SPECIES_GOLEM_COAL,
|
||||
/datum/species/golem/uranium/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
if(prob(25))
|
||||
for(var/mob/living/L in view(7, H))
|
||||
L.apply_damage(20, IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
L.apply_damage(20, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
|
||||
/datum/species/golem/homunculus
|
||||
name = SPECIES_GOLEM_MEAT
|
||||
|
||||
@@ -15,7 +15,7 @@ var/global/list/sparring_attack_cache = list()
|
||||
var/sharp = 0
|
||||
var/edge = FALSE
|
||||
|
||||
var/damage_type = BRUTE
|
||||
var/damage_type = DAMAGE_BRUTE
|
||||
var/sparring_variant_type = /datum/unarmed_attack/pain_strike
|
||||
|
||||
var/eye_attack_text
|
||||
@@ -53,7 +53,7 @@ var/global/list/sparring_attack_cache = list()
|
||||
return
|
||||
|
||||
var/stun_chance = rand(0, 100)
|
||||
var/armor = target.get_blocked_ratio(zone, BRUTE, damage_flags(), armor_penetration, damage)
|
||||
var/armor = target.get_blocked_ratio(zone, DAMAGE_BRUTE, damage_flags(), armor_penetration, damage)
|
||||
var/pain_message = TRUE
|
||||
|
||||
if(!target.can_feel_pain())
|
||||
@@ -96,7 +96,7 @@ var/global/list/sparring_attack_cache = list()
|
||||
if(!target.lying)
|
||||
if(pain_message)
|
||||
target.visible_message("<span class='warning'>[target] gives way slightly.</span>")
|
||||
target.apply_effect(attack_damage*3, PAIN, armor)
|
||||
target.apply_effect(attack_damage*3, DAMAGE_PAIN, armor)
|
||||
else if(attack_damage >= 5 && !(target == user) && (stun_chance + attack_damage * 5 >= 100) && armor < 1) // Chance to get the usual throwdown as well (25% standard chance)
|
||||
if(!target.lying)
|
||||
target.visible_message("<span class='danger'>[target] [pick("slumps", "falls", "drops")] down to the ground!</span>")
|
||||
@@ -127,9 +127,9 @@ var/global/list/sparring_attack_cache = list()
|
||||
/datum/unarmed_attack/proc/damage_flags()
|
||||
. = 0
|
||||
if(sharp)
|
||||
. |= DAM_SHARP
|
||||
. |= DAMAGE_FLAG_SHARP
|
||||
if(edge)
|
||||
. |= DAM_EDGE
|
||||
. |= DAMAGE_FLAG_EDGE
|
||||
|
||||
/datum/unarmed_attack/bite
|
||||
attack_verb = list("bit")
|
||||
@@ -315,7 +315,7 @@ var/global/list/sparring_attack_cache = list()
|
||||
if(5) user.visible_message("<span class='danger'>[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed [user.get_pronoun("his")] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!</span>") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/
|
||||
|
||||
/datum/unarmed_attack/pain_strike
|
||||
damage_type = PAIN
|
||||
damage_type = DAMAGE_PAIN
|
||||
attack_noun = list("tap","light strike")
|
||||
attack_verb = list("tapped", "lightly struck")
|
||||
desc = "Sparring: A light strike to your opponent. So light, it won't even leave a mark! They WILL feel this, but will suffer no dangerous side effect, unless you punch them into cardiac arrest!"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
standard 0 if fail
|
||||
*/
|
||||
|
||||
/mob/living/proc/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone, var/used_weapon, var/damage_flags = 0, var/armor_pen, var/silent = FALSE)
|
||||
/mob/living/proc/apply_damage(var/damage = 0, var/damagetype = DAMAGE_BRUTE, var/def_zone, var/used_weapon, var/damage_flags = 0, var/armor_pen, var/silent = FALSE)
|
||||
if(!damage)
|
||||
return FALSE
|
||||
|
||||
@@ -20,33 +20,33 @@
|
||||
return FALSE
|
||||
|
||||
switch(damagetype)
|
||||
if(BRUTE)
|
||||
if(DAMAGE_BRUTE)
|
||||
adjustBruteLoss(damage)
|
||||
if(BURN)
|
||||
if(DAMAGE_BURN)
|
||||
if(HAS_FLAG(mutations, COLD_RESISTANCE))
|
||||
damage = 0
|
||||
adjustFireLoss(damage)
|
||||
if(TOX)
|
||||
if(DAMAGE_TOXIN)
|
||||
adjustToxLoss(damage)
|
||||
if(OXY)
|
||||
if(DAMAGE_OXY)
|
||||
adjustOxyLoss(damage)
|
||||
if(CLONE)
|
||||
if(DAMAGE_CLONE)
|
||||
adjustCloneLoss(damage)
|
||||
if(PAIN)
|
||||
if(DAMAGE_PAIN)
|
||||
adjustHalLoss(damage)
|
||||
if(IRRADIATE)
|
||||
if(DAMAGE_RADIATION)
|
||||
apply_radiation(damage)
|
||||
|
||||
updatehealth()
|
||||
return TRUE
|
||||
|
||||
/mob/living/proc/apply_damages(var/brute = 0, var/burn = 0, var/tox = 0, var/oxy = 0, var/clone = 0, var/halloss = 0, var/def_zone, var/damage_flags = 0)
|
||||
if(brute) apply_damage(brute, BRUTE, def_zone, blocked)
|
||||
if(burn) apply_damage(burn, BURN, def_zone, blocked)
|
||||
if(tox) apply_damage(tox, TOX, def_zone, blocked)
|
||||
if(oxy) apply_damage(oxy, OXY, def_zone, blocked)
|
||||
if(clone) apply_damage(clone, CLONE, def_zone, blocked)
|
||||
if(halloss) apply_damage(halloss, PAIN, def_zone, blocked)
|
||||
if(brute) apply_damage(brute, DAMAGE_BRUTE, def_zone, blocked)
|
||||
if(burn) apply_damage(burn, DAMAGE_BURN, def_zone, blocked)
|
||||
if(tox) apply_damage(tox, DAMAGE_TOXIN, def_zone, blocked)
|
||||
if(oxy) apply_damage(oxy, DAMAGE_OXY, def_zone, blocked)
|
||||
if(clone) apply_damage(clone, DAMAGE_CLONE, def_zone, blocked)
|
||||
if(halloss) apply_damage(halloss, DAMAGE_PAIN, def_zone, blocked)
|
||||
return TRUE
|
||||
|
||||
/mob/living/proc/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0)
|
||||
@@ -58,7 +58,7 @@
|
||||
Weaken(effect * BLOCKED_MULT(blocked))
|
||||
if(PARALYZE)
|
||||
Paralyse(effect * BLOCKED_MULT(blocked))
|
||||
if(PAIN)
|
||||
if(DAMAGE_PAIN)
|
||||
adjustHalLoss(effect * BLOCKED_MULT(blocked)) //Changed this to use the wrapper function, it shouldn't directly alter the value
|
||||
if(STUTTER)
|
||||
if(status_flags & CANSTUN) // stun is usually associated with stutter
|
||||
@@ -81,7 +81,7 @@
|
||||
if(stutter) apply_effect(stutter, STUTTER, blocked)
|
||||
if(eyeblur) apply_effect(eyeblur, EYE_BLUR, blocked)
|
||||
if(drowsy) apply_effect(drowsy, DROWSY, blocked)
|
||||
if(agony) apply_effect(agony, PAIN, blocked)
|
||||
if(agony) apply_effect(agony, DAMAGE_PAIN, blocked)
|
||||
if(incinerate) apply_effect(incinerate, INCINERATE, blocked)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
apply_effect(stun_amount, EYE_BLUR)
|
||||
|
||||
if(agony_amount)
|
||||
apply_damage(agony_amount, PAIN, def_zone, used_weapon)
|
||||
apply_damage(agony_amount, DAMAGE_PAIN, def_zone, used_weapon)
|
||||
apply_effect(agony_amount / 10, STUTTER)
|
||||
apply_effect(agony_amount / 10, EYE_BLUR)
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
|
||||
. = standard_weapon_hit_effects(I, user, effective_force, hit_zone)
|
||||
|
||||
if(I.damtype == BRUTE && prob(33) && I.force) // Added blood for whacking non-humans too
|
||||
if(I.damtype == DAMAGE_BRUTE && prob(33) && I.force) // Added blood for whacking non-humans too
|
||||
var/turf/simulated/location = get_turf(src)
|
||||
if(istype(location)) location.add_blood_floor(src)
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
/mob/living/proc/turf_collision(var/atom/T, var/speed = THROWFORCE_SPEED_DIVISOR, var/sound_to_play = 'sound/effects/bangtaper.ogg')
|
||||
visible_message("<span class='danger'>[src] slams into \the [T]!</span>")
|
||||
playsound(T, sound_to_play, 50, 1, 1)//so it plays sounds on the turf instead, makes for awesome carps to hull collision and such
|
||||
apply_damage(speed*5, BRUTE)
|
||||
apply_damage(speed*5, DAMAGE_BRUTE)
|
||||
|
||||
/mob/living/proc/near_wall(var/direction,var/distance=1)
|
||||
var/turf/T = get_step(get_turf(src),direction)
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
shake_camera(L, 2, 4)
|
||||
for(var/mob/living/rebecca in T)
|
||||
if(rebecca.lying || from_above)
|
||||
rebecca.apply_damage(40 * damage_mod, BRUTE, pick(BP_ALL_LIMBS), used_weapon = "landing", armor_pen = 30) //so true choomfie
|
||||
rebecca.apply_damage(40 * damage_mod, DAMAGE_BRUTE, pick(BP_ALL_LIMBS), used_weapon = "landing", armor_pen = 30) //so true choomfie
|
||||
T.visible_message(SPAN_DANGER("<font size=4>[H] lands on [rebecca]!</font>"))
|
||||
to_chat(H, SPAN_DANGER("<font size=4>You land on [rebecca]!</font>")) //since the mob won't be on the turf yet
|
||||
user.post_maneuver()
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
close_up()
|
||||
|
||||
if(I_HURT)
|
||||
apply_damage(harm_intent_damage, BRUTE, used_weapon = "Attack by [M.name]")
|
||||
apply_damage(harm_intent_damage, DAMAGE_BRUTE, used_weapon = "Attack by [M.name]")
|
||||
M.visible_message(SPAN_DANGER("[M] [response_harm] \the [src]"))
|
||||
M.do_attack_animation(src)
|
||||
updatehealth()
|
||||
|
||||
@@ -146,9 +146,9 @@
|
||||
/mob/living/silicon/bullet_act(obj/item/projectile/Proj)
|
||||
if(!Proj.nodamage)
|
||||
switch(Proj.damage_type)
|
||||
if(BRUTE)
|
||||
if(DAMAGE_BRUTE)
|
||||
adjustBruteLoss(Proj.damage)
|
||||
if(BURN)
|
||||
if(DAMAGE_BURN)
|
||||
adjustFireLoss(Proj.damage)
|
||||
|
||||
Proj.on_hit(src, 100)
|
||||
@@ -290,8 +290,8 @@
|
||||
if(3.0)
|
||||
brute = 30
|
||||
|
||||
apply_damage(brute, BRUTE, damage_flags = DAM_EXPLODE)
|
||||
apply_damage(burn, BURN, damage_flags = DAM_EXPLODE)
|
||||
apply_damage(brute, DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_EXPLODE)
|
||||
apply_damage(burn, DAMAGE_BURN, damage_flags = DAMAGE_FLAG_EXPLODE)
|
||||
|
||||
/mob/living/silicon/proc/receive_alarm(var/datum/alarm_handler/alarm_handler, var/datum/alarm/alarm, was_raised)
|
||||
if(!next_alarm_notice)
|
||||
|
||||
@@ -97,11 +97,11 @@
|
||||
else
|
||||
prob_mult -= 0.01 *(min(LAZYACCESS(worn_helmet.armor, "bio"), 30))// Is your helmet sealed? I can't get to 30% of your body.
|
||||
if( prob(sting_prob*prob_mult) && (M.stat == CONSCIOUS || (M.stat == UNCONSCIOUS && prob(25*prob_mult))) ) // Try to sting! If you're not moving, think about stinging.
|
||||
M.apply_damage(min(strength*0.85,2)+mut, BURN, damage_flags = DAM_SHARP) // Stinging. The more mutated I am, the harder I sting.
|
||||
M.apply_damage(min(strength*0.85,2)+mut, DAMAGE_BURN, damage_flags = DAMAGE_FLAG_SHARP) // Stinging. The more mutated I am, the harder I sting.
|
||||
var/venom_strength = max(strength*0.2, (round(feral/10,1) * (max(round(strength/20,1), 1)))) + toxic // Bee venom based on how angry I am and how many there are of me!
|
||||
M.apply_damage(venom_strength, PAIN) //Bee venom causes pain, not organ failure
|
||||
M.apply_damage(venom_strength, DAMAGE_PAIN) //Bee venom causes pain, not organ failure
|
||||
if(prob(max(80, strength * 10))) //If there's enough of a swarm, it can also cause breathing trouble. Yes, even without being allergic.
|
||||
M.apply_damage(venom_strength, OXY)
|
||||
M.apply_damage(venom_strength, DAMAGE_OXY)
|
||||
update_icon()
|
||||
to_chat(M, "<span class='warning'>You have been stung!</span>")
|
||||
M.flash_pain(5)
|
||||
@@ -253,11 +253,11 @@
|
||||
/mob/living/simple_animal/bee/attempt_grab(var/mob/living/grabber)
|
||||
if (prob(strength*5))//if the swarm is big you might grab a few bees, you won't make a serious dent
|
||||
to_chat(grabber, "<span class = 'warning'>You attempt to grab the swarm, but only manage to snatch a scant handful of crushed bees.</span>")
|
||||
apply_damage(strength*0.5, BRUTE, used_weapon = "Crushing by [grabber.name]")
|
||||
apply_damage(strength*0.5, DAMAGE_BRUTE, used_weapon = "Crushing by [grabber.name]")
|
||||
else
|
||||
to_chat(grabber, "<span class = 'warning'>For some bizarre reason known only to yourself, you attempt to grab ahold of the swarm of bees. You come away with nothing but empty, slightly stung hands.</span>")
|
||||
if(verify_stingable(grabber))
|
||||
grabber.apply_damage(strength*0.5, BURN)
|
||||
grabber.apply_damage(strength*0.5, DAMAGE_BURN)
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
/mob/living/simple_animal/cat/apply_radiation_effects()
|
||||
. = ..()
|
||||
if(.)
|
||||
apply_effect((rand(30,60)),IRRADIATE,blocked=0)
|
||||
apply_damage((rand(30,60)), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
|
||||
/mob/living/simple_animal/cat/proc/handle_flee_target()
|
||||
//see if we should stop fleeing
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
update_nutrition_stats()
|
||||
|
||||
/mob/living/simple_animal/rat/king/splat()
|
||||
src.apply_damage(5, BRUTE)
|
||||
src.apply_damage(5, DAMAGE_BRUTE)
|
||||
|
||||
/mob/living/simple_animal/rat/king/verb/kingDecree()
|
||||
set category = "Abilities"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 18
|
||||
armor_penetration = 30 //Standard armor probably doesn't help against a bear, does it?
|
||||
attack_flags = DAM_EDGE|DAM_SHARP
|
||||
attack_flags = DAMAGE_FLAG_EDGE|DAMAGE_FLAG_SHARP
|
||||
resist_mod = 4
|
||||
break_stuff_probability = 80
|
||||
mob_size = 17
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
armor_penetration = 40
|
||||
attack_flags = DAM_SHARP|DAM_EDGE
|
||||
attack_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE
|
||||
break_stuff_probability = 25
|
||||
attacktext = "slashed"
|
||||
projectilesound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
/obj/item/projectile/beam/hivebot
|
||||
name = "electrical discharge"
|
||||
damage = 20
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
agony = 20
|
||||
armor_penetration = 40
|
||||
muzzle_type = /obj/effect/projectile/muzzle/stun
|
||||
@@ -11,12 +11,12 @@
|
||||
/obj/item/projectile/beam/hivebot/harmless
|
||||
name = "harmless electrical discharge"
|
||||
damage = 0
|
||||
damage_type = PAIN
|
||||
damage_type = DAMAGE_PAIN
|
||||
agony = 0
|
||||
|
||||
/obj/item/projectile/beam/hivebot/incendiary
|
||||
name = "archaic energy welder"
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
damage = 20
|
||||
armor_penetration = 15
|
||||
incinerate = 5
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
if(mob_size > 15)
|
||||
for(var/mob/living/M in orange(1,src))
|
||||
if(M != src)
|
||||
M.apply_damage(50, BRUTE)
|
||||
M.apply_damage(50, DAMAGE_BRUTE)
|
||||
M.apply_effect(6, STUN, blocked)
|
||||
M.throw_at(get_random_turf_in_range(get_turf(src), 1), 2)
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
/obj/item/projectile/beam/cavern
|
||||
name = "electrical discharge"
|
||||
icon_state = "stun"
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
check_armor = "energy"
|
||||
damage = 5
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/beast/charbaby/attack_hand(mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
reflect_unarmed_damage(H, BURN, "amorphous mass")
|
||||
reflect_unarmed_damage(H, DAMAGE_BURN, "amorphous mass")
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/beast/shantak/lava
|
||||
desc = "A vaguely canine looking beast. It looks as though its fur is made of stone wool."
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
"<span class='danger'>\The [src] scrapes and gnashes against your exoskeleton before spitting you out!</span>",
|
||||
"<b>You hear several metallic scrapes!</b>"
|
||||
)
|
||||
R.apply_damage(60,BRUTE)
|
||||
R.apply_damage(60,DAMAGE_BRUTE)
|
||||
else
|
||||
L.visible_message(
|
||||
"<span class='danger'>\The [src] eviscerates [L] with its teeth, swallowing what little remains whole!</span>",
|
||||
@@ -184,7 +184,7 @@
|
||||
if(prob(50))
|
||||
var/mob/living/L = sarlacc.captive
|
||||
if(L)
|
||||
L.apply_damage(rand(3,10),BRUTE)
|
||||
L.apply_damage(rand(3,10),DAMAGE_BRUTE)
|
||||
L.visible_message(
|
||||
"<span class='danger'>\The [src] tears at [L]'s flesh with its gruesome jaws.</span>",
|
||||
"<span class='danger'>You feel a searing pain as \the [src] tears at your flesh!</span>",
|
||||
@@ -293,7 +293,7 @@
|
||||
var/list/possible_targets = list()
|
||||
for(var/mob/living/L in src.loc)
|
||||
if(L != src)
|
||||
L.apply_damage(15,BRUTE)
|
||||
L.apply_damage(15,DAMAGE_BRUTE)
|
||||
possible_targets += L
|
||||
to_chat(L, "<span class='danger'>\The [src] wraps around you tightly with its spiny teeth+!</span>")
|
||||
if(Adjacent(originator) && possible_targets.len)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
armor_penetration = 15
|
||||
attack_flags = DAM_EDGE
|
||||
attack_flags = DAMAGE_FLAG_EDGE
|
||||
attacktext = "bitten"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
|
||||
@@ -114,6 +114,6 @@
|
||||
S.visible_message("<span class='danger'>\The [S] lands on the [target_turf]!</span>")
|
||||
for(var/mob/living/M in target_turf)
|
||||
if(M != src)
|
||||
M.apply_damage(50, BRUTE)
|
||||
M.apply_damage(50, DAMAGE_BRUTE)
|
||||
M.apply_effect(6, STUN, blocked)
|
||||
return TRUE
|
||||
@@ -66,7 +66,7 @@
|
||||
if(O.force)
|
||||
if(prob(80))
|
||||
var/damage = O.force
|
||||
if (O.damtype == PAIN)
|
||||
if (O.damtype == DAMAGE_PAIN)
|
||||
damage = 0
|
||||
health -= damage
|
||||
visible_message("<span class='danger'>[src] has been attacked with the [O] by [user].</span>")
|
||||
|
||||
@@ -58,13 +58,13 @@
|
||||
visible_message("<b>[src]</b> lifts \the [rival] over its head and slams them down into the ground behind them!")
|
||||
rival.throw_at(get_step(src, reverse_dir[dir]), 1, 3, src, TRUE)
|
||||
playsound(loc, 'sound/effects/bang.ogg', 50, 1)
|
||||
rival.apply_damage(2, BRUTE)
|
||||
rival.apply_damage(2, DAMAGE_BRUTE)
|
||||
if(2)
|
||||
visible_message("<b>[src]</b> leaps into the air and superman punches \the [rival]!")
|
||||
animate(src, pixel_z = 16, time = 3, easing = SINE_EASING | EASE_IN)
|
||||
animate(pixel_z = 0, time = 3, easing = SINE_EASING | EASE_OUT)
|
||||
playsound(loc, 'sound/weapons/cardboardhit.ogg', 50, 1)
|
||||
rival.apply_damage(2, BRUTE)
|
||||
rival.apply_damage(2, DAMAGE_BRUTE)
|
||||
if(rival.health <= 0)
|
||||
say(pick(victory_speech))
|
||||
|
||||
|
||||
@@ -482,7 +482,7 @@
|
||||
var/mob/living/carbon/human/H = parrot_interest
|
||||
var/obj/item/organ/external/affecting = H.get_organ(ran_zone(pick(parrot_dam_zone)))
|
||||
|
||||
H.apply_damage(damage, BRUTE, affecting, damage_flags = DAM_SHARP)
|
||||
H.apply_damage(damage, DAMAGE_BRUTE, affecting, damage_flags = DAMAGE_FLAG_SHARP)
|
||||
visible_emote(pick("pecks [H]'s [affecting].", "cuts [H]'s [affecting] with its talons."))
|
||||
|
||||
else
|
||||
|
||||
@@ -278,15 +278,15 @@
|
||||
//Atmos effect
|
||||
if(bodytemperature < minbodytemp)
|
||||
fire_alert = 2
|
||||
apply_damage(cold_damage_per_tick, BURN, used_weapon = "Cold Temperature")
|
||||
apply_damage(cold_damage_per_tick, DAMAGE_BURN, used_weapon = "Cold Temperature")
|
||||
else if(bodytemperature > maxbodytemp)
|
||||
fire_alert = 1
|
||||
apply_damage(heat_damage_per_tick, BURN, used_weapon = "High Temperature")
|
||||
apply_damage(heat_damage_per_tick, DAMAGE_BURN, used_weapon = "High Temperature")
|
||||
else
|
||||
fire_alert = 0
|
||||
|
||||
if(!atmos_suitable)
|
||||
apply_damage(unsuitable_atoms_damage, OXY, used_weapon = "Atmosphere")
|
||||
apply_damage(unsuitable_atoms_damage, DAMAGE_OXY, used_weapon = "Atmosphere")
|
||||
|
||||
if(has_udder)
|
||||
if(stat == CONSCIOUS)
|
||||
@@ -537,7 +537,7 @@
|
||||
simple_harm_attack(user)
|
||||
|
||||
/mob/living/simple_animal/proc/simple_harm_attack(var/mob/living/user)
|
||||
apply_damage(harm_intent_damage, BRUTE, used_weapon = "Attack by [user.name]")
|
||||
apply_damage(harm_intent_damage, DAMAGE_BRUTE, used_weapon = "Attack by [user.name]")
|
||||
user.visible_message(SPAN_WARNING("<b>\The [user]</b> [response_harm] \the [src]!"), SPAN_WARNING("You [response_harm] \the [src]!"))
|
||||
user.do_attack_animation(src, FIST_ATTACK_ANIMATION)
|
||||
poke(TRUE)
|
||||
@@ -590,7 +590,7 @@
|
||||
|
||||
if(O.force > resistance)
|
||||
var/damage = O.force
|
||||
if (O.damtype == PAIN)
|
||||
if (O.damtype == DAMAGE_PAIN)
|
||||
damage = 0
|
||||
if(supernatural && istype(O,/obj/item/nullrod))
|
||||
damage *= 2
|
||||
@@ -707,7 +707,7 @@
|
||||
if(3.0)
|
||||
damage = 30
|
||||
|
||||
apply_damage(damage, BRUTE, damage_flags = DAM_EXPLODE)
|
||||
apply_damage(damage, DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_EXPLODE)
|
||||
|
||||
/mob/living/simple_animal/proc/SA_attackable(target_mob)
|
||||
if (isliving(target_mob))
|
||||
@@ -879,7 +879,7 @@
|
||||
|
||||
//Todo: add snowflakey shit to it.
|
||||
/mob/living/simple_animal/electrocute_act(var/shock_damage, var/obj/source, var/base_siemens_coeff = 1.0, var/def_zone = null, var/tesla_shock = 0, var/ground_zero)
|
||||
apply_damage(shock_damage, BURN)
|
||||
apply_damage(shock_damage, DAMAGE_BURN)
|
||||
playsound(loc, /singleton/sound_category/spark_sound, 50, 1, -1)
|
||||
spark(loc, 5, alldirs)
|
||||
visible_message(SPAN_WARNING("\The [src] was shocked by \the [source]!"), SPAN_WARNING("You are shocked by \the [source]!"), SPAN_WARNING("You hear an electrical crack!"))
|
||||
@@ -924,7 +924,7 @@
|
||||
..()
|
||||
switch(get_bullet_impact_effect_type(def_zone))
|
||||
if(BULLET_IMPACT_MEAT)
|
||||
if(P.damage_type == BRUTE)
|
||||
if(P.damage_type == DAMAGE_BRUTE)
|
||||
var/hit_dir = get_dir(P.starting, src)
|
||||
var/obj/effect/decal/cleanable/blood/B = blood_splatter(get_step(src, hit_dir), src, 1, hit_dir)
|
||||
B.icon_state = pick("dir_splatter_1","dir_splatter_2")
|
||||
|
||||
@@ -1155,7 +1155,7 @@
|
||||
affected.implants -= implant
|
||||
if(!surgical_removal)
|
||||
shock_stage += 20
|
||||
apply_damage((implant.w_class * 7), BRUTE, affected)
|
||||
apply_damage((implant.w_class * 7), DAMAGE_BRUTE, affected)
|
||||
if(!BP_IS_ROBOTIC(affected) && prob(implant.w_class * 5) && affected.sever_artery()) //I'M SO ANEMIC I COULD JUST -DIE-.
|
||||
custom_pain("Something tears wetly in your [affected.name] as [implant] is pulled free!", 50, affecting = affected)
|
||||
. = ..()
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
return
|
||||
|
||||
attacker.visible_message("<span class='danger'>[attacker] [pick("bent", "twisted")] [target]'s [organ.name] into a jointlock!</span>")
|
||||
var/armor = 100 * affecting.get_blocked_ratio(target, BRUTE, damage = 30)
|
||||
var/armor = 100 * affecting.get_blocked_ratio(target, DAMAGE_BRUTE, damage = 30)
|
||||
if(armor < 70)
|
||||
to_chat(target, "<span class='danger'>You feel extreme pain!</span>")
|
||||
affecting.adjustHalLoss(Clamp(0, 60 - affecting.getHalLoss(), 30)) //up to 60 halloss
|
||||
@@ -104,8 +104,8 @@
|
||||
if(istype(hat))
|
||||
damage += hat.force * 3
|
||||
|
||||
target.apply_damage(damage, BRUTE, BP_HEAD)
|
||||
attacker.apply_damage(10, BRUTE, BP_HEAD)
|
||||
target.apply_damage(damage, DAMAGE_BRUTE, BP_HEAD)
|
||||
attacker.apply_damage(10, DAMAGE_BRUTE, BP_HEAD)
|
||||
|
||||
if(armor < 25 && target.headcheck(BP_HEAD) && prob(damage))
|
||||
target.apply_effect(20, PARALYZE)
|
||||
@@ -167,20 +167,20 @@
|
||||
visible_message("<span class='notice'>[assailant] tried to grab [target] but they have no hair!</span>")
|
||||
if(1)
|
||||
visible_message("<span class='danger'>[assailant] tugs [target]'s [hairchatname] before releasing their grip!</span>")
|
||||
target.apply_damage(5, PAIN)
|
||||
target.apply_damage(5, DAMAGE_PAIN)
|
||||
if(2)
|
||||
visible_message("<span class='danger'>[assailant] tugs [target]'s [hairchatname]!</span>")
|
||||
target.apply_damage(5, PAIN)
|
||||
target.apply_damage(5, DAMAGE_PAIN)
|
||||
src.state = GRAB_PASSIVE
|
||||
|
||||
if(3)
|
||||
visible_message("<span class='danger'>[assailant] tugs [target]'s [hairchatname]!</span>")
|
||||
target.apply_damage(10, PAIN)
|
||||
target.apply_damage(10, DAMAGE_PAIN)
|
||||
src.state = GRAB_PASSIVE
|
||||
|
||||
if(4)
|
||||
visible_message("<span class='danger'>[assailant] violently tugs [target]'s [hairchatname], ripping out a clump!</span>")
|
||||
target.apply_damage(15, PAIN)
|
||||
target.apply_damage(15, DAMAGE_PAIN)
|
||||
src.state = GRAB_PASSIVE
|
||||
|
||||
if(5)
|
||||
@@ -189,7 +189,7 @@
|
||||
src.state = GRAB_PASSIVE
|
||||
else
|
||||
visible_message("<span class='danger'>[assailant] violently tugs [target]'s [hairchatname]!</span>")
|
||||
target.apply_damage(10, PAIN)
|
||||
target.apply_damage(10, DAMAGE_PAIN)
|
||||
src.state = GRAB_AGGRESSIVE
|
||||
|
||||
if(6)
|
||||
@@ -199,5 +199,5 @@
|
||||
playsound(target.loc, 'sound/misc/slip.ogg', 50, 1, -3)
|
||||
else
|
||||
visible_message("<span class='danger'>[assailant] violently tugs [target]'s [hairchatname]!</span>")
|
||||
target.apply_damage(15, PAIN)
|
||||
target.apply_damage(15, DAMAGE_PAIN)
|
||||
src.state = GRAB_AGGRESSIVE
|
||||
|
||||
@@ -52,9 +52,9 @@
|
||||
// "Brute" damage mostly damages the casing.
|
||||
/obj/item/modular_computer/bullet_act(var/obj/item/projectile/Proj)
|
||||
switch(Proj.damage_type)
|
||||
if(BRUTE)
|
||||
if(DAMAGE_BRUTE)
|
||||
take_damage(Proj.damage, Proj.damage / 2)
|
||||
if(PAIN)
|
||||
if(DAMAGE_PAIN)
|
||||
take_damage(Proj.damage, Proj.damage / 3, 0)
|
||||
if(BURN)
|
||||
if(DAMAGE_BURN)
|
||||
take_damage(Proj.damage, Proj.damage / 1.5)
|
||||
|
||||
@@ -465,7 +465,7 @@
|
||||
|
||||
var/damage = ((60 + z_velocity) + rand(-20,20)) * damage_mod
|
||||
|
||||
apply_damage(damage, BRUTE)
|
||||
apply_damage(damage, DAMAGE_BRUTE)
|
||||
|
||||
// The only piece of duplicate code. I was so close. Soooo close. :ree:
|
||||
if(!isSynthetic())
|
||||
@@ -528,15 +528,15 @@
|
||||
var/groin_damage = rand(0,damage/4)
|
||||
|
||||
|
||||
apply_damage(left_damage, BRUTE, BP_L_LEG)
|
||||
apply_damage(right_damage, BRUTE, BP_R_LEG)
|
||||
apply_damage(left_damage, DAMAGE_BRUTE, BP_L_LEG)
|
||||
apply_damage(right_damage, DAMAGE_BRUTE, BP_R_LEG)
|
||||
|
||||
if(prob(50))
|
||||
apply_damage(leftf_damage, BRUTE, BP_R_FOOT)
|
||||
apply_damage(leftf_damage, DAMAGE_BRUTE, BP_R_FOOT)
|
||||
if(prob(50))
|
||||
apply_damage(leftf_damage, BRUTE, BP_L_FOOT)
|
||||
apply_damage(leftf_damage, DAMAGE_BRUTE, BP_L_FOOT)
|
||||
if(prob(50))
|
||||
apply_damage(groin_damage, BRUTE, BP_GROIN)
|
||||
apply_damage(groin_damage, DAMAGE_BRUTE, BP_GROIN)
|
||||
|
||||
visible_message(SPAN_WARNING("\The [src] falls and lands directly on their legs!"),
|
||||
SPAN_DANGER("You land on your feet, and the impact brings you to your knees."))
|
||||
@@ -571,13 +571,13 @@
|
||||
var/lefth_damage = rand(0,damage/4)
|
||||
var/righth_damage = rand(0,damage/4)
|
||||
|
||||
apply_damage(left_damage, BRUTE, BP_L_ARM)
|
||||
apply_damage(right_damage, BRUTE, BP_R_ARM)
|
||||
apply_damage(left_damage, DAMAGE_BRUTE, BP_L_ARM)
|
||||
apply_damage(right_damage, DAMAGE_BRUTE, BP_R_ARM)
|
||||
|
||||
if(prob(50))
|
||||
apply_damage(lefth_damage, BRUTE, BP_R_HAND)
|
||||
apply_damage(lefth_damage, DAMAGE_BRUTE, BP_R_HAND)
|
||||
if(prob(50))
|
||||
apply_damage(righth_damage, BRUTE, BP_L_HAND)
|
||||
apply_damage(righth_damage, DAMAGE_BRUTE, BP_L_HAND)
|
||||
|
||||
limb_damage = left_damage + right_damage + lefth_damage + righth_damage
|
||||
|
||||
@@ -606,7 +606,7 @@
|
||||
r_arm.dislocate(TRUE)
|
||||
|
||||
else if(prob(30) && combat_roll >= 1)//landed on their head
|
||||
apply_damage(limb_damage, BRUTE, BP_HEAD)
|
||||
apply_damage(limb_damage, DAMAGE_BRUTE, BP_HEAD)
|
||||
visible_message("<span class='warning'>\The [src] falls and lands on their face!</span>",
|
||||
"<span class='danger'>With a loud thud, you land on your head. Hard.</span>", "You hear a thud!")
|
||||
|
||||
@@ -622,7 +622,7 @@
|
||||
"With a loud thud, you land on \the [loc]!", "You hear a thud!")
|
||||
|
||||
if(!limb_damage)
|
||||
apply_damage(damage, BRUTE, BP_CHEST)
|
||||
apply_damage(damage, DAMAGE_BRUTE, BP_CHEST)
|
||||
|
||||
Weaken(rand(damage/4, damage/2))
|
||||
|
||||
@@ -727,14 +727,14 @@
|
||||
if (ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
var/cranial_damage = rand(0,damage/2)
|
||||
H.apply_damage(cranial_damage, BRUTE, BP_HEAD, armor_pen = cranial_damage + armor_penetration)
|
||||
H.apply_damage(cranial_damage, DAMAGE_BRUTE, BP_HEAD, armor_pen = cranial_damage + armor_penetration)
|
||||
var/new_damage = damage - cranial_damage
|
||||
H.apply_damage(new_damage, BRUTE, BP_CHEST, armor_pen = new_damage + armor_penetration)
|
||||
H.apply_damage(new_damage, DAMAGE_BRUTE, BP_CHEST, armor_pen = new_damage + armor_penetration)
|
||||
|
||||
if (damage >= THROWNOBJ_KNOCKBACK_DIVISOR)
|
||||
H.Weaken(rand(damage / 4, damage / 2))
|
||||
else
|
||||
L.apply_damage(damage, BRUTE)
|
||||
L.apply_damage(damage, DAMAGE_BRUTE)
|
||||
|
||||
L.visible_message(SPAN_DANGER("\The [L] had \the [src] fall onto [src.get_pronoun("him")]!"),
|
||||
SPAN_DANGER("You had \the [src] fall onto you and strike you!"))
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
pulse_mod++
|
||||
|
||||
var/oxy = owner.get_blood_oxygenation()
|
||||
if(oxy < BLOOD_VOLUME_OKAY) //brain wants us to get MOAR OXY
|
||||
if(oxy < BLOOD_VOLUME_OKAY) //brain wants us to get moar oxygen
|
||||
pulse_mod++
|
||||
if(oxy < BLOOD_VOLUME_BAD) //MOAR
|
||||
pulse_mod++
|
||||
|
||||
@@ -297,24 +297,24 @@
|
||||
|
||||
if(breath.temperature >= owner.species.heat_level_1)
|
||||
if(breath.temperature < owner.species.heat_level_2)
|
||||
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD, used_weapon = "Excessive Heat")
|
||||
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Heat")
|
||||
owner.fire_alert = max(owner.fire_alert, 2)
|
||||
else if(breath.temperature < species.heat_level_3)
|
||||
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD, used_weapon = "Excessive Heat")
|
||||
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Heat")
|
||||
owner.fire_alert = max(owner.fire_alert, 2)
|
||||
else
|
||||
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, BP_HEAD, used_weapon = "Excessive Heat")
|
||||
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Heat")
|
||||
owner.fire_alert = max(owner.fire_alert, 2)
|
||||
|
||||
else if(breath.temperature <= owner.species.cold_level_1)
|
||||
if(breath.temperature > species.cold_level_2)
|
||||
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD, used_weapon = "Excessive Cold")
|
||||
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_1, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Cold")
|
||||
owner.fire_alert = max(owner.fire_alert, 1)
|
||||
else if(breath.temperature > species.cold_level_3)
|
||||
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD, used_weapon = "Excessive Cold")
|
||||
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_2, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Cold")
|
||||
owner.fire_alert = max(owner.fire_alert, 1)
|
||||
else
|
||||
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, BP_HEAD, used_weapon = "Excessive Cold")
|
||||
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_3, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Cold")
|
||||
owner.fire_alert = max(owner.fire_alert, 1)
|
||||
|
||||
//breathing in hot/cold air also heats/cools you a bit
|
||||
|
||||
@@ -281,9 +281,9 @@
|
||||
brute *= brute_mod
|
||||
burn *= burn_mod
|
||||
|
||||
var/laser = (damage_flags & DAM_LASER)
|
||||
var/sharp = (damage_flags & DAM_SHARP)
|
||||
var/edge = (damage_flags & DAM_EDGE)
|
||||
var/laser = (damage_flags & DAMAGE_FLAG_LASER)
|
||||
var/sharp = (damage_flags & DAMAGE_FLAG_SHARP)
|
||||
var/edge = (damage_flags & DAMAGE_FLAG_EDGE)
|
||||
var/blunt = !!(brute && !sharp && !edge)
|
||||
|
||||
if(status & ORGAN_BROKEN && prob(40) && brute)
|
||||
@@ -329,7 +329,7 @@
|
||||
if(laser)
|
||||
createwound(LASER, burn)
|
||||
else
|
||||
createwound(BURN, burn)
|
||||
createwound(DAMAGE_BURN, burn)
|
||||
|
||||
add_pain(0.6 * burn + 0.4 * brute)
|
||||
|
||||
@@ -352,8 +352,8 @@
|
||||
|
||||
var/damage_amt = brute
|
||||
var/cur_damage = brute_dam
|
||||
var/sharp = (damage_flags & DAM_SHARP)
|
||||
var/laser = (damage_flags & DAM_LASER)
|
||||
var/sharp = (damage_flags & DAMAGE_FLAG_SHARP)
|
||||
var/laser = (damage_flags & DAMAGE_FLAG_LASER)
|
||||
|
||||
if(BP_IS_ROBOTIC(src) || laser)
|
||||
damage_amt += burn
|
||||
@@ -411,17 +411,17 @@
|
||||
dam_flags = W.damage_flags()
|
||||
if(isprojectile(W))
|
||||
var/obj/item/projectile/P = W
|
||||
if(dam_flags & DAM_BULLET)
|
||||
if(dam_flags & DAMAGE_FLAG_BULLET)
|
||||
blunt_eligible = TRUE
|
||||
maim_bonus += P.maim_rate
|
||||
if(W.w_class >= w_class && (dam_flags & DAM_EDGE))
|
||||
if(W.w_class >= w_class && (dam_flags & DAMAGE_FLAG_EDGE))
|
||||
edge_eligible = TRUE
|
||||
|
||||
if(!blunt_eligible && edge_eligible && (brute >= max_damage / (DROPLIMB_THRESHOLD_EDGE + maim_bonus)))
|
||||
droplimb(0, DROPLIMB_EDGE)
|
||||
else if(burn >= max_damage / ((dam_flags & DAM_LASER ? DROPLIMB_THRESHOLD_DESTROY_PROJECTILE : DROPLIMB_THRESHOLD_DESTROY) + maim_bonus))
|
||||
else if(burn >= max_damage / ((dam_flags & DAMAGE_FLAG_LASER ? DROPLIMB_THRESHOLD_DESTROY_PROJECTILE : DROPLIMB_THRESHOLD_DESTROY) + maim_bonus))
|
||||
droplimb(0, DROPLIMB_BURN)
|
||||
else if(blunt_eligible && brute >= max_damage / ((dam_flags & DAM_BULLET ? DROPLIMB_THRESHOLD_DESTROY_PROJECTILE : DROPLIMB_THRESHOLD_DESTROY) + maim_bonus))
|
||||
else if(blunt_eligible && brute >= max_damage / ((dam_flags & DAMAGE_FLAG_BULLET ? DROPLIMB_THRESHOLD_DESTROY_PROJECTILE : DROPLIMB_THRESHOLD_DESTROY) + maim_bonus))
|
||||
droplimb(0, DROPLIMB_BLUNT)
|
||||
else if(brute >= max_damage / (DROPLIMB_THRESHOLD_TEAROFF + maim_bonus))
|
||||
droplimb(0, DROPLIMB_EDGE)
|
||||
@@ -436,7 +436,7 @@
|
||||
break
|
||||
|
||||
// heal brute damage
|
||||
if(W.damage_type == BURN)
|
||||
if(W.damage_type == DAMAGE_BURN)
|
||||
burn = W.heal_damage(burn)
|
||||
else
|
||||
brute = W.heal_damage(brute)
|
||||
@@ -489,7 +489,7 @@ This function completely restores a damaged organ to perfect condition.
|
||||
var/local_damage = brute_dam + burn_dam + damage
|
||||
|
||||
if(damage > (min_broken_damage / 2) && local_damage > min_broken_damage && !(status & ORGAN_ROBOT))
|
||||
if(!(type in list(BURN, LASER)))
|
||||
if(!(type in list(DAMAGE_BURN, LASER)))
|
||||
if(prob(damage) && sever_artery())
|
||||
owner.custom_pain("You feel something rip in your [name]!", 25)
|
||||
|
||||
@@ -501,10 +501,10 @@ This function completely restores a damaged organ to perfect condition.
|
||||
tendon.damage(new_brute)
|
||||
|
||||
//Burn damage can cause fluid loss due to blistering and cook-off
|
||||
if((type in list(BURN, LASER)) && (damage > 5 || damage + burn_dam >= 15) && !BP_IS_ROBOTIC(src))
|
||||
if((type in list(DAMAGE_BURN, LASER)) && (damage > 5 || damage + burn_dam >= 15) && !BP_IS_ROBOTIC(src))
|
||||
var/fluid_loss_severity
|
||||
switch(type)
|
||||
if(BURN)
|
||||
if(DAMAGE_BURN)
|
||||
fluid_loss_severity = FLUIDLOSS_WIDE_BURN
|
||||
if(LASER)
|
||||
fluid_loss_severity = FLUIDLOSS_CONC_BURN
|
||||
@@ -832,7 +832,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
|
||||
//update damage counts
|
||||
for(var/datum/wound/W in wounds)
|
||||
if(W.damage_type == BURN)
|
||||
if(W.damage_type == DAMAGE_BURN)
|
||||
burn_dam += W.damage
|
||||
else
|
||||
brute_dam += W.damage
|
||||
@@ -1336,7 +1336,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
wound_descriptors["an incision"] = 1
|
||||
for(var/datum/wound/W in wounds)
|
||||
var/this_wound_desc = W.desc
|
||||
if(W.damage_type == BURN && W.salved) this_wound_desc = "salved [this_wound_desc]"
|
||||
if(W.damage_type == DAMAGE_BURN && W.salved) this_wound_desc = "salved [this_wound_desc]"
|
||||
if(W.bleeding()) this_wound_desc = "bleeding [this_wound_desc]"
|
||||
if(W.bandaged == 1)
|
||||
this_wound_desc = "bandaged [this_wound_desc]"
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
parent_organ = BP_GROIN
|
||||
|
||||
/obj/item/organ/internal/augment/calf_override/proc/do_run_act()
|
||||
owner.apply_damage(1, BRUTE, BP_GROIN, armor_pen = 100)
|
||||
owner.apply_damage(1, DAMAGE_BRUTE, BP_GROIN, armor_pen = 100)
|
||||
|
||||
/obj/item/organ/internal/augment/protein_valve
|
||||
name = "protein breakdown valve"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
var/list/stages
|
||||
// maximum stage at which bleeding should still happen. Beyond this stage bleeding is prevented.
|
||||
var/max_bleeding_stage = 0
|
||||
// one of CUT, BRUISE, PIERCE , BURN
|
||||
// one of CUT, BRUISE, PIERCE, BURN
|
||||
var/damage_type = CUT
|
||||
// whether this wound needs a bandage/salve to heal at all
|
||||
// the maximum amount of damage that this wound can have and still autoheal
|
||||
@@ -92,7 +92,7 @@
|
||||
switch(damage_type)
|
||||
if(BRUISE, CUT, PIERCE)
|
||||
return bandaged
|
||||
if(BURN)
|
||||
if(DAMAGE_BURN)
|
||||
return salved
|
||||
|
||||
// Checks whether other other can be merged into src.
|
||||
@@ -133,7 +133,7 @@
|
||||
switch (damage_type)
|
||||
if (BRUISE)
|
||||
return prob(dam_coef*5)
|
||||
if (BURN)
|
||||
if (DAMAGE_BURN)
|
||||
return prob(dam_coef*10)
|
||||
if (CUT)
|
||||
return prob(dam_coef*20)
|
||||
@@ -245,7 +245,7 @@
|
||||
|
||||
if(BRUISE)
|
||||
return /datum/wound/bruise
|
||||
if(BURN, LASER)
|
||||
if(DAMAGE_BURN, LASER)
|
||||
switch(damage)
|
||||
if(50 to INFINITY)
|
||||
return /datum/wound/burn/carbonised
|
||||
@@ -334,7 +334,7 @@ datum/wound/puncture/massive
|
||||
/** BURNS **/
|
||||
|
||||
/datum/wound/burn
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
max_bleeding_stage = 0
|
||||
|
||||
/datum/wound/burn/bleeding()
|
||||
@@ -373,7 +373,7 @@ datum/wound/puncture/massive
|
||||
"scarred stump" = 0
|
||||
)
|
||||
if(DROPLIMB_BURN)
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
stages = list(
|
||||
"ripped charred stump" = damage_amt*1.3,
|
||||
"charred stump" = damage_amt,
|
||||
|
||||
@@ -546,7 +546,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
|
||||
if(!do_mob(user, M, 200))
|
||||
user.visible_message(SPAN_DANGER("[user]'s hand slips and tears open the wound on [M]'s [affecting.name]!"), \
|
||||
SPAN_DANGER("<font size=2>The wound on your [affecting.name] is torn open!</font>"))
|
||||
M.apply_damage(rand(1,10), BRUTE)
|
||||
M.apply_damage(rand(1,10), DAMAGE_BRUTE)
|
||||
break
|
||||
user.visible_message(SPAN_NOTICE("\The [user] barely manages to stitch \a [W.desc] on [M]'s [affecting.name]."), \
|
||||
SPAN_NOTICE("You barely manage to stitch \a [W.desc] on [M]'s [affecting.name].") )
|
||||
|
||||
@@ -418,7 +418,7 @@
|
||||
|
||||
/obj/machinery/gravity_generator/main/proc/pulse_radiation(var/amount = 20)
|
||||
for(var/mob/living/L in view(7, src))
|
||||
L.apply_damage(amount, IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
L.apply_damage(amount, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
|
||||
// Shake everyone on the z level to let them know that gravity was enagaged/disenagaged.
|
||||
/obj/machinery/gravity_generator/main/proc/shake_everyone()
|
||||
|
||||
@@ -418,18 +418,13 @@
|
||||
/obj/machinery/power/portgen/basic/advanced/UseFuel()
|
||||
//produces a tiny amount of radiation when in use
|
||||
if (prob(2 * power_output))
|
||||
for (var/mob/living/L in range(src, 5))
|
||||
L.apply_damage(1, IRRADIATE, damage_flags = DAM_DISPERSED) //should amount to ~5 rads per minute at max safe power
|
||||
SSradiation.radiate(src, 4)
|
||||
..()
|
||||
|
||||
/obj/machinery/power/portgen/basic/advanced/explode()
|
||||
//a nice burst of radiation
|
||||
var/rads = 50 + (sheets + sheet_left)*1.5
|
||||
for (var/mob/living/L in range(src, 10))
|
||||
//should really fall with the square of the distance, but that makes the rads value drop too fast
|
||||
//I dunno, maybe physics works different when you live in 2D -- SM radiation also works like this, apparently
|
||||
L.apply_damage(max(20, round(rads/get_dist(L,src))), IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
|
||||
SSradiation.radiate(src, max(40, rads))
|
||||
explosion(loc, 3, 3, 5, 3)
|
||||
qdel(src)
|
||||
|
||||
@@ -489,7 +484,7 @@
|
||||
for (var/mob/living/L in range(src, 10))
|
||||
//should really fall with the square of the distance, but that makes the rads value drop too fast
|
||||
//I dunno, maybe physics works different when you live in 2D -- SM radiation also works like this, apparently
|
||||
L.apply_damage(max(20, round(rads/get_dist(L,src))), IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
L.apply_damage(max(20, round(rads/get_dist(L,src))), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
|
||||
explosion(loc, 3, 6, 12, 16, 1)
|
||||
qdel(src)
|
||||
@@ -512,8 +507,7 @@
|
||||
temperature_gain = initial(temperature_gain)
|
||||
..()
|
||||
if (prob(2 * power_output))
|
||||
for (var/mob/living/L in range(src, 5))
|
||||
L.apply_damage(1, IRRADIATE, damage_flags = DAM_DISPERSED) //should amount to ~5 rads per minute at max safe power
|
||||
SSradiation.radiate(src, 6)
|
||||
..()
|
||||
|
||||
/obj/machinery/power/portgen/basic/fusion/update_icon()
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
add_avail(power_gen)
|
||||
if(panel_open && irradiate)
|
||||
for (var/mob/living/L in range(2, src))
|
||||
L.apply_damage(10, IRRADIATE, damage_flags = DAM_DISPERSED) // Weak but noticeable.
|
||||
L.apply_damage(10, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED) // Weak but noticeable.
|
||||
|
||||
/obj/machinery/power/rtg/update_icon()
|
||||
icon_state = panel_open ? "[initial(icon_state)]-open" : initial(icon_state)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
if(prob(current_size*5) && hand.w_class >= ((11-current_size)/2) && u_equip(hand))
|
||||
step_towards(hand, src)
|
||||
to_chat(src, "<span class = 'warning'>The [S] pulls \the [hand] from your grip!</span>")
|
||||
apply_damage(current_size * 3, IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
apply_damage(current_size * 3, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
if(shoes)
|
||||
if(shoes.item_flags & NOSLIP) return 0
|
||||
..()
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
/obj/effect/accelerated_particle/proc/toxmob(var/mob/living/M)
|
||||
var/radiation = (energy*2)
|
||||
M.apply_damage((radiation*3), IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
M.apply_damage((radiation*3), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
M.updatehealth()
|
||||
return
|
||||
|
||||
|
||||
@@ -431,16 +431,10 @@
|
||||
|
||||
|
||||
/obj/singularity/proc/toxmob()
|
||||
var/toxrange = 10
|
||||
var/radiation = 15
|
||||
var/radiationmin = 3
|
||||
if (src.energy > 200)
|
||||
radiation = round(((src.energy-150)/50)*5,1)
|
||||
radiationmin = round((radiation/5),1)//
|
||||
for(var/mob/living/M in view(toxrange, src.loc))
|
||||
if(M.status_flags & GODMODE)
|
||||
continue
|
||||
M.apply_damage(rand(radiationmin,radiation), IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
SSradiation.radiate(src, radiation)
|
||||
|
||||
/obj/singularity/proc/mezzer()
|
||||
for(var/mob/living/carbon/M in oviewers(8, src))
|
||||
@@ -470,13 +464,13 @@
|
||||
/obj/singularity/proc/smwave()
|
||||
for(var/mob/living/M in view(10, src.loc))
|
||||
if(prob(67))
|
||||
M.apply_damage(rand(energy), IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
to_chat(M, "<span class=\"warning\">You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.</span>")
|
||||
to_chat(M, "<span class=\"notice\">Miraculously, it fails to kill you.</span>")
|
||||
else
|
||||
to_chat(M, "<span class=\"danger\">You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.</span>")
|
||||
to_chat(M, "<span class=\"danger\">You don't even have a moment to react as you are reduced to ashes by the intense radiation.</span>")
|
||||
M.dust()
|
||||
SSradiation.radiate(src, rand(energy))
|
||||
return
|
||||
|
||||
/obj/singularity/proc/on_capture()
|
||||
|
||||
@@ -577,11 +577,11 @@
|
||||
user.show_message(SPAN_WARNING("You feel rather silly, trying to commit suicide with a toy."))
|
||||
mouthshoot = FALSE
|
||||
return
|
||||
else if(in_chamber.damage_type == PAIN)
|
||||
user.apply_damage(in_chamber.damage * 2, PAIN, BP_HEAD)
|
||||
else if(in_chamber.damage_type == DAMAGE_PAIN)
|
||||
user.apply_damage(in_chamber.damage * 2, DAMAGE_PAIN, BP_HEAD)
|
||||
else
|
||||
log_and_message_admins("[key_name(user)] commited suicide using \a [src].")
|
||||
user.apply_damage(in_chamber.damage * 20, in_chamber.damage_type, BP_HEAD, used_weapon = "Point blank shot in the mouth with \a [in_chamber]", damage_flags = DAM_SHARP)
|
||||
user.apply_damage(in_chamber.damage * 20, in_chamber.damage_type, BP_HEAD, used_weapon = "Point blank shot in the mouth with \a [in_chamber]", damage_flags = DAMAGE_FLAG_SHARP)
|
||||
user.death()
|
||||
|
||||
handle_post_fire(user, user, FALSE, FALSE, FALSE)
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
icon = 'icons/obj/machinery/particle_accelerator2.dmi'
|
||||
icon_state = "particle"
|
||||
damage = 60
|
||||
damage_type = BRUTE
|
||||
damage_type = DAMAGE_BRUTE
|
||||
check_armor = "bullet"
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
name = "plasma arc"
|
||||
icon_state = "omnilaser"
|
||||
damage = 20
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
check_armor = "laser"
|
||||
range = 5
|
||||
pass_flags = PASSTABLE|PASSRAILING
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
to_chat(M, "<span class='warning'>Your gun feels pleasantly warm for a moment.</span>")
|
||||
else
|
||||
to_chat(M, "<span class='warning'>You feel a warm sensation.</span>")
|
||||
M.apply_effect(rand(3,120), IRRADIATE)
|
||||
SSradiation.radiate(src, rand(3, 50))
|
||||
return
|
||||
|
||||
/obj/item/gun/energy/gun/nuclear/medium_fail(var/mob/user)
|
||||
@@ -85,7 +85,7 @@
|
||||
to_chat(user, "<span class='danger'>Your gun's reactor overloads!</span>")
|
||||
for (var/mob/living/M in range(rand(1,4),src))
|
||||
to_chat(M, "<span class='warning'>You feel a wave of heat wash over you.</span>")
|
||||
M.apply_effect(300, IRRADIATE)
|
||||
SSradiation.radiate(src, rand(3, 80))
|
||||
crit_fail = 1 //break the gun so it stops recharging
|
||||
self_recharge = FALSE
|
||||
update_icon()
|
||||
|
||||
@@ -48,20 +48,20 @@
|
||||
for (var/mob/living/M in range(0,src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it
|
||||
if (M != user)
|
||||
to_chat(M, "<span class='warning'>You feel a warm sensation.</span>")
|
||||
M.apply_effect(rand(1,10)*(prototype.criticality+1), IRRADIATE)
|
||||
M.apply_effect(rand(1,10)*(prototype.criticality+1), DAMAGE_RADIATION)
|
||||
return
|
||||
|
||||
/obj/item/laser_components/capacitor/nuclear/medium_fail(var/mob/user, var/obj/item/gun/energy/laser/prototype/prototype)
|
||||
for (var/mob/living/M in range(round((prototype.criticality+1)),src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it
|
||||
if (M != user)
|
||||
to_chat(M, "<span class='warning'>You feel a warm sensation.</span>")
|
||||
M.apply_effect(rand(1,40)*(prototype.criticality+1), IRRADIATE)
|
||||
M.apply_effect(rand(1,40)*(prototype.criticality+1), DAMAGE_RADIATION)
|
||||
return
|
||||
|
||||
/obj/item/laser_components/capacitor/nuclear/critical_fail(var/mob/user, var/obj/item/gun/energy/laser/prototype/prototype)
|
||||
for (var/mob/living/M in range(rand(2,6)*(prototype.criticality+1),src))
|
||||
to_chat(M, "<span class='warning'>You feel a wave of heat wash over you.</span>")
|
||||
M.apply_effect(300*(prototype.criticality+1), IRRADIATE)
|
||||
M.apply_effect(300*(prototype.criticality+1), DAMAGE_RADIATION)
|
||||
..()
|
||||
|
||||
/obj/item/laser_components/capacitor/teranium
|
||||
@@ -97,7 +97,7 @@
|
||||
for (var/mob/living/M in range(0,src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it
|
||||
if (M != user)
|
||||
to_chat(M, "<span class='warning'>You feel a warm sensation.</span>")
|
||||
M.apply_effect(rand(1,10)*(prototype.criticality+1), IRRADIATE)
|
||||
M.apply_effect(rand(1,10)*(prototype.criticality+1), DAMAGE_RADIATION)
|
||||
return
|
||||
|
||||
/obj/item/laser_components/capacitor/phoron/medium_fail(var/mob/user, var/obj/item/gun/energy/laser/prototype/prototype)
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
|
||||
//Effects
|
||||
var/damage = 10
|
||||
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE, PAIN are the only things that should be in here
|
||||
var/damage_flags = DAM_BULLET
|
||||
var/damage_type = DAMAGE_BRUTE //DAMAGE_BRUTE, DAMAGE_BURN, DAMAGE_TOXIN, DAMAGE_OXY, DAMAGE_CLONE, DAMAGE_PAIN are the only things that should be in here
|
||||
var/damage_flags = DAMAGE_FLAG_BULLET
|
||||
var/nodamage = FALSE //Determines if the projectile will skip any damage inflictions
|
||||
var/check_armor = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid
|
||||
var/list/impact_sounds //for different categories, IMPACT_MEAT etc
|
||||
@@ -114,7 +114,7 @@
|
||||
if(isanimal(target))
|
||||
return FALSE
|
||||
var/mob/living/L = target
|
||||
if(damage_type == BRUTE && damage > 5) //weak hits shouldn't make you gush blood
|
||||
if(damage_type == DAMAGE_BRUTE && damage > 5) //weak hits shouldn't make you gush blood
|
||||
var/splatter_color = "#A10808"
|
||||
var/mob/living/carbon/human/H = target
|
||||
if (istype(H) && H.species && H.species.blood_color)
|
||||
@@ -126,7 +126,7 @@
|
||||
|
||||
L.apply_effects(0, weaken, paralyze, 0, stutter, eyeblur, drowsy, 0, incinerate, blocked)
|
||||
L.stun_effect_act(stun, agony, def_zone, src, damage_flags)
|
||||
L.apply_damage(irradiate, IRRADIATE, damage_flags = DAM_DISPERSED) //radiation protection is handled separately from other armor types.
|
||||
L.apply_damage(irradiate, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED) //radiation protection is handled separately from other armor types.
|
||||
return 1
|
||||
|
||||
//called when the projectile stops flying because it collided with something
|
||||
@@ -136,7 +136,7 @@
|
||||
//Checks if the projectile is eligible for embedding. Not that it necessarily will.
|
||||
/obj/item/projectile/proc/can_embed()
|
||||
//embed must be enabled and damage type must be brute
|
||||
if(!embed || damage_type != BRUTE)
|
||||
if(!embed || damage_type != DAMAGE_BRUTE)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
return SP
|
||||
|
||||
/obj/item/projectile/proc/get_structure_damage()
|
||||
if(damage_type == BRUTE || damage_type == BURN)
|
||||
if(damage_type == DAMAGE_BRUTE || damage_type == DAMAGE_BURN)
|
||||
return damage * anti_materiel_potential
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "bolt of animation"
|
||||
icon_state = "ice_1"
|
||||
damage = 0
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
nodamage = 1
|
||||
check_armor = "energy"
|
||||
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
ping_effect = "ping_s"
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSRAILING
|
||||
damage = 30
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
impact_sounds = list(BULLET_IMPACT_MEAT = SOUNDS_LASER_MEAT, BULLET_IMPACT_METAL = SOUNDS_LASER_METAL)
|
||||
check_armor = "laser"
|
||||
eyeblur = 4
|
||||
damage_flags = DAM_LASER
|
||||
damage_flags = DAMAGE_FLAG_LASER
|
||||
var/frequency = 1
|
||||
hitscan = 1
|
||||
invisibility = 101 //beam projectiles are invisible as they are rendered by the effect engine
|
||||
@@ -20,7 +20,7 @@
|
||||
/obj/item/projectile/beam/practice
|
||||
name = "laser"
|
||||
damage = 5
|
||||
damage_type = PAIN
|
||||
damage_type = DAMAGE_PAIN
|
||||
eyeblur = 0
|
||||
|
||||
/obj/item/projectile/beam/pistol
|
||||
@@ -143,7 +143,7 @@
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSRAILING
|
||||
damage = 0
|
||||
no_attack_log = 1
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
check_armor = "laser"
|
||||
var/laser_tag_color = "red"
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
sharp = FALSE
|
||||
eyeblur = 1
|
||||
agony = 45
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/stun
|
||||
tracer_type = /obj/effect/projectile/tracer/stun
|
||||
@@ -219,7 +219,7 @@
|
||||
name = "electrical arc"
|
||||
icon_state = "stun"
|
||||
damage = 1
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/stun
|
||||
tracer_type = /obj/effect/projectile/tracer/stun
|
||||
@@ -268,7 +268,7 @@
|
||||
name = "diffuse electrical arc"
|
||||
|
||||
nodamage = FALSE
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
damage = 15
|
||||
agony = 30
|
||||
|
||||
@@ -414,7 +414,7 @@
|
||||
name = "energy net projection"
|
||||
icon_state = "xray"
|
||||
nodamage = 1
|
||||
damage_type = PAIN
|
||||
damage_type = DAMAGE_PAIN
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/xray
|
||||
tracer_type = /obj/effect/projectile/tracer/xray
|
||||
@@ -447,7 +447,7 @@
|
||||
name = "tesla bolt"
|
||||
icon_state = "lightning"
|
||||
damage = 10
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSRAILING
|
||||
range = 40
|
||||
eyeblur = 0
|
||||
@@ -475,7 +475,7 @@
|
||||
icon_state = "bluelaser"
|
||||
pass_flags = PASSTABLE | PASSRAILING
|
||||
damage = 15
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
check_armor = "energy"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser/blue
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "bullet"
|
||||
icon_state = "bullet"
|
||||
damage = 60
|
||||
damage_type = BRUTE
|
||||
damage_type = DAMAGE_BRUTE
|
||||
impact_sounds = list(BULLET_IMPACT_MEAT = SOUNDS_BULLET_MEAT, BULLET_IMPACT_METAL = SOUNDS_BULLET_METAL)
|
||||
nodamage = FALSE
|
||||
check_armor = "bullet"
|
||||
@@ -277,7 +277,7 @@
|
||||
weaken = 0
|
||||
drowsy = 0
|
||||
eyeblur = 0
|
||||
damage_type = BRUTE
|
||||
damage_type = DAMAGE_BRUTE
|
||||
speed = 0.3
|
||||
|
||||
/obj/item/projectile/bullet/rifle/tranq/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
|
||||
@@ -301,7 +301,7 @@
|
||||
|
||||
if(isanimal(target))
|
||||
target.visible_message("<b>[target]</b> twitches, foaming at the mouth.")
|
||||
L.apply_damage(35, TOX) //temporary until simple_animal paralysis actually works.
|
||||
L.apply_damage(35, DAMAGE_TOXIN) //temporary until simple_animal paralysis actually works.
|
||||
..()
|
||||
|
||||
/* Miscellaneous */
|
||||
@@ -328,7 +328,7 @@
|
||||
|
||||
/obj/item/projectile/bullet/pistol/cap
|
||||
name = "cap"
|
||||
damage_type = PAIN
|
||||
damage_type = DAMAGE_PAIN
|
||||
damage = 0
|
||||
nodamage = 1
|
||||
embed = 0
|
||||
@@ -343,7 +343,7 @@
|
||||
icon = 'icons/obj/terminator.dmi'
|
||||
icon_state = "flechette_bullet"
|
||||
damage = 40
|
||||
damage_type = BRUTE
|
||||
damage_type = DAMAGE_BRUTE
|
||||
check_armor = "bullet"
|
||||
embed = 1
|
||||
sharp = 1
|
||||
@@ -414,7 +414,7 @@
|
||||
var/turf/T = get_turf(mob)
|
||||
if(T && (loc.z == T.z))
|
||||
if(ishuman(mob))
|
||||
mob.apply_damage(250, IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
mob.apply_damage(250, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
new /obj/effect/temp_visual/nuke(A.loc)
|
||||
explosion(A,2,5,9)
|
||||
..()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "bolt of change"
|
||||
icon_state = "ice_1"
|
||||
damage = 0
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
nodamage = 1
|
||||
check_armor = "energy"
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "energy"
|
||||
icon_state = "spark"
|
||||
damage = 0
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
check_armor = "energy"
|
||||
|
||||
//releases a burst of light on impact or after travelling a distance
|
||||
@@ -47,7 +47,7 @@
|
||||
name = "electrode"
|
||||
icon_state = "spark"
|
||||
damage = 2 //Flavor.
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
agony = 40
|
||||
eyeblur = 1
|
||||
//Damage will be handled on the MOB side, to prevent window shattering.
|
||||
@@ -61,35 +61,35 @@
|
||||
name = "decloner beam"
|
||||
icon_state = "declone"
|
||||
damage = 20
|
||||
damage_type = CLONE
|
||||
damage_type = DAMAGE_CLONE
|
||||
irradiate = 40
|
||||
|
||||
/obj/item/projectile/energy/dart
|
||||
name = "dart"
|
||||
icon_state = "toxin"
|
||||
damage = 5
|
||||
damage_type = TOX
|
||||
damage_type = DAMAGE_TOXIN
|
||||
weaken = 5
|
||||
|
||||
/obj/item/projectile/energy/bolt
|
||||
name = "bolt"
|
||||
icon_state = "cbbolt"
|
||||
damage = 1
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
agony = 45
|
||||
stutter = 10
|
||||
|
||||
/obj/item/projectile/energy/bolt/large
|
||||
name = "largebolt"
|
||||
damage = 2
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
agony = 60
|
||||
|
||||
/obj/item/projectile/energy/neurotoxin
|
||||
name = "neuro"
|
||||
icon_state = "neurotoxin"
|
||||
damage = 5
|
||||
damage_type = TOX
|
||||
damage_type = DAMAGE_TOXIN
|
||||
weaken = 5
|
||||
|
||||
/obj/item/projectile/energy/phoron
|
||||
@@ -103,7 +103,7 @@
|
||||
icon_state = "bfg"
|
||||
check_armor = "bomb"
|
||||
damage = 60
|
||||
damage_type = BRUTE
|
||||
damage_type = DAMAGE_BRUTE
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSRAILING
|
||||
range = 100
|
||||
embed = 0
|
||||
@@ -131,7 +131,7 @@
|
||||
if(M.stat == DEAD)
|
||||
M.gib()
|
||||
else
|
||||
M.apply_damage(60, BRUTE, BP_HEAD)
|
||||
M.apply_damage(60, DAMAGE_BRUTE, BP_HEAD)
|
||||
playsound(src, 'sound/magic/LightningShock.ogg', 75, 1)
|
||||
else if(isturf(a) || isobj(a))
|
||||
var/atom/A = a
|
||||
@@ -145,7 +145,7 @@
|
||||
icon = 'icons/obj/projectiles.dmi'
|
||||
icon_state = "bluespace"
|
||||
damage = 0
|
||||
damage_type = BRUTE
|
||||
damage_type = DAMAGE_BRUTE
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSRAILING
|
||||
range = 10
|
||||
embed = 0
|
||||
@@ -172,8 +172,8 @@
|
||||
icon_state = "heavybolt"
|
||||
damage = 30
|
||||
check_armor = "laser"
|
||||
damage_type = BURN
|
||||
damage_flags = DAM_LASER
|
||||
damage_type = DAMAGE_BURN
|
||||
damage_flags = DAMAGE_FLAG_LASER
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSRAILING
|
||||
muzzle_type = /obj/effect/projectile/muzzle/bolt
|
||||
hit_effect = /obj/effect/temp_visual/blaster_effect
|
||||
@@ -184,7 +184,7 @@
|
||||
|
||||
/obj/item/projectile/energy/blaster/disruptor/practice
|
||||
damage = 5
|
||||
damage_type = PAIN
|
||||
damage_type = DAMAGE_PAIN
|
||||
eyeblur = 0
|
||||
|
||||
/obj/item/projectile/energy/disruptorstun
|
||||
@@ -193,14 +193,14 @@
|
||||
damage = 1
|
||||
agony = 40
|
||||
speed = 0.4
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
eyeblur = TRUE
|
||||
pass_flags = PASSTABLE | PASSRAILING
|
||||
muzzle_type = /obj/effect/projectile/muzzle/bolt
|
||||
|
||||
/obj/item/projectile/energy/disruptorstun/practice
|
||||
damage = 5
|
||||
damage_type = PAIN
|
||||
damage_type = DAMAGE_PAIN
|
||||
eyeblur = 0
|
||||
|
||||
/obj/item/projectile/energy/blaster/heavy
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "ion bolt"
|
||||
icon_state = "ion"
|
||||
damage = 0
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
impact_sounds = list(BULLET_IMPACT_MEAT = SOUNDS_ION_ANY, BULLET_IMPACT_METAL = SOUNDS_ION_ANY)
|
||||
check_armor = "energy"
|
||||
var/pulse_range = 1
|
||||
@@ -90,7 +90,7 @@
|
||||
name = "freeze beam"
|
||||
icon_state = "ice_2"
|
||||
damage = 0
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
nodamage = 1
|
||||
check_armor = "energy"
|
||||
//var/temperature = 300
|
||||
@@ -107,7 +107,7 @@
|
||||
icon = 'icons/obj/meteor.dmi'
|
||||
icon_state = "small1"
|
||||
damage = 0
|
||||
damage_type = BRUTE
|
||||
damage_type = DAMAGE_BRUTE
|
||||
nodamage = 1
|
||||
check_armor = "bullet"
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
name = "alpha somatoray"
|
||||
icon_state = "energy"
|
||||
damage = 0
|
||||
damage_type = TOX
|
||||
damage_type = DAMAGE_TOXIN
|
||||
nodamage = 1
|
||||
check_armor = "energy"
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
name = "gamma somatoray"
|
||||
icon_state = "energy2"
|
||||
damage = 0
|
||||
damage_type = TOX
|
||||
damage_type = DAMAGE_TOXIN
|
||||
nodamage = TRUE
|
||||
var/singleton/plantgene/gene = null
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
if((H.species.flags & IS_PLANT) && (M.nutrition < 500))
|
||||
if(prob(15))
|
||||
H.apply_damage(rand(30,80), IRRADIATE, damage_flags = DAM_DISPERSED)
|
||||
H.apply_damage(rand(30,80), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
M.Weaken(5)
|
||||
for (var/mob/V in viewers(src))
|
||||
V.show_message("<span class='warning'>[M] writhes in pain as [M.get_pronoun("his")] vacuoles boil.</span>", 3, "<span class='warning'>You hear the crunching of leaves.</span>", 2)
|
||||
@@ -177,7 +177,7 @@
|
||||
name = "beta somatoray"
|
||||
icon_state = "energy2"
|
||||
damage = 0
|
||||
damage_type = TOX
|
||||
damage_type = DAMAGE_TOXIN
|
||||
nodamage = 1
|
||||
check_armor = "energy"
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
damage = 1 // stop trying to murderbone with a fake gun dumbass!!!
|
||||
embed = 0 // nope
|
||||
nodamage = 1
|
||||
damage_type = PAIN
|
||||
damage_type = DAMAGE_PAIN
|
||||
muzzle_type = /obj/effect/projectile/muzzle/bullet
|
||||
|
||||
/obj/item/projectile/bullet/cannon
|
||||
@@ -244,13 +244,13 @@
|
||||
damage = 0
|
||||
check_armor = "energy"
|
||||
embed = 0
|
||||
damage_type = PAIN
|
||||
damage_type = DAMAGE_PAIN
|
||||
|
||||
/obj/item/projectile/magic/fireball
|
||||
name = "fireball"
|
||||
icon_state = "fireball"
|
||||
damage = 20
|
||||
damage_type = BURN
|
||||
damage_type = DAMAGE_BURN
|
||||
|
||||
/obj/item/projectile/magic/fireball/on_impact(var/atom/A)
|
||||
explosion(A, 0, 0, 4)
|
||||
@@ -277,8 +277,8 @@
|
||||
name = "plasma slug"
|
||||
icon_state = "plasma_bolt"
|
||||
damage = 20
|
||||
damage_type = BRUTE
|
||||
damage_flags = DAM_LASER
|
||||
damage_type = DAMAGE_BRUTE
|
||||
damage_flags = DAMAGE_FLAG_LASER
|
||||
check_armor = "energy"
|
||||
incinerate = 10
|
||||
armor_penetration = 60
|
||||
@@ -308,14 +308,14 @@
|
||||
name ="ice bolt"
|
||||
icon_state= "icer_bolt"
|
||||
damage = 15
|
||||
damage_type = BRUTE
|
||||
damage_type = DAMAGE_BRUTE
|
||||
check_armor = "energy"
|
||||
|
||||
/obj/item/projectile/bonedart
|
||||
name = "bone dart"
|
||||
icon_state = "bonedart"
|
||||
damage = 35
|
||||
damage_type = BRUTE
|
||||
damage_type = DAMAGE_BRUTE
|
||||
impact_sounds = list(BULLET_IMPACT_MEAT = SOUNDS_BULLET_MEAT, BULLET_IMPACT_METAL = SOUNDS_BULLET_METAL)
|
||||
nodamage = FALSE
|
||||
check_armor = "melee"
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
// Describes a point source of radiation. Created either in response to a pulse of radiation, or over an irradiated atom.
|
||||
// Sources will decay over time, unless something is renewing their power!
|
||||
/datum/radiation_source
|
||||
var/turf/source_turf // Location of the radiation source.
|
||||
var/rad_power // Strength of the radiation being emitted.
|
||||
var/decay = TRUE // True for automatic decay. False if owner promises to handle it (i.e. supermatter)
|
||||
var/respect_maint = FALSE // True for not affecting RAD_SHIELDED areas.
|
||||
var/flat = FALSE // True for power falloff with distance.
|
||||
var/range // Cached maximum range, used for quick checks against mobs.
|
||||
|
||||
/datum/radiation_source/New(source_turf, rad_power, decay = TRUE)
|
||||
src.source_turf = source_turf
|
||||
src.rad_power = rad_power
|
||||
src.decay = decay
|
||||
|
||||
/datum/radiation_source/Destroy()
|
||||
SSradiation.sources -= src
|
||||
if(SSradiation.sources_assoc[src.source_turf] == src)
|
||||
SSradiation.sources_assoc -= src.source_turf
|
||||
src.source_turf = null
|
||||
. = ..()
|
||||
|
||||
/datum/radiation_source/proc/update_rad_power(new_power = null)
|
||||
if(new_power == null || new_power == rad_power)
|
||||
return // No change
|
||||
else if(new_power <= RADIATION_LOWER_LIMIT)
|
||||
qdel(src) // Decayed to nothing
|
||||
else
|
||||
rad_power = new_power
|
||||
if(!flat)
|
||||
range = min(round(sqrt(rad_power / RADIATION_LOWER_LIMIT)), 31) // R = rad_power / dist**2 - Solve for dist
|
||||
|
||||
/turf/var/cached_rad_resistance = 0
|
||||
|
||||
/turf/proc/calc_rad_resistance()
|
||||
cached_rad_resistance = 0
|
||||
for(var/obj/O in src.contents)
|
||||
if(!(O.rad_resistance_modifier <= 0) && O.density)
|
||||
var/material/M = O.get_material()
|
||||
if(!M) continue
|
||||
cached_rad_resistance += (M.weight * O.rad_resistance_modifier) / RADIATION_MATERIAL_RESISTANCE_DIVISOR
|
||||
// Looks like storing the contents length is meant to be a basic check if the cache is stale due to items enter/exiting. Better than nothing so I'm leaving it as is. ~Leshana
|
||||
SSradiation.resistance_cache[src] = (length(contents) + 1)
|
||||
|
||||
/turf/simulated/wall/calc_rad_resistance()
|
||||
SSradiation.resistance_cache[src] = (length(contents) + 1)
|
||||
cached_rad_resistance = (density ? material.weight / RADIATION_MATERIAL_RESISTANCE_DIVISOR : 0)
|
||||
|
||||
/obj
|
||||
var/rad_resistance_modifier = 1 // Allow overriding rad resistance
|
||||
|
||||
/**
|
||||
* Retrieves the atom's current radiation level. By default, this will return `loc.get_rads()`.
|
||||
*
|
||||
* Returns integer.
|
||||
*/
|
||||
/atom/proc/get_rads()
|
||||
if(loc)
|
||||
return loc.get_rads()
|
||||
return 0
|
||||
|
||||
/turf/get_rads()
|
||||
return SSradiation.get_rads_at_turf(src)
|
||||
|
||||
/**
|
||||
* Called when radiation affects the atom.
|
||||
*
|
||||
* **Parameters**:
|
||||
* - `severity` - The amount of radiation being applied. Also see `RAD_LEVEL_*`.
|
||||
*
|
||||
* Returns boolean
|
||||
*/
|
||||
/atom/proc/rad_act(severity)
|
||||
return 1
|
||||
|
||||
/mob/living/rad_act(severity)
|
||||
if(severity > RAD_LEVEL_LOW)
|
||||
apply_damage(severity, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
for(var/atom/I in src)
|
||||
I.rad_act(severity)
|
||||
@@ -571,8 +571,8 @@
|
||||
return
|
||||
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
user.visible_message("<span class='warning'>[user] feeds the [target]'s hair into the [src] and flicks it on!</span>", "<span class='warning'>You turn the [src] on!</span>")
|
||||
target.apply_damage(30, BRUTE, BP_HEAD)
|
||||
target.apply_damage(25, PAIN)
|
||||
target.apply_damage(30, DAMAGE_BRUTE, BP_HEAD)
|
||||
target.apply_damage(25, DAMAGE_PAIN)
|
||||
target.say("*scream")
|
||||
|
||||
user.attack_log += text("\[[time_stamp()]\] <span class='warning'>Has fed [target.name]'s ([target.ckey]) hair into a [src].</span>")
|
||||
@@ -586,8 +586,8 @@
|
||||
return
|
||||
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
user.visible_message("<span class='warning'>[user] starts tugging on [target]'s head as the [src] keeps running!</span>", "<span class='warning'>You start tugging on [target]'s head!</span>")
|
||||
target.apply_damage(25, BRUTE, BP_HEAD)
|
||||
target.apply_damage(10, PAIN)
|
||||
target.apply_damage(25, DAMAGE_BRUTE, BP_HEAD)
|
||||
target.apply_damage(10, DAMAGE_PAIN)
|
||||
target.say("*scream")
|
||||
spawn(10)
|
||||
user.visible_message("<span class='warning'>[user] stops the [src] and leaves [target] resting as they are.</span>", "<span class='warning'>You turn the [src] off and let go of [target].</span>")
|
||||
|
||||
@@ -392,7 +392,7 @@
|
||||
var/message_shown = FALSE
|
||||
|
||||
/singleton/reagent/radium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
M.apply_effect(10 * removed, IRRADIATE, blocked = 0) // Radium may increase your chances to cure a disease
|
||||
M.apply_effect(10 * removed, DAMAGE_RADIATION, blocked = 0) // Radium may increase your chances to cure a disease
|
||||
|
||||
/singleton/reagent/radium/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
|
||||
if(amount >= 3)
|
||||
|
||||
@@ -792,7 +792,7 @@
|
||||
to_chat(M, discomfort_message)
|
||||
|
||||
M.visible_message("<b>[M]</b> [pick("dry heaves!", "coughs!", "splutters!")]")
|
||||
M.apply_effect(agony_amount, PAIN, 0)
|
||||
M.apply_effect(agony_amount, DAMAGE_PAIN, 0)
|
||||
|
||||
if(istype(M, /mob/living/carbon/slime))
|
||||
M.bodytemperature += rand(0, 15) + slime_temp_adj
|
||||
@@ -869,14 +869,14 @@
|
||||
message = "<span class='danger'>Your face and throat burn!</span>"
|
||||
if(prob(25))
|
||||
M.visible_message("<b>[M]</b> [pick("coughs!","coughs hysterically!","splutters!")]")
|
||||
M.apply_effect(30, PAIN)
|
||||
M.apply_effect(30, DAMAGE_PAIN)
|
||||
|
||||
/singleton/reagent/capsaicin/condensed/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!H.can_feel_pain())
|
||||
return
|
||||
M.apply_effect(10, PAIN)
|
||||
M.apply_effect(10, DAMAGE_PAIN)
|
||||
if(prob(5))
|
||||
M.visible_message("<span class='warning'>[M] [pick("dry heaves!","coughs!","splutters!")]</span>", "<span class='danger'>You feel like your insides are burning!</span>")
|
||||
if(istype(M, /mob/living/carbon/slime))
|
||||
@@ -2680,7 +2680,7 @@
|
||||
|
||||
/singleton/reagent/alcohol/vodka/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
..()
|
||||
M.apply_effect(max(M.total_radiation - 1 * removed, 0), IRRADIATE, blocked = 0)
|
||||
M.apply_effect(max(M.total_radiation - 1 * removed, 0), DAMAGE_RADIATION, blocked = 0)
|
||||
|
||||
/singleton/reagent/alcohol/vodka/mushroom
|
||||
name = "Mushroom Vodka"
|
||||
@@ -4189,7 +4189,7 @@
|
||||
if(prob(5))
|
||||
to_chat(M, discomfort_message)
|
||||
else
|
||||
M.apply_effect(agony_amount, PAIN, 0)
|
||||
M.apply_effect(agony_amount, DAMAGE_PAIN, 0)
|
||||
if(prob(5))
|
||||
M.visible_message("<b>[M]</b> [pick("dry heaves!","coughs!","splutters!")]")
|
||||
to_chat(M, "<span class='danger'>You feel like your insides are burning!</span>")
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
affect_ingest(M, alien, removed, holder)
|
||||
|
||||
/singleton/reagent/uranium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
M.apply_effect(5 * removed, IRRADIATE, blocked = 0)
|
||||
M.apply_damage(5 * removed, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
|
||||
/singleton/reagent/uranium/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
|
||||
if(amount >= 3)
|
||||
@@ -178,7 +178,7 @@
|
||||
affect_ingest(M, alien, removed, holder)
|
||||
|
||||
/singleton/reagent/radioactive_waste/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
|
||||
M.apply_effect(25 * removed, IRRADIATE, blocked = 0)
|
||||
M.apply_effect(25 * removed, DAMAGE_RADIATION, blocked = 0)
|
||||
|
||||
/singleton/reagent/radioactive_waste/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
|
||||
if(amount >= 3)
|
||||
|
||||
@@ -482,7 +482,7 @@
|
||||
randmutg(M)
|
||||
domutcheck(M, null)
|
||||
M.UpdateAppearance()
|
||||
M.apply_effect(10 * removed, IRRADIATE, blocked = 0)
|
||||
M.apply_damage(10 * removed, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
|
||||
/singleton/reagent/slimejelly
|
||||
name = "Slime Jelly"
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
else
|
||||
var/obj/item/organ/external/affecting = attached.get_organ(pick(BP_R_ARM, BP_L_ARM))
|
||||
attached.visible_message(SPAN_WARNING("The needle is ripped out of [attached]'s [affecting.limb_name == BP_R_ARM ? "right arm" : "left arm"]."), SPAN_DANGER("The needle <b>painfully</b> rips out of your [affecting.limb_name == BP_R_ARM ? "right arm" : "left arm"]."))
|
||||
affecting.take_damage(brute = 5, damage_flags = DAM_SHARP)
|
||||
affecting.take_damage(brute = 5, damage_flags = DAMAGE_FLAG_SHARP)
|
||||
attached_mob = null
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
user.visible_message(SPAN_WARNING("[user] crushes the can of [src.name] on [user.get_pronoun("his")] forehead!"), SPAN_NOTICE("You crush the can of [src.name] on your forehead."))
|
||||
else
|
||||
user.visible_message(SPAN_WARNING("[user] crushes the can of [src.name] on [M]'s forehead!"), SPAN_NOTICE("You crush the can of [src.name] on [M]'s forehead."))
|
||||
M.apply_damage(2,BRUTE,BP_HEAD) // ouch.
|
||||
M.apply_damage(2,DAMAGE_BRUTE,BP_HEAD) // ouch.
|
||||
playsound(M,'sound/items/soda_crush.ogg', rand(10,50), TRUE)
|
||||
var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(M.loc)
|
||||
crushed_can.icon_state = icon_state
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
// You are going to knock someone out for longer if they are not wearing a helmet.
|
||||
var/weaken_duration = 0
|
||||
if(blocked < 100)
|
||||
weaken_duration = smash_duration + min(0, force - target.get_blocked_ratio(hit_zone, BRUTE) * 100 + 10)
|
||||
weaken_duration = smash_duration + min(0, force - target.get_blocked_ratio(hit_zone, DAMAGE_BRUTE) * 100 + 10)
|
||||
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(istype(H) && H.headcheck(hit_zone))
|
||||
|
||||
@@ -146,12 +146,12 @@
|
||||
last_jab = 0 //Resets to try again immediately
|
||||
user.visible_message("<b>[user]</b> fumbles with \the [src]!", SPAN_NOTICE("You fumble with \the [src]!"))
|
||||
return
|
||||
var/blocked = H.get_blocked_ratio(BP_CHEST, BRUTE, DAM_SHARP, damage = 5)
|
||||
var/blocked = H.get_blocked_ratio(BP_CHEST, DAMAGE_BRUTE, DAMAGE_FLAG_SHARP, damage = 5)
|
||||
if(blocked > 20)
|
||||
user.visible_message("<b>[user]</b> jabs \the [src] into [H], but their armor blocks it!", SPAN_WARNING("You jab \the [src] into [H], but their armor blocks it!"))
|
||||
return
|
||||
user.visible_message("<b>[user]</b> jabs \the [src] between [P] ribs!", SPAN_NOTICE("You jab \the [src] between [SM] ribs!"))
|
||||
H.apply_damage(3, BRUTE, BP_CHEST)
|
||||
H.apply_damage(3, DAMAGE_BRUTE, BP_CHEST)
|
||||
H.custom_pain("The pain in your chest is living hell!", 50, affecting = H.organs_by_name[BP_CHEST])
|
||||
L.oxygen_deprivation = 0
|
||||
L.rescued = TRUE
|
||||
@@ -320,7 +320,7 @@
|
||||
if((user != target) && H.check_shields(7, src, user, "\the [src]"))
|
||||
return
|
||||
|
||||
var/armor = H.get_blocked_ratio(target_zone, BRUTE, damage_flags = DAM_SHARP, damage = 5)*100
|
||||
var/armor = H.get_blocked_ratio(target_zone, DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_SHARP, damage = 5)*100
|
||||
if (target != user && armor > 50)
|
||||
user.visible_message(SPAN_DANGER("[user] tries to stab \the [target] in the [hit_area] with \the [src], but the attack is deflected by [target.get_pronoun("his")] armor!"), SPAN_WARNING("You try to stab \the [target] in the [hit_area] with \the [src], but the attack is deflected by [target.get_pronoun("his")] armor!"))
|
||||
user.remove_from_mob(src)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user