Files
RoxyandGitHub 02a714bbf0 Empty Block CI Fix (#4957)
## About The Pull Request
should fix the empty block CI fail

## Why It's Good For The Game
CI yes

## Proof Of Testing
did local CI and it didnt give me errors so unless I fuked up running it
it should be fine

<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog

no player facing
2025-11-25 08:10:44 -05:00

234 lines
10 KiB
Plaintext

#define KNIFE_HITSOUND 'sound/items/weapons/bladeslice.ogg'
#define KNIFE_USESOUND 'sound/items/weapons/bladeslice.ogg'
#define KNIFE_ATTACK_VERB_CONTINUOUS list("slashes", "tears", "slices", "tears", "lacerates", "rips", "dices", "cuts", "rends")
#define KNIFE_ATTACK_VERB_SIMPLE list("slash", "tear", "slice", "tear", "lacerate", "rip", "dice", "cut", "rend")
#define KNIFE_SHARPNESS SHARP_EDGED
#define KNIFE_EXPOSED_WOUND_BONUS 15
#define CUTTER_HITSOUND 'sound/items/tools/wirecutter.ogg'
#define CUTTER_USESOUND 'sound/items/tools/wirecutter.ogg'
#define CUTTER_ATTACK_VERB_CONTINUOUS list("bashes", "batters", "bludgeons", "thrashes", "whacks")
#define CUTTER_ATTACK_VERB_SIMPLE list("bash", "batter", "bludgeon", "thrash", "whack")
#define CUTTER_FORCE 6
#define CUTTER_WOUND_BONUS 0
#define ENHANCED_KNIFE_FORCE 15
#define ENHANCED_KNIFE_WOUND_BONUS 15
#define ENHANCED_KNIFE_ARMOR_PENETRATION 10
/obj/item/melee/implantarmblade
name = "implanted arm blade"
desc = "A long, sharp, mantis-like blade implanted into someones arm. Cleaves through flesh like its particularly strong butter."
icon = 'modular_skyrat/modules/implants/icons/implanted_blade.dmi'
righthand_file = 'modular_skyrat/modules/implants/icons/implanted_blade_righthand.dmi'
lefthand_file = 'modular_skyrat/modules/implants/icons/implanted_blade_lefthand.dmi'
icon_state = "mantis_blade"
w_class = WEIGHT_CLASS_BULKY
obj_flags = CONDUCTS_ELECTRICITY
sharpness = SHARP_EDGED
force = 20
armour_penetration = 20
item_flags = NEEDS_PERMIT //Beepers gets angry if you get caught with this.
hitsound = 'modular_skyrat/master_files/sound/weapons/bloodyslice.ogg'
/obj/item/melee/implantarmblade/energy
name = "energy arm blade"
desc = "A long mantis-like blade made entirely of blazing-hot energy. Stylish and EXTRA deadly!"
icon_state = "energy_mantis_blade"
force = 30
armour_penetration = 10 //Energy isn't as good at going through armor as it is through flesh alone.
hitsound = 'sound/items/weapons/blade1.ogg'
/obj/item/organ/cyberimp/arm/toolkit/armblade
name = "arm blade implant"
desc = "An integrated blade implant designed to be installed into a persons arm. Stylish and deadly; Although, being caught with this without proper permits is sure to draw unwanted attention."
items_to_create = list(/obj/item/melee/implantarmblade)
icon = 'modular_skyrat/modules/implants/icons/implanted_blade.dmi'
icon_state = "mantis_blade"
/obj/item/organ/cyberimp/arm/toolkit/armblade/emag_act()
if(obj_flags & EMAGGED)
return FALSE
to_chat(usr, span_notice("You unlock [src]'s integrated energy arm blade! You madman!"))
items_list += WEAKREF(new /obj/item/melee/implantarmblade/energy(src))
obj_flags |= EMAGGED
return TRUE
/obj/item/knife/razor_claws
name = "implanted razor claws"
desc = "A set of sharp, retractable claws built into the fingertips, five double-edged blades sure to turn people into mincemeat. Capable of shifting into 'Precision' mode to act similar to wirecutters."
icon = 'modular_skyrat/modules/implants/icons/razorclaws.dmi'
righthand_file = 'modular_skyrat/modules/implants/icons/razorclaws_righthand.dmi'
lefthand_file = 'modular_skyrat/modules/implants/icons/razorclaws_lefthand.dmi'
icon_state = "wolverine"
inhand_icon_state = "wolverine"
var/knife_force = 10
w_class = WEIGHT_CLASS_BULKY
var/knife_wound_bonus = 5
var/cutter_force = CUTTER_FORCE
var/cutter_wound_bonus = CUTTER_WOUND_BONUS
var/cutter_exposed_wound_bonus = CUTTER_WOUND_BONUS
tool_behaviour = TOOL_KNIFE
toolspeed = 1
item_flags = NEEDS_PERMIT //Beepers gets angry if you get caught with this.
/obj/item/knife/razor_claws/attack_self(mob/user)
playsound(get_turf(user), 'sound/items/tools/change_drill.ogg', 50, TRUE)
if(tool_behaviour != TOOL_WIRECUTTER)
tool_behaviour = TOOL_WIRECUTTER
to_chat(user, span_notice("You shift [src] into Precision mode, for wirecutting."))
icon_state = "precision_wolverine"
inhand_icon_state = "precision_wolverine"
force = cutter_force
wound_bonus = cutter_wound_bonus
exposed_wound_bonus = cutter_exposed_wound_bonus
sharpness = NONE
hitsound = CUTTER_HITSOUND
usesound = CUTTER_USESOUND
attack_verb_continuous = CUTTER_ATTACK_VERB_CONTINUOUS
attack_verb_simple = CUTTER_ATTACK_VERB_SIMPLE
else
tool_behaviour = TOOL_KNIFE
to_chat(user, span_notice("You shift [src] into Killing mode, for slicing."))
icon_state = "wolverine"
inhand_icon_state = "wolverine"
force = knife_force
sharpness = KNIFE_SHARPNESS
wound_bonus = knife_wound_bonus
exposed_wound_bonus = KNIFE_EXPOSED_WOUND_BONUS
hitsound = KNIFE_HITSOUND
usesound = KNIFE_USESOUND
attack_verb_continuous = KNIFE_ATTACK_VERB_CONTINUOUS
attack_verb_simple = KNIFE_ATTACK_VERB_SIMPLE
/obj/item/knife/razor_claws/attackby(obj/item/stone, mob/user, param)
if(!istype(stone, /obj/item/scratching_stone))
return ..()
knife_force = ENHANCED_KNIFE_FORCE
knife_wound_bonus = ENHANCED_KNIFE_WOUND_BONUS
armour_penetration = ENHANCED_KNIFE_ARMOR_PENETRATION //Let's give them some AP for the trouble.
if(tool_behaviour == TOOL_KNIFE)
force = knife_force
wound_bonus = knife_wound_bonus
name = "enhanced razor claws"
desc += span_warning("\n\nThese have undergone a special honing process; they'll kill people even faster than they used to.")
user.visible_message(span_warning("[user] sharpens [src], [stone] disintegrating!"), span_warning("You sharpen [src], making it much more deadly than before, but [stone] disintegrates under the stress."))
playsound(src, 'sound/items/unsheath.ogg', 25, TRUE)
qdel(stone)
return ..()
/obj/item/organ/cyberimp/arm/toolkit/razor_claws
name = "razor claws implant"
desc = "A set of hidden, retractable blades built into the fingertips; cyborg mercenary approved."
items_to_create = list(/obj/item/knife/razor_claws)
actions_types = list(/datum/action/item_action/organ_action/toggle/razor_claws)
icon = 'modular_skyrat/modules/implants/icons/razorclaws.dmi'
icon_state = "wolverine"
extend_sound = 'sound/items/unsheath.ogg'
retract_sound = 'sound/items/sheath.ogg'
/// bespoke subtypes for augs menu since it's a bit wonky
/obj/item/organ/cyberimp/arm/toolkit/razor_claws/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
/obj/item/organ/cyberimp/arm/toolkit/razor_claws/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
/datum/action/item_action/organ_action/toggle/razor_claws
name = "Extend Claws"
desc = "You can also activate the claws in your hand to change their mode."
button_icon = 'modular_skyrat/master_files/icons/hud/actions.dmi'
button_icon_state = "wolverine"
/obj/item/organ/cyberimp/arm/toolkit/hacker
name = "hacking arm implant"
desc = "An small arm implant containing an advanced screwdriver, wirecutters, and multitool designed for engineers and on-the-field machine modification. Actually legal, despite what the name may make you think."
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "toolkit_engiborg_multitool"
items_to_create = list(/obj/item/screwdriver/cyborg, /obj/item/wirecutters/cyborg, /obj/item/multitool/abductor/implant)
/obj/item/organ/cyberimp/arm/toolkit/botany
name = "botany arm implant"
desc = "A rather simple arm implant containing tools used in gardening and botanical research."
items_to_create = list(/obj/item/cultivator, /obj/item/shovel/spade, /obj/item/hatchet, /obj/item/gun/energy/floragun, /obj/item/plant_analyzer, /obj/item/geneshears, /obj/item/secateurs, /obj/item/storage/bag/plants, /obj/item/storage/bag/plants/portaseeder)
/obj/item/implant_mounted_chainsaw
name = "integrated chainsaw"
desc = "A chainsaw that conceals inside your arm."
icon = 'icons/obj/weapons/chainsaw.dmi'
icon_state = "chainsaw_on"
inhand_icon_state = "mounted_chainsaw"
lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi'
force = 24
throwforce = 0
throw_range = 0
throw_speed = 0
sharpness = SHARP_EDGED
attack_verb_continuous = list("saws", "tears", "lacerates", "cuts", "chops", "dices")
attack_verb_simple = list("saw", "tear", "lacerate", "cut", "chop", "dice")
hitsound = 'sound/items/weapons/chainsawhit.ogg'
tool_behaviour = TOOL_SAW
toolspeed = 1
/obj/item/organ/cyberimp/arm/toolkit/botany/emag_act()
if(obj_flags & EMAGGED)
return FALSE
to_chat(usr, span_notice("You unlock [src]'s deluxe landscaping equipment!"))
items_list += WEAKREF(new /obj/item/implant_mounted_chainsaw(src)) //time to landscape the station
obj_flags |= EMAGGED
return TRUE
/obj/item/multitool/abductor/implant
name = "multitool"
desc = "An optimized, highly advanced stripped-down multitool able to interface with electronics far better than its standard counterpart."
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "toolkit_engiborg_multitool"
/obj/item/organ/cyberimp/arm/toolkit/janitor
name = "janitorial tools implant"
desc = "A set of janitorial tools on the user's arm."
items_to_create = list(/obj/item/lightreplacer, /obj/item/holosign_creator, /obj/item/soap/nanotrasen, /obj/item/reagent_containers/spray/cyborg_drying, /obj/item/mop/advanced, /obj/item/paint/paint_remover, /obj/item/reagent_containers/cup/beaker/large, /obj/item/reagent_containers/spray/cleaner) //Beaker if for refilling sprays
/obj/item/organ/cyberimp/arm/toolkit/janitor/emag_act()
if(obj_flags & EMAGGED)
return FALSE
to_chat(usr, span_notice("You unlock [src]'s integrated deluxe cleaning supplies!"))
items_list += WEAKREF(new /obj/item/soap/syndie(src)) //We add not replace.
items_list += WEAKREF(new /obj/item/reagent_containers/spray/cyborg_lube(src))
obj_flags |= EMAGGED
return TRUE
/obj/item/organ/cyberimp/arm/toolkit/lighter
name = "lighter implant"
desc = "A... implanted lighter. Incredibly useless."
items_to_create = list(/obj/item/lighter/greyscale) //Hilariously useless.
/obj/item/organ/cyberimp/arm/toolkit/lighter/emag_act()
if(obj_flags & EMAGGED)
return FALSE
to_chat(usr, span_notice("You unlock [src]'s integrated Zippo lighter! Finally, classy smoking!"))
items_list += WEAKREF(new /obj/item/lighter(src)) //Now you can choose between bad and worse!
obj_flags |= EMAGGED
return TRUE
#undef KNIFE_HITSOUND
#undef KNIFE_USESOUND
#undef KNIFE_ATTACK_VERB_CONTINUOUS
#undef KNIFE_ATTACK_VERB_SIMPLE
#undef KNIFE_SHARPNESS
#undef KNIFE_EXPOSED_WOUND_BONUS
#undef CUTTER_HITSOUND
#undef CUTTER_USESOUND
#undef CUTTER_ATTACK_VERB_CONTINUOUS
#undef CUTTER_ATTACK_VERB_SIMPLE
#undef CUTTER_FORCE
#undef CUTTER_WOUND_BONUS
#undef ENHANCED_KNIFE_FORCE
#undef ENHANCED_KNIFE_WOUND_BONUS
#undef ENHANCED_KNIFE_ARMOR_PENETRATION