mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 02:54:41 +01:00
Removes british spelling of armor from armor_penetration vars (#30104)
* spelling * manually rename last armour pen * Update code/game/objects/obj_defense.dm Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Signed-off-by: kyunkyunkyun <120701975+kyunkyunkyun@users.noreply.github.com> * Update code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Signed-off-by: kyunkyunkyun <120701975+kyunkyunkyun@users.noreply.github.com> * Update goldgrub.dm --------- Signed-off-by: kyunkyunkyun <120701975+kyunkyunkyun@users.noreply.github.com> Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
This commit is contained in:
@@ -101,18 +101,18 @@
|
||||
if(time_since_parry > parry_time_out_time)
|
||||
return
|
||||
|
||||
var/armour_penetration_percentage = 0
|
||||
var/armour_penetration_flat = 0
|
||||
var/armor_penetration_percentage = 0
|
||||
var/armor_penetration_flat = 0
|
||||
|
||||
if(isitem(hitby))
|
||||
var/obj/item/I = hitby
|
||||
armour_penetration_percentage = I.armour_penetration_percentage
|
||||
armour_penetration_flat = I.armour_penetration_flat
|
||||
armor_penetration_percentage = I.armor_penetration_percentage
|
||||
armor_penetration_flat = I.armor_penetration_flat
|
||||
|
||||
if(armour_penetration_flat + armour_penetration_percentage >= 100)
|
||||
if(armor_penetration_flat + armor_penetration_percentage >= 100)
|
||||
return
|
||||
|
||||
var/stamina_damage = stamina_coefficient * (((time_since_parry / parry_time_out_time) + armour_penetration_percentage / 100) * (damage + armour_penetration_flat)) + stamina_constant
|
||||
var/stamina_damage = stamina_coefficient * (((time_since_parry / parry_time_out_time) + armor_penetration_percentage / 100) * (damage + armor_penetration_flat)) + stamina_constant
|
||||
|
||||
if(!no_parry_sound)
|
||||
var/sound_to_play
|
||||
|
||||
@@ -562,7 +562,7 @@
|
||||
icon_state = "bloodspear0"
|
||||
force = 17
|
||||
throwforce = 30
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
attack_verb = list("attacked", "impaled", "stabbed", "torn", "gored")
|
||||
sharp = TRUE
|
||||
no_spin_thrown = TRUE
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
force = 15
|
||||
throwforce = 25
|
||||
armour_penetration_flat = 35
|
||||
armor_penetration_flat = 35
|
||||
sprite_sheets_inhand = null // Override parent
|
||||
var/drawing_rune = FALSE
|
||||
var/scribe_multiplier = 1 // Lower is faster
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
if(toggle)
|
||||
melee_damage_lower = initial(melee_damage_lower)
|
||||
melee_damage_upper = initial(melee_damage_upper)
|
||||
armour_penetration_percentage = initial(armour_penetration_percentage)
|
||||
armor_penetration_percentage = initial(armor_penetration_percentage)
|
||||
obj_damage = initial(obj_damage)
|
||||
environment_smash = initial(environment_smash)
|
||||
alpha = initial(alpha)
|
||||
@@ -73,7 +73,7 @@
|
||||
return
|
||||
melee_damage_lower = 50
|
||||
melee_damage_upper = 50
|
||||
armour_penetration_percentage = 100
|
||||
armor_penetration_percentage = 100
|
||||
obj_damage = 0
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
alpha = 10
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "crystal spray"
|
||||
icon_state = "guardian"
|
||||
damage = 20
|
||||
armour_penetration_percentage = 100
|
||||
armor_penetration_percentage = 100
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/ranged
|
||||
friendly = "quietly assesses"
|
||||
|
||||
@@ -364,7 +364,7 @@
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
var/active = FALSE
|
||||
|
||||
/obj/item/holo/esword/Initialize(mapload)
|
||||
|
||||
@@ -520,8 +520,8 @@
|
||||
enabled = TRUE //turns it back on. The cover pop_up() pop_down() are automatically called in process(), no need to define it here
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/porta_turret/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", sound_effect = TRUE, attack_dir, armour_penetration_flat = 0, armour_penetration_percentage = 0)
|
||||
damage_amount = run_obj_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration_flat, armour_penetration_percentage)
|
||||
/obj/machinery/porta_turret/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", sound_effect = TRUE, attack_dir, armor_penetration_flat = 0, armor_penetration_percentage = 0)
|
||||
damage_amount = run_obj_armor(damage_amount, damage_type, damage_flag, attack_dir, armor_penetration_flat, armor_penetration_percentage)
|
||||
if(!raised && !raising)
|
||||
damage_amount = damage_amount / 8
|
||||
if(damage_amount < 5)
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
/obj/item/kinetic_crusher/mecha
|
||||
/// Since this one doesn't have the two_handed component it will always use the value in force
|
||||
force = 30
|
||||
armour_penetration_flat = 15
|
||||
armor_penetration_flat = 15
|
||||
detonation_damage = 90
|
||||
backstab_bonus = 50
|
||||
|
||||
|
||||
@@ -92,9 +92,9 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons
|
||||
/// How much clothing is slowing you down. Negative values speeds you up.
|
||||
var/slowdown = 0
|
||||
/// Flat armour reduction, occurs after percentage armour penetration.
|
||||
var/armour_penetration_flat = 0
|
||||
var/armor_penetration_flat = 0
|
||||
/// Percentage armour reduction, happens before flat armour reduction.
|
||||
var/armour_penetration_percentage = 0
|
||||
var/armor_penetration_percentage = 0
|
||||
/// For what suits can store. IE. secuirty vest holding stunbatons, disablers, cuffs.
|
||||
var/list/allowed = list()
|
||||
/// All items can have an uplink hidden inside, just remember to add the triggers.
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
armour_penetration_percentage = 100
|
||||
armor_penetration_percentage = 100
|
||||
attack_verb = list("bludgeoned", "whacked", "disciplined")
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
/// The amount of stamina damage the baton does per swing
|
||||
var/stamina_damage = 30
|
||||
/// How much melee armour is ignored by the stamina damage
|
||||
var/stamina_armour_pen = 0
|
||||
var/stamina_armor_pen = 0
|
||||
/// The stun time (in seconds) for non-silicons
|
||||
var/knockdown_duration = 6 SECONDS
|
||||
/// The stun time (in seconds) for silicons
|
||||
@@ -122,7 +122,7 @@
|
||||
* * user - The attacking user
|
||||
*/
|
||||
/obj/item/melee/classic_baton/proc/on_non_silicon_stun(mob/living/target, mob/living/user)
|
||||
var/armour = target.run_armor_check("chest", armour_penetration_percentage = stamina_armour_pen) // returns their chest melee armour
|
||||
var/armour = target.run_armor_check("chest", armor_penetration_percentage = stamina_armor_pen) // returns their chest melee armour
|
||||
var/percentage_reduction = 0
|
||||
if(ishuman(target))
|
||||
percentage_reduction = (100 - ARMOUR_VALUE_TO_PERCENTAGE(armour)) / 100
|
||||
|
||||
@@ -248,7 +248,7 @@
|
||||
item_state = "scythe0"
|
||||
desc = "Ask not for whom the bell tolls..."
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
armour_penetration_flat = 30
|
||||
armor_penetration_flat = 30
|
||||
slot_flags = ITEM_SLOT_BACK
|
||||
sharp = TRUE
|
||||
attack_verb = list("chopped", "sliced", "cut", "reaped")
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
w_class_on = WEIGHT_CLASS_HUGE
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
flags = CONDUCT
|
||||
armour_penetration_percentage = 100
|
||||
armor_penetration_percentage = 100
|
||||
origin_tech = "combat=4;magnets=3"
|
||||
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
|
||||
attack_verb_on = list()
|
||||
@@ -207,8 +207,8 @@
|
||||
hitsound = "swing_hit"
|
||||
embed_chance = 75
|
||||
embedded_impact_pain_multiplier = 10
|
||||
armour_penetration_percentage = 50
|
||||
armour_penetration_flat = 10
|
||||
armor_penetration_percentage = 50
|
||||
armor_penetration_flat = 10
|
||||
origin_tech = "combat=3;magnets=4;syndicate=4"
|
||||
sharp = TRUE
|
||||
var/hacked = FALSE
|
||||
@@ -345,8 +345,8 @@
|
||||
throwforce_on = 10 // No PvP shenanigans, this is main weapon in PvE explorer gameplay and can be obtained very easy
|
||||
embed_chance = 45
|
||||
embedded_impact_pain_multiplier = 4
|
||||
armour_penetration_percentage = 0
|
||||
armour_penetration_flat = 0
|
||||
armor_penetration_percentage = 0
|
||||
armor_penetration_flat = 0
|
||||
icon_state = "cutlass0"
|
||||
icon_state_on = "cutlass1"
|
||||
light_color = LIGHT_COLOR_RED
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
force = 15
|
||||
throwforce = 10
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
armour_penetration_percentage = 75
|
||||
armor_penetration_percentage = 75
|
||||
sharp = TRUE
|
||||
origin_tech = null
|
||||
attack_verb = list("lunged at", "stabbed")
|
||||
@@ -112,7 +112,7 @@
|
||||
flags = CONDUCT
|
||||
force = 5
|
||||
throwforce = 5
|
||||
armour_penetration_flat = 30
|
||||
armor_penetration_flat = 30
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
sharp = TRUE
|
||||
origin_tech = "combat=6;syndicate=5"
|
||||
@@ -280,8 +280,8 @@
|
||||
force_on = 40
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
armour_penetration_percentage = 50
|
||||
armour_penetration_flat = 10
|
||||
armor_penetration_percentage = 50
|
||||
armor_penetration_flat = 10
|
||||
|
||||
/obj/item/chainsaw/syndie/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -310,7 +310,7 @@
|
||||
/obj/item/chainsaw/doomslayer
|
||||
name = "OOOH BABY"
|
||||
desc = "<span class='warning'>VRRRRRRR!!!</span>"
|
||||
armour_penetration_percentage = 100
|
||||
armor_penetration_percentage = 100
|
||||
force_on = 30
|
||||
|
||||
/obj/item/chainsaw/doomslayer/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
force = 25
|
||||
armour_penetration_flat = 50
|
||||
armor_penetration_flat = 50
|
||||
sharp = TRUE
|
||||
new_attack_chain = TRUE
|
||||
///enchantment holder, gives it unique on hit effects.
|
||||
|
||||
@@ -55,8 +55,8 @@
|
||||
/obj/item/fireaxe/energized
|
||||
desc = "Someone with a love for fire axes decided to turn this one into a high-powered energy weapon. Seems excessive."
|
||||
force_wielded = 35
|
||||
armour_penetration_flat = 10
|
||||
armour_penetration_percentage = 30
|
||||
armor_penetration_flat = 10
|
||||
armor_penetration_percentage = 30
|
||||
var/charge = 20
|
||||
var/max_charge = 20
|
||||
|
||||
@@ -106,8 +106,8 @@
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/w_class_on = WEIGHT_CLASS_BULKY
|
||||
armour_penetration_flat = 10
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_flat = 10
|
||||
armor_penetration_percentage = 50
|
||||
origin_tech = "magnets=4;syndicate=5"
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 100, ACID = 70)
|
||||
@@ -279,7 +279,7 @@
|
||||
var/force_wielded = 18
|
||||
throwforce = 20
|
||||
throw_speed = 4
|
||||
armour_penetration_flat = 5
|
||||
armor_penetration_flat = 5
|
||||
materials = list(MAT_METAL = 1150, MAT_GLASS = 2075)
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
|
||||
@@ -350,7 +350,7 @@
|
||||
force_unwielded = 11
|
||||
force_wielded = 20 //I have no idea how to balance
|
||||
throwforce = 22
|
||||
armour_penetration_percentage = 15 //Enhanced armor piercing
|
||||
armor_penetration_percentage = 15 //Enhanced armor piercing
|
||||
|
||||
//Blatant imitation of spear, but all natural. Also not valid for explosive modification.
|
||||
/obj/item/spear/bamboo
|
||||
@@ -627,7 +627,7 @@
|
||||
flags = ABSTRACT | NODROP | DROPDEL
|
||||
force = 22
|
||||
damtype = BURN
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
sharp = TRUE
|
||||
attack_effect_override = ATTACK_EFFECT_CLAW
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//the essential proc to call when an obj must receive damage of any kind.
|
||||
/obj/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", sound_effect = TRUE, attack_dir, armour_penetration_flat = 0, armour_penetration_percentage = 0)
|
||||
/obj/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", sound_effect = TRUE, attack_dir, armor_penetration_flat = 0, armor_penetration_percentage = 0)
|
||||
if(QDELETED(src))
|
||||
stack_trace("[src] taking damage after deletion")
|
||||
return
|
||||
@@ -7,7 +7,7 @@
|
||||
play_attack_sound(damage_amount, damage_type, damage_flag)
|
||||
if((resistance_flags & INDESTRUCTIBLE) || obj_integrity <= 0)
|
||||
return
|
||||
damage_amount = run_obj_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration_flat, armour_penetration_percentage)
|
||||
damage_amount = run_obj_armor(damage_amount, damage_type, damage_flag, attack_dir, armor_penetration_flat, armor_penetration_percentage)
|
||||
if(damage_amount < DAMAGE_PRECISION)
|
||||
return
|
||||
. = damage_amount
|
||||
@@ -20,7 +20,7 @@
|
||||
obj_destruction(damage_flag)
|
||||
|
||||
///returns the damage value of the attack after processing the obj's various armor protections
|
||||
/obj/proc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration_flat = 0, armour_penetration_percentage = 0)
|
||||
/obj/proc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armor_penetration_flat = 0, armor_penetration_percentage = 0)
|
||||
if(damage_flag == MELEE && damage_amount < damage_deflection)
|
||||
return 0
|
||||
if(damage_type != BRUTE && damage_type != BURN)
|
||||
@@ -29,12 +29,12 @@
|
||||
if(damage_flag)
|
||||
armor_protection = armor.getRating(damage_flag)
|
||||
if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor.
|
||||
armor_protection = clamp((armor_protection * ((100 - armour_penetration_percentage) / 100)) - armour_penetration_flat, min(armor_protection, 0), 100)
|
||||
armor_protection = clamp((armor_protection * ((100 - armor_penetration_percentage) / 100)) - armor_penetration_flat, min(armor_protection, 0), 100)
|
||||
var/damage_multiplier = (100 - armor_protection) / 100
|
||||
return round(damage_amount * damage_multiplier, DAMAGE_PRECISION)
|
||||
|
||||
/// returns the amount of damage required to destroy this object in a single hit.
|
||||
/obj/proc/calculate_oneshot_damage(damage_type, damage_flag = 0, attack_dir, armour_penetration_flat = 0, armour_penetration_percentage = 0)
|
||||
/obj/proc/calculate_oneshot_damage(damage_type, damage_flag = 0, attack_dir, armor_penetration_flat = 0, armor_penetration_percentage = 0)
|
||||
if(obj_integrity <= 0)
|
||||
return 0
|
||||
if(resistance_flags & INDESTRUCTIBLE)
|
||||
@@ -46,7 +46,7 @@
|
||||
if(damage_flag)
|
||||
armor_protection = armor.getRating(damage_flag)
|
||||
if(armor_protection) // Only apply weak-against-armor/hollowpoint effects if there actually IS armor.
|
||||
armor_protection = clamp((armor_protection * ((100 - armour_penetration_percentage) / 100)) - armour_penetration_flat, min(armor_protection, 0), 100)
|
||||
armor_protection = clamp((armor_protection * ((100 - armor_penetration_percentage) / 100)) - armor_penetration_flat, min(armor_protection, 0), 100)
|
||||
|
||||
var/damage_multiplier = (100 - armor_protection) / 100
|
||||
if(damage_multiplier <= 0)
|
||||
@@ -91,7 +91,7 @@
|
||||
playsound(src, P.hitsound, 50, TRUE)
|
||||
visible_message("<span class='danger'>[src] is hit by \a [P]!</span>")
|
||||
if(!QDELETED(src)) //Bullet on_hit effect might have already destroyed this object
|
||||
take_damage(P.damage, P.damage_type, P.flag, 0, turn(P.dir, 180), P.armour_penetration_flat, P.armour_penetration_percentage)
|
||||
take_damage(P.damage, P.damage_type, P.flag, 0, turn(P.dir, 180), P.armor_penetration_flat, P.armor_penetration_percentage)
|
||||
|
||||
///Called to get the damage that hulks will deal to the obj.
|
||||
/obj/proc/hulk_damage()
|
||||
@@ -117,10 +117,10 @@
|
||||
return
|
||||
take_damage(400, BRUTE, MELEE, 0, get_dir(src, B))
|
||||
|
||||
/obj/proc/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armour_penetration_flat = 0, armour_penetration_percentage = 0) //used by attack_alien, attack_animal, and attack_slime
|
||||
/obj/proc/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration_flat = 0, armor_penetration_percentage = 0) // used by attack_alien, attack_animal, and attack_slime
|
||||
user.do_attack_animation(src)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
return take_damage(damage_amount, damage_type, damage_flag, sound_effect, get_dir(src, user), armour_penetration_flat, armour_penetration_percentage)
|
||||
return take_damage(damage_amount, damage_type, damage_flag, sound_effect, get_dir(src, user), armor_penetration_flat, armor_penetration_percentage)
|
||||
|
||||
/obj/attack_alien(mob/living/carbon/alien/humanoid/user)
|
||||
if(attack_generic(user, 60, BRUTE, MELEE, 0))
|
||||
@@ -136,9 +136,9 @@
|
||||
play_soundeffect = 0
|
||||
var/obj_turf = get_turf(src) // play from the turf in case the object gets deleted mid attack
|
||||
if(M.obj_damage)
|
||||
. = attack_generic(M, M.obj_damage, M.melee_damage_type, MELEE, play_soundeffect, M.armour_penetration_flat, M.armour_penetration_percentage)
|
||||
. = attack_generic(M, M.obj_damage, M.melee_damage_type, MELEE, play_soundeffect, M.armor_penetration_flat, M.armor_penetration_percentage)
|
||||
else
|
||||
. = attack_generic(M, rand(M.melee_damage_lower,M.melee_damage_upper), M.melee_damage_type, MELEE, play_soundeffect, M.armour_penetration_flat, M.armour_penetration_percentage)
|
||||
. = attack_generic(M, rand(M.melee_damage_lower,M.melee_damage_upper), M.melee_damage_type, MELEE, play_soundeffect, M.armor_penetration_flat, M.armor_penetration_percentage)
|
||||
if(. && !play_soundeffect)
|
||||
playsound(QDELETED(src) ? obj_turf : src, 'sound/effects/meteorimpact.ogg', 100, TRUE)
|
||||
|
||||
@@ -152,9 +152,9 @@
|
||||
play_soundeffect = FALSE
|
||||
var/obj_turf = get_turf(src) // play from the turf in case the object gets deleted mid attack
|
||||
if(attacker.obj_damage)
|
||||
. = attack_generic(attacker, attacker.obj_damage, attacker.melee_damage_type, MELEE, play_soundeffect, attacker.armour_penetration_flat, attacker.armour_penetration_percentage)
|
||||
. = attack_generic(attacker, attacker.obj_damage, attacker.melee_damage_type, MELEE, play_soundeffect, attacker.armor_penetration_flat, attacker.armor_penetration_percentage)
|
||||
else
|
||||
. = attack_generic(attacker, rand(attacker.melee_damage_lower, attacker.melee_damage_upper), attacker.melee_damage_type, MELEE, play_soundeffect, attacker.armour_penetration_flat, attacker.armour_penetration_percentage)
|
||||
. = attack_generic(attacker, rand(attacker.melee_damage_lower, attacker.melee_damage_upper), attacker.melee_damage_type, MELEE, play_soundeffect, attacker.armor_penetration_flat, attacker.armor_penetration_percentage)
|
||||
if(. && !play_soundeffect)
|
||||
playsound(QDELETED(src) ? obj_turf : src, 'sound/effects/meteorimpact.ogg', 100, TRUE)
|
||||
return TRUE
|
||||
|
||||
@@ -287,7 +287,7 @@
|
||||
. = ..()
|
||||
if(. && receive_ricochet_damage_coeff)
|
||||
// pass along receive_ricochet_damage_coeff damage to the structure for the ricochet
|
||||
take_damage(P.damage * receive_ricochet_damage_coeff, P.damage_type, P.flag, 0, REVERSE_DIR(P.dir), P.armour_penetration_flat, P.armour_penetration_percentage)
|
||||
take_damage(P.damage * receive_ricochet_damage_coeff, P.damage_type, P.flag, 0, REVERSE_DIR(P.dir), P.armor_penetration_flat, P.armor_penetration_percentage)
|
||||
|
||||
/obj/proc/return_obj_air()
|
||||
RETURN_TYPE(/datum/gas_mixture)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
knockdown_duration = 4 SECONDS
|
||||
cooldown = 2.5 SECONDS
|
||||
stamina_damage = 70
|
||||
stamina_armour_pen = 100
|
||||
stamina_armor_pen = 100
|
||||
force_off = 5
|
||||
force_on = 15
|
||||
item_state_on = "contractor_baton"
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
flags = ABSTRACT | NODROP | DROPDEL
|
||||
force = 10
|
||||
armour_penetration_flat = 20
|
||||
armor_penetration_flat = 20
|
||||
sharp = TRUE
|
||||
attack_effect_override = ATTACK_EFFECT_CLAW
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
flags = ABSTRACT | NODROP | DROPDEL
|
||||
gender = PLURAL
|
||||
force = 21 // allows them to break down doors aka NOT FUCKING AROUND
|
||||
armour_penetration_percentage = -20
|
||||
armor_penetration_percentage = -20
|
||||
attack_effect_override = ATTACK_EFFECT_CLAW
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("slashed", "sliced", "torn", "ripped", "mauled", "cut", "savaged", "clawed")
|
||||
@@ -180,7 +180,7 @@
|
||||
/obj/item/zombie_claw/plague_claw
|
||||
name = "Plague Claws"
|
||||
desc = "Claws extend from your rotting hands, oozing a putrid ichor. Perfect for rending bone and flesh for your master."
|
||||
armour_penetration_flat = 15
|
||||
armor_penetration_flat = 15
|
||||
force = 13
|
||||
|
||||
/obj/item/zombie_claw/plague_claw/Initialize(mapload, new_parent_spell, disease)
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
var/atom/throw_target = get_edge_target_turf(L, get_dir(src, get_step_away(L, src)))
|
||||
L.throw_at(throw_target, 4, 4)
|
||||
var/limb_to_hit = L.get_organ(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
||||
var/armor = L.run_armor_check(def_zone = limb_to_hit, attack_flag = MELEE, armour_penetration_percentage = 50)
|
||||
var/armor = L.run_armor_check(def_zone = limb_to_hit, attack_flag = MELEE, armor_penetration_percentage = 50)
|
||||
L.apply_damage(40, BRUTE, limb_to_hit, armor)
|
||||
|
||||
// Below here is edited from Bubblegum
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
SSticker.mode.incursion_portals -= src
|
||||
return ..()
|
||||
|
||||
/obj/structure/spawner/nether/demon_incursion/take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armour_penetration_flat, armour_penetration_percentage)
|
||||
/obj/structure/spawner/nether/demon_incursion/take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armor_penetration_flat, armor_penetration_percentage)
|
||||
. = ..()
|
||||
COOLDOWN_START(src, portal_repair, portal_repair_cooldown)
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
|
||||
var/mob/living/carbon/human/H = target
|
||||
var/headarmor = 0 // Target's head armor
|
||||
armor_block = H.run_armor_check(affecting, MELEE, null, null, armour_penetration_flat, armour_penetration_percentage) // For normal attack damage
|
||||
armor_block = H.run_armor_check(affecting, MELEE, null, null, armor_penetration_flat, armor_penetration_percentage) // For normal attack damage
|
||||
|
||||
//If they have a hat/helmet and the user is targeting their head.
|
||||
if(istype(H.head, /obj/item/clothing/head) && affecting == "head")
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
throw_range = 3
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
flags = CONDUCT
|
||||
armour_penetration_flat = 20
|
||||
armor_penetration_flat = 20
|
||||
slot_flags = ITEM_SLOT_BACK
|
||||
origin_tech = "materials=3;combat=2"
|
||||
attack_verb = list("chopped", "sliced", "cut", "reaped")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
slot_flags = ITEM_SLOT_BACK
|
||||
throwforce = 5
|
||||
throw_speed = 4
|
||||
armour_penetration_flat = 10
|
||||
armor_penetration_flat = 10
|
||||
materials = list(MAT_METAL = 1150, MAT_GLASS = 2075)
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped")
|
||||
|
||||
@@ -355,7 +355,7 @@
|
||||
icon_state = "hook"
|
||||
icon = 'icons/obj/lavaland/artefacts.dmi'
|
||||
damage = 25
|
||||
armour_penetration_percentage = 100
|
||||
armor_penetration_percentage = 100
|
||||
hitsound = 'sound/effects/splat.ogg'
|
||||
weaken = 1 SECONDS
|
||||
knockdown = 6 SECONDS
|
||||
|
||||
@@ -523,8 +523,8 @@
|
||||
lefthand_file = 'icons/mob/inhands/weapons_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons_righthand.dmi'
|
||||
force = 15
|
||||
armour_penetration_percentage = 40
|
||||
armour_penetration_flat = 10
|
||||
armor_penetration_percentage = 40
|
||||
armor_penetration_flat = 10
|
||||
sharp = TRUE
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
attack_verb = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
|
||||
|
||||
@@ -135,9 +135,9 @@ RESTRICT_TYPE(/mob/living/basic)
|
||||
/// What can this mob break?
|
||||
var/environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
/// Flat armour reduction, occurs after percentage armour penetration.
|
||||
var/armour_penetration_flat = 0
|
||||
var/armor_penetration_flat = 0
|
||||
/// Percentage armour reduction, happens before flat armour reduction.
|
||||
var/armour_penetration_percentage = 0
|
||||
var/armor_penetration_percentage = 0
|
||||
/// Damage type of a simple mob's melee attack, should it do damage.
|
||||
var/melee_damage_type = BRUTE
|
||||
/// Lower bound for melee attack cooldown
|
||||
|
||||
@@ -49,6 +49,6 @@
|
||||
ore.forceMove(loc)
|
||||
|
||||
/mob/living/basic/mining/goldgrub/bullet_act(obj/item/projectile/P)
|
||||
if(P.armour_penetration_flat + P.armour_penetration_percentage >= 100)
|
||||
if(P.armor_penetration_flat + P.armor_penetration_percentage >= 100)
|
||||
return ..()
|
||||
visible_message("<span class='danger'>[P.name] was repelled by [name]'s girth!</span>")
|
||||
|
||||
@@ -304,7 +304,7 @@
|
||||
var/atom/throw_target = get_edge_target_turf(L, get_dir(src, get_step_away(L, src)))
|
||||
L.throw_at(throw_target, 4, 4)
|
||||
var/limb_to_hit = L.get_organ(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
||||
var/armor = L.run_armor_check(def_zone = limb_to_hit, attack_flag = MELEE, armour_penetration_percentage = 50)
|
||||
var/armor = L.run_armor_check(def_zone = limb_to_hit, attack_flag = MELEE, armor_penetration_percentage = 50)
|
||||
L.apply_damage(40, BRUTE, limb_to_hit, armor)
|
||||
|
||||
// Tendril-spawned Legion remains, the charred skeletons of those whose bodies sank into laval or fell into chasms.
|
||||
|
||||
@@ -110,8 +110,8 @@
|
||||
|
||||
update_icon(UPDATE_NAME)
|
||||
throwforce = possessed_item.throwforce
|
||||
armour_penetration_flat = possessed_item.armour_penetration_flat
|
||||
armour_penetration_percentage = possessed_item.armour_penetration_percentage
|
||||
armor_penetration_flat = possessed_item.armor_penetration_flat
|
||||
armor_penetration_percentage = possessed_item.armor_penetration_percentage
|
||||
melee_damage_lower = max(0, possessed_item.force - 5)
|
||||
melee_damage_upper = possessed_item.force + 5
|
||||
|
||||
|
||||
@@ -485,7 +485,7 @@ emp_act
|
||||
if(!I.force)
|
||||
return //item force is zero
|
||||
|
||||
var/armor = run_armor_check(affecting, MELEE, "<span class='warning'>Your armour has protected your [hit_area].</span>", "<span class='warning'>Your armour has softened hit to your [hit_area].</span>", armour_penetration_flat = I.armour_penetration_flat, armour_penetration_percentage = I.armour_penetration_percentage)
|
||||
var/armor = run_armor_check(affecting, MELEE, "<span class='warning'>Your armour has protected your [hit_area].</span>", "<span class='warning'>Your armour has softened hit to your [hit_area].</span>", armor_penetration_flat = I.armor_penetration_flat, armor_penetration_percentage = I.armor_penetration_percentage)
|
||||
if(armor == INFINITY)
|
||||
return
|
||||
|
||||
@@ -681,7 +681,7 @@ emp_act
|
||||
if(w_uniform)
|
||||
w_uniform.add_fingerprint(M)
|
||||
var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_selected))
|
||||
var/armor_block = run_armor_check(affecting, MELEE, armour_penetration_flat = 10)
|
||||
var/armor_block = run_armor_check(affecting, MELEE, armor_penetration_flat = 10)
|
||||
|
||||
playsound(loc, 'sound/weapons/slice.ogg', 25, TRUE, -1)
|
||||
visible_message("<span class='danger'>[M] has slashed at [src]!</span>", \
|
||||
@@ -715,7 +715,7 @@ emp_act
|
||||
if(!affecting)
|
||||
affecting = get_organ("chest")
|
||||
affecting.add_autopsy_data(M.name, damage) // Add the mob's name to the autopsy data
|
||||
var/armor = run_armor_check(affecting, MELEE, armour_penetration_flat = M.armour_penetration_flat, armour_penetration_percentage = M.armour_penetration_percentage)
|
||||
var/armor = run_armor_check(affecting, MELEE, armor_penetration_flat = M.armor_penetration_flat, armor_penetration_percentage = M.armor_penetration_percentage)
|
||||
apply_damage(damage, M.melee_damage_type, affecting, armor)
|
||||
updatehealth("animal attack")
|
||||
|
||||
@@ -730,7 +730,7 @@ emp_act
|
||||
if(!affecting)
|
||||
affecting = get_organ("chest")
|
||||
affecting.add_autopsy_data(attacker.name, damage) // Add the mob's name to the autopsy data
|
||||
var/armor = run_armor_check(affecting, MELEE, armour_penetration_flat = attacker.armour_penetration_flat, armour_penetration_percentage = attacker.armour_penetration_percentage)
|
||||
var/armor = run_armor_check(affecting, MELEE, armor_penetration_flat = attacker.armor_penetration_flat, armor_penetration_percentage = attacker.armor_penetration_percentage)
|
||||
apply_damage(damage, attacker.melee_damage_type, affecting, armor)
|
||||
updatehealth("basicmob attack")
|
||||
|
||||
|
||||
@@ -385,7 +385,7 @@
|
||||
|
||||
/datum/species/golem/sand/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
|
||||
if(!(P.original == H && P.firer == H))
|
||||
if((P.flag == BULLET || P.flag == BOMB) && P.armour_penetration_percentage < 100)
|
||||
if((P.flag == BULLET || P.flag == BOMB) && P.armor_penetration_percentage < 100)
|
||||
playsound(H, 'sound/effects/shovel_dig.ogg', 70, 1)
|
||||
H.visible_message("<span class='danger'>[P] sinks harmlessly in [H]'s sandy body!</span>", \
|
||||
"<span class='userdanger'>[P] sinks harmlessly in [H]'s sandy body!</span>")
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
1 - halfblock
|
||||
2 - fullblock
|
||||
*/
|
||||
/mob/living/proc/run_armor_check(def_zone = null, attack_flag = MELEE, absorb_text = "Your armor absorbs the blow!", soften_text = "Your armor softens the blow!", armour_penetration_flat = 0, penetrated_text = "Your armor was penetrated!", armour_penetration_percentage = 0)
|
||||
/mob/living/proc/run_armor_check(def_zone = null, attack_flag = MELEE, absorb_text = "Your armor absorbs the blow!", soften_text = "Your armor softens the blow!", armor_penetration_flat = 0, penetrated_text = "Your armor was penetrated!", armor_penetration_percentage = 0)
|
||||
var/armor = getarmor(def_zone, attack_flag)
|
||||
|
||||
if(armor == INFINITY)
|
||||
@@ -18,12 +18,12 @@
|
||||
return armor
|
||||
if(armor <= 0)
|
||||
return armor
|
||||
if(!armour_penetration_flat && !armour_penetration_percentage)
|
||||
if(!armor_penetration_flat && !armor_penetration_percentage)
|
||||
to_chat(src, "<span class='userdanger'>[soften_text]</span>")
|
||||
return armor
|
||||
|
||||
var/armor_original = armor
|
||||
armor = max(0, (armor * ((100 - armour_penetration_percentage) / 100)) - armour_penetration_flat)
|
||||
armor = max(0, (armor * ((100 - armor_penetration_percentage) / 100)) - armor_penetration_flat)
|
||||
if(armor_original <= armor)
|
||||
to_chat(src, "<span class='userdanger'>[soften_text]</span>")
|
||||
else
|
||||
@@ -44,7 +44,7 @@
|
||||
/mob/living/bullet_act(obj/item/projectile/P, def_zone)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, P, def_zone)
|
||||
//Armor
|
||||
var/armor = run_armor_check(def_zone, P.flag, armour_penetration_flat = P.armour_penetration_flat, armour_penetration_percentage = P.armour_penetration_percentage)
|
||||
var/armor = run_armor_check(def_zone, P.flag, armor_penetration_flat = P.armor_penetration_flat, armor_penetration_percentage = P.armor_penetration_percentage)
|
||||
if(!P.nodamage)
|
||||
apply_damage(P.damage, P.damage_type, def_zone, armor)
|
||||
if(P.dismemberment)
|
||||
@@ -140,7 +140,7 @@
|
||||
visible_message("<span class='danger'>[src] is hit by [thrown_item]!</span>", "<span class='userdanger'>You're hit by [thrown_item]!</span>")
|
||||
if(!thrown_item.throwforce)
|
||||
return
|
||||
var/armor = run_armor_check(zone, MELEE, "Your armor has protected your [parse_zone(zone)].", "Your armor has softened hit to your [parse_zone(zone)].", thrown_item.armour_penetration_flat, armour_penetration_percentage = thrown_item.armour_penetration_percentage)
|
||||
var/armor = run_armor_check(zone, MELEE, "Your armor has protected your [parse_zone(zone)].", "Your armor has softened hit to your [parse_zone(zone)].", thrown_item.armor_penetration_flat, armor_penetration_percentage = thrown_item.armor_penetration_percentage)
|
||||
apply_damage(thrown_item.throwforce, thrown_item.damtype, zone, armor, thrown_item.sharp, thrown_item)
|
||||
if(QDELETED(src)) //Damage can delete the mob.
|
||||
return
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
. = ..()
|
||||
if(.)
|
||||
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
||||
damage = run_armor(damage, M.melee_damage_type, MELEE, 0, M.armour_penetration_flat, M.armour_penetration_percentage)
|
||||
damage = run_armor(damage, M.melee_damage_type, MELEE, 0, M.armor_penetration_flat, M.armor_penetration_percentage)
|
||||
switch(M.melee_damage_type)
|
||||
if(BRUTE)
|
||||
adjustBruteLoss(damage)
|
||||
@@ -74,7 +74,7 @@
|
||||
. = ..()
|
||||
if(.)
|
||||
var/damage = rand(attacker.melee_damage_lower, attacker.melee_damage_upper)
|
||||
damage = run_armor(damage, attacker.melee_damage_type, MELEE, 0, attacker.armour_penetration_flat, attacker.armour_penetration_percentage)
|
||||
damage = run_armor(damage, attacker.melee_damage_type, MELEE, 0, attacker.armor_penetration_flat, attacker.armor_penetration_percentage)
|
||||
switch(attacker.melee_damage_type)
|
||||
if(BRUTE)
|
||||
adjustBruteLoss(damage)
|
||||
|
||||
@@ -280,7 +280,7 @@
|
||||
|
||||
/mob/living/silicon/bullet_act(obj/item/projectile/Proj)
|
||||
if(!Proj.nodamage)
|
||||
var/damage = run_armor(Proj.damage, Proj.damage_type, Proj.flag, 0, Proj.armour_penetration_flat, Proj.armour_penetration_percentage)
|
||||
var/damage = run_armor(Proj.damage, Proj.damage_type, Proj.flag, 0, Proj.armor_penetration_flat, Proj.armor_penetration_percentage)
|
||||
switch(Proj.damage_type)
|
||||
if(BRUTE)
|
||||
adjustBruteLoss(damage)
|
||||
@@ -305,18 +305,18 @@
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
bonus_damage = H.physiology.melee_bonus
|
||||
var/damage = run_armor(I.force + bonus_damage, I.damtype, MELEE, 0, I.armour_penetration_flat, I.armour_penetration_percentage)
|
||||
var/damage = run_armor(I.force + bonus_damage, I.damtype, MELEE, 0, I.armor_penetration_flat, I.armor_penetration_percentage)
|
||||
apply_damage(damage, I.damtype, def_zone)
|
||||
|
||||
///returns the damage value of the attack after processing the silicons's various armor protections
|
||||
/mob/living/silicon/proc/run_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration_flat = 0, armour_penetration_percentage = 0)
|
||||
/mob/living/silicon/proc/run_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armor_penetration_flat = 0, armor_penetration_percentage = 0)
|
||||
if(damage_type != BRUTE && damage_type != BURN)
|
||||
return 0
|
||||
var/armor_protection = 0
|
||||
if(damage_flag)
|
||||
armor_protection = armor.getRating(damage_flag)
|
||||
if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor.
|
||||
armor_protection = clamp((armor_protection * ((100 - armour_penetration_percentage) / 100)) - armour_penetration_flat, min(armor_protection, 0), 100)
|
||||
armor_protection = clamp((armor_protection * ((100 - armor_penetration_percentage) / 100)) - armor_penetration_flat, min(armor_protection, 0), 100)
|
||||
return round(damage_amount * (100 - armor_protection) * 0.01, DAMAGE_PRECISION)
|
||||
|
||||
/mob/living/silicon/apply_effect(effect = 0, effecttype = STUN, blocked = 0)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
attacktext = "slices"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
armour_penetration_percentage = 40
|
||||
armor_penetration_percentage = 40
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 100
|
||||
environment_smash = ENVIRONMENT_SMASH_RWALLS
|
||||
@@ -43,6 +43,6 @@
|
||||
maxHealth = 200
|
||||
health = 200
|
||||
speed = 3
|
||||
armour_penetration_flat = 5
|
||||
armor_penetration_flat = 5
|
||||
melee_damage_upper = 20
|
||||
environment_smash = 2
|
||||
|
||||
@@ -60,7 +60,7 @@ Difficulty: Hard
|
||||
friendly = "stares down"
|
||||
speak_emote = list("BUZZES")
|
||||
universal_speak = TRUE
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
melee_damage_type = BURN //Legs do the stomping, this is just a shock
|
||||
@@ -210,19 +210,19 @@ Difficulty: Hard
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/ancient_robot/enrage()
|
||||
. = ..()
|
||||
armour_penetration_percentage = 66
|
||||
TL.armour_penetration_percentage = 66
|
||||
TR.armour_penetration_percentage = 66
|
||||
BL.armour_penetration_percentage = 66
|
||||
BR.armour_penetration_percentage = 66
|
||||
armor_penetration_percentage = 66
|
||||
TL.armor_penetration_percentage = 66
|
||||
TR.armor_penetration_percentage = 66
|
||||
BL.armor_penetration_percentage = 66
|
||||
BR.armor_penetration_percentage = 66
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/ancient_robot/unrage()
|
||||
. = ..()
|
||||
armour_penetration_percentage = 50
|
||||
TL.armour_penetration_percentage = 50
|
||||
TR.armour_penetration_percentage = 50
|
||||
BL.armour_penetration_percentage = 50
|
||||
BR.armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
TL.armor_penetration_percentage = 50
|
||||
TR.armor_penetration_percentage = 50
|
||||
BL.armor_penetration_percentage = 50
|
||||
BR.armor_penetration_percentage = 50
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/ancient_robot/OpenFire()
|
||||
@@ -338,7 +338,7 @@ Difficulty: Hard
|
||||
L.visible_message("<span class='danger'>[src] slams into [L]!</span>", "<span class='userdanger'>[src] tramples you into the ground!</span>")
|
||||
forceMove(get_turf(L))
|
||||
var/limb_to_hit = L.get_organ(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
||||
L.apply_damage(25, BRUTE, limb_to_hit, L.run_armor_check(limb_to_hit, MELEE, null, null, armour_penetration_flat, armour_penetration_percentage))
|
||||
L.apply_damage(25, BRUTE, limb_to_hit, L.run_armor_check(limb_to_hit, MELEE, null, null, armor_penetration_flat, armor_penetration_percentage))
|
||||
playsound(get_turf(L), 'sound/effects/meteorimpact.ogg', 100, TRUE)
|
||||
shake_camera(L, 4, 3)
|
||||
shake_camera(src, 2, 3)
|
||||
@@ -664,7 +664,7 @@ Difficulty: Hard
|
||||
projectilesound = 'sound/weapons/gunshots/gunshot.ogg'
|
||||
projectiletype = /obj/item/projectile/bullet/ancient_robot_bullet
|
||||
attacktext = "stomps on"
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
obj_damage = 400
|
||||
@@ -767,7 +767,7 @@ Difficulty: Hard
|
||||
L.visible_message("<span class='danger'>[src] slams into [L]!</span>", "<span class='userdanger'>[src] tramples you into the ground!</span>")
|
||||
forceMove(get_turf(L))
|
||||
var/limb_to_hit = L.get_organ(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
||||
L.apply_damage(12.5, BRUTE, limb_to_hit, L.run_armor_check(limb_to_hit, MELEE, null, null, armour_penetration_flat, armour_penetration_percentage))
|
||||
L.apply_damage(12.5, BRUTE, limb_to_hit, L.run_armor_check(limb_to_hit, MELEE, null, null, armor_penetration_flat, armor_penetration_percentage))
|
||||
playsound(get_turf(L), 'sound/effects/meteorimpact.ogg', 100, TRUE)
|
||||
shake_camera(L, 4, 3)
|
||||
shake_camera(src, 2, 3)
|
||||
|
||||
@@ -41,7 +41,7 @@ Difficulty: Hard
|
||||
friendly = "stares down"
|
||||
icon = 'icons/mob/lavaland/96x96megafauna.dmi'
|
||||
speak_emote = list("gurgles")
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
melee_damage_lower = 40
|
||||
melee_damage_upper = 40
|
||||
speed = 5
|
||||
@@ -321,7 +321,7 @@ Difficulty: Hard
|
||||
to_chat(L, "<span class='userdanger'>[src] rends you!</span>")
|
||||
playsound(T, attack_sound, 100, TRUE, -1)
|
||||
var/limb_to_hit = L.get_organ(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
||||
L.apply_damage(second_life ? 20 : 10, BRUTE, limb_to_hit, L.run_armor_check(limb_to_hit, MELEE, null, null, armour_penetration_flat, armour_penetration_percentage))
|
||||
L.apply_damage(second_life ? 20 : 10, BRUTE, limb_to_hit, L.run_armor_check(limb_to_hit, MELEE, null, null, armor_penetration_flat, armor_penetration_percentage))
|
||||
SLEEP_CHECK_DEATH(3)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodgrab(turf/T, handedness)
|
||||
@@ -650,7 +650,7 @@ Difficulty: Hard
|
||||
desc = "Oh they are PISSED. And quite injured too..."
|
||||
health = 750
|
||||
maxHealth = 750
|
||||
armour_penetration_percentage = 75
|
||||
armor_penetration_percentage = 75
|
||||
second_life = TRUE
|
||||
enraged = TRUE
|
||||
rapid_melee = 12
|
||||
|
||||
@@ -38,7 +38,7 @@ Difficulty: Very Hard
|
||||
friendly = "stares down"
|
||||
icon = 'icons/mob/lavaland/96x96megafauna.dmi'
|
||||
speak_emote = list("roars")
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
melee_damage_lower = 40
|
||||
melee_damage_upper = 40
|
||||
speed = 10
|
||||
@@ -360,7 +360,7 @@ Difficulty: Very Hard
|
||||
name ="death bolt"
|
||||
icon_state= "chronobolt"
|
||||
damage = 25
|
||||
armour_penetration_percentage = 100
|
||||
armor_penetration_percentage = 100
|
||||
speed = 2
|
||||
|
||||
/obj/item/projectile/colossus/on_hit(atom/target, blocked = 0)
|
||||
|
||||
@@ -43,7 +43,7 @@ Difficulty: Medium
|
||||
icon_dead = "dragon_dead"
|
||||
friendly = "stares down"
|
||||
speak_emote = list("roars")
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
melee_damage_lower = 40
|
||||
melee_damage_upper = 40
|
||||
speed = 5
|
||||
|
||||
@@ -48,7 +48,7 @@ Difficulty: Hard
|
||||
icon = 'icons/mob/lavaland/hierophant_new.dmi'
|
||||
faction = list("boss") //asteroid mobs? get that shit out of my beautiful square house
|
||||
speak_emote = list("preaches")
|
||||
armour_penetration_percentage = 100 //It does 15 damage / only attacks when enraged
|
||||
armor_penetration_percentage = 100 // It does 15 damage / only attacks when enraged
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
speed = 10
|
||||
|
||||
@@ -28,7 +28,7 @@ Difficulty: Medium
|
||||
attacktext = "chomps"
|
||||
attack_sound = 'sound/misc/demon_attack1.ogg'
|
||||
speak_emote = list("echoes")
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
melee_damage_lower = 40
|
||||
melee_damage_upper = 40
|
||||
wander = FALSE
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
health = 1000
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 30
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
attacktext = "beats down on"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
throw_message = "does nothing to the rocky hide of the"
|
||||
@@ -178,7 +178,7 @@
|
||||
health = 50
|
||||
melee_damage_lower = 12.5
|
||||
melee_damage_upper = 12.5
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
attacktext = "bashes against"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
throw_message = "does nothing to the rocky hide of the"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
health = 1000
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
light_power = 5
|
||||
light_range = 2
|
||||
light_color = "#FF0000"
|
||||
@@ -226,7 +226,7 @@
|
||||
name = "death bolt"
|
||||
icon_state = "chronobolt"
|
||||
damage = 15
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
speed = 2
|
||||
|
||||
/obj/item/projectile/herald/teleshot
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
health = 1000
|
||||
melee_damage_lower = 35
|
||||
melee_damage_upper = 35
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
attacktext = "slashes its arms at"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
throw_message = "doesn't affect the sturdiness of"
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
health = 1000
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
attacktext = "smashes into the side of"
|
||||
attack_sound = 'sound/weapons/sonic_jackhammer.ogg'
|
||||
throw_message = "merely dinks off of the"
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
damage_coeff = list(BRUTE = 0.9, BURN = 0.9, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) // Imitates our armor
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 30
|
||||
armour_penetration_percentage = 50
|
||||
armor_penetration_percentage = 50
|
||||
loot = list(
|
||||
/obj/effect/decal/cleanable/blood/innards,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
|
||||
@@ -66,9 +66,9 @@
|
||||
/// How much damage this simple animal does to objects, if any
|
||||
var/obj_damage = 0
|
||||
/// Flat armour reduction, occurs after percentage armour penetration.
|
||||
var/armour_penetration_flat = 0
|
||||
var/armor_penetration_flat = 0
|
||||
/// Percentage armour reduction, happens before flat armour reduction.
|
||||
var/armour_penetration_percentage = 0
|
||||
var/armor_penetration_percentage = 0
|
||||
/// Damage type of a simple mob's melee attack, should it do damage.
|
||||
var/melee_damage_type = BRUTE
|
||||
/// 1 for full damage , 0 for none , -1 for 1:1 heal from that source
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
icon_state = "energy_katana"
|
||||
item_state = "energy_katana"
|
||||
throwforce = 20
|
||||
armour_penetration_percentage = 50
|
||||
armour_penetration_flat = 10
|
||||
armor_penetration_percentage = 50
|
||||
armor_penetration_flat = 10
|
||||
var/cooldown = 0 // Because spam aint cool, yo.
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
light_color = LIGHT_COLOR_RED
|
||||
var/backstab_sound = 'sound/items/unsheath.ogg'
|
||||
var/backstab_damage = 12
|
||||
armour_penetration_flat = 20
|
||||
armor_penetration_flat = 20
|
||||
throw_speed = 4
|
||||
|
||||
/obj/item/pen/edagger/attack__legacy__attackchain(mob/living/M, mob/living/user, def_zone)
|
||||
|
||||
@@ -460,7 +460,7 @@
|
||||
M.gets_drilled(K.firer)
|
||||
if(modifier)
|
||||
for(var/mob/living/L in range(1, target_turf) - K.firer - target)
|
||||
var/armor = L.run_armor_check(K.def_zone, K.flag, null, null, K.armour_penetration_flat, K.armour_penetration_percentage)
|
||||
var/armor = L.run_armor_check(K.def_zone, K.flag, null, null, K.armor_penetration_flat, K.armor_penetration_percentage)
|
||||
L.apply_damage(K.damage * modifier, K.damage_type, K.def_zone, armor)
|
||||
to_chat(L, "<span class='userdanger'>You're struck by a [K.name]!</span>")
|
||||
|
||||
@@ -564,7 +564,7 @@
|
||||
var/kill_modifier = 1
|
||||
if(K.pressure_decrease_active)
|
||||
kill_modifier *= K.pressure_decrease
|
||||
var/armor = L.run_armor_check(K.def_zone, K.flag, null, null, K.armour_penetration_flat, K.armour_penetration_percentage)
|
||||
var/armor = L.run_armor_check(K.def_zone, K.flag, null, null, K.armor_penetration_flat, K.armor_penetration_percentage)
|
||||
L.apply_damage(bounties_reaped[L.type]*kill_modifier, K.damage_type, K.def_zone, armor)
|
||||
|
||||
/obj/item/borg/upgrade/modkit/bounty/proc/get_kill(mob/living/L)
|
||||
|
||||
@@ -1095,7 +1095,7 @@
|
||||
desc = "It's about a foot of weird silvery metal with a wicked point."
|
||||
damage = 25
|
||||
knockdown = 2
|
||||
armour_penetration_flat = 30
|
||||
armor_penetration_flat = 30
|
||||
icon_state = "magspear"
|
||||
|
||||
/obj/item/projectile/bullet/spike/on_hit(atom/target, blocked = 0)
|
||||
|
||||
@@ -69,11 +69,11 @@
|
||||
|
||||
/obj/item/projectile/bullet/saw
|
||||
damage = 45
|
||||
armour_penetration_flat = 5
|
||||
armor_penetration_flat = 5
|
||||
|
||||
/obj/item/projectile/bullet/saw/bleeding
|
||||
damage = 20
|
||||
armour_penetration_flat = 0
|
||||
armor_penetration_flat = 0
|
||||
|
||||
/obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = 0, hit_zone)
|
||||
. = ..()
|
||||
@@ -83,15 +83,15 @@
|
||||
|
||||
/obj/item/projectile/bullet/saw/hollow
|
||||
damage = 60
|
||||
armour_penetration_flat = -30
|
||||
armor_penetration_flat = -30
|
||||
|
||||
/obj/item/projectile/bullet/saw/ap
|
||||
damage = 40
|
||||
armour_penetration_percentage = 100
|
||||
armor_penetration_percentage = 100
|
||||
|
||||
/obj/item/projectile/bullet/saw/incen
|
||||
damage = 7
|
||||
armour_penetration_flat = 0
|
||||
armor_penetration_flat = 0
|
||||
immolate = 3
|
||||
|
||||
/obj/item/projectile/bullet/saw/incen/Move()
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
/obj/item/projectile/bullet/sniper
|
||||
damage = 70
|
||||
weaken = 10 SECONDS
|
||||
armour_penetration_flat = 70
|
||||
armor_penetration_flat = 70
|
||||
forced_accuracy = TRUE
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSGIRDER
|
||||
speed = 0.5
|
||||
@@ -116,7 +116,7 @@
|
||||
harmful = FALSE
|
||||
|
||||
/obj/item/projectile/bullet/sniper/soporific
|
||||
armour_penetration_flat = 0
|
||||
armor_penetration_flat = 0
|
||||
nodamage = 1
|
||||
weaken = 0
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
projectile_type = /obj/item/projectile/bullet/sniper/haemorrhage
|
||||
|
||||
/obj/item/projectile/bullet/sniper/haemorrhage
|
||||
armour_penetration_flat = 25
|
||||
armor_penetration_flat = 25
|
||||
damage = 45
|
||||
weaken = 6 SECONDS
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
/obj/item/projectile/beam/disabler/weak
|
||||
name = "weakened disabler beam"
|
||||
damage = 15
|
||||
armour_penetration_flat = -10
|
||||
armor_penetration_flat = -10
|
||||
light_color = LIGHT_COLOR_BLUE
|
||||
|
||||
/obj/item/projectile/beam/disabler/fake
|
||||
@@ -252,7 +252,7 @@
|
||||
name = "instagib laser"
|
||||
icon_state = "purple_laser"
|
||||
damage = 200
|
||||
armour_penetration_percentage = 100
|
||||
armor_penetration_percentage = 100
|
||||
impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser
|
||||
light_color = LIGHT_COLOR_PURPLE
|
||||
|
||||
|
||||
@@ -66,26 +66,26 @@
|
||||
|
||||
/obj/item/projectile/bullet/armourpiercing
|
||||
damage = 17
|
||||
armour_penetration_flat = 10
|
||||
armor_penetration_flat = 10
|
||||
|
||||
/obj/item/projectile/bullet/armourpiercing/wt550
|
||||
damage = 15
|
||||
armour_penetration_percentage = 50
|
||||
armour_penetration_flat = 25
|
||||
armor_penetration_percentage = 50
|
||||
armor_penetration_flat = 25
|
||||
|
||||
/obj/item/projectile/bullet/pellet
|
||||
name = "pellet"
|
||||
damage = 12.5
|
||||
tile_dropoff = 0.75
|
||||
tile_dropoff_s = 1.25
|
||||
armour_penetration_flat = -20
|
||||
armor_penetration_flat = -20
|
||||
|
||||
/obj/item/projectile/bullet/pellet/rubber
|
||||
name = "rubber pellet"
|
||||
damage = 3
|
||||
stamina = 12.5
|
||||
icon_state = "bullet-r"
|
||||
armour_penetration_flat = -10
|
||||
armor_penetration_flat = -10
|
||||
|
||||
/obj/item/projectile/bullet/pellet/rubber/on_hit(atom/target, blocked = 0)
|
||||
. = ..()
|
||||
@@ -125,11 +125,11 @@
|
||||
|
||||
/obj/item/projectile/bullet/midbullet3/hp
|
||||
damage = 40
|
||||
armour_penetration_flat = -40
|
||||
armor_penetration_flat = -40
|
||||
|
||||
/obj/item/projectile/bullet/midbullet3/ap
|
||||
damage = 27
|
||||
armour_penetration_flat = 40
|
||||
armor_penetration_flat = 40
|
||||
|
||||
/obj/item/projectile/bullet/midbullet3/fire
|
||||
immolate = 1
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
icon_state = "bluespace"
|
||||
impact_effect_type = /obj/effect/temp_visual/bsg_kaboom
|
||||
damage = BSG_BASE_DAMAGE
|
||||
armour_penetration_flat = 50
|
||||
armor_penetration_flat = 50
|
||||
range = 9
|
||||
knockdown = 4 SECONDS //This is going to knock you off your feet
|
||||
eyeblur = 10 SECONDS
|
||||
@@ -133,7 +133,7 @@
|
||||
damage = 45
|
||||
damage_type = BURN
|
||||
flag = "energy"
|
||||
armour_penetration_flat = 10 // It can have a little armor pen, as a treat. Bigger than it looks, energy armor is often low.
|
||||
armor_penetration_flat = 10 // It can have a little armor pen, as a treat. Bigger than it looks, energy armor is often low.
|
||||
shield_buster = TRUE
|
||||
var/reached_target = FALSE
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
damage = 0
|
||||
damage_type = OXY
|
||||
nodamage = 1
|
||||
armour_penetration_percentage = 100
|
||||
armor_penetration_percentage = 100
|
||||
flag = MAGIC
|
||||
antimagic_flags = MAGIC_RESISTANCE
|
||||
antimagic_charge_cost = 1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
damage = 0
|
||||
damage_type = OXY
|
||||
nodamage = 1
|
||||
armour_penetration_percentage = 100
|
||||
armor_penetration_percentage = 100
|
||||
flag = MAGIC
|
||||
antimagic_flags = MAGIC_RESISTANCE
|
||||
antimagic_charge_cost = 1
|
||||
|
||||
@@ -292,6 +292,6 @@
|
||||
force_unwielded = 12
|
||||
force_wielded = 22
|
||||
throwforce = 25
|
||||
armour_penetration_percentage = 15
|
||||
armor_penetration_percentage = 15
|
||||
embed_chance = 0 // would suck to lose this after one throw
|
||||
var/bonus_burn = 5 // currently does nothing
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
return FALSE
|
||||
target.visible_message("<span class='danger'>[user] pushes [target]'s head into [src]!</span>", \
|
||||
"<span class='userdanger'>[user] pushes your head into [src]! The heat is agonizing!</span>")
|
||||
var/armor = target.run_armor_check(def_zone = BODY_ZONE_HEAD, attack_flag = MELEE, armour_penetration_percentage = 50)
|
||||
var/armor = target.run_armor_check(def_zone = BODY_ZONE_HEAD, attack_flag = MELEE, armor_penetration_percentage = 50)
|
||||
target.apply_damage(40, BURN, BODY_ZONE_HEAD, armor)
|
||||
target.adjust_fire_stacks(5)
|
||||
target.IgniteMob()
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
return FALSE
|
||||
target.visible_message("<span class='danger'>[user] hammers [target]'s head with [src]!</span>", \
|
||||
"<span class='userdanger'>[user] hammers your head with [src]! Did somebody get the license plate on that car?</span>")
|
||||
var/armor = target.run_armor_check(def_zone = BODY_ZONE_HEAD, attack_flag = MELEE, armour_penetration_percentage = 50)
|
||||
var/armor = target.run_armor_check(def_zone = BODY_ZONE_HEAD, attack_flag = MELEE, armor_penetration_percentage = 50)
|
||||
target.apply_damage(40, BRUTE, BODY_ZONE_HEAD, armor)
|
||||
target.Weaken(4 SECONDS)
|
||||
target.emote("scream")
|
||||
|
||||
@@ -525,7 +525,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
sharp = TRUE
|
||||
force = 18
|
||||
armour_penetration_percentage = -100 //This means that armor twice as effective against it
|
||||
armor_penetration_percentage = -100 //This means that armor twice as effective against it
|
||||
reach = 2
|
||||
hitsound = 'sound/weapons/whip.ogg'
|
||||
attack_verb = list("slashes", "whips", "lashes", "lacerates")
|
||||
@@ -925,7 +925,7 @@
|
||||
icon_state = "syndie_mantis"
|
||||
item_state = "syndie_mantis"
|
||||
force = 15
|
||||
armour_penetration_percentage = 30
|
||||
armor_penetration_percentage = 30
|
||||
|
||||
/obj/item/melee/mantis_blade/syndicate/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
Reference in New Issue
Block a user