Dismemberment tweaks (#17453)
* Dismemberment tweaks * Lowers some AP to address remies concerns * Lowers the dualsaber AP again to prevent nonsense from occuring * Adds HF blade * Honk Dagger typo fix * Lowers chaplain AP again
@@ -576,4 +576,6 @@ obj/item/proc/item_action_slot_check(slot, mob/user)
|
||||
return sharpness
|
||||
|
||||
/obj/item/proc/can_dismember()
|
||||
return sharpness && w_class >= 3
|
||||
if((sharpness || damtype == BURN) && w_class >= 3)
|
||||
return 1
|
||||
return 0
|
||||
@@ -145,7 +145,7 @@
|
||||
icon_state = "sord"
|
||||
item_state = "sord"
|
||||
slot_flags = SLOT_BELT
|
||||
force = 2
|
||||
force = 4.13
|
||||
throwforce = 1
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
@@ -156,11 +156,18 @@
|
||||
name = "reaper scythe"
|
||||
desc = "Ask not for whom the bell tolls..."
|
||||
w_class = 4
|
||||
armour_penetration = 100
|
||||
armour_penetration = 35
|
||||
slot_flags = SLOT_BACK
|
||||
sharpness = IS_SHARP
|
||||
attack_verb = list("chopped", "sliced", "cut", "reaped")
|
||||
|
||||
/obj/item/weapon/nullrod/scythe/vibro
|
||||
icon_state = "hfrequency0"
|
||||
item_state = "hfrequency1"
|
||||
name = "high frequency blade"
|
||||
desc = "Bad references are the DNA of the soul."
|
||||
attack_verb = list("chopped", "sliced", "cut", "zandatsu'd")
|
||||
|
||||
/obj/item/weapon/nullrod/hammmer
|
||||
icon_state = "hammeron"
|
||||
item_state = "hammeron"
|
||||
@@ -186,7 +193,7 @@
|
||||
icon_state = "honkrender"
|
||||
item_state = "render"
|
||||
name = "clown dagger"
|
||||
desc = "Used for absolutely hilarious sacrafices."
|
||||
desc = "Used for absolutely hilarious sacrifices."
|
||||
hitsound = 'sound/items/bikehorn.ogg'
|
||||
sharpness = IS_SHARP
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
@@ -276,6 +283,14 @@
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
|
||||
/obj/item/weapon/nullrod/pitchfork
|
||||
icon_state = "pitchfork0"
|
||||
name = "unholy pitchfork"
|
||||
w_class = 3
|
||||
desc = "Holding this makes you look absolutely devilish."
|
||||
attack_verb = list("poked", "impaled", "pierced", "jabbed")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
sharpness = IS_SHARP
|
||||
|
||||
/obj/item/weapon/nullrod/tribal_knife/New()
|
||||
..()
|
||||
@@ -286,4 +301,4 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/nullrod/tribal_knife/process()
|
||||
slowdown = rand(-2, 2)
|
||||
slowdown = rand(-2, 2)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
sharpness = IS_SHARP
|
||||
embed_chance = 75
|
||||
embedded_impact_pain_multiplier = 10
|
||||
armour_penetration = 50
|
||||
armour_penetration = 35
|
||||
origin_tech = "magnets=3;syndicate=4"
|
||||
block_chance = 50
|
||||
var/hacked = 0
|
||||
|
||||
@@ -201,7 +201,7 @@
|
||||
wieldsound = 'sound/weapons/saberon.ogg'
|
||||
unwieldsound = 'sound/weapons/saberoff.ogg'
|
||||
hitsound = "swing_hit"
|
||||
armour_penetration = 75
|
||||
armour_penetration = 35
|
||||
origin_tech = "magnets=3;syndicate=4"
|
||||
item_color = "green"
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
@@ -419,9 +419,6 @@
|
||||
M.Copy_Parent(user, 100, user.health/2.5, 12, 30)
|
||||
M.GiveTarget(L)
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/twohanded/pitchfork
|
||||
icon_state = "pitchfork0"
|
||||
name = "pitchfork"
|
||||
@@ -479,3 +476,35 @@
|
||||
user << "<span class ='warning'>The [src] burns in your hands.</span>"
|
||||
user.apply_damage(rand(force/2, force), BURN, pick("l_arm", "r_arm"))
|
||||
..()
|
||||
|
||||
//HF blade
|
||||
|
||||
/obj/item/weapon/twohanded/vibro_weapon
|
||||
icon_state = "hfrequency0"
|
||||
name = "vibro sword"
|
||||
desc = "A potent weapon capable of cutting through nearly anything. Wielding it in two hands will allow you to deflect gunfire."
|
||||
force_unwielded = 20
|
||||
force_wielded = 40
|
||||
armour_penetration = 100
|
||||
block_chance = 40
|
||||
throwforce = 20
|
||||
throw_speed = 4
|
||||
sharpness = IS_SHARP
|
||||
attack_verb = list("cut", "sliced", "diced")
|
||||
w_class = 4
|
||||
slot_flags = SLOT_BACK
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
/obj/item/weapon/twohanded/vibro_weapon/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
if(wielded)
|
||||
final_block_chance *= 2
|
||||
if(wielded || attack_type != PROJECTILE_ATTACK)
|
||||
if(prob(final_block_chance))
|
||||
if(attack_type == PROJECTILE_ATTACK)
|
||||
owner.visible_message("<span class='danger'>[owner] deflects [attack_text] with [src]!</span>")
|
||||
playsound(src, pick("sound/weapons/bulletflyby.ogg","sound/weapons/bulletflyby2.ogg","sound/weapons/bulletflyby3.ogg"), 75, 1)
|
||||
return 1
|
||||
else
|
||||
owner.visible_message("<span class='danger'>[owner] parries [attack_text] with [src]!</span>")
|
||||
return 1
|
||||
return 0
|
||||
@@ -50,6 +50,7 @@
|
||||
w_class = 3
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
block_chance = 50
|
||||
sharpness = IS_SHARP
|
||||
|
||||
/obj/item/weapon/claymore/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
@@ -68,6 +69,7 @@
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
block_chance = 50
|
||||
sharpness = IS_SHARP
|
||||
|
||||
/obj/item/weapon/katana/cursed
|
||||
slot_flags = null
|
||||
@@ -158,6 +160,7 @@
|
||||
icon_state = "switchblade_ext"
|
||||
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
sharpness = IS_SHARP
|
||||
else
|
||||
force = 3
|
||||
w_class = 2
|
||||
@@ -165,6 +168,7 @@
|
||||
icon_state = "switchblade"
|
||||
attack_verb = list("stubbed", "poked")
|
||||
hitsound = 'sound/weapons/Genhit.ogg'
|
||||
sharpness = IS_BLUNT
|
||||
|
||||
/obj/item/weapon/switchblade/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is slitting \his own throat with the [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
throw_speed = 0
|
||||
throw_range = 1
|
||||
force = 200
|
||||
armour_penetration = 100
|
||||
armour_penetration = 1000
|
||||
anchored = TRUE
|
||||
flags = HANDSLOW
|
||||
var/team = WHITE_TEAM
|
||||
|
||||
@@ -1035,16 +1035,20 @@
|
||||
return 0 //item force is zero
|
||||
|
||||
//dismemberment
|
||||
if(affecting.get_damage() >= affecting.max_damage)
|
||||
if(affecting.get_damage() >= (affecting.max_damage - I.armour_penetration/2))
|
||||
if(I.can_dismember() && prob(I.force*(I.w_class-1)))
|
||||
if(affecting.dismember())
|
||||
if(affecting.dismember(I.damtype))
|
||||
I.add_blood(H)
|
||||
playsound(get_turf(H), pick('sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg'), 80, 1)
|
||||
affecting.add_blood(H)
|
||||
var/turf/location = H.loc
|
||||
if(istype(location))
|
||||
location.add_blood(H)
|
||||
return
|
||||
switch(I.damtype)
|
||||
if(BURN)
|
||||
playsound(get_turf(H), 'sound/weapons/sear.ogg', 80, 1)
|
||||
else
|
||||
playsound(get_turf(H), pick('sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg'), 80, 1)
|
||||
affecting.add_blood(H)
|
||||
var/turf/location = H.loc
|
||||
if(istype(location))
|
||||
location.add_blood(H)
|
||||
return
|
||||
|
||||
var/bloody = 0
|
||||
if(((I.damtype == BRUTE) && I.force && prob(25 + (I.force * 2))))
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/obj/item/weapon/katana/energy
|
||||
name = "energy katana"
|
||||
desc = "A katana infused with strong energy."
|
||||
@@ -6,7 +5,7 @@
|
||||
item_state = "energy_katana"
|
||||
force = 40
|
||||
throwforce = 20
|
||||
armour_penetration = 15
|
||||
armour_penetration = 50
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
|
||||
/obj/item/weapon/katana/energy/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
|
||||
@@ -284,7 +284,7 @@
|
||||
/obj/item/bodypart/l_arm
|
||||
name = "left arm"
|
||||
icon_state = "l_arm"
|
||||
max_damage = 75
|
||||
max_damage = 60
|
||||
body_zone ="l_arm"
|
||||
body_part = ARM_LEFT
|
||||
px_x = -6
|
||||
@@ -293,7 +293,7 @@
|
||||
/obj/item/bodypart/r_arm
|
||||
name = "right arm"
|
||||
icon_state = "r_arm"
|
||||
max_damage = 75
|
||||
max_damage = 60
|
||||
body_zone = "r_arm"
|
||||
body_part = ARM_RIGHT
|
||||
px_x = 6
|
||||
@@ -302,7 +302,7 @@
|
||||
/obj/item/bodypart/l_leg
|
||||
name = "left leg"
|
||||
icon_state = "l_leg"
|
||||
max_damage = 75
|
||||
max_damage = 60
|
||||
body_zone = "l_leg"
|
||||
body_part = LEG_LEFT
|
||||
px_x = -2
|
||||
@@ -311,7 +311,7 @@
|
||||
/obj/item/bodypart/r_leg
|
||||
name = "right leg"
|
||||
icon_state = "r_leg"
|
||||
max_damage = 75
|
||||
max_damage = 60
|
||||
body_zone = "r_leg"
|
||||
body_part = LEG_RIGHT
|
||||
px_x = 2
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
|
||||
//Dismember a limb
|
||||
/obj/item/bodypart/proc/dismember()
|
||||
/obj/item/bodypart/proc/dismember(dam_type = BRUTE)
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(!istype(H) || !H.dna.species.has_dismemberment) // species don't allow dismemberment
|
||||
return 0
|
||||
@@ -12,6 +12,9 @@
|
||||
H.emote("scream")
|
||||
drop_limb()
|
||||
|
||||
if(dam_type == BURN)
|
||||
burn()
|
||||
return 1
|
||||
var/direction = pick(cardinal)
|
||||
var/t_range = rand(2,max(throw_range/2, 2))
|
||||
var/turf/target_turf = get_turf(src)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
/obj/item/bodypart/head
|
||||
name = "head"
|
||||
desc = "Didn't make sense not to live for fun, your brain gets smart but your head gets dumb."
|
||||
|
||||
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 113 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |