changes
This commit is contained in:
@@ -226,7 +226,9 @@
|
||||
playsound(get_turf(target), 'sound/effects/splat.ogg', 40, 1)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
H.bleed_rate += 5
|
||||
var/obj/item/bodypart/head_part = H.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(head_part)
|
||||
head_part.generic_bleedstacks += 5
|
||||
target.add_splatter_floor(get_turf(target))
|
||||
user.add_mob_blood(target) // Put target's blood on us. The donor goes in the ( )
|
||||
target.add_mob_blood(target)
|
||||
|
||||
@@ -27,8 +27,9 @@
|
||||
C.blood_volume -= 0.2
|
||||
C.adjustStaminaLoss(-15)
|
||||
// Stop Bleeding
|
||||
if(istype(H) && H.bleed_rate > 0 && rand(20) == 0)
|
||||
H.bleed_rate --
|
||||
if(istype(H) && H.is_bleeding() && rand(20) == 0)
|
||||
for(var/obj/item/bodypart/part in H.bodyparts)
|
||||
part.generic_bleedstacks --
|
||||
C.Jitter(5)
|
||||
sleep(10)
|
||||
// DONE!
|
||||
|
||||
@@ -227,8 +227,8 @@
|
||||
/obj/item/clothing/examine(mob/user)
|
||||
. = ..()
|
||||
if(damaged_clothes == CLOTHING_SHREDDED)
|
||||
. += "<span class='warning'><b>It is completely shredded and requires mending before it can be worn again!</b></span>"
|
||||
return
|
||||
. += "<span class='warning'><b>It is completely shredded and requires mending before it can be worn again!</b></span>"
|
||||
return
|
||||
for(var/zone in damage_by_parts)
|
||||
var/pct_damage_part = damage_by_parts[zone] / limb_integrity * 100
|
||||
var/zone_name = parse_zone(zone)
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
icon_state = "bulletproof"
|
||||
item_state = "armor"
|
||||
blood_overlay_type = "armor"
|
||||
armor = list("melee" = 15, "bullet" = 60, "laser" = 10, "energy" = 10, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50 "wound" = 20)
|
||||
armor = list("melee" = 15, "bullet" = 60, "laser" = 10, "energy" = 10, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 20)
|
||||
strip_delay = 70
|
||||
equip_delay_other = 50
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
@@ -569,7 +569,7 @@
|
||||
client.prefs.scars_list["[cur_scar_index]"] = valid_scars
|
||||
client.prefs.save_character()
|
||||
|
||||
client.prefs.copy_to(H, antagonist = is_antag)
|
||||
client.prefs.copy_to(H)
|
||||
H.dna.update_dna_identity()
|
||||
if(mind)
|
||||
if(transfer_after)
|
||||
|
||||
@@ -7,12 +7,7 @@
|
||||
|
||||
/mob/living/carbon/monkey/handle_blood()
|
||||
if(bodytemperature <= TCRYO || (HAS_TRAIT(src, TRAIT_HUSK))) //cryosleep or husked people do not pump the blood.
|
||||
var/temp_bleed = 0
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/BP = X
|
||||
temp_bleed += BP.get_bleed_rate()
|
||||
BP.generic_bleedstacks = max(0, BP.generic_bleedstacks - 1)
|
||||
bleed(temp_bleed)
|
||||
return
|
||||
|
||||
var/temp_bleed = 0
|
||||
for(var/X in bodyparts)
|
||||
@@ -29,7 +24,7 @@
|
||||
|
||||
/mob/living/carbon/human/proc/resume_bleeding()
|
||||
bleedsuppress = 0
|
||||
if(stat != DEAD && bleed_rate)
|
||||
if(stat != DEAD && is_bleeding())
|
||||
to_chat(src, "<span class='warning'>The blood soaks through your bandage.</span>")
|
||||
|
||||
|
||||
@@ -47,16 +42,10 @@
|
||||
if(NOBLOOD in dna.species.species_traits || bleedsuppress || (HAS_TRAIT(src, TRAIT_FAKEDEATH)))
|
||||
return
|
||||
|
||||
if(bleed_rate < 0)
|
||||
bleed_rate = 0
|
||||
|
||||
if(HAS_TRAIT(src, TRAIT_NOMARROW)) //Bloodsuckers don't need to be here.
|
||||
return
|
||||
|
||||
if(bodytemperature >= TCRYO && !(HAS_TRAIT(src, TRAIT_NOCLONE))) //cryosleep or husked people do not pump the blood.
|
||||
if(bodytemperature >= TCRYO && !(HAS_TRAIT(src, TRAIT_HUSK))) //cryosleep or husked people do not pump the blood.
|
||||
|
||||
//Blood regeneration if there is some space
|
||||
if(blood_volume < (BLOOD_VOLUME_NORMAL * blood_ratio) && !HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
if(blood_volume < BLOOD_VOLUME_NORMAL && !HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
var/nutrition_ratio = 0
|
||||
switch(nutrition)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
@@ -69,22 +58,27 @@
|
||||
nutrition_ratio = 0.8
|
||||
else
|
||||
nutrition_ratio = 1
|
||||
if(HAS_TRAIT(src, TRAIT_HIGH_BLOOD))
|
||||
nutrition_ratio *= 1.2
|
||||
if(satiety > 80)
|
||||
nutrition_ratio *= 1.25
|
||||
adjust_nutrition(-nutrition_ratio * HUNGER_FACTOR)
|
||||
blood_volume = min((BLOOD_VOLUME_NORMAL * blood_ratio), blood_volume + 0.5 * nutrition_ratio)
|
||||
blood_volume = min(BLOOD_VOLUME_NORMAL, blood_volume + 0.5 * nutrition_ratio)
|
||||
|
||||
//Effects of bloodloss
|
||||
var/word = pick("dizzy","woozy","faint")
|
||||
switch(blood_volume * INVERSE(blood_ratio))
|
||||
switch(blood_volume)
|
||||
if(BLOOD_VOLUME_EXCESS to BLOOD_VOLUME_MAX_LETHAL)
|
||||
if(prob(15))
|
||||
to_chat(src, "<span class='userdanger'>Blood starts to tear your skin apart. You're going to burst!</span>")
|
||||
gib()
|
||||
if(BLOOD_VOLUME_MAXIMUM to BLOOD_VOLUME_EXCESS)
|
||||
if(prob(10))
|
||||
to_chat(src, "<span class='warning'>You feel terribly bloated.</span>")
|
||||
if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
|
||||
if(prob(5))
|
||||
to_chat(src, "<span class='warning'>You feel [word].</span>")
|
||||
adjustOxyLoss(round(((BLOOD_VOLUME_NORMAL * blood_ratio) - blood_volume) * 0.01, 1))
|
||||
adjustOxyLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.01, 1))
|
||||
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
|
||||
adjustOxyLoss(round(((BLOOD_VOLUME_NORMAL * blood_ratio) - blood_volume) * 0.02, 1))
|
||||
adjustOxyLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.02, 1))
|
||||
if(prob(5))
|
||||
blur_eyes(6)
|
||||
to_chat(src, "<span class='warning'>You feel very [word].</span>")
|
||||
|
||||
@@ -174,7 +174,6 @@
|
||||
if(IS_STAMCRIT(src))
|
||||
to_chat(src, "<span class='warning'>You're too exhausted.</span>")
|
||||
return
|
||||
var/random_turn = a_intent == INTENT_HARM
|
||||
//END OF CIT CHANGES
|
||||
|
||||
var/obj/item/I = get_active_held_item()
|
||||
|
||||
@@ -133,8 +133,8 @@
|
||||
return TRUE
|
||||
|
||||
for(var/datum/wound/W in all_wounds)
|
||||
if(W.try_handling(user))
|
||||
return 1
|
||||
if(W.try_handling(user))
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/attack_paw(mob/living/carbon/monkey/M)
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
if(!parts.len)
|
||||
return
|
||||
var/obj/item/bodypart/picked = pick(parts)
|
||||
if(picked.receive_damage(brute, burn, stamina,check_armor ? run_armor_check(picked, (brute ? "melee" : burn ? "fire" : stamina ? "bullet" : null)) : FALSE, wound_bonus = wound_bonus, bare_wound_bonus = bare_wound_bonus, sharpness = sharpness))
|
||||
if(picked.receive_damage(brute, burn, stamina,check_armor ? run_armor_check(picked, (brute ? "melee" : burn ? "fire" : stamina ? "bullet" : null)) : FALSE, wound_bonus = wound_bonus, bare_wound_bonus = bare_wound_bonus, sharpness = sharpness))
|
||||
update_damage_overlays()
|
||||
|
||||
//Heal MANY bodyparts, in random order
|
||||
@@ -235,12 +235,12 @@
|
||||
update_damage_overlays()
|
||||
update_stamina() //CIT CHANGE - makes sure update_stamina() always gets called after a health update
|
||||
|
||||
// damage MANY bodyparts, in random order
|
||||
/mob/living/carbon/take_overall_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE)
|
||||
/// damage MANY bodyparts, in random order
|
||||
/mob/living/carbon/take_overall_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status)
|
||||
if(status_flags & GODMODE)
|
||||
return //godmode
|
||||
|
||||
var/list/obj/item/bodypart/parts = get_damageable_bodyparts()
|
||||
var/list/obj/item/bodypart/parts = get_damageable_bodyparts(required_status)
|
||||
var/update = 0
|
||||
while(parts.len && (brute > 0 || burn > 0 || stamina > 0))
|
||||
var/obj/item/bodypart/picked = pick(parts)
|
||||
|
||||
@@ -640,7 +640,7 @@
|
||||
msg = "\t <span class='warning'><b>Your [LB.name] is suffering [W.a_or_from] [lowertext(W.name)]!</b></span>"
|
||||
if(WOUND_SEVERITY_CRITICAL)
|
||||
msg = "\t <span class='warning'><b>Your [LB.name] is suffering [W.a_or_from] [lowertext(W.name)]!!</b></span>"
|
||||
to_chat(src, msg)
|
||||
to_chat(src, msg)
|
||||
|
||||
for(var/obj/item/I in LB.embedded_objects)
|
||||
if(I.isEmbedHarmless())
|
||||
|
||||
@@ -123,6 +123,9 @@
|
||||
|
||||
var/list/progressbars = null //for stacking do_after bars
|
||||
|
||||
///For storing what do_after's someone has, in case we want to restrict them to only one of a certain do_after at a time
|
||||
var/list/do_afters
|
||||
|
||||
var/list/mousemove_intercept_objects
|
||||
|
||||
var/datum/click_intercept
|
||||
|
||||
@@ -12,13 +12,13 @@ obj/item/ammo_casing/shotgun/executioner
|
||||
name = "executioner slug"
|
||||
desc = "A 12 gauge lead slug purpose built to annihilate flesh on impact."
|
||||
icon_state = "stunshell"
|
||||
projectile_type = /obj/projectile/bullet/shotgun_slug/executioner
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_slug/executioner
|
||||
|
||||
/obj/item/ammo_casing/shotgun/pulverizer
|
||||
name = "pulverizer slug"
|
||||
desc = "A 12 gauge lead slug purpose built to annihilate bones on impact."
|
||||
icon_state = "stunshell"
|
||||
projectile_type = /obj/projectile/bullet/shotgun_slug/pulverizer
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_slug/pulverizer
|
||||
|
||||
/obj/item/ammo_casing/shotgun/beanbag
|
||||
name = "beanbag slug"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
fire_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/hellfire
|
||||
projectile_type = /obj/projectile/beam/laser/hellfire
|
||||
projectile_type = /obj/item/projectile/beam/laser/hellfire
|
||||
e_cost = 130
|
||||
select_name = "maim"
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
|
||||
wound_bonus = CANT_WOUND
|
||||
/// For telling whether we want to roll for bone breaking or lacerations if we're bothering with wounds
|
||||
var/sharpness = FALSE
|
||||
sharpness = FALSE
|
||||
|
||||
/obj/item/projectile/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -25,13 +25,12 @@
|
||||
bare_wound_bonus = 40
|
||||
|
||||
//overclocked laser, does a bit more damage but has much higher wound power (-0 vs -20)
|
||||
/obj/projectile/beam/laser/hellfire
|
||||
/obj/item/projectile/beam/laser/hellfire
|
||||
name = "hellfire laser"
|
||||
wound_bonus = 0
|
||||
damage = 25
|
||||
speed = 0.6 // higher power = faster, that's how light works right
|
||||
|
||||
/obj/projectile/beam/laser/hellfire/Initialize()
|
||||
/obj/item/projectile/beam/laser/hellfire/Initialize()
|
||||
. = ..()
|
||||
transform *= 2
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
name = "12g shotgun slug"
|
||||
damage = 60
|
||||
|
||||
/obj/projectile/bullet/shotgun_slug/executioner
|
||||
/obj/item/projectile/bullet/shotgun_slug/executioner
|
||||
name = "executioner slug" // admin only, can dismember limbs
|
||||
sharpness = TRUE
|
||||
wound_bonus = 0
|
||||
|
||||
/obj/projectile/bullet/shotgun_slug/pulverizer
|
||||
/obj/item/projectile/bullet/shotgun_slug/pulverizer
|
||||
name = "pulverizer slug" // admin only, can crush bones
|
||||
sharpness = FALSE
|
||||
wound_bonus = 0
|
||||
|
||||
@@ -66,8 +66,6 @@
|
||||
max_stamina_damage = 50
|
||||
body_zone = BODY_ZONE_L_ARM
|
||||
body_part = ARM_LEFT
|
||||
aux_zone = BODY_ZONE_PRECISE_L_HAND
|
||||
aux_layer = HANDS_PART_LAYER
|
||||
body_damage_coeff = 0.75
|
||||
held_index = 1
|
||||
px_x = -6
|
||||
@@ -131,8 +129,6 @@
|
||||
max_damage = 50
|
||||
body_zone = BODY_ZONE_R_ARM
|
||||
body_part = ARM_RIGHT
|
||||
aux_zone = BODY_ZONE_PRECISE_R_HAND
|
||||
aux_layer = HANDS_PART_LAYER
|
||||
body_damage_coeff = 0.75
|
||||
held_index = 2
|
||||
px_x = 6
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
name = "repair hairline fracture (bonesetter/bone gel/tape)"
|
||||
implements = list(/obj/item/bonesetter = 100, /obj/item/stack/medical/bone_gel = 100, /obj/item/stack/sticky_tape/surgical = 100, /obj/item/stack/sticky_tape/super = 50, /obj/item/stack/sticky_tape = 30)
|
||||
time = 40
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
|
||||
/datum/surgery_step/repair_bone_hairline/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(surgery.operated_wound)
|
||||
@@ -76,7 +75,6 @@
|
||||
name = "reset bone"
|
||||
implements = list(/obj/item/bonesetter = 100, /obj/item/stack/sticky_tape/surgical = 60, /obj/item/stack/sticky_tape/super = 40, /obj/item/stack/sticky_tape = 20)
|
||||
time = 40
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
|
||||
/datum/surgery_step/reset_compound_fracture/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(surgery.operated_wound)
|
||||
@@ -111,7 +109,6 @@
|
||||
name = "repair compound fracture (bone gel/tape)"
|
||||
implements = list(/obj/item/stack/medical/bone_gel = 100, /obj/item/stack/sticky_tape/surgical = 100, /obj/item/stack/sticky_tape/super = 50, /obj/item/stack/sticky_tape = 30)
|
||||
time = 40
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
|
||||
/datum/surgery_step/repair_bone_compound/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(surgery.operated_wound)
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCALPEL = 85, TOOL_SAW = 60, TOOL_WIRECUTTER = 40)
|
||||
time = 30
|
||||
repeatable = TRUE
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
|
||||
/datum/surgery_step/debride/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(surgery.operated_wound)
|
||||
@@ -76,7 +75,6 @@
|
||||
name = "bandage burns"
|
||||
implements = list(/obj/item/stack/medical/gauze = 100, /obj/item/stack/sticky_tape/surgical = 100)
|
||||
time = 40
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
|
||||
/datum/surgery_step/dress/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/datum/wound/burn/burn_wound = surgery.operated_wound
|
||||
|
||||
@@ -547,7 +547,7 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
qdel(O)
|
||||
new /obj/effect/gibspawner/human/bodypartless(get_turf(C))
|
||||
|
||||
if(prob(30))
|
||||
if(prob(30))
|
||||
C.apply_damage(max(0, squish_damage - crit_rebate), forced=TRUE, spread_damage=TRUE) // the 30% chance to spread the damage means you escape breaking any bones
|
||||
else
|
||||
C.take_bodypart_damage((squish_damage - crit_rebate)*0.5, wound_bonus = 5) // otherwise, deal it to 2 random limbs (or the same one) which will likely shatter something
|
||||
|
||||
Reference in New Issue
Block a user