Changes the vast majority of punching to be more changable with gear, martial arts now utilize species punch values for damage.

This commit is contained in:
necromanceranne
2020-04-03 19:42:25 +11:00
parent b37dc1e322
commit 0c46c151f9
21 changed files with 204 additions and 112 deletions
+1 -1
View File
@@ -309,7 +309,7 @@
/datum/export/gear/combatgloves
cost = 80
unit_name = "combat gloves"
export_types = list(/obj/item/clothing/gloves/combat, /obj/item/clothing/gloves/rapid, /obj/item/clothing/gloves/krav_maga)
export_types = list(/obj/item/clothing/gloves/combat, /obj/item/clothing/gloves/fingerless/pugilist/rapid, /obj/item/clothing/gloves/krav_maga)
include_subtypes = TRUE
/datum/export/gear/bonegloves
+1 -1
View File
@@ -287,7 +287,7 @@
/datum/export/weapon/gloves
cost = 90
unit_name = "star struck gloves"
export_types = list(/obj/item/clothing/gloves/rapid)
export_types = list(/obj/item/clothing/gloves/fingerless/pugilist/rapid)
/datum/export/weapon/l6
cost = 500
+2 -2
View File
@@ -207,11 +207,11 @@
/obj/item/clothing/gloves/color/latex/equipped(mob/user, slot)
..()
if(slot == SLOT_GLOVES)
ADD_TRAIT(user, carrytrait, CLOTHING_TRAIT)
ADD_TRAIT(user, carrytrait, GLOVE_TRAIT)
/obj/item/clothing/gloves/color/latex/dropped(mob/user)
..()
REMOVE_TRAIT(user, carrytrait, CLOTHING_TRAIT)
REMOVE_TRAIT(user, carrytrait, GLOVE_TRAIT)
/obj/item/clothing/gloves/color/latex/nitrile
name = "nitrile gloves"
+117 -49
View File
@@ -12,6 +12,122 @@
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
strip_mod = 0.9
/obj/item/clothing/gloves/fingerless/pugilist
name = "armwraps"
desc = "A series of armwraps. Makes you pretty keen to start punching people."
icon_state = "armwraps"
item_state = "armwraps"
body_parts_covered = ARMS
cold_protection = ARMS
strip_delay = 300 //you can't just yank them off
var/enhancement = 0 //it's a +0 to your punches because it isn't magical
var/inherited_trait = TRAIT_NOGUNS //what are you, dishonoroable?
var/secondary_trait = TRAIT_FEARLESS //what are you, a coward?
/obj/item/clothing/gloves/fingerless/pugilist/equipped(mob/user, slot)
..()
if(slot == SLOT_GLOVES)
if(ishuman(user))
var/mob/living/carbon/human/H = user
ADD_TRAIT(H, TRAIT_PUGILIST, GLOVE_TRAIT)
ADD_TRAIT(H, inherited_trait, GLOVE_TRAIT)
ADD_TRAIT(H, secondary_trait, GLOVE_TRAIT)
H.dna.species.punchdamagehigh += enhancement
H.dna.species.punchdamagelow += enhancement
H.dna.species.punchstunthreshold -= enhancement
/obj/item/clothing/gloves/fingerless/pugilist/dropped(mob/user)
..()
REMOVE_TRAIT(user, TRAIT_PUGILIST, GLOVE_TRAIT)
REMOVE_TRAIT(user, inherited_trait, GLOVE_TRAIT)
REMOVE_TRAIT(user, secondary_trait, GLOVE_TRAIT)
if(ishuman(user))
var/mob/living/carbon/human/H = user
H.dna.species.punchdamagehigh -= enhancement
H.dna.species.punchdamagelow -= enhancement
H.dna.species.punchstunthreshold += enhancement
/obj/item/clothing/gloves/fingerless/pugilist/holy
name = "armwraps of unyielding resolve"
desc = "A series of armwraps, soaked in holy water. Makes you pretty keen to smite evil magic users."
enhancement = 1 //It is not magic that makes you punch harder, but force of will. Trust me.
secondary_trait = TRAIT_ANTIMAGIC
/obj/item/clothing/gloves/fingerless/pugilist/magic
name = "armwraps of mighty fists"
desc = "A series of armwraps. Makes you pretty keen to go adventuring and punch dragons."
resistance_flags = FIRE_PROOF | ACID_PROOF //magic items are harder to damage with energy this is a dnd joke okay?
enhancement = 1 //They're +1!
/obj/item/clothing/gloves/fingerless/pugilist/hungryghost
name = "armwraps of the hungry ghost"
desc = "A series of blackened, bloodstained armwraps scrawled with strange geometric symbols. Makes you pretty keen to commit horrible acts against the living through bloody carnage."
icon_state = "narsiearmwraps"
item_state = "narsiearmwraps"
resistance_flags = FIRE_PROOF | ACID_PROOF
armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 35, "rad" = 0, "fire" = 50, "acid" = 50)
enhancement = 3
secondary_trait = TRAIT_KI_VAMPIRE
/obj/item/clothing/gloves/fingerless/pugilist/brassmountain
name = "armbands of the brass mountain"
desc = "A series of scolding hot brass armbands. Makes you pretty keen to bring the light to the unenlightened through unmitigated violence."
icon_state = "ratvararmwraps"
item_state = "ratvararmwraps"
resistance_flags = FIRE_PROOF | ACID_PROOF
armor = list("melee" = 10, "bullet" = 0, "laser" = -10, "energy" = 0, "bomb" = 0, "bio" = 35, "rad" = 0, "fire" = 50, "acid" = 50)
enhancement = 4 //The artifice of Ratvar is unmatched except when it is.
secondary_trait = TRAIT_STRONG_GRABBER
/obj/item/clothing/gloves/fingerless/pugilist/rapid
name = "Bands of the North Star"
desc = "The armbands of a deadly martial artist. Makes you pretty keen to put an end to evil in an extremely violent manner."
icon_state = "rapid"
item_state = "rapid"
enhancement = 7 //omae wa mou shindeiru
var/warcry = "AT"
secondary_trait = TRAIT_NODROP
/obj/item/clothing/gloves/fingerless/pugilist/rapid/Touch(mob/living/target,proximity = TRUE)
if(!istype(target))
return
var/mob/living/M = loc
M.changeNext_move(CLICK_CD_RAPID)
if(warcry)
M.say("[warcry]", ignore_spam = TRUE, forced = "north star warcry")
.= FALSE
/obj/item/clothing/gloves/fingerless/pugilist/rapid/attack_self(mob/user)
var/input = stripped_input(user,"What do you want your battlecry to be? Max length of 6 characters.", ,"", 7)
if(input)
warcry = input
/obj/item/clothing/gloves/fingerless/pugilist/rapid/hug
name = "Hugs of the North Star"
desc = "The armbands of a humble friend. Makes you pretty keen to go let everyone know how much you appreciate them!"
warcry = "owo" //Shouldn't ever come into play
enhancement = 0
secondary_trait = TRAIT_PACIFISM //You are only here to hug and be friends!
/obj/item/clothing/gloves/fingerless/pugilist/rapid/hug/Touch(mob/living/target,proximity = TRUE)
if(!istype(target))
return
var/mob/living/M = loc
if(M.a_intent == INTENT_HELP)
if(target.health >= 0 && !HAS_TRAIT(target, TRAIT_FAKEDEATH)) //Can't hug people who are dying/dead
if(target.on_fire || target.lying) //No spamming extinguishing, helping them up, or other non-hugging/patting help interactions
return
else
M.changeNext_move(CLICK_CD_RAPID)
. = FALSE
/obj/item/clothing/gloves/fingerless/pugilist/rapid/hug/attack_self(mob/user)
return FALSE
/obj/item/clothing/gloves/botanic_leather
name = "botanist's leather gloves"
desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin. They're also quite warm."
@@ -59,54 +175,6 @@
resistance_flags = NONE
armor = list("melee" = 15, "bullet" = 35, "laser" = 35, "energy" = 20, "bomb" = 35, "bio" = 35, "rad" = 35, "fire" = 0, "acid" = 0)
/obj/item/clothing/gloves/rapid
name = "Gloves of the North Star"
desc = "Just looking at these fills you with an urge to beat the shit out of people. Violently."
icon_state = "rapid"
item_state = "rapid"
transfer_prints = TRUE
var/warcry = "AT"
/obj/item/clothing/gloves/rapid/Touch(mob/living/target,proximity = TRUE)
if(!istype(target))
return
var/mob/living/M = loc
M.changeNext_move(CLICK_CD_RAPID)
M.adjustStaminaLoss(-3.5) // used to be -2 with some comment about stamina buffer management but *shrug -hatterhat
if(warcry)
M.say("[warcry]", ignore_spam = TRUE, forced = "north star warcry")
.= FALSE
/obj/item/clothing/gloves/rapid/attack_self(mob/user)
var/input = stripped_input(user,"What do you want your battlecry to be? Max length of 6 characters.", ,"", 7)
if(input)
warcry = input
/obj/item/clothing/gloves/rapid/hug
name = "Hugs of the North Star"
desc = "Just looking at these fills you with an urge to hug the shit out of people. In a very friendly manner."
warcry = "owo" //Shouldn't ever come into play
/obj/item/clothing/gloves/rapid/hug/Touch(mob/living/target,proximity = TRUE)
if(!istype(target))
return
var/mob/living/M = loc
if(M.a_intent == INTENT_HELP)
if(target.health >= 0 && !HAS_TRAIT(target, TRAIT_FAKEDEATH)) //Can't hug people who are dying/dead
if(target.on_fire || target.lying) //No spamming extinguishing, helping them up, or other non-hugging/patting help interactions
return
else
M.changeNext_move(CLICK_CD_RAPID)
. = FALSE
/obj/item/clothing/gloves/rapid/hug/attack_self(mob/user)
return FALSE
/obj/item/clothing/gloves/thief
name = "black gloves"
desc = "Gloves made with completely frictionless, insulated cloth, easier to steal from people with."
@@ -117,4 +185,4 @@
strip_delay = 80
transfer_prints = FALSE
strip_mod = 5
strip_silence = TRUE
strip_silence = TRUE
@@ -1456,6 +1456,12 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(target.check_block())
target.visible_message("<span class='warning'>[target] blocks [user]'s attack!</span>")
return FALSE
if(HAS_TRAIT(user, TRAIT_PUGILIST))//CITADEL CHANGE - makes punching cause staminaloss but funny martial artist types get a discount
user.adjustStaminaLossBuffered(1.5)
else
user.adjustStaminaLossBuffered(3.5)
if(attacker_style && attacker_style.harm_act(user,target))
return TRUE
else
@@ -1474,8 +1480,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
else
user.do_attack_animation(target, ATTACK_EFFECT_PUNCH)
user.adjustStaminaLossBuffered(3.5) //CITADEL CHANGE - makes punching cause staminaloss
var/damage = rand(user.dna.species.punchdamagelow, user.dna.species.punchdamagehigh)
var/puncherstam = user.getStaminaLoss()
var/puncherbrute = user.getBruteLoss()
@@ -1534,13 +1538,24 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if((target.stat != DEAD) && damage >= user.dna.species.punchstunthreshold)
if((punchedstam > 50) && prob(punchedstam*0.5)) //If our punch victim has been hit above the threshold, and they have more than 50 stamina damage, roll for stun, probability of 1% per 2 stamina damage
target.visible_message("<span class='danger'>[user] knocks [target] down!</span>", \
"<span class='userdanger'>You're knocked down by [user]!</span>", "<span class='hear'>You hear aggressive shuffling followed by a loud thud!</span>", COMBAT_MESSAGE_RANGE, user)
to_chat(user, "<span class='danger'>You knock [target] down!</span>")
var/knockdown_duration = 40 + (punchedstam + (punchedbrute*0.5))*0.8 - armor_block
target.DefaultCombatKnockdown(knockdown_duration)
target.forcesay(GLOB.hit_appends)
log_combat(user, target, "got a stun punch with their previous punch")
if(HAS_TRAIT(user, TRAIT_KI_VAMPIRE) && !HAS_TRAIT(target, TRAIT_NOBREATH) && (punchedbrute < 100)) //If we're a ki vampire we also sap them of lifeforce, but only if they're not too beat up. Also living organics only.
user.adjustBruteLoss(-5)
user.adjustFireLoss(-5)
user.adjustStaminaLoss(-20)
target.adjustCloneLoss(10)
target.adjustBruteLoss(10)
else if(!(target.mobility_flags & MOBILITY_STAND))
target.forcesay(GLOB.hit_appends)
@@ -11,7 +11,7 @@
siemens_coeff = 0
punchdamagelow = 5
punchdamagehigh = 14
punchstunthreshold = 11 //about 40% chance to stun
punchstunthreshold = 10
no_equip = list(SLOT_WEAR_MASK, SLOT_WEAR_SUIT, SLOT_GLOVES, SLOT_SHOES, SLOT_W_UNIFORM, SLOT_S_STORE)
nojumpsuit = 1
sexes = 1
@@ -168,7 +168,7 @@
name = "Silver Golem"
id = "silver golem"
fixed_mut_color = "ddd"
punchstunthreshold = 9 //60% chance, from 40%
punchstunthreshold = 9
meat = /obj/item/stack/ore/silver
info_text = "As a <span class='danger'>Silver Golem</span>, your attacks have a higher chance of stunning. Being made of silver, your body is immune to most types of magic."
prefix = "Silver"
@@ -190,7 +190,7 @@
stunmod = 0.4
punchdamagelow = 12
punchdamagehigh = 21
punchstunthreshold = 18 //still 40% stun chance
punchstunthreshold = 18
speedmod = 4 //pretty fucking slow
meat = /obj/item/stack/ore/iron
info_text = "As a <span class='danger'>Plasteel Golem</span>, you are slower, but harder to stun, and hit very hard when punching."
@@ -12,9 +12,9 @@
inherent_traits = list(TRAIT_NOBREATH)
speedmod = 1.5 //faster than golems but not by much
punchdamagelow = 6
punchdamagehigh = 14
punchstunthreshold = 14 //about 44% chance to stun
punchdamagelow = 2
punchdamagehigh = 12 //still better than humans
punchstunthreshold = 10
no_equip = list(SLOT_WEAR_MASK, SLOT_WEAR_SUIT, SLOT_GLOVES, SLOT_SHOES, SLOT_W_UNIFORM)
@@ -23,7 +23,7 @@
armor = 25
punchdamagelow = 10
punchdamagehigh = 19
punchstunthreshold = 14 //about 50% chance to stun
punchstunthreshold = 14
disguise_fail_health = 50
/datum/species/synth/on_species_gain(mob/living/carbon/human/H, datum/species/old_species)
@@ -467,9 +467,9 @@
if(H.physiology)
H.physiology.stamina_mod *= 0.5
if(H.dna && H.dna.species)
H.dna.species.punchdamagehigh *= 4
H.dna.species.punchdamagelow *= 4
H.dna.species.punchstunthreshold *= 2
H.dna.species.punchdamagehigh += 4
H.dna.species.punchdamagelow += 4
H.dna.species.punchstunthreshold -= 2
/datum/reagent/drug/skooma/on_mob_end_metabolize(mob/living/L)
. = ..()
@@ -480,9 +480,9 @@
if(H.physiology)
H.physiology.stamina_mod *= 2
if(H.dna && H.dna.species)
H.dna.species.punchdamagehigh *= 0.25
H.dna.species.punchdamagelow *= 0.25
H.dna.species.punchstunthreshold *= 0.5
H.dna.species.punchdamagehigh -= 4
H.dna.species.punchdamagelow -= 4
H.dna.species.punchstunthreshold += 2
/datum/reagent/drug/skooma/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM)
@@ -174,10 +174,13 @@
include_modes = list(/datum/game_mode/nuclear)
/datum/uplink_item/dangerous/rapid
name = "Gloves of the North Star"
desc = "These gloves let the user punch people very fast. Does not improve weapon attack speed or the meaty fists of a hulk."
item = /obj/item/clothing/gloves/rapid
cost = 8
name = "Bands of the North Star"
desc = "These armbands let the user punch people very fast and with the lethality of a legendary martial artist. \
Does not improve weapon attack speed or the meaty fists of a hulk, but you will be unmatched in martial power. \
Combines with all martial arts, but the user will be unable to bring themselves to use guns, nor remove the armbands."
item = /obj/item/clothing/gloves/fingerless/pugilist/rapid
cost = 30
include_modes = list(/datum/game_mode/nuclear)
/datum/uplink_item/dangerous/guardian
name = "Holoparasites"