[PORT] Add mantis blades (new traitor item) (#27594)

* add mantis blades

* fix nuclear only

* fix .dme edit

* fix linter

* new attack chain

* maybe fix linter

* add NT mantis blade to syndicate 6

* newline

* add list

* fix nested types

* ability to pry open doors with two blades

* Update code/game/machinery/doors/airlock.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* requested changes

* remove transform

* replace sleep with addtimer

* Update code/datums/uplink_items/uplink_general.dm

Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* Update code/datums/uplink_items/uplink_general.dm

Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* Update code/game/objects/items/weapons/storage/uplink_kits.dm

Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* Update code/modules/research/designs/weapon_designs.dm

Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* Update code/modules/research/designs/weapon_designs.dm

Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* Update code/modules/surgery/organs/augments_arms.dm

Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* Update code/modules/surgery/organs/augments_arms.dm

Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* Update code/modules/surgery/organs/augments_arms.dm

Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* Update code/modules/surgery/organs/augments_arms.dm

Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* Update code/modules/surgery/organs/augments_arms.dm

Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* Update code/modules/surgery/organs/augments_arms.dm

Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>

* add safetys and some cleanup

* return parry sound

* snake case and replace CALLBACK with VARSET_CALLBACK

* move attacking logic and update item and uplink description

* cleanup

* first attempt

* fix conditional statement

* update paradise.dme

* edit whitespace

* signal interceptors

* improve some logic

* oops

* use COMSIG_INTERACTING

* return one whitespace

* subtype for mantis blades

* replace .GetComponent() with signal

* fix typo

* better naming

* attempt_cancel_message and some logic

* split logic

---------

Signed-off-by: Mira <42539014+MiraHell@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
This commit is contained in:
Mira
2025-01-17 21:16:59 +03:00
committed by GitHub
parent 6f77bf1f8a
commit dac57002ff
18 changed files with 265 additions and 37 deletions
@@ -149,7 +149,7 @@
/obj/item/melee/arm_blade/Initialize(mapload, silent, new_parent_action)
. = ..()
parent_action = new_parent_action
ADD_TRAIT(src, TRAIT_FORCES_OPEN_DOORS_ITEM, ROUNDSTART_TRAIT)
AddComponent(/datum/component/forces_doors_open, time_to_open = 10 SECONDS)
/obj/item/melee/arm_blade/Destroy()
if(parent_action)
@@ -399,3 +399,15 @@
reagents_list = list("fuel" = 30)
build_path = /obj/item/chemical_canister/pyrotechnics
category = list("Weapons")
/datum/design/nt_mantis
name = "'Scylla' mantis blade implant"
desc = "A reverse-engineered mantis blade implant. While the monomolecular edge was lost, they remain deadly weapons."
id = "mantis_blade_nt"
req_tech = list("materials" = 7, "engineering" = 6, "combat" = 7, "syndicate" = 6)
build_type = PROTOLATHE | MECHFAB
construction_time = 6 SECONDS
materials = list(MAT_METAL = 10000, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_TITANIUM = 3000, MAT_DIAMOND = 4000)
build_path = /obj/item/organ/internal/cyberimp/arm/nt_mantis
category = list("Medical", "Weapons")
@@ -836,3 +836,99 @@
if(emp_proof)
return
muscle_implant.emp_act(severity, owner)
// Mantis blades
/obj/item/melee/mantis_blade
name = "mantis blade"
desc = "A blade designed to be hidden just beneath the skin. The brain is directly linked to this bad boy, allowing it to spring into action. \
When both blades are equipped, they enable the user to perform double attacks."
icon = 'icons/obj/weapons/melee.dmi'
lefthand_file = 'icons/mob/inhands/implants_lefthand.dmi'
righthand_file = 'icons/mob/inhands/implants_righthand.dmi'
hitsound = 'sound/weapons/bladeslice.ogg'
new_attack_chain = TRUE
var/double_attack = TRUE
var/double_attack_cd = 1.5 // seconds, so every second attack
sharp = TRUE
w_class = WEIGHT_CLASS_BULKY
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "lacerated", "ripped", "diced", "cut")
/obj/item/melee/mantis_blade/equipped(mob/user, slot, initial)
. = ..()
if(slot == ITEM_SLOT_LEFT_HAND)
transform = matrix(-1, 0, 0, 0, 1, 0)
else
transform = null
// make double attack if blades in both hands and not on CD
/obj/item/melee/mantis_blade/attack(mob/living/target, mob/living/user, params)
var/obj/item/melee/mantis_blade/secondblade = user.get_inactive_hand()
if(!istype(secondblade, /obj/item/melee/mantis_blade) || !double_attack)
return ..()
double_attack(target, user, params, secondblade)
return FINISH_ATTACK
/obj/item/melee/mantis_blade/proc/double_attack(mob/living/target, mob/living/user, params, obj/item/melee/mantis_blade/secondblade)
// first attack
single_attack(target, user, params)
user.changeNext_move(CLICK_CD_MELEE)
// second attack
addtimer(CALLBACK(secondblade, PROC_REF(single_attack), target, user, params), 0.2 SECONDS) // not instant second attack
/obj/item/melee/mantis_blade/proc/single_attack(mob/living/target, mob/living/user, params)
if(QDELETED(src))
return
double_attack = FALSE
attack(target, user, params)
addtimer(VARSET_CALLBACK(src, double_attack, TRUE), double_attack_cd SECONDS)
/obj/item/melee/mantis_blade/Initialize(mapload)
. = ..()
AddComponent(/datum/component/forces_doors_open/mantis)
/obj/item/melee/mantis_blade/syndicate
name = "'Naginata' mantis blade"
icon_state = "syndie_mantis"
item_state = "syndie_mantis"
force = 20
armour_penetration_percentage = 30
/obj/item/melee/mantis_blade/syndicate/Initialize(mapload)
. = ..()
AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.35, _parryable_attack_types = NON_PROJECTILE_ATTACKS, _parry_cooldown = (4 / 3) SECONDS) // 0.3333 seconds of cooldown for 75% uptime, non projectile
/obj/item/melee/mantis_blade/nt
name = "'Scylla' mantis blade"
icon_state = "mantis"
item_state = "mantis"
force = 18
/obj/item/melee/mantis_blade/nt/Initialize(mapload)
. = ..()
AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.35, _parryable_attack_types = NON_PROJECTILE_ATTACKS, _parry_cooldown = (5 / 3) SECONDS) // 0.666667 seconds for 60% uptime, non projectile
// Mantis blades implants
/obj/item/organ/internal/cyberimp/arm/syndie_mantis
name = "'Naginata' mantis blade implants"
desc = "A powerful and concealable mantis blade with a monomolecular edge, produced by Cybersun Industries. Cuts through flesh and armor alike with ease."
origin_tech = "materials=5;combat=5;biotech=5;syndicate=4"
contents = newlist(/obj/item/melee/mantis_blade/syndicate)
icon_state = "syndie_mantis"
icon = 'icons/obj/weapons/melee.dmi'
/obj/item/organ/internal/cyberimp/arm/syndie_mantis/l
parent_organ = "l_arm"
/obj/item/organ/internal/cyberimp/arm/nt_mantis
name = "'Scylla' mantis blade implant"
desc = "A reverse-engineered mantis blade design produced by Nanotrasen. While still quite deadly, the loss of the monomolecular blade has drastically reduced its armor penetration capability."
origin_tech = "materials=5;combat=5;biotech=5;syndicate=4"
contents = newlist(/obj/item/melee/mantis_blade/nt)
icon_state = "mantis"
icon = 'icons/obj/weapons/melee.dmi'
/obj/item/organ/internal/cyberimp/arm/nt_mantis/l
parent_organ = "l_arm"
@@ -152,4 +152,10 @@
/obj/item/autosurgeon/organ/syndicate/oneuse/hardened_heart
starting_organ = /obj/item/organ/internal/heart/cybernetic/upgraded/hardened
/obj/item/autosurgeon/organ/syndicate/oneuse/syndie_mantis
starting_organ = /obj/item/organ/internal/cyberimp/arm/syndie_mantis
/obj/item/autosurgeon/organ/syndicate/oneuse/syndie_mantis/l
starting_organ = /obj/item/organ/internal/cyberimp/arm/syndie_mantis/l
#undef INFINITE