diff --git a/code/modules/projectiles/ammunition/rounds_ch.dm b/code/modules/projectiles/ammunition/rounds_ch.dm index 5fa320d3aa..f7de42f6b3 100644 --- a/code/modules/projectiles/ammunition/rounds_ch.dm +++ b/code/modules/projectiles/ammunition/rounds_ch.dm @@ -5,3 +5,55 @@ caliber = "12g" projectile_type = /obj/item/projectile/bullet/pellet/shotgun/silver matter = list(DEFAULT_WALL_MATERIAL = 360, "silver" = 240) + +/// ---- PRE GATTENING STUFF ---- /// + + +/obj/item/ammo_casing/a80mm + name = "Voroh recoilless rifle shell" + desc = "A high explosive 80mm recoilless rifle shell." + caliber = "80mm" + w_class = ITEMSIZE_NORMAL + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + icon_state = "voroh" + embed_chance = 0 + projectile_type = /obj/item/projectile/explosive_rocket/blackhole + matter = list(MAT_STEEL = 2200) + + +/obj/item/ammo_casing/a6550mm + desc = "A 6.5x50mm bullet casing." + caliber = "6.5mm" + icon_state = "rifle-casing" + projectile_type = /obj/item/projectile/bullet/rifle/a556 + matter = list(MAT_STEEL = 200) + +/obj/item/ammo_casing/a6550mm/ap + desc = "A 6.5x50mm armor-piercing bullet casing." + caliber = "6.5mm" + icon_state = "rifle-casing" + projectile_type = /obj/item/projectile/bullet/rifle/a556/ap + matter = list(MAT_STEEL = 200) + +/obj/item/ammo_casing/a15mm + desc = "A 15x80mm bullet casing." + caliber = "15mm" + icon_state = "lcasing" + projectile_type = /obj/item/projectile/bullet/rifle/a545/bh3 + matter = list(MAT_STEEL = 200) + +/obj/item/ammo_casing/a776 + desc = "A 7.76x55mm bullet casing." + caliber = "7.76mm" + icon_state = "rifle-casing" + projectile_type = /obj/item/projectile/bullet/rifle/a145/bh2 + matter = list(MAT_STEEL = 200) + +/obj/item/ammo_casing/a86 + desc = "An 8.6x65mm bullet casing." + caliber = "8.6mm" + icon_state = "rifle-casing" + projectile_type = /obj/item/projectile/bullet/rifle/a145/bh2 + matter = list(MAT_STEEL = 200) + + diff --git a/code/modules/projectiles/guns/energy/laser_ch.dm b/code/modules/projectiles/guns/energy/laser_ch.dm index fbf4cdc2f5..1ecfc5816b 100644 --- a/code/modules/projectiles/guns/energy/laser_ch.dm +++ b/code/modules/projectiles/guns/energy/laser_ch.dm @@ -113,3 +113,79 @@ var/is64x32_override = TRUE accept_cell_type = /obj/item/cell/vepr cell_type = /obj/item/cell/vepr + +/obj/item/gun/energy/plasma/x16b + name = "X16b plasma carbine" + desc = "An advanced plasma caster, used by elite Black Hole fanatics. Light, powerful, and concealable. Uses it's own proprietary batteries." + icon_expected_width = 64 + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + icon_state = "x16b" + fire_delay = 0.5 + projectile_type = /obj/item/projectile/energy/plasma/vepr/blackhole + force = 8 + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "x16b" + wielded_item_state = "x16b_w" + firemodes = list( + list(mode_name="single shot", burst = 1, fire_delay=1, move_delay=null, burst_accuracy = null, dispersion = null), + list(mode_name="three shot bursts", burst=3, fire_delay=5 , move_delay=1, burst_accuracy=list(65,65,65), dispersion=list(1,1,1)), + list(mode_name="short bursts", burst=5, fire_delay=5 ,move_delay=4, burst_accuracy = list(65,65,65,65,65), dispersion = list(4,4,4,4,4)), + ) + + w_class = ITEMSIZE_NORMAL + slot_flags = SLOT_BELT|SLOT_BACK + var/is64x32_override = TRUE + accept_cell_type = /obj/item/cell/x16b + cell_type = /obj/item/cell/x16b + +/obj/item/cell/x16b + name = "plasma canister" + desc = "An ominous silver plated cylinder. Quite weighty, and it makes an ominous sloshing sound when you shake it." + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + icon_state = "plasma" + item_state = "egg6" + w_class = ITEMSIZE_SMALL + maxcharge = 7200 + charge = 7200 + charge_amount = 20 + matter = list(MAT_DURASTEEL = 350, MAT_GLASS = 50, MAT_PHORON = 1000) + preserve_item = 1 + +/obj/item/gun/energy/laser/las91f + name = "Las91f retro laser rifle" + desc = "The Las91f is a rare example of modern illegal hellfire laser tech, approved only for use by government forces, and even then, only in rare cases. Uses it's own proprietary batteries." + icon_expected_width = 64 + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + icon_state = "las91f" + fire_delay = 1 + projectile_type = /obj/item/projectile/beam/hellfire + force = 18 + charge_cost = 80 + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "las91f" + wielded_item_state = "las91f_w" + firemodes = null + w_class = ITEMSIZE_LARGE + slot_flags = SLOT_BELT|SLOT_BACK + is64x32_override = TRUE + accept_cell_type = /obj/item/cell/las91f + cell_type = /obj/item/cell/las91f + +/obj/item/cell/las91f + name = "retro laser canister" + desc = "An old school retro laser battery. Heavy and cumbersome, these are used by the illegal 'hellfire' lasers of days past. Or by select Government forces." + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + icon_state = "retrolas" + item_state = "egg6" + w_class = ITEMSIZE_NORMAL + maxcharge = 2000 + charge = 2000 + charge_amount = 20 + matter = list(MAT_DURASTEEL = 350, MAT_GLASS = 50, MAT_URANIUM = 1000) + preserve_item = 1 diff --git a/code/modules/projectiles/projectile/beams_ch.dm b/code/modules/projectiles/projectile/beams_ch.dm index 70032802c3..41ee827df0 100644 --- a/code/modules/projectiles/projectile/beams_ch.dm +++ b/code/modules/projectiles/projectile/beams_ch.dm @@ -93,3 +93,48 @@ light_color = "#FF6A00" light_range = 3 light_power = 1 + + + + +// ------------------------- GATTENING EARLY PORT STUFF, THIS IS (i pray to god) TEMPORARY ------------------------- // + + + + + +/obj/item/projectile/beam/hellfire + damage = 35 + mob_bonus_damage = 20 + agony = 10 + stutter = 5 + armor_penetration = 15 + fire_sound = 'sound/weapons/serdy/retrolaser2.ogg' + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + icon_state = "hellfire" + light_color = "#FF6A00" + muzzle_type = /obj/effect/projectile/muzzle/hellfire + tracer_type = /obj/effect/projectile/tracer/hellfire + impact_type = /obj/effect/projectile/impact/hellfire + hud_state = "laser_heat" + +/obj/effect/projectile/muzzle/hellfire + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + icon_state = "muzzle_hellfire" + light_color = "#FF6A00" + light_range = 5 + light_power = 2 + +/obj/effect/projectile/tracer/hellfire + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + icon_state = "beam_hellfire" + light_color = "#FF6A00" + light_range = 3 + light_power = 2 + +/obj/effect/projectile/impact/hellfire + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + icon_state = "impact_hellfire" + light_color = "#FF6A00" + light_range = 4 + light_power = 2 diff --git a/modular_chomp/code/modules/clothing/spacesuits/void/blackhole.dm b/modular_chomp/code/modules/clothing/spacesuits/void/blackhole.dm new file mode 100644 index 0000000000..fc15f95f6c --- /dev/null +++ b/modular_chomp/code/modules/clothing/spacesuits/void/blackhole.dm @@ -0,0 +1,36 @@ +/obj/item/clothing/head/helmet/space/void/merc/blackhole + name = "black hole trooper helmet" + desc = "An ominous black and purple voidsuit helmet, used by the fanatic paramilitary cult, Black Hole." + icon_state = "helm_trooper" + default_worn_icon = 'modular_chomp/icons/blackhole/equipment.dmi' + icon = 'modular_chomp/icons/blackhole/equipment.dmi' + item_state_slots = list(slot_r_hand_str = "syndie_helm", slot_l_hand_str = "syndie_helm") + armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 65, bio = 100, rad = 100) + siemens_coefficient = 0.6 + camera_networks = list(NETWORK_MERCENARY) + light_overlay = null + +/obj/item/clothing/head/helmet/space/void/merc/blackhole/templar + name = "black hole templar helmet" + desc = "An ominous black and purple voidsuit helmet, used by the fanatic paramilitary cult, Black Hole." + icon_state = "helm_templar" + +/obj/item/clothing/head/helmet/space/void/merc/blackhole/acolyte + name = "black hole acolyte helmet" + desc = "An ominous black and purple voidsuit helmet, used by the fanatic paramilitary cult, Black Hole." + icon_state = "helm_acolyte" + +/obj/item/clothing/suit/space/void/merc/blackhole + icon_state = "suit" + icon = 'modular_chomp/icons/blackhole/equipment.dmi' + default_worn_icon = 'modular_chomp/icons/blackhole/equipment.dmi' + name = "black hole voidsuit" + desc = "An ominous black and purple voidsuit, used by the fanatic paramilitary cult, Black Hole." + item_state_slots = list(slot_r_hand_str = "syndie_voidsuit", slot_l_hand_str = "syndie_voidsuit") + w_class = ITEMSIZE_NORMAL + armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 65, bio = 100, rad = 100) + allowed = list(POCKET_GENERIC, POCKET_EMERGENCY, POCKET_SUIT_REGULATORS, POCKET_ALL_TANKS, POCKET_SECURITY) + siemens_coefficient = 0.6 + breach_threshold = 16 //Extra Thicc + resilience = 0.05 //Military Armor + diff --git a/modular_chomp/code/modules/clothing/under/blackhole.dm b/modular_chomp/code/modules/clothing/under/blackhole.dm new file mode 100644 index 0000000000..bcbd0fa1b5 --- /dev/null +++ b/modular_chomp/code/modules/clothing/under/blackhole.dm @@ -0,0 +1,11 @@ +/obj/item/clothing/under/blackhole + name = "black hole combat undersuit" + desc = "It's made of a special fiber that provides minor protection against biohazards. Worn by Black Hole fanatics." + icon_state = "under" + default_worn_icon = 'modular_chomp/icons/blackhole/equipment.dmi' + icon = 'modular_chomp/icons/blackhole/equipment.dmi' + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") + permeability_coefficient = 0.50 + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) + rolled_sleeves = 0 + diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/blackholemobs.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/blackholemobs.dm index 3db4802cea..f7089ab839 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/blackholemobs.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/blackholemobs.dm @@ -1,5 +1,8 @@ ///-- file dedicated to the new blackhole faction's mobs! + + + ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// ///oties! or, otie. singular. since... there's just one for now./// ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// @@ -116,25 +119,249 @@ return TRUE ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// -///the black hole fanatics!/// +///the basic guy/// ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// /mob/living/simple_mob/vore/blackhole - name = "Black Hole fanatic" - desc = "A tough looking armored feline creature. They wear various insignias identifying them as a member of Black Hole." + name = "Black Hole conscript" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask." icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' faction = FACTION_BLACKHOLE - icon_dead = "trooper-dead" - icon_living = "trooper" - icon_state = "trooper" - icon_rest = "trooper" + icon_dead = "conscript-dead" + icon_living = "conscript" + icon_state = "conscript" + icon_rest = "conscript-stunned" + a_intent = I_HURT + has_langs = list(LANGUAGE_SIIK, LANGUAGE_SLAVIC) see_in_dark = 8 - maxHealth = 200 + maxHealth = 100 movement_cooldown = 0 harm_intent_damage = 5 + melee_damage_lower = 10 + melee_damage_upper = 15 + response_help = "heavily pets" + response_disarm = "shoves" + response_harm = "bites" + attacktext = list("punched","clawed") + vore_active = 0 + old_x = 0 + old_y = 0 + default_pixel_x = 0 + pixel_x = 0 + pixel_y = 0 + attack_sound = 'sound/weapons/slice.ogg' + min_oxy = 5 + max_oxy = 0 + min_tox = 0 + max_tox = 1 + min_co2 = 0 + max_co2 = 5 + min_n2 = 0 + max_n2 = 0 + unsuitable_atoms_damage = 15 + minbodytemp = 100 + maxbodytemp = 400 + light_range = 3 + light_power = 2 + light_color = "#CC60FF" + grab_resist = 100 + + var/exploded = FALSE + var/explosion_dev_range = 0 + var/explosion_heavy_range = 0 + var/explosion_light_range = 1 + var/explosion_flash_range = 2 + + var/explosion_delay_lower = 1 SECOND // Lower bound for explosion delay. + var/explosion_delay_upper = 3 SECONDS // Upper bound. + + ai_holder_type = /datum/ai_holder/simple_mob/merc/blackhole + + say_list_type = /datum/say_list/merc/blackhole + + armor = list( // Values for normal getarmor() checks + "melee" = 10, + "bullet" = 20, + "laser" = 20, + "energy" = 5, + "bomb" = 0, + "bio" = 0, + "rad" = 100 + ) + + +/mob/living/simple_mob/vore/blackhole/ranged + name = "Black Hole conscript" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask, and wield a pistol." + icon_dead = "conscript-dead" + icon_living = "conscript-pistol" + icon_state = "conscript-pistol" + icon_rest = "conscript-stunned" + + projectiletype = /obj/item/projectile/bullet/pistol/bh1 + projectilesound = 'sound/weapons/serdy/9mmpistol.ogg' + projectile_dispersion = 3 + projectile_accuracy = -15 + base_attack_cooldown = 5 DECISECONDS + reload_max = 8 + needs_reload = 1 + reload_time = 2 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole + + +/mob/living/simple_mob/vore/blackhole/grotesque + name = "grotesque" + desc = "A horribly mutated, pale creature, poorly morphed into some hyperaggressive feline abomination. This is what tends to happen to those that Black Hole take prisoner-- Cannonfodder." + icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' + faction = FACTION_BLACKHOLE + icon_dead = "grotesque-dead" + icon_living = "grotesque" + icon_state = "grotesque" + icon_rest = "grotesque" + attacktext = list("savaged","slashed","impaled","gored","clawed","brutalized") + see_in_dark = 8 + has_eye_glow = TRUE + maxHealth = 75 + melee_miss_chance = 0 + melee_attack_delay = 0 + movement_cooldown = -3 + harm_intent_damage = 5 + say_list_type = /datum/say_list/merc/blackhole/grotesque + ai_holder_type = /datum/ai_holder/simple_mob/melee + attack_sound = 'sound/weapons/slice.ogg' + melee_damage_lower = 30 + melee_damage_upper = 35 + attack_armor_pen = 10 + attack_sharp = TRUE + attack_edge = 1 + +/mob/living/simple_mob/vore/blackhole/grotesque/death() + ..() + visible_message(span_warning("[src] lets out a horrible cry as it collapses into an inky black pile of gore!")) + playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1) + + +/* + + +////////////Conscripts//////////// + + +*/ + +/mob/living/simple_mob/vore/blackhole/conscript + name = "Black Hole conscript butcher" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask, and wield a machete." + icon_dead = "conscript-dead" + icon_living = "conscript-melee" + icon_state = "conscript-melee" + icon_rest = "conscript-stunned" + melee_damage_lower = 10 + melee_damage_upper = 25 + attack_armor_pen = 10 + attack_sharp = TRUE + attack_edge = 1 + attack_sound = 'sound/weapons/slash.ogg' + ai_holder_type = /datum/ai_holder/simple_mob/melee + + + +/mob/living/simple_mob/vore/blackhole/ranged/conscript + name = "Black Hole conscript" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask, and wield a pistol." + icon_dead = "conscript-dead" + icon_living = "conscript-pistol" + icon_state = "conscript-pistol" + icon_rest = "conscript-stunned" + + projectiletype = /obj/item/projectile/bullet/pistol/bh1 + projectilesound = 'sound/weapons/serdy/9mmpistol.ogg' + projectile_dispersion = 3 + projectile_accuracy = -15 + base_attack_cooldown = 5 DECISECONDS + reload_max = 8 + reload_time = 2 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole + + + +/mob/living/simple_mob/vore/blackhole/ranged/conscript/shield + name = "Black Hole conscript assaulter" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask, and wield a pistol and a shield." + icon_living = "conscript-pshield" + icon_state = "conscript-pshield" + + + +/mob/living/simple_mob/vore/blackhole/ranged/conscript/smg + name = "Black Hole conscript gunner" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask, and wield a sub machinegun." + icon_living = "conscript-smg" + icon_state = "conscript-smg" + loot_list = list(/obj/item/gun/projectile/automatic/serdy/viper = 15, /obj/item/ammo_magazine/viper = 15, /obj/item/ammo_magazine/viper = 25, /obj/item/ammo_magazine/viper = 25) + + projectiletype = /obj/item/projectile/bullet/pistol/bh2 + projectilesound = 'sound/weapons/serdy/vityaz.ogg' + base_attack_cooldown = 3 DECISECONDS + reload_max = 25 + reload_time = 2 SECONDS + + +/mob/living/simple_mob/vore/blackhole/ranged/conscript/rifle + name = "Black Hole conscript rifleman" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask, and wield an assault rifle." + icon_living = "conscript-rifle" + icon_state = "conscript-rifle" + loot_list = list(/obj/item/gun/projectile/automatic/serdy/valik = 25, /obj/item/ammo_magazine/akm = 25, /obj/item/ammo_magazine/akm = 25, /obj/item/ammo_magazine/akm = 20) + projectiletype = /obj/item/projectile/bullet/rifle/a545/bh1 + projectilesound = 'sound/weapons/serdy/sks.ogg' + base_attack_cooldown = 8 + reload_max = 30 + reload_time = 2 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole + + + +/mob/living/simple_mob/vore/blackhole/ranged/conscript/shotgun + name = "Black Hole conscript boarder" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask, and wield a combat shotgun." + icon_living = "conscript-shotgun" + icon_state = "conscript-shotgun" + + projectile_dispersion = 8 + projectile_accuracy = -18 + reload_sound = 'sound/weapons/shotgunpump.ogg' + projectiletype = /obj/item/projectile/scatter/shotgun/blackhole + projectilesound = 'sound/weapons/weaponsounds_shotgunshot.ogg' + base_attack_cooldown = 12 + reload_max = 8 + reload_time = 5 SECONDS + +/* + + +////////////Soldiers//////////// + + +*/ + + +/mob/living/simple_mob/vore/blackhole/soldier + name = "Black Hole soldier" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking heavy armor. They appear to be wearing some kind of death mask." + icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' + faction = FACTION_BLACKHOLE + icon_dead = "soldier-dead" + icon_living = "soldier" + icon_state = "soldier" + icon_rest = "soldier-stunned" + a_intent = I_HURT + see_in_dark = 8 + maxHealth = 150 + movement_cooldown = 0.3 + harm_intent_damage = 5 melee_damage_lower = 15 melee_damage_upper = 20 - has_eye_glow = TRUE response_help = "heavily pets" response_disarm = "shoves" response_harm = "bites" @@ -156,14 +383,211 @@ max_n2 = 0 minbodytemp = 0 - var/exploded = FALSE - var/explosion_dev_range = 0 - var/explosion_heavy_range = 0 - var/explosion_light_range = 1 - var/explosion_flash_range = 2 + exploded = FALSE + explosion_dev_range = 0 + explosion_heavy_range = 0 + explosion_light_range = 1 + explosion_flash_range = 2 - var/explosion_delay_lower = 1 SECOND // Lower bound for explosion delay. - var/explosion_delay_upper = 3 SECONDS // Upper bound. + explosion_delay_lower = 1 SECOND // Lower bound for explosion delay. + explosion_delay_upper = 3 SECONDS // Upper bound. + + ai_holder_type = /datum/ai_holder/simple_mob/merc/blackhole + + say_list_type = /datum/say_list/merc/blackhole + + armor = list( // Values for normal getarmor() checks + "melee" = 20, + "bullet" = 30, + "laser" = 40, + "energy" = 15, + "bomb" = 5, + "bio" = 5, + "rad" = 100 + ) + + + +/mob/living/simple_mob/vore/blackhole/soldier/melee + name = "Black Hole soldier bladesman" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking heavy armor. They appear to be wearing some kind of death mask, and wield a machete with a shield." + icon_dead = "soldier-dead" + icon_living = "soldier-melee" + icon_state = "soldier-melee" + icon_rest = "soldier-stunned" + melee_damage_lower = 20 + melee_damage_upper = 25 + attack_armor_pen = 10 + attack_sharp = TRUE + attack_edge = 1 + + +/mob/living/simple_mob/vore/blackhole/soldier/melee/flagbearer + name = "Black Hole soldier flagbearer" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking heavy armor. They appear to be wearing some kind of death mask, and wield a machete with a Black Hole banner." + icon_dead = "soldier-dead" + loot_list = list(/obj/item/gun/energy/plasma/x16b = 15, /obj/item/cell/x16b = 15, /obj/item/cell/x16b = 15, /obj/item/cell/x16b = 25) + + icon_living = "soldier-melee2" + icon_state = "soldier-melee2" + icon_rest = "soldier-stunned" + + +/mob/living/simple_mob/vore/blackhole/soldier/ranged + name = "Black Hole soldier" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking heavy armor. They appear to be wearing some kind of death mask, and wield a pistol." + icon_dead = "soldier-dead" + icon_living = "soldier-pistol" + icon_state = "soldier-pistol" + icon_rest = "soldier-stunned" + loot_list = list(/obj/item/gun/projectile/serdy_pistols/pmx = 15, /obj/item/ammo_magazine/pmx = 15, /obj/item/ammo_magazine/pmx = 15, /obj/item/ammo_magazine/pmx = 15) + + projectiletype = /obj/item/projectile/bullet/pistol/bh1 + projectilesound = 'sound/weapons/serdy/9mmpistol.ogg' + projectile_dispersion = 2 + projectile_accuracy = -15 + base_attack_cooldown = 4 DECISECONDS + needs_reload = 1 + reload_max = 8 + reload_time = 2 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole + + +/mob/living/simple_mob/vore/blackhole/soldier/ranged/smg + name = "Black Hole soldier shieldbearer" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking heavy armor. They appear to be wearing some kind of death mask, and wield a shield with an SMG." + icon_living = "soldier-smg" + icon_state = "soldier-smg" + loot_list = list(/obj/item/gun/projectile/automatic/serdy/viper = 15, /obj/item/ammo_magazine/viper = 15, /obj/item/ammo_magazine/viper = 25, /obj/item/ammo_magazine/viper = 25) + + projectiletype = /obj/item/projectile/bullet/pistol/bh2 + projectilesound = 'sound/weapons/serdy/vityaz.ogg' + projectile_dispersion = 8 + projectile_accuracy = -25 + base_attack_cooldown = 3 DECISECONDS + reload_max = 25 + reload_time = 2 SECONDS + + +/mob/living/simple_mob/vore/blackhole/soldier/ranged/rifle + name = "Black Hole soldier rifleman" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking heavy armor. They appear to be wearing some kind of death mask, and wield an assault rifle." + icon_living = "soldier-rifle" + icon_state = "soldier-rifle" + loot_list = list(/obj/item/gun/projectile/automatic/serdy/valik = 10, /obj/item/ammo_magazine/akm = 15, /obj/item/ammo_magazine/akm = 15, /obj/item/ammo_magazine/akm = 15) + projectiletype = /obj/item/projectile/bullet/rifle/a545/bh1 + projectilesound = 'sound/weapons/serdy/sks.ogg' + base_attack_cooldown = 8 + reload_max = 30 + reload_time = 2 SECONDS + + +/mob/living/simple_mob/vore/blackhole/soldier/ranged/shotgun + name = "Black Hole soldier boarder" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking heavy armor. They appear to be wearing some kind of death mask, and wield a combat shotgun." + icon_living = "soldier-shotgun" + icon_state = "soldier-shotgun" + + projectile_dispersion = 8 + projectile_accuracy = -18 + reload_sound = 'sound/weapons/shotgunpump.ogg' + projectiletype = /obj/item/projectile/scatter/shotgun/blackhole + projectilesound = 'sound/weapons/weaponsounds_shotgunshot.ogg' + base_attack_cooldown = 12 + reload_max = 8 + reload_time = 5 SECONDS + + +/mob/living/simple_mob/vore/blackhole/soldier/ranged/plasma + name = "Black Hole soldier plasma gunner" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking heavy armor. They appear to be wearing some kind of death mask, and wield an advanced plasma carbine." + icon_living = "soldier-plasma" + icon_state = "soldier-plasma" + has_eye_glow = TRUE + loot_list = list(/obj/item/gun/energy/plasma/x16b = 15, /obj/item/cell/x16b = 15, /obj/item/cell/x16b = 15, /obj/item/cell/x16b = 25) + + projectiletype = /obj/item/projectile/energy/plasma/vepr/blackhole + projectilesound = 'sound/weapons/serdy/vepr.ogg' + projectile_dispersion = 2 + projectile_accuracy = -15 + base_attack_cooldown = 4 DECISECONDS + reload_max = 8 + reload_time = 5 SECONDS + + +/mob/living/simple_mob/vore/blackhole/soldier/ranged/lmg + name = "Black Hole soldier machinegunner" + desc = "A tajaran dressed in an ominous black and purple uniform, with advanced looking heavy armor. They appear to be wearing some kind of death mask, and wield a bullpupped LMG." + icon_living = "soldier-lmg" + icon_state = "soldier-lmg" + + projectiletype = /obj/item/projectile/bullet/rifle/a545/bh1 + projectilesound = 'sound/weapons/serdy/strela.ogg' + projectile_dispersion = 4 + projectile_accuracy = -25 + base_attack_cooldown = 1.5 DECISECONDS + reload_max = 100 + reload_time = 8 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole/lmg + + + +/* + + +////////////Troopers/Templars/Acolytes//////////// + + +*/ + + +/mob/living/simple_mob/vore/blackhole/trooper + name = "Black Hole trooper" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them." + icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' + faction = FACTION_BLACKHOLE + icon_dead = "trooper-dead" + icon_living = "trooper" + icon_state = "trooper" + icon_rest = "trooper-stunned" + a_intent = I_HURT + see_in_dark = 8 + maxHealth = 150 + movement_cooldown = -0.5 + harm_intent_damage = 5 + melee_damage_lower = 15 + melee_damage_upper = 20 + response_help = "heavily pets" + response_disarm = "shoves" + response_harm = "bites" + attacktext = list("punched","clawed") + vore_active = 0 + old_x = 0 + old_y = 0 + default_pixel_x = 0 + pixel_x = 0 + pixel_y = 0 + has_eye_glow = TRUE + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + unsuitable_atoms_damage = 15 + minbodytemp = 0 + maxbodytemp = 1400 + + exploded = FALSE + explosion_dev_range = 0 + explosion_heavy_range = 0 + explosion_light_range = 1 + explosion_flash_range = 2 + + explosion_delay_lower = 1 SECOND // Lower bound for explosion delay. + explosion_delay_upper = 3 SECONDS // Upper bound. ai_holder_type = /datum/ai_holder/simple_mob/merc/blackhole @@ -171,170 +595,809 @@ armor = list( // Values for normal getarmor() checks "melee" = 40, - "bullet" = 30, - "laser" = 20, - "energy" = 5, - "bomb" = 50, - "bio" = 100, - "rad" = 100 - ) - -/mob/living/simple_mob/vore/blackhole/shield - name = "Black Hole bulwark" - desc = "A tough looking armored feline creature armed with a shield and an energy lance. They wear various insignias identifying them as a member of Black Hole." - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' - faction = FACTION_BLACKHOLE - icon_dead = "trooper-dead" - icon_living = "trooper_shield" - icon_state = "trooper_shield" - icon_rest = "trooper_shield" - attacktext = list("stabbed","slashed","impaled") - maxHealth = 200 - melee_miss_chance = 0 - movement_cooldown = -1.5 - harm_intent_damage = 5 - melee_damage_lower = 25 - melee_damage_upper = 30 - attack_sound = 'sound/weapons/blade1.ogg' - armor = list( // Values for normal getarmor() checks - "melee" = 60, - "bullet" = 50, + "bullet" = 40, "laser" = 40, - "energy" = 35, - "bomb" = 70, - "bio" = 100, + "energy" = 45, + "bomb" = 5, + "bio" = 5, "rad" = 100 ) -/mob/living/simple_mob/vore/blackhole/grotesque - name = "grotesque" - desc = "A horribly mutated, pale creature, poorly morphed into some hyperaggressive feline abomination. This is what tends to happen to those that Black Hole take prisoner-- Cannonfodder." - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' - faction = FACTION_BLACKHOLE - icon_dead = "grotesque-dead" - icon_living = "grotesque" - icon_state = "grotesque" - icon_rest = "grotesque" - attacktext = list("savaged","slashed","impaled","gored","clawed","brutalized") - see_in_dark = 8 - maxHealth = 75 - melee_miss_chance = 0 - melee_attack_delay = 0 - movement_cooldown = -3 - harm_intent_damage = 5 - melee_damage_lower = 10 - melee_damage_upper = 15 - say_list_type = /datum/say_list/merc/blackhole/grotesque - ai_holder_type = /datum/ai_holder/simple_mob/melee - attack_sound = 'sound/weapons/slice.ogg' - -/mob/living/simple_mob/vore/blackhole/grotesque/death() - ..() - visible_message("[src] lets out a horrible cry as it collapses into an inky black pile of gore!") - playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1) - -/mob/living/simple_mob/vore/blackhole/ranged - name = "Black Hole trooper" - desc = "A tough looking armored feline creature armed with a pistol. They wear various insignias identifying them as a member of Black Hole." - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' - faction = FACTION_BLACKHOLE +/mob/living/simple_mob/vore/blackhole/trooper/melee + name = "Black Hole trooper bulwark" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have an energy sword and shield." icon_dead = "trooper-dead" - icon_living = "trooper_pistol" - icon_state = "trooper_pistol" - icon_rest = "trooper_pistol" + icon_living = "trooper-sshield" + icon_state = "trooper-sshield" + icon_rest = "trooper-stunned" + attack_sound = 'sound/weapons/blade1.ogg' + loot_list = list(/obj/item/melee/energy/sword/pirate = 15, /obj/item/shield/energy = 10) + melee_damage_lower = 30 + melee_damage_upper = 35 + attack_armor_pen = 50 + attack_sharp = TRUE + attack_edge = 1 + attacktext = list("slashed") + + armor = list( // Values for normal getarmor() checks + "melee" = 70, + "bullet" = 40, + "laser" = 40, + "energy" = 55, + "bomb" = 65, + "bio" = 65, + "rad" = 100 + ) + + +/mob/living/simple_mob/vore/blackhole/trooper/melee/attackby(obj/item/O, mob/user) + if(!O.force) + to_chat(user, span_notice("This weapon is ineffective, it does no damage.")) + visible_message(span_notice("\The [user] gently taps [src] with \the [O].")) + return + if(prob(20)) + visible_message(span_danger("\The [src] blocks \the [O] with its shield!")) + if(user) + ai_holder.react_to_attack(user) + return + . = ..() + + +/mob/living/simple_mob/vore/blackhole/trooper/melee/bullet_act(obj/item/projectile/proj) + if(!proj) return + if(prob(35)) + visible_message(span_bolddanger("[src] blocks [proj] with its shield!")) + if(proj.firer) + ai_holder.react_to_attack(proj.firer) + return + . = ..() + + +/mob/living/simple_mob/vore/blackhole/trooper/ranged + name = "Black Hole trooper" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have a pistol." + icon_dead = "trooper-dead" + icon_living = "trooper-pistol" + icon_state = "trooper-pistol" + icon_rest = "trooper-stunned" + loot_list = list(/obj/item/gun/projectile/serdy_pistols/pmx = 15, /obj/item/ammo_magazine/pmx = 15, /obj/item/ammo_magazine/pmx = 15, /obj/item/ammo_magazine/pmx = 15) projectiletype = /obj/item/projectile/bullet/pistol/bh1 projectilesound = 'sound/weapons/serdy/9mmpistol.ogg' - projectile_dispersion = 3 + projectile_dispersion = 2 projectile_accuracy = -15 - base_attack_cooldown = 8 DECISECONDS - reload_max = 12 + base_attack_cooldown = 4 DECISECONDS + needs_reload = 1 + reload_max = 8 + reload_time = 5 SECONDS ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole -/mob/living/simple_mob/vore/blackhole/ranged/smg - name = "Black Hole gunner" - desc = "A tough looking armored feline creature armed with an SMG. They wear various insignias identifying them as a member of Black Hole." - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' - faction = FACTION_BLACKHOLE - icon_dead = "trooper-dead" - icon_living = "trooper_smg" - icon_state = "trooper_smg" - icon_rest = "trooper_smg" +/mob/living/simple_mob/vore/blackhole/trooper/ranged/pistols + name = "Black Hole trooper gunslinger" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have TWO pistols." + icon_dead = "trooper-dead" + icon_living = "trooper-pistols" + icon_state = "trooper-pistols" + icon_rest = "trooper-stunned" + loot_list = list(/obj/item/gun/projectile/serdy_pistols/pmx = 15, /obj/item/gun/projectile/serdy_pistols/pmx = 15, /obj/item/ammo_magazine/pmx = 15, /obj/item/ammo_magazine/pmx = 15, /obj/item/ammo_magazine/pmx = 15) + projectiletype = /obj/item/projectile/bullet/pistol/bh1 + projectilesound = 'sound/weapons/serdy/9mmpistol.ogg' + projectile_dispersion = 2 + projectile_accuracy = -15 + base_attack_cooldown = 2 DECISECONDS + reload_max = 16 + reload_time = 5 SECONDS + + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/smg + name = "Black Hole trooper gunner" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have an SMG." + icon_dead = "trooper-dead" + icon_living = "trooper-smg" + icon_state = "trooper-smg" + icon_rest = "trooper-stunned" + loot_list = list(/obj/item/gun/projectile/serdy_pistols/pmx = 15, /obj/item/gun/projectile/automatic/serdy/viper = 15, /obj/item/ammo_magazine/viper = 15, /obj/item/ammo_magazine/viper = 15, /obj/item/ammo_magazine/pmx = 15) projectiletype = /obj/item/projectile/bullet/pistol/bh2 projectilesound = 'sound/weapons/serdy/vityaz.ogg' projectile_dispersion = 3 projectile_accuracy = -15 - base_attack_cooldown = 2 + base_attack_cooldown = 1 DECISECONDS reload_max = 25 - ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole + reload_time = 2 SECONDS -/mob/living/simple_mob/vore/blackhole/ranged/rifle - name = "Black Hole rifleman" - desc = "A tough looking armored feline creature armed with a rifle. They wear various insignias identifying them as a member of Black Hole." - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' - faction = FACTION_BLACKHOLE + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/smg_shield + name = "Black Hole trooper assaulter" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have an SMG and a shield." icon_dead = "trooper-dead" - icon_living = "trooper_rifle" - icon_state = "trooper_rifle" - icon_rest = "trooper_rifle" + icon_living = "trooper-smgshield" + icon_state = "trooper-smgshield" + icon_rest = "trooper-stunned" + loot_list = list(/obj/item/gun/projectile/automatic/serdy/viper = 10, /obj/item/ammo_magazine/viper = 10, /obj/item/ammo_magazine/viper = 10, /obj/item/shield/energy = 15) + projectiletype = /obj/item/projectile/bullet/pistol/bh2 + projectilesound = 'sound/weapons/serdy/vityaz.ogg' + projectile_dispersion = 8 + projectile_accuracy = -15 + base_attack_cooldown = 1 DECISECONDS + reload_max = 25 + reload_time = 2 SECONDS + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/smg_shield/attackby(obj/item/O, mob/user) + if(!O.force) + to_chat(user, span_notice("This weapon is ineffective, it does no damage.")) + visible_message(span_notice("\The [user] gently taps [src] with \the [O].")) + return + if(prob(20)) + visible_message(span_danger("\The [src] blocks \the [O] with its shield!")) + if(user) + ai_holder.react_to_attack(user) + return + . = ..() + + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/smg_shield/bullet_act(obj/item/projectile/proj) + if(!proj) return + if(prob(35)) + visible_message(span_bolddanger("[src] blocks [proj] with its shield!")) + if(proj.firer) + ai_holder.react_to_attack(proj.firer) + return + . = ..() + + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/rifle + name = "Black Hole trooper rifleman" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have an SMG." + icon_dead = "trooper-dead" + icon_living = "trooper-rifle" + icon_state = "trooper-rifle" + icon_rest = "trooper-stunned" + loot_list = list(/obj/item/gun/projectile/automatic/serdy/valik = 15, /obj/item/ammo_magazine/akm = 15, /obj/item/ammo_magazine/akm = 15, /obj/item/ammo_magazine/akm = 25) projectiletype = /obj/item/projectile/bullet/rifle/a545/bh1 projectilesound = 'sound/weapons/serdy/sks.ogg' - projectile_dispersion = 3 - projectile_accuracy = -15 base_attack_cooldown = 8 reload_max = 30 + reload_time = 2 SECONDS + + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/plasma + name = "Black Hole trooper purifyer" + desc = "An ominous looking feline individual, wearing a sleek, dark black and purple voidsuit. There is something very uncanny about them. They appear to have a plasma carbine." + icon_living = "trooper-plasma" + icon_state = "trooper-plasma" + loot_list = list(/obj/item/gun/energy/plasma/x16b = 15, /obj/item/cell/x16b = 15, /obj/item/cell/x16b = 15, /obj/item/cell/x16b = 25) + + projectiletype = /obj/item/projectile/energy/plasma/vepr/blackhole + projectilesound = 'sound/weapons/serdy/vepr.ogg' + projectile_dispersion = 2 + projectile_accuracy = -15 + base_attack_cooldown = 3 DECISECONDS + reload_max = 8 + reload_time = 5 SECONDS + + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/sniper + name = "Black Hole trooper marksman" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have a sniper rifle." + icon_dead = "trooper-dead" + icon_living = "trooper-sniper" + icon_state = "trooper-sniper" + icon_rest = "trooper-stunned" + loot_list = list(/obj/item/gun/projectile/automatic/serdy/lynx = 15, /obj/item/ammo_magazine/lynx = 15, /obj/item/ammo_magazine/lynx = 15, /obj/item/ammo_magazine/lynx = 15) + projectiletype = /obj/item/projectile/bullet/rifle/a145/bh2 + projectilesound = 'sound/weapons/gunshot_cannon.ogg' + projectile_dispersion = 2 + ranged_attack_delay = 1.5 SECONDS + projectile_accuracy = -15 + base_attack_cooldown = 4 DECISECONDS + reload_max = 10 + reload_time = 5 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/sniper + + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/sniper/ranged_pre_animation(atom/A) + Beam(get_turf(A), icon_state = "sniper_beam", time = 2 SECONDS, maxdistance = 20) + . = ..() + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/sniper/shoot_target(atom/A) + set waitfor = FALSE + + if(!istype(A) || QDELETED(A)) + return + + setClickCooldown(get_attack_speed()) + + face_atom(A) + + var/atom/orig_targ = A + + if(ranged_attack_delay) + A = get_turf(orig_targ) + ranged_pre_animation(A) + handle_attack_delay(A, ranged_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false. + + if(needs_reload) + if(reload_count >= reload_max) + try_reload() + return FALSE + + /* + * CHOMP Addition: This section here is (duplicated) special snowflake code because sniper does not call parent. Basically, this is a non-stupid version of the above intended for ranged mobs. + * ranged_attack_delay is stupid because it sleeps the entire mob. + * This new ranged_cooldown_time is smarter in the sense that it is an internalized timer. Try not to confuse the names. + */ + if(ranged_cooldown_time) //If you have a non-zero number in a mob's variables, this pattern begins. + if(ranged_cooldown <= world.time) //Further down, a timer keeps adding to the ranged_cooldown variable automatically. + visible_message(span_danger(span_bold("\The [src]") + " fires at \the [A]!")) //Leave notice of shooting. + shoot(A) //Perform the shoot action + if(casingtype) //If the mob is designated to leave casings... + new casingtype(loc) //... leave the casing. + ranged_cooldown = world.time + ranged_cooldown_time + ((injury_level / 2) SECONDS) //Special addition here. This is a timer. Keeping updating the time after shooting. Add that ranged cooldown time specified in the mob to the world time. + return TRUE //End these commands here. + // CHOMPAddition End + + visible_message(span_danger(span_bold("\The [src]") + " fires at \the [orig_targ]!")) + shoot(A) + if(casingtype) + new casingtype(loc) + + if(ranged_attack_delay) + ranged_post_animation(A) + + return TRUE + + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/sniper/amr + name = "Black Hole trooper sniper" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have an AMR." + icon_dead = "trooper-dead" + icon_living = "trooper-amr" + icon_state = "trooper-amr" + icon_rest = "trooper-stunned" + + projectiletype = /obj/item/projectile/bullet/rifle/a145/bh1 // Really scary bullet. + projectilesound = 'sound/weapons/gunshot_cannon.ogg' + projectile_dispersion = 0 + ranged_attack_delay = 2.5 SECONDS + projectile_accuracy = 15 + base_attack_cooldown = 2 DECISECONDS + reload_max = 4 + reload_time = 5 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/sniper + + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/sniper/rpg + name = "Black Hole trooper anti-tank" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have an AMR." + icon_dead = "trooper-dead" + icon_living = "trooper-rpg" + icon_state = "trooper-rpg" + icon_rest = "trooper-stunned" + + projectiletype = /obj/item/projectile/explosive_rocket/blackhole // RAWKET LAWNCHAIR + projectile_dispersion = 0 + ranged_attack_delay = 2.5 SECONDS + projectile_accuracy = 15 + base_attack_cooldown = 20 DECISECONDS + reload_max = 1 + reload_sound = 'sound/weapons/serdy/rpg_reload.ogg' + reload_time = 5 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/sniper + + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/lmg + name = "Black Hole trooper machinegunner" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have an LMG." + icon_living = "trooper-lmg" + icon_state = "trooper-lmg" + loot_list = list(/obj/item/gun/projectile/automatic/serdy/zvir = 5, /obj/item/ammo_magazine/zvir = 15, /obj/item/ammo_magazine/zvir = 15, /obj/item/ammo_magazine/zvir = 10) + projectiletype = /obj/item/projectile/bullet/rifle/a545/bh1 + projectilesound = 'sound/weapons/serdy/strela.ogg' + projectile_dispersion = 4 + projectile_accuracy = -25 + base_attack_cooldown = 1.5 DECISECONDS + reload_max = 100 + reload_time = 12 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole/lmg + + +/mob/living/simple_mob/vore/blackhole/trooper/ranged/hmg + name = "Black Hole trooper destroyer" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have a massive HMG slung low, and ready." + icon_living = "trooper-hmg" + icon_state = "trooper-hmg" + has_eye_glow = TRUE + loot_list = list(/obj/item/gun/projectile/automatic/serdy/barka = 5, /obj/item/ammo_magazine/barka = 15, /obj/item/ammo_magazine/barka = 15, /obj/item/ammo_magazine/barka = 10) + projectiletype = /obj/item/projectile/bullet/rifle/a545/bh2 + projectilesound = 'sound/weapons/serdy/strela.ogg' + projectile_dispersion = 7 + projectile_accuracy = -25 + base_attack_cooldown = 2 DECISECONDS + reload_max = 50 + reload_time = 8 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole/lmg + + +/mob/living/simple_mob/vore/blackhole/templar/melee + name = "Black Hole templar" + desc = "An ominous looking feline individual, wearing a reinforced dark black and purple voidsuit. There is something very uncanny about them. They appear to have an energy sword and shield." + icon_dead = "templar-dead" + icon_living = "templar-sshield" + icon_state = "templar-sshield" + icon_rest = "templar-stunned" + attack_sound = 'sound/weapons/blade1.ogg' + has_eye_glow = TRUE + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + unsuitable_atoms_damage = 15 + minbodytemp = 0 + maxbodytemp = 1400 + + + loot_list = list(/obj/item/melee/energy/sword/pirate = 25, /obj/item/shield/energy = 10) + melee_damage_lower = 30 + melee_damage_upper = 35 + attack_armor_pen = 50 + attack_sharp = TRUE + attack_edge = 1 + attacktext = list("slashed") + + armor = list( // Values for normal getarmor() checks + "melee" = 50, + "bullet" = 50, + "laser" = 50, + "energy" = 55, + "bomb" = 65, + "bio" = 65, + "rad" = 100 + ) + +/mob/living/simple_mob/vore/blackhole/templar/melee/attackby(obj/item/O, mob/user) + if(!O.force) + to_chat(user, span_notice("This weapon is ineffective, it does no damage.")) + visible_message(span_notice("\The [user] gently taps [src] with \the [O].")) + return + if(prob(20)) + visible_message(span_danger("\The [src] blocks \the [O]!")) + if(user) + ai_holder.react_to_attack(user) + return + . = ..() + + +/mob/living/simple_mob/vore/blackhole/templar/melee/bullet_act(obj/item/projectile/proj) + if(!proj) return + if(prob(35)) + visible_message(span_bolddanger("[src] blocks [proj]!")) + if(proj.firer) + ai_holder.react_to_attack(proj.firer) + return + . = ..() + + +/mob/living/simple_mob/vore/blackhole/templar/melee/desword + name = "Black Hole templar defender" + desc = "An ominous looking feline individual, wearing a reinforced dark black and purple voidsuit. There is something very uncanny about them. They appear to have a double energy sword." + icon_dead = "templar-dead" + icon_living = "templar-dsword" + icon_state = "templar-dsword" + icon_rest = "templar-stunned" + has_eye_glow = TRUE + attack_sound = 'sound/weapons/blade1.ogg' + loot_list = list(/obj/item/melee/energy/sword/pirate = 15, /obj/item/melee/energy/sword/pirate = 15) + melee_damage_lower = 30 + melee_damage_upper = 35 + attack_armor_pen = 50 + attack_sharp = TRUE + melee_attack_delay = 0.5 + base_attack_cooldown = 5 + attack_edge = 1 + attacktext = list("slashed", "quigonned", "styled on", "darth mauled", "oppressed") + + +/mob/living/simple_mob/vore/blackhole/templar/melee/hammer + name = "Black Hole templar mauler" + desc = "An ominous looking feline individual, wearing a reinforced dark black and purple voidsuit. There is something very uncanny about them. They appear to have a giant shock maul." + icon_dead = "templar-dead" + icon_living = "templar-hammer" + icon_state = "templar-hammer" + icon_rest = "templar-stunned" + has_eye_glow = TRUE + attack_sound = 'sound/weapons/heavysmash.ogg' + loot_list = list(/obj/item/melee/shock_maul = 25) + melee_damage_lower = 30 + melee_damage_upper = 45 + base_attack_cooldown = 12 + attack_armor_pen = 10 + attack_sharp = FALSE + attack_edge = 0 + attacktext = list("struck", "bonked", "hammered", "vibe checked", "sledged", "thrashed") + + +/mob/living/simple_mob/vore/blackhole/templar/melee/hammer/apply_melee_effects(atom/A) + if(isliving(A)) + var/mob/living/L = A + L.electrocute_act(10, src, def_zone = BP_TORSO) + visible_message(span_danger("\The [src] sends \the [L] flying with a thunderous crackle of electricity!")) + playsound(src, 'sound/effects/lightningbolt.ogg', 50, 1) + playsound(src.loc, "sparks", 50, 1) + L.stun_effect_act(1 , 3, BP_TORSO, src) + L.take_organ_damage(10) + L.Paralyse(1) + var/throwdir = get_dir(src, L) + L.throw_at(get_edge_target_turf(L, throwdir), 50, 4, src) + . = ..() + + + +/mob/living/simple_mob/vore/blackhole/templar/ranged + name = "Black Hole templar assaulter" + desc = "An ominous looking feline individual, wearing a reinforced dark black and purple voidsuit. There is something very uncanny about them. They appear to have a pistol and a shield." + icon_dead = "templar-dead" + icon_living = "templar-pshield" + icon_state = "templar-pshield" + icon_rest = "templar-stunned" + has_eye_glow = TRUE + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + unsuitable_atoms_damage = 15 + minbodytemp = 0 + maxbodytemp = 1400 + + + loot_list = list(/obj/item/melee/energy/sword/pirate = 35, /obj/item/shield/energy = 30) + + projectiletype = /obj/item/projectile/bullet/pistol/bh1 + projectilesound = 'sound/weapons/serdy/9mmpistol.ogg' + projectile_dispersion = 2 + projectile_accuracy = -15 + base_attack_cooldown = 4 DECISECONDS + needs_reload = 1 + reload_max = 8 + reload_time = 2 SECONDS + armor = list( // Values for normal getarmor() checks + "melee" = 40, + "bullet" = 40, + "laser" = 40, + "energy" = 45, + "bomb" = 45, + "bio" = 65, + "rad" = 100 + ) + + +/mob/living/simple_mob/vore/blackhole/templar/ranged/smg_shield + name = "Black Hole templar assaulter" + desc = "An ominous looking feline individual, wearing a reinforced dark black and purple voidsuit. There is something very uncanny about them. They appear to have an SMG and a shield." + icon_dead = "templar-dead" + icon_living = "templar-smgshield" + icon_state = "templar-smgshield" + icon_rest = "templar-stunned" + loot_list = list(/obj/item/gun/projectile/automatic/serdy/viper = 25, /obj/item/ammo_magazine/viper = 15, /obj/item/ammo_magazine/viper = 15, /obj/item/shield/energy = 10) + + projectiletype = /obj/item/projectile/bullet/pistol/bh2 + projectilesound = 'sound/weapons/serdy/vityaz.ogg' + projectile_dispersion = 8 + projectile_accuracy = -15 + base_attack_cooldown = 1 DECISECONDS + reload_max = 25 + reload_time = 3 SECONDS + armor = list( // Values for normal getarmor() checks + "melee" = 40, + "bullet" = 40, + "laser" = 40, + "energy" = 45, + "bomb" = 45, + "bio" = 65, + "rad" = 100 + ) + + +/mob/living/simple_mob/vore/blackhole/templar/ranged/smg_shield/attackby(obj/item/O, mob/user) + if(!O.force) + to_chat(user, span_notice("This weapon is ineffective, it does no damage.")) + visible_message(span_notice("\The [user] gently taps [src] with \the [O].")) + return + if(prob(20)) + visible_message(span_danger("\The [src] blocks \the [O] with its shield!")) + if(user) + ai_holder.react_to_attack(user) + return + . = ..() + + +/mob/living/simple_mob/vore/blackhole/templar/ranged/smg_shield/bullet_act(obj/item/projectile/proj) + if(!proj) return + if(prob(35)) + visible_message(span_bolddanger("[src] blocks [proj] with its shield!")) + if(proj.firer) + ai_holder.react_to_attack(proj.firer) + return + . = ..() + + + +/mob/living/simple_mob/vore/blackhole/acolyte/ranged + name = "Black Hole acolyte" + desc = "An ominous looking feline individual, wearing a sleek, dark black and purple voidsuit. There is something very uncanny about them. They appear to have a pistol." + icon_dead = "acolyte-dead" + icon_living = "acolyte-pistol" + icon_state = "acolyte-pistol" + icon_rest = "acolyte-stunned" + has_eye_glow = TRUE + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + unsuitable_atoms_damage = 15 + minbodytemp = 0 + maxbodytemp = 1400 + + projectiletype = /obj/item/projectile/bullet/pistol/bh1 + projectilesound = 'sound/weapons/serdy/vityaz.ogg' + projectile_dispersion = 3 + projectile_accuracy = -15 + base_attack_cooldown = 1 DECISECONDS + needs_reload = 1 + reload_max = 12 + reload_time = 2 SECONDS + armor = list( // Values for normal getarmor() checks + "melee" = 40, + "bullet" = 40, + "laser" = 40, + "energy" = 45, + "bomb" = 45, + "bio" = 65, + "rad" = 100 + ) + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole -/mob/living/simple_mob/vore/blackhole/ranged/lmg - name = "Black Hole machinegunner" - desc = "A tough looking armored feline creature armed with a light machinegun. They wear various insignias identifying them as a member of Black Hole." - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' - faction = FACTION_BLACKHOLE - icon_dead = "trooper-dead" - icon_living = "trooper_lmg" - icon_state = "trooper_lmg" - icon_rest = "trooper_lmg" - projectiletype = /obj/item/projectile/bullet/pistol/bh3 - projectilesound = 'sound/weapons/serdy/ak74.ogg' - projectile_dispersion = 12 +/mob/living/simple_mob/vore/blackhole/acolyte/ranged/ion + name = "Black Hole acolyte disruptor" + desc = "An ominous looking feline individual, wearing a sleek, dark black and purple voidsuit. There is something very uncanny about them. They appear to have an ion pistol." + icon_living = "acolyte-ion" + icon_state = "acolyte-ion" + + projectiletype = /obj/item/projectile/ion/bh1 + projectile_dispersion = 3 projectile_accuracy = -25 - base_attack_cooldown = 0.1 + base_attack_cooldown = 4 DECISECONDS + reload_max = 10 + + +/mob/living/simple_mob/vore/blackhole/acolyte/ranged/pulse + name = "Black Hole acolyte annihilator" + desc = "An ominous looking feline individual, wearing a sleek, dark black and purple voidsuit. There is something very uncanny about them. They appear to have a fucking pulse rifle!" + icon_living = "acolyte-pulse" + icon_state = "acolyte-pulse" + + projectiletype = /obj/item/projectile/beam/pulse/bh1 + projectile_dispersion = 3 + projectile_accuracy = -25 + base_attack_cooldown = 12 DECISECONDS + reload_max = 10 + + +/mob/living/simple_mob/vore/blackhole/acolyte/ranged/lightning + name = "Black Hole acolyte conduit" + desc = "An ominous looking feline individual, wearing a sleek, dark black and purple voidsuit. There is something very uncanny about them. They appear to have a lightning gun." + icon_living = "acolyte-lightning" + icon_state = "acolyte-lightning" + + projectiletype = /obj/item/projectile/beam/shock/bh1 + projectile_dispersion = 3 + projectile_accuracy = -25 + base_attack_cooldown = 20 DECISECONDS + reload_max = 10 + + +/mob/living/simple_mob/vore/blackhole/acolyte/ranged/sniper/gauss + name = "Black Hole acolyte monolithian" + desc = "An ominous looking feline individual, wearing a sleek, dark black and purple voidsuit. There is something very uncanny about them. They appear to have a gauss rifle." + icon_living = "acolyte-gauss" + icon_state = "acolyte-gauss" + + projectiletype = /obj/item/projectile/bullet/rifle/a145/bh3 + projectile_dispersion = 0 + ranged_attack_delay = 1.5 SECONDS + projectile_accuracy = 15 + base_attack_cooldown = 2 DECISECONDS + reload_max = 1 + reload_time = 2 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/sniper + +/mob/living/simple_mob/vore/blackhole/acolyte/ranged/sniper/ranged_pre_animation(atom/A) + Beam(get_turf(A), icon_state = "sniper_beam", time = 2 SECONDS, maxdistance = 20) + . = ..() + +/mob/living/simple_mob/vore/blackhole/acolyte/ranged/sniper/shoot_target(atom/A) + set waitfor = FALSE + + if(!istype(A) || QDELETED(A)) + return + + setClickCooldown(get_attack_speed()) + + face_atom(A) + + var/atom/orig_targ = A + + if(ranged_attack_delay) + A = get_turf(orig_targ) + ranged_pre_animation(A) + handle_attack_delay(A, ranged_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false. + + if(needs_reload) + if(reload_count >= reload_max) + try_reload() + return FALSE + + /* + * CHOMP Addition: This section here is (duplicated) special snowflake code because sniper does not call parent. Basically, this is a non-stupid version of the above intended for ranged mobs. + * ranged_attack_delay is stupid because it sleeps the entire mob. + * This new ranged_cooldown_time is smarter in the sense that it is an internalized timer. Try not to confuse the names. + */ + if(ranged_cooldown_time) //If you have a non-zero number in a mob's variables, this pattern begins. + if(ranged_cooldown <= world.time) //Further down, a timer keeps adding to the ranged_cooldown variable automatically. + visible_message(span_danger(span_bold("\The [src]") + " fires at \the [A]!")) //Leave notice of shooting. + shoot(A) //Perform the shoot action + if(casingtype) //If the mob is designated to leave casings... + new casingtype(loc) //... leave the casing. + ranged_cooldown = world.time + ranged_cooldown_time + ((injury_level / 2) SECONDS) //Special addition here. This is a timer. Keeping updating the time after shooting. Add that ranged cooldown time specified in the mob to the world time. + return TRUE //End these commands here. + // CHOMPAddition End + + visible_message(span_danger(span_bold("\The [src]") + " fires at \the [orig_targ]!")) + shoot(A) + if(casingtype) + new casingtype(loc) + + if(ranged_attack_delay) + ranged_post_animation(A) + + return TRUE + + +/mob/living/simple_mob/vore/blackhole/acolyte/ranged/plasma + name = "Black Hole acolyte purifyer" + desc = "An ominous looking feline individual, wearing a sleek, dark black and purple voidsuit. There is something very uncanny about them. They appear to have a plasma carbine." + icon_living = "acolyte-plasma" + icon_state = "acolyte-plasma" + loot_list = list(/obj/item/gun/energy/plasma/x16b = 15, /obj/item/cell/x16b = 15, /obj/item/cell/x16b = 15, /obj/item/cell/x16b = 25) + + projectiletype = /obj/item/projectile/energy/plasma/vepr/blackhole + projectilesound = 'sound/weapons/serdy/vepr.ogg' + projectile_dispersion = 2 + projectile_accuracy = -15 + base_attack_cooldown = 3 DECISECONDS + reload_max = 8 + reload_time = 5 SECONDS + + +/mob/living/simple_mob/vore/blackhole/acolyte/ranged/shotgun + name = "Black Hole acolyte blackhand" + desc = "An ominous looking feline individual, wearing a sleek, dark black and purple voidsuit. There is something very uncanny about them. They appear to have a combat shotgun." + icon_living = "acolyte-shotgun" + icon_state = "acolyte-shotgun" + + projectile_dispersion = 8 + projectile_accuracy = -18 + reload_sound = 'sound/weapons/shotgunpump.ogg' + projectiletype = /obj/item/projectile/scatter/shotgun/blackhole + projectilesound = 'sound/weapons/weaponsounds_shotgunshot.ogg' + base_attack_cooldown = 12 + reload_max = 8 + reload_time = 5 SECONDS + + +/mob/living/simple_mob/vore/blackhole/acolyte/ranged/sniper/amr + name = "Black Hole acolyte wishgranter" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have an AMR." + icon_living = "acolyte-amr" + icon_state = "acolyte-amr" + + projectiletype = /obj/item/projectile/bullet/rifle/a145/bh1 // Really scary bullet. + projectilesound = 'sound/weapons/gunshot_cannon.ogg' + projectile_dispersion = 0 + ranged_attack_delay = 2.5 SECONDS + projectile_accuracy = 15 + base_attack_cooldown = 2 DECISECONDS + reload_max = 4 + reload_time = 5 SECONDS + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/sniper + + +/mob/living/simple_mob/vore/blackhole/acolyte/ranged/hmg + name = "Black Hole acolyte destroyer" + desc = "An ominous looking feline individual, wearing a dark black and purple voidsuit. There is something very uncanny about them. They appear to have a massive HMG slung low, and ready." + icon_living = "acolyte-hmg" + icon_state = "acolyte-hmg" + loot_list = list(/obj/item/gun/projectile/automatic/serdy/barka = 5, /obj/item/ammo_magazine/barka = 15, /obj/item/ammo_magazine/barka = 15, /obj/item/ammo_magazine/barka = 10) + + projectiletype = /obj/item/projectile/bullet/rifle/a545/bh2 + projectilesound = 'sound/weapons/serdy/strela.ogg' + projectile_dispersion = 7 + projectile_accuracy = -25 + base_attack_cooldown = 2 DECISECONDS reload_max = 50 + reload_time = 8 SECONDS ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole/lmg + +/mob/living/simple_mob/vore/blackhole/acolyte/ranged/flagbearer + name = "Black Hole acolyte flagbearer" + desc = "An ominous looking feline individual, wearing a sleek, dark black and purple voidsuit. There is something very uncanny about them. They appear to have a plasma carbine and a banner bearing the symbol of Black Hole." + icon_living = "acolyte-banner" + icon_state = "acolyte-banner" + loot_list = list(/obj/item/gun/energy/plasma/x16b = 15, /obj/item/cell/x16b = 15, /obj/item/cell/x16b = 15, /obj/item/cell/x16b = 25) + + projectiletype = /obj/item/projectile/energy/plasma/vepr/blackhole + projectilesound = 'sound/weapons/serdy/vepr.ogg' + projectile_dispersion = 3 + projectile_accuracy = -25 + base_attack_cooldown = 3 DECISECONDS + reload_max = 8 + reload_time = 5 SECONDS + + + + + + ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// ///taur specific variations!/// ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// /mob/living/simple_mob/vore/blackhole/taur - name = "Black Hole fanatic" - desc = "A tough looking armored feline taur. They wear various insignias identifying them as a member of Black Hole." + name = "Black Hole soldier" + desc = "A tauric tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask." icon = 'modular_chomp/icons/blackhole/blackhole64x32.dmi' faction = FACTION_BLACKHOLE - icon_dead = "heavytrooper-dead" - icon_living = "heavytrooper" - icon_state = "heavytrooper" - icon_rest = "heavytrooper" - maxHealth = 300 + icon_dead = "soldier-dead" + icon_living = "soldier" + icon_state = "soldier" + icon_rest = "soldier-stunned" + a_intent = I_HURT + see_in_dark = 8 + maxHealth = 200 movement_cooldown = 0 - harm_intent_damage = 5 - melee_damage_lower = 15 - melee_damage_upper = 20 - has_eye_glow = TRUE + harm_intent_damage = 15 + melee_damage_lower = 20 + melee_damage_upper = 25 response_help = "heavily pets" response_disarm = "shoves" response_harm = "bites" attacktext = list("punched","clawed") - old_x = -16 + vore_active = 0 + old_x = 0 old_y = 0 - default_pixel_x = -16 - pixel_x = -16 + default_pixel_x = 0 + pixel_x = 0 pixel_y = 0 - + attack_sound = 'sound/weapons/slice.ogg' min_oxy = 0 max_oxy = 0 min_tox = 0 @@ -344,169 +1407,155 @@ min_n2 = 0 max_n2 = 0 minbodytemp = 0 + light_range = 1 + light_power = 0.5 + light_color = "CC60FF" + old_x = -16 + old_y = 0 + default_pixel_x = -16 + pixel_x = -16 + pixel_y = 0 + + + exploded = FALSE + explosion_dev_range = 0 + explosion_heavy_range = 0 + explosion_light_range = 1 + explosion_flash_range = 2 + + explosion_delay_lower = 1 SECOND // Lower bound for explosion delay. + explosion_delay_upper = 3 SECONDS // Upper bound. ai_holder_type = /datum/ai_holder/simple_mob/merc/blackhole say_list_type = /datum/say_list/merc/blackhole armor = list( // Values for normal getarmor() checks - "melee" = 40, - "bullet" = 30, + "melee" = 10, + "bullet" = 20, "laser" = 20, "energy" = 5, - "bomb" = 50, - "bio" = 100, + "bomb" = 0, + "bio" = 0, "rad" = 100 ) -/mob/living/simple_mob/vore/blackhole/taur/shield - name = "Black Hole heavy bulwark" - desc = "A tough looking armored feline taur armed with a shield and an energy lance. They wear various insignias identifying them as a member of Black Hole." - icon = 'modular_chomp/icons/blackhole/blackhole64x32.dmi' - icon_living = "heavytrooper_shield" - icon_state = "heavytrooper_shield" - icon_rest = "heavytrooper_shield" - maxHealth = 300 - movement_cooldown = -1.5 - harm_intent_damage = 5 - melee_damage_lower = 25 - melee_damage_upper = 30 - attacktext = list("stabbed","slashed","impaled") - attack_sound = 'sound/weapons/blade1.ogg' + +/mob/living/simple_mob/vore/blackhole/taur/soldier/melee + name = "Black Hole soldier" + desc = "A tauric tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask. They have an energy sword and an energy shield." + icon_living = "soldier-sshield" + icon_state = "soldier-sshield" + +/mob/living/simple_mob/vore/blackhole/taur/soldier/melee/attackby(obj/item/O, mob/user) + if(!O.force) + to_chat(user, span_notice("This weapon is ineffective, it does no damage.")) + visible_message(span_notice("\The [user] gently taps [src] with \the [O].")) + return + if(prob(20)) + visible_message(span_danger("\The [src] blocks \the [O] with its shield!")) + if(user) + ai_holder.react_to_attack(user) + return + . = ..() + + +/mob/living/simple_mob/vore/blackhole/taur/soldier/melee/bullet_act(obj/item/projectile/proj) + if(!proj) return + if(prob(35)) + visible_message(span_bolddanger("[src] blocks [proj] with its shield!")) + if(proj.firer) + ai_holder.react_to_attack(proj.firer) + return + . = ..() + + +/mob/living/simple_mob/vore/blackhole/taur/soldier/ranged + name = "Black Hole rifleman" + desc = "A tauric tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask. They have an assault rifle." + icon_living = "soldier-rifle" + icon_state = "soldier-rifle" + + loot_list = list(/obj/item/gun/projectile/automatic/serdy/valik = 25, /obj/item/ammo_magazine/akm = 25, /obj/item/ammo_magazine/akm = 15, /obj/item/ammo_magazine/akm = 10) + projectiletype = /obj/item/projectile/bullet/rifle/a545/bh1 + projectilesound = 'sound/weapons/serdy/sks.ogg' + base_attack_cooldown = 8 + + needs_reload = 1 + reload_max = 30 + reload_time = 3 SECONDS armor = list( // Values for normal getarmor() checks - "melee" = 60, - "bullet" = 50, - "laser" = 40, - "energy" = 35, - "bomb" = 70, - "bio" = 100, + "melee" = 10, + "bullet" = 20, + "laser" = 20, + "energy" = 5, + "bomb" = 0, + "bio" = 0, "rad" = 100 ) -/mob/living/simple_mob/vore/blackhole/taur/ranged - name = "Black Hole machinegunner" - desc = "A tough looking armored feline taur wielding a light machinegun. They wear various insignias identifying them as a member of Black Hole." - icon = 'modular_chomp/icons/blackhole/blackhole64x32.dmi' - faction = FACTION_BLACKHOLE - icon_dead = "heavytrooper-dead" - icon_living = "heavytrooper_lmg" - icon_state = "heavytrooper_lmg" - icon_rest = "heavytrooper_lmg" + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole - projectiletype = /obj/item/projectile/bullet/pistol/bh3 - projectilesound = 'sound/weapons/serdy/ak74.ogg' - projectile_dispersion = 12 + + +/mob/living/simple_mob/vore/blackhole/taur/soldier/ranged/lmg + name = "Black Hole machinegunner" + desc = "A tauric tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask. They have an LMG." + icon_living = "soldier-lmg" + icon_state = "soldier-lmg" + + loot_list = null + projectiletype = /obj/item/projectile/bullet/rifle/a545/bh1 + projectilesound = 'sound/weapons/serdy/strela.ogg' + projectile_dispersion = 7 projectile_accuracy = -25 - base_attack_cooldown = 0.1 + base_attack_cooldown = 2 DECISECONDS reload_max = 50 + reload_time = 8 SECONDS + + + armor = list( // Values for normal getarmor() checks + "melee" = 10, + "bullet" = 20, + "laser" = 20, + "energy" = 5, + "bomb" = 0, + "bio" = 0, + "rad" = 100 + ) + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole/lmg -/mob/living/simple_mob/vore/blackhole/taur/ranged/hmg - name = "Black Hole heavy machinegunner" - desc = "A tough looking armored feline taur wielding a harness mounted heavy machinegun. They wear various insignias identifying them as a member of Black Hole." - icon = 'modular_chomp/icons/blackhole/blackhole64x32.dmi' - icon_living = "heavytrooper_hmg" - icon_state = "heavytrooper_hmg" - icon_rest = "heavytrooper_hmg" + +/mob/living/simple_mob/vore/blackhole/taur/soldier/ranged/hmg + name = "Black Hole heavy machinegunner" + desc = "A tauric tajaran dressed in an ominous black and purple uniform, with advanced looking armor. They appear to be wearing some kind of death mask. They have a heavy machinegun!" + icon_living = "soldier-hmg" + icon_state = "soldier-hmg" + + loot_list = null projectiletype = /obj/item/projectile/bullet/rifle/a545/bh2 projectilesound = 'sound/weapons/serdy/strela.ogg' - projectile_dispersion = 12 + projectile_dispersion = 7 projectile_accuracy = -25 - base_attack_cooldown = 0.5 - reload_max = 100 - ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole/lmg + base_attack_cooldown = 2 DECISECONDS + reload_max = 50 + reload_time = 8 SECONDS -/mob/living/simple_mob/humanoid/merc/ranged/sniper/blackhole - name = "Black Hole sniper" - desc = "A tough looking armored feline taur wielding a large caliber sniper rifle. They wear various insignias identifying them as a member of Black Hole." - icon = 'modular_chomp/icons/blackhole/blackhole64x32.dmi' - icon_living = "heavytrooper_sniper" - icon_state = "heavytrooper_sniper" - icon_rest = "heavytrooper_sniper" - projectiletype = /obj/item/projectile/bullet/rifle/a145/highvel // Really scary bullet. - projectilesound = 'sound/weapons/serdy/molniyab.ogg' - faction = FACTION_BLACKHOLE - movement_cooldown = 0 - harm_intent_damage = 5 - melee_damage_lower = 15 - melee_damage_upper = 20 - has_eye_glow = TRUE - response_help = "heavily pets" - response_disarm = "shoves" - response_harm = "bites" - attacktext = list("punched","clawed") - old_x = -16 - old_y = 0 - default_pixel_x = -16 - pixel_x = -16 - pixel_y = 0 - - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 - minbodytemp = 0 - corpse = null - loot_list = null - say_list_type = /datum/say_list/merc/blackhole - - var/exploded = FALSE - var/explosion_dev_range = 0 - var/explosion_heavy_range = 0 - var/explosion_light_range = 1 - var/explosion_flash_range = 2 - - var/explosion_delay_lower = 0 SECOND // Lower bound for explosion delay. - var/explosion_delay_upper = 1 SECONDS // Upper bound. armor = list( // Values for normal getarmor() checks - "melee" = 40, - "bullet" = 30, + "melee" = 10, + "bullet" = 20, "laser" = 20, "energy" = 5, - "bomb" = 50, - "bio" = 100, + "bomb" = 0, + "bio" = 0, "rad" = 100 ) - projectile_accuracy = 75 + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/blackhole/lmg - reload_max = 5 - reload_time = 5 SECONDS - - ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/sniper/blackhole - - ranged_attack_delay = 1.5 SECONDS - -/mob/living/simple_mob/humanoid/merc/ranged/sniper/blackhole/ranged_pre_animation(atom/A) - Beam(get_turf(A), icon_state = "sniper_beam", time = 1 SECONDS, maxdistance = 20) - - -/mob/living/simple_mob/humanoid/merc/ranged/sniper/blackhole/rocket - name = "Black Hole anti tank" - desc = "A tough looking armored feline creature wielding a rocket launcher! They wear various insignias identifying them as a member of Black Hole." - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' - icon_living = "trooper_rpg" - icon_state = "trooper_rpg" - icon_rest = "trooper_rpg" - old_x = 0 - old_y = 0 - default_pixel_x = 0 - pixel_x = 0 - pixel_y = 0 - reload_max = 1 - reload_time = 10 SECONDS - - projectiletype = /obj/item/projectile/explosive_rocket/blackhole - - ranged_attack_delay = 2.2 SECONDS -/mob/living/simple_mob/humanoid/merc/ranged/sniper/blackhole/rocket/ranged_pre_animation(atom/A) - Beam(get_turf(A), icon_state = "sniper_beam", time = 2 SECONDS, maxdistance = 20) ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// ///BIKEUS/// @@ -571,10 +1620,12 @@ reload_max = 30 ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax + ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// ///mechs!/// ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// + /mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced/blackhole name = "singularity gygax" desc = "An experimental exosuit that utilizes advanced materials to allow for greater protection while still being lightweight and fast. \ @@ -657,14 +1708,14 @@ #define OBELISK_LURE 401 GLOBAL_LIST_INIT(obelisk_lure_messages, list( - "You see images of friends, and loved ones among the ranks of the Black Hole fanatics...", + "The stone structure beckons you closer with promises of power...", "The stone structure whispers soothing words to you, in familiar voices...", "The ominous stone structure calms your mind. It feels good...", "Your focus is drawn to the glowing stone structure, your vision briefly only able to perceive the monolith...", - "You see your friends and associates kneeling beside the glowing pylon...", - "You feel an inexplicable urge to stop fighting...", + "You see your friends and associates kneeling beside the glowing pylon peacefully...", + "You feel an inexplicable urge to stop fighting.", "You see images of Black Hole cultists communing with some indescribable greater power...", - "The ominous stone structure promises you peace and happiness, accompanied by vivid images of family and loved ones in your mind...")) + "The ominous stone structure promises you peace and happiness, accompanied by vivid images of a brighter future...")) /mob/living/simple_mob/vore/blackhole_obelisk name = "Black Hole Obelisk" @@ -847,10 +1898,6 @@ GLOBAL_LIST_INIT(obelisk_lure_messages, list( var/oursize = rand(100, 180) / 100 resize(oursize) -/mob/living/simple_mob/humanoid/merc/ranged/sniper/blackhole/Initialize(mapload) - . = ..() - var/oursize = rand(100, 180) / 100 - resize(oursize) ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// ///explode on death!/// ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// @@ -898,9 +1945,372 @@ GLOBAL_LIST_INIT(obelisk_lure_messages, list( addtimer(CALLBACK(src, PROC_REF(explode)), delay, TIMER_DELETE_ME) return ..() +///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// +///rocket doggy/// +///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// + + +/mob/living/simple_mob/mechanical/mecha/combat/blackhole/artilleryhound + name = "BhX. 08 mobile artillery platform" + desc = "A massive, hulking quadrupedal platform with five self-loading rocket artillery pods on it's back, and multiple smaller MLRS pods. The heavy armor has arrived." + catalogue_data = list(/datum/category_item/catalogue/technology/adv_dark_gygax) + has_eye_glow = TRUE + icon_state = "rocketdoggy" + icon_living = "rocketdoggy" + icon_dead = "rocketdoggy" + faction = FACTION_BLACKHOLE + pixel_x = -48 + default_pixel_x = -48 + old_x = -48 + old_y = 0 + vis_height = 92 + movement_cooldown = 10 + icon = 'modular_chomp/icons/blackhole/blackhole128x92.dmi' + wreckage = /obj/structure/loot_pile/mecha/gygax/dark/adv/blackhole/doggy + icon_scale_x = 1 + icon_scale_y = 1 + movement_shake_radius = 15 + base_attack_cooldown = 0.5 DECISECONDS + maxHealth = 750 + deflect_chance = 25 + has_repair_droid = FALSE + devourable = 0 //fuck off immediately + digestable = 0 + allow_mind_transfer = FALSE //i know what you are + mob_size = MOB_LARGE //also no grab fu + armor = list( + "melee" = 10, + "bullet" = 10, + "laser" = 10, + "energy" = 10, + "bomb" = 90, + "bio" = 100, + "rad" = 100 + ) + + special_attack_min_range = 0 + special_attack_max_range = 30 + special_attack_cooldown = 5 SECONDS + projectiletype = /obj/item/projectile/energy/homing_bolt/microrocket + glow_range = 7 + glow_intensity = 3 + glow_color = "#ED9200" + + needs_reload = 1 + reload_max = 8 + reload_time = 3 SECONDS + projectile_dispersion = 8 + projectile_accuracy = -18 + reload_sound = 'sound/weapons/serdy/rpg_reload.ogg' + + var/flames + var/charge_warmup = 2 SECOND + + ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax/blackhole + var/obj/effect/overlay/energy_ball/energy_ball = null + var/shottype_index = 1 + var/list/rocketdoggy = list(/obj/item/projectile/energy/homing_bolt/microrocket,/obj/item/projectile/energy/homing_bolt/microrocket,/obj/item/projectile/energy/homing_bolt/microrocket,/obj/item/projectile/energy/homing_bolt/microrocket,/obj/item/projectile/arc/explosive_rocket/rocket/bh1,/obj/item/projectile/arc/explosive_rocket/rocket/bh1,/obj/item/projectile/arc/explosive_rocket/rocket/bh1,/obj/item/projectile/arc/explosive_rocket/rocket/bh1) + +/obj/structure/loot_pile/mecha/gygax/dark/adv/blackhole/doggy + icon = 'modular_chomp/icons/blackhole/blackhole128x92.dmi' + icon_state = "rocketdoggy-wreck" + pixel_x = -48 + old_x = -48 + old_y = 0 + +/mob/living/simple_mob/mechanical/mecha/combat/blackhole/artilleryhound/shoot_target(atom/A) + projectiletype = rocketdoggy[shottype_index] + shottype_index++ + if(shottype_index > rocketdoggy.len) shottype_index = 1 + . = ..() + +/mob/living/simple_mob/mechanical/mecha/combat/blackhole/artilleryhound/Destroy() + if(energy_ball) + energy_ball.stop_orbit() + qdel(energy_ball) + return ..() + +/mob/living/simple_mob/mechanical/mecha/combat/blackhole/artilleryhound/do_special_attack(atom/A) + . = TRUE // So we don't fire a bolt as well. + switch(a_intent) + if(I_DISARM) + electric_defense(A) + if(I_HURT) // Rockets + launch_rockets(A) + if(I_GRAB) // Micro-singulo + launch_microsingularity(A) + + +/obj/item/projectile/energy/homing_bolt/microrocket/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 2) + ..() + if(target) + set_homing_target(target) + +/obj/item/projectile/energy/homing_bolt/microrocket/fire(angle, atom/direct_target) + ..() + set_pixel_speed(0.5) + + +/mob/living/simple_mob/mechanical/mecha/combat/blackhole/artilleryhound/update_icon() + ..() + build_icons() + + +/mob/living/simple_mob/mechanical/mecha/combat/blackhole/artilleryhound/proc/build_icons() + cut_overlays() + if(stat == DEAD) + plane = MOB_LAYER + return + else + plane = ABOVE_MOB_PLANE + var/image/I = image(icon) + if(flames) + I = image(icon, "rocketdoggy_flame") + I.appearance_flags |= PIXEL_SCALE + I.plane = PLANE_LIGHTING_ABOVE + add_overlay(I) + + +/mob/living/simple_mob/mechanical/mecha/combat/blackhole/artilleryhound/proc/electric_defense(atom/target) + glow_toggle = 1 + set_light(glow_range, glow_intensity, glow_color) //Setting it here so the light starts immediately + set_AI_busy(TRUE) + flames = 1 + visible_message(span_warning("\The [src] ignites it's mouth flamethrower!")) + build_icons() + addtimer(CALLBACK(src, PROC_REF(firebreathend), target), 2 SECONDS, TIMER_DELETE_ME) + playsound(src, "sound/magic/Fireball.ogg", 50, 1) + +/mob/living/simple_mob/mechanical/mecha/combat/blackhole/artilleryhound/proc/firebreathend(atom/A) + // clear our cosmetics even if the target is deleted + glow_toggle = 0 + flames = 0 + build_icons() + set_light(0) + set_AI_busy(FALSE) + //make sure our target still exists and is on a turf + if(QDELETED(A) || !isturf(get_turf(A))) + return + var/obj/item/projectile/P = new /obj/item/projectile/bullet/dragon(get_turf(src)) + src.visible_message(span_danger("\The [src] spews fire at \the [A]!")) + playsound(src, "sound/weapons/serdy/heavyflamethrower.ogg", 50, 1) + P.launch_projectile(A, BP_TORSO, src) + + +/mob/living/simple_mob/mechanical/mecha/combat/blackhole/artilleryhound/proc/launch_rockets(atom/target) + // Telegraph our next move. + Beam(target, icon_state = "sat_beam", time = 3.5 SECONDS, maxdistance = INFINITY) + visible_message(span_warning("\The [src] raises it's rocket battery!")) + playsound(src, 'sound/effects/metalscrape1.ogg', 150, 1, extrarange = 10) + addtimer(CALLBACK(src, PROC_REF(launch_rocket_fireloop), target, 5), 0.5 SECONDS, TIMER_DELETE_ME) + +/mob/living/simple_mob/mechanical/mecha/combat/blackhole/artilleryhound/proc/launch_rocket_fireloop(atom/target, remaining) + SHOULD_NOT_OVERRIDE(TRUE) + PRIVATE_PROC(TRUE) + + // Might get deleted in the meantime. + var/turf/T = get_turf(target) + if(!target || !T || !remaining) // Finish shooting + visible_message(span_warning("\The [src] lowers it's rocket battery.")) + playsound(src, 'sound/effects/metalscrape3.ogg', 100, 1, extrarange = 10) + return + // And I started blastin-- + visible_message(span_warning("\The [src] fires a rocket into the air!")) + playsound(src, 'sound/weapons/rocketartillery1.ogg', 500, 5, extrarange = 50) + face_atom(T) + // pew pew pew + + var/obj/item/projectile/arc/explosive_rocket/rocket/bh2/rocket = new(loc) + rocket.old_style_target(T, src) + rocket.fire() + + // and do it again till we're out of remaining shots + addtimer(CALLBACK(src, PROC_REF(launch_rocket_fireloop), target, --remaining), 0.5 SECONDS, TIMER_DELETE_ME) + + +/mob/living/simple_mob/mechanical/mecha/combat/blackhole/artilleryhound/proc/launch_microsingularity(atom/target) + var/turf/T = get_turf(target) + visible_message(span_warning("\The [src] fires an energetic sphere into the air!")) + playsound(src, 'sound/weapons/Laser.ogg', 50, 1) + face_atom(T) + var/obj/item/projectile/arc/microsingulo/sphere = new(loc) + sphere.old_style_target(T, src) + sphere.fire() + +/obj/item/projectile/arc/microsingulo + name = "micro singularity" + icon_state = "bluespace" + +/obj/item/projectile/arc/microsingulo/on_impact(turf/T) + new /obj/effect/temporary_effect/pulse/microsingulo(T) + + +/obj/effect/temporary_effect/pulse/microsingulo + name = "micro singularity" + desc = "It's sucking everything in!" + icon = 'icons/obj/objects.dmi' + icon_state = "bhole3" + light_range = 4 + light_power = 5 + light_color = "#CC60FF" + pulses_remaining = 10 + pulse_delay = 0.5 SECONDS + pull_radius = 3 + pull_strength = STAGE_THREE + +/obj/effect/temporary_effect/pulse/microsingulo/on_pulse() + for(var/atom/A in range(pull_radius, src)) + A.singularity_pull(src, pull_strength) + + +/datum/ai_holder/simple_mob/intentional/adv_dark_gygax/blackhole + conserve_ammo = TRUE + vision_range = 30 + closest_desired_distance = 5 + cooperative = FALSE + electric_defense_radius = 5 // How big to assume electric defense's area is. + microsingulo_radius = 9 // Same but for microsingulo pull. + rocket_explosive_radius = 4 // Explosion radius for the rockets. + + electric_defense_threshold = 1 // How many non-targeted people are needed in close proximity before electric defense is viable. + microsingulo_threshold = 4 // Similar to above, but uses an area around the target. + +// Used to control the mob's positioning based on which special attack it has done. +// Note that the intent will not change again until the next special attack is about to happen. +/datum/ai_holder/simple_mob/intentional/adv_dark_gygax/on_engagement(atom/A) + // Make the AI backpeddle if using an AoE special attack. + var/list/risky_intents = list(I_GRAB, I_HURT) // Mini-singulo and missiles. + if(holder.a_intent in risky_intents) + var/closest_distance = 1 + switch(holder.a_intent) // Plus one just in case. + if(I_HURT) + closest_distance = rocket_explosive_radius + 1 + if(I_GRAB) + closest_distance = microsingulo_radius + 1 + + if(get_dist(holder, A) <= closest_distance) + holder.IMove(get_step_away(holder, A, closest_distance)) + + // Otherwise get up close and personal. + else if(get_dist(holder, A) > closest_desired_distance) + holder.IMove(get_step_towards(holder, A)) + +// Changes the mob's intent, which controls which special attack is used. +// I_DISARM causes Electric Defense, I_GRAB causes Micro-Singularity, and I_HURT causes Missile Barrage. +/datum/ai_holder/simple_mob/intentional/adv_dark_gygax/pre_special_attack(atom/A) + if(isliving(A)) + var/mob/living/target = A + + // If we're surrounded, Electric Defense will quickly fix that. + var/tally = 0 + var/list/potential_targets = list_targets() // Returns list of mobs and certain objects like mechs and turrets. + for(var/atom/movable/AM in potential_targets) + if(get_dist(holder, AM) > electric_defense_radius) + continue + if(!can_attack(AM)) + continue + tally++ + + // Should we shock them? + if(tally >= electric_defense_threshold || get_dist(target, holder) <= electric_defense_radius) + holder.a_intent = I_DISARM + return + + // Otherwise they're a fair distance away and we're not getting mobbed up close. + // See if we should use missiles or microsingulo. + tally = 0 // Let's recycle the var. + for(var/atom/movable/AM in potential_targets) + if(get_dist(target, AM) > microsingulo_radius) // Deliberately tests distance between target and nearby targets and not the holder. + continue + if(!can_attack(AM)) + continue + if(AM.anchored) // Microsingulo doesn't do anything to anchored things. + tally-- + else + tally++ + + // Lots of people means minisingulo would be more useful. + if(tally >= microsingulo_threshold) + holder.a_intent = I_GRAB + else // Otherwise use rockets. + holder.a_intent = I_HURT + + else + if(get_dist(holder, A) >= rocket_explosive_radius + 1) + holder.a_intent = I_HURT // Fire rockets if it's an obj/turf. + else + holder.a_intent = I_DISARM // Electricity might not work but it's safe up close. + + +/obj/item/projectile/arc/explosive_rocket/rocket/bh1 + name = "mini mortar shell" + icon_state = "grenade" + damage = 30 + arc_height_multiplier = 0.2 + damage_type = BRUTE + var/list/fragment_types = list( + /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment, \ + /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment + ) + var/fragment_amount = 8 // Same as a grenade. + var/spread_range = 7 + check_armour = "bullet" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + fire_sound = 'sound/weapons/rpg.ogg' + speed = 0.5 + light_range = 3 + light_power = 1 + light_color = "#FFB25B" + +/obj/item/projectile/arc/explosive_rocket/rocket/bh1/on_impact(turf/T) + new /obj/effect/explosion(T) // Weak explosions don't produce this on their own, apparently. + explosion(T, 0, 0, 2, adminlog = FALSE) + fragmentate(T, fragment_amount, spread_range, fragment_types) + +/obj/item/projectile/energy/homing_bolt/microrocket + name = "displacer micro rocket" + icon_state = "atrocket" + damage = 15 + range = 100 + damage_type = BRUTE + check_armour = "bullet" + fire_sound = 'sound/weapons/grenade_launcher.ogg' + speed = 1 + hitsound_wall = 'sound/effects/contactor_off.ogg' + light_range = 3 + light_power = 1 + light_color = "#FFB25B" + + +/obj/item/projectile/energy/homing_bolt/microrocket/on_hit(atom/movable/target, blocked = 0) + if(istype(target)) + var/throwdir = get_dir(firer,target) + target.throw_at(get_edge_target_turf(target, throwdir),1,1) + new /obj/effect/explosion(target) + explosion(target, 0, 0, 0, adminlog = FALSE) + return 1 + +/obj/item/projectile/arc/explosive_rocket/rocket/bh2 + name = "artillery rocket" + icon_state = "bigrocket" + damage = 30 + range = 350 + arc_height_multiplier = 0.2 + damage_type = BRUTE + check_armour = "bullet" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + fire_sound = 'sound/weapons/rocketartillery1.ogg' + speed = 0.5 + +/obj/item/projectile/arc/explosive_rocket/rocket/bh2/on_impact(turf/T) + new /obj/effect/explosion(T) // Weak explosions don't produce this on their own, apparently. + explosion(T, 0, 1, 4, adminlog = FALSE) + + ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// ///flavor stuff!/// ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// + /datum/say_list/merc/blackhole speak = list("Praise the Black Monoliths...", "Oblivion, grant me strength.", @@ -913,7 +2323,7 @@ GLOBAL_LIST_INIT(obelisk_lure_messages, list( say_cannot = list("Unable.") say_maybe_target = list("Come, embrace oblivion!", "Where did you go?!", "You cannot hide from the will of the singularity!") say_got_target = list("Die, heathen!", "Target spotted!", "Purge the nonbelievers!", "Your death will not be swift!") - say_threaten = list("Enemy spotted!", "Resisting is futile!", "Target spotted!", "Contact!", "Enemy!", "Heathens!", "Nonbelievers!") + say_threaten = list("Enemy spotted!", "Resisting is futile!", "Target spotted!", "Contact!", "Enemy!", "Heathens!", "Nonbelievers!", "You cannot hide from the will of the singularity!") say_stand_down = list("Come back here!") say_escalate = list("Die, heathen!", "Thy end is now!", "The Monolith commands your death!", "Come here!!", "Get some!!", "Die!", "This will hurt!", "Embrace oblivion!", "Suffering awaits!", "Destroy!") @@ -949,44 +2359,74 @@ GLOBAL_LIST_INIT(obelisk_lure_messages, list( value = CATALOGUER_REWARD_HARD unlocked_by_any = list(/datum/category_item/catalogue/fauna/mercenary/blackhole) +/mob/living/simple_mob/vore/blackhole/death() + playsound(src, 'sound/voice/death/feline/feline_death.ogg', 50, 1) + ..() + ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// ///ai holder stuff!/// ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// /datum/ai_holder/simple_mob/merc/blackhole + vision_range = 9 threaten = TRUE returns_home = TRUE wander = TRUE intelligence_level = AI_SMART - threaten_delay = 2 SECONDS + threaten_delay = 1 SECONDS use_astar = TRUE + pointblank = TRUE + firing_lanes = TRUE + violent_breakthrough = TRUE + home_low_priority = TRUE + call_distance = 14 + cooperative = TRUE /datum/ai_holder/simple_mob/merc/ranged/blackhole + vision_range = 9 threaten = TRUE returns_home = TRUE wander = TRUE + pointblank = TRUE + firing_lanes = TRUE intelligence_level = AI_SMART - threaten_delay = 2 SECONDS + threaten_delay = 1 SECONDS use_astar = TRUE + home_low_priority = TRUE + call_distance = 14 + cooperative = TRUE /datum/ai_holder/simple_mob/merc/ranged/blackhole/lmg + vision_range = 9 threaten = TRUE returns_home = TRUE wander = TRUE + pointblank = TRUE // They get close? Just shoot 'em! + firing_lanes = TRUE intelligence_level = AI_SMART - threaten_delay = 2 SECONDS + threaten_delay = 1 SECONDS use_astar = TRUE conserve_ammo = FALSE + home_low_priority = TRUE + call_distance = 14 + cooperative = TRUE /datum/ai_holder/simple_mob/merc/ranged/sniper/blackhole - vision_range = 20 - threaten = TRUE + vision_range = 30 + threaten = FALSE returns_home = TRUE + pointblank = TRUE // They get close? Just shoot 'em! + firing_lanes = TRUE wander = TRUE intelligence_level = AI_SMART - threaten_delay = 2 SECONDS + threaten_delay = 0 SECONDS use_astar = TRUE + home_low_priority = TRUE + call_distance = 20 + cooperative = TRUE + + ///-------------------------------------------------------------------------------------------------------------------------------------------------------------/// ///special bullets, because the 'projectilesound' var does not work!/// @@ -994,39 +2434,105 @@ GLOBAL_LIST_INIT(obelisk_lure_messages, list( /obj/item/projectile/bullet/pistol/bh1 - name = "7mm bullet" - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' + name = "bullet" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' icon_state = "bullet" fire_sound = 'sound/weapons/serdy/9mmpistol.ogg' - speed = 0.8 + speed = 1 + damage = 20 /obj/item/projectile/bullet/pistol/bh2 - name = "10mm bullet" - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' + name = "bullet" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' icon_state = "bullet" fire_sound = 'sound/weapons/serdy/vityaz.ogg' - speed = 0.8 + speed = 1 + damage = 25 /obj/item/projectile/bullet/pistol/bh3 - name = "9mm bullet" - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' + name = "bullet" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' icon_state = "bullet" fire_sound = 'sound/weapons/serdy/ak74.ogg' - speed = 0.8 + speed = 1 + damage = 25 /obj/item/projectile/bullet/rifle/a545/bh1 - name = "6mm rifle bullet" - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' + name = "bullet" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' icon_state = "bullet" fire_sound = 'sound/weapons/serdy/sks.ogg' - speed = 0.8 + speed = 1 + damage = 25 /obj/item/projectile/bullet/rifle/a545/bh2 - name = "15mm MG bullet" - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' + name = "bullet" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' icon_state = "bullet" fire_sound = 'sound/weapons/serdy/strela.ogg' - speed = 0.8 + damage = 25 + stun = 0 + weaken = 0 + penetrating = 1150 + armor_penetration = 100 + speed = 1 + +/obj/item/projectile/bullet/rifle/a545/bh3 + name = "bullet" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + icon_state = "bullet" + fire_sound = 'sound/weapons/serdy/strela.ogg' + damage = 35 + stun = 0 + weaken = 0 + penetrating = 1150 + armor_penetration = 50 + speed = 1 + +/obj/item/projectile/bullet/rifle/a145/bh1 + name = "bullet" + fire_sound = 'sound/weapons/gunshot_cannon.ogg' + damage = 90 + stun = 1 + weaken = 1 + penetrating = 5450 + armor_penetration = 90 + hitscan = 1 //so the PTR isn't useless as a sniper weapon + hud_state = "sniper" + + icon_state = "bullet_alt" + tracer_type = /obj/effect/projectile/tracer/cannon + +/obj/item/projectile/bullet/rifle/a145/bh2 + name = "bullet" + fire_sound = 'sound/weapons/serdy/sks.ogg' + damage = 40 + stun = 0 + weaken = 0 + penetrating = 1400 + armor_penetration = 50 + hitscan = 1 + hud_state = "sniper" + + icon_state = "bullet_alt" + tracer_type = /obj/effect/projectile/tracer/cannon + +/obj/item/projectile/bullet/rifle/a145/bh3 + name = "gauss rifle slug" + fire_sound = 'sound/weapons/serdy/gauss2.ogg' + damage = 50 + stun = 1 + weaken = 1 + penetrating = 13400 + armor_penetration = 100 + hitscan = 1 + hud_state = "sniper" + light_range = 3 + light_power = 1 + light_color = "#FFB25B" + icon_state = "bullet_alt" + tracer_type = /obj/effect/projectile/tracer/cannon + /obj/item/projectile/beam/shock/bh1 name = "tesla beam" @@ -1036,8 +2542,10 @@ GLOBAL_LIST_INIT(obelisk_lure_messages, list( muzzle_type = /obj/effect/projectile/muzzle/lightning tracer_type = /obj/effect/projectile/tracer/lightning impact_type = /obj/effect/projectile/impact/lightning - - damage = 20 + light_range = 4 + light_power = 2 + light_color = "#9EFFFF" + damage = 10 agony = 1 eyeblur = 1 fire_sound = 'sound/effects/lightningbolt.ogg' @@ -1045,14 +2553,96 @@ GLOBAL_LIST_INIT(obelisk_lure_messages, list( hud_state = "taser" /obj/item/projectile/explosive_rocket/blackhole - name = "80mm rocket propelled grenade" - icon = 'modular_chomp/icons/blackhole/blackhole32x32.dmi' - icon_state = "rocket" - fire_sound = 'sound/weapons/rpg.ogg' - damage = 40 - speed = 0.6 + name = "80mm recoilless rifle shell" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + icon_state = "grenade" + fire_sound = 'sound/weapons/serdy/recoilless.ogg' + damage = 90 + speed = 0.5 + light_range = 2 + light_power = 1 + light_color = "#FFB25B" armor_penetration = 90 /obj/item/projectile/explosive_rocket/blackhole/on_impact(turf/T) new /obj/effect/explosion(T) // Weak explosions don't produce this on their own, apparently. - explosion(T, 0, 0, 3, adminlog = FALSE) + explosion(T, 0, 0, 4, adminlog = FALSE) + + +/obj/item/projectile/scatter/shotgun/blackhole + name = "buckshot pellet" + fire_sound = 'sound/weapons/weaponsounds_shotgunshot.ogg' + hud_state = "shotgun_buckshot" + spread_submunition_damage = FALSE + submunition_spread_max = 60 + submunition_spread_min = 50 + submunitions = list( + /obj/item/projectile/bullet/shotgun/scatterprojectile = 6 + ) + + +/obj/item/projectile/energy/plasma/vepr/blackhole + name = "plasma bolt" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + icon_state = "energy_darkpulse" + fire_sound = 'sound/weapons/serdy/plasma2.ogg' + damage = 30 + armor_penetration = 20 + speed = 1 + damage_type = BURN + check_armour = "laser" + light_range = 3 + light_power = 2 + light_color = "#CC60FF" + muzzle_type = null + impact_effect_type = null + hitsound_wall = 'sound/weapons/effects/searwall.ogg' + hitsound = 'sound/weapons/sear.ogg' + hud_state = "laser_overcharge" + +/* //a bit TOO strong -- Serdy + +/obj/item/projectile/energy/plasma/vepr/blackhole/strong + name = "plasma bolt" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + icon_state = "energy_darkpulse" + fire_sound = 'sound/weapons/serdy/plasma2.ogg' + damage = 40 + armor_penetration = 20 + speed = 0.5 +*/ + +/obj/item/projectile/ion/bh1 + name = "ion bolt" + icon_state = "ion" + fire_sound = 'sound/weapons/serdy/ionrifle1.ogg' + damage = 0 + damage_type = BURN + nodamage = 1 + check_armour = "energy" + light_range = 2 + light_power = 1 + light_color = "#55AAFF" + hud_state = "plasma_blast" + hud_state_empty = "battery_empty" + + combustion = FALSE + impact_effect_type = /obj/effect/temp_visual/impact_effect/ion + hitsound_wall = 'sound/weapons/effects/searwall.ogg' + hitsound = 'sound/weapons/ionrifle.ogg' + + +/obj/item/projectile/beam/pulse/bh1 + name = "pulse" + icon_state = "u_laser" + fire_sound = 'sound/weapons/serdy/plasma4.ogg' + damage = 40 //halved from normal + armor_penetration = 50 + light_range = 3 + light_power = 1 + light_color = "#0066FF" + hud_state = "pulse" + + muzzle_type = /obj/effect/projectile/muzzle/laser_pulse + tracer_type = /obj/effect/projectile/tracer/laser_pulse + impact_type = /obj/effect/projectile/impact/laser_pulse diff --git a/modular_chomp/code/modules/projectiles/guns/zBallisticPort/bullet.dm b/modular_chomp/code/modules/projectiles/guns/zBallisticPort/bullet.dm index c46128fdcc..9d58d75549 100644 --- a/modular_chomp/code/modules/projectiles/guns/zBallisticPort/bullet.dm +++ b/modular_chomp/code/modules/projectiles/guns/zBallisticPort/bullet.dm @@ -25,17 +25,17 @@ transform = transform.Turn(-45) transform = transform.Translate(-16,0) -/obj/item/gun/projectile/automatic/serdy/equipped(mob/living/user, slot) +/obj/item/gun/projectile/automatic/serdy/equipped() . = ..() is_picked_up = TRUE update_transform() -/obj/item/gun/projectile/automatic/serdy/pickup(mob/user) +/obj/item/gun/projectile/automatic/serdy/pickup() . = ..() is_picked_up = TRUE update_transform() -/obj/item/gun/projectile/automatic/serdy/dropped(mob/user, equipping, slot) +/obj/item/gun/projectile/automatic/serdy/dropped() . = ..() is_picked_up = FALSE update_transform() @@ -262,7 +262,6 @@ list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) ) - manual_chamber = FALSE auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY | LOCK_SLAPPABLE load_method = MAGAZINE w_class = ITEMSIZE_HUGE @@ -1381,17 +1380,17 @@ if(is64x32) update_transform() -/obj/item/gun/projectile/shotgun/pump/equipped(mob/living/user, slot) +/obj/item/gun/projectile/shotgun/pump/equipped() . = ..() is_picked_up = TRUE update_transform() -/obj/item/gun/projectile/shotgun/pump/pickup(mob/user) +/obj/item/gun/projectile/shotgun/pump/pickup() . = ..() is_picked_up = TRUE update_transform() -/obj/item/gun/projectile/shotgun/pump/dropped(mob/user, equipping, slot) +/obj/item/gun/projectile/shotgun/pump/dropped() . = ..() is_picked_up = FALSE update_transform() @@ -1481,17 +1480,17 @@ transform = transform.Turn(-45) transform = transform.Translate(-16,0) -/obj/item/gun/projectile/shotgun/doublebarrel/equipped(mob/living/user, slot) +/obj/item/gun/projectile/shotgun/doublebarrel/equipped() . = ..() is_picked_up = TRUE update_transform() -/obj/item/gun/projectile/shotgun/doublebarrel/pickup(mob/user) +/obj/item/gun/projectile/shotgun/doublebarrel/pickup() . = ..() is_picked_up = TRUE update_transform() -/obj/item/gun/projectile/shotgun/doublebarrel/dropped(mob/user, equipping, slot) +/obj/item/gun/projectile/shotgun/doublebarrel/dropped() . = ..() is_picked_up = FALSE update_transform() @@ -1541,3 +1540,427 @@ sound_ejectchamber = 'sound/weapons/ballistics/rifle_ejectchamber.ogg' sound_eject = 'sound/weapons/ballistics/rifle_eject.ogg' sound_chamber = 'sound/weapons/ballistics/rifle_chamber.ogg' + + + + +// ------------------------- GATTENING EARLY PORT STUFF, THIS IS (i pray to god) TEMPORARY ------------------------- // + + + +/// Vali /// + + + +/obj/item/gun/projectile/automatic/serdy/valik + name = "Ka7 Valik" + desc = "A high quality modernization of an antiquated Pan-Slavic rifle platform, the Ka7 Valik is utilized almost exclusively by members of the militarized doomsday cult, Black Hole. Chambered in 7.62mm" + caliber = "7.62mm" + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "valik" + wielded_item_state = "valik_w" + magazine_type = /obj/item/ammo_magazine/akm + allowed_magazines = list(/obj/item/ammo_magazine/akm) + icon_state = "valik" + projectile_type = /obj/item/projectile/bullet/rifle/a545/bh1 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) + ) + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT + w_class = ITEMSIZE_LARGE + one_handed_penalty = 30 + fire_sound = "sound/weapons/serdy/ak74.ogg" + + +/// Viper /// + + +/obj/item/gun/projectile/automatic/serdy/viper + name = "Ka12 Viper" + desc = "A robust sub machinegun variant of the Ka7 Valik, the Ka12 Viper is utilized almost exclusively by members of the militarized doomsday cult, Black Hole. Chambered in 10mm" + caliber = "10mm" + icon = 'modular_chomp/icons/blackhole/pre-gatteningx32.dmi' + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "viper" + wielded_item_state = "viper_w" + magazine_type = /obj/item/ammo_magazine/viper + allowed_magazines = list(/obj/item/ammo_magazine/viper) + icon_state = "viper" + projectile_type = /obj/item/projectile/bullet/pistol/bh2 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=1, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) + ) + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT + w_class = ITEMSIZE_NORMAL + is_long = FALSE + fire_sound = "sound/weapons/serdy/vityaz.ogg" + icon_expected_height = 32 + icon_expected_width = 32 + + + + + +/// PMX /// + + + +/obj/item/gun/projectile/serdy_pistols/pmx + name = "PMX" + desc = "A high quality modernization of a traditional Pan-Slavic handgun, the PMX is utilized almost exclusively by members of the militarized doomsday cult, Black Hole. Chambered in 10mm." + icon = 'modular_chomp/icons/blackhole/pre-gatteningx32.dmi' + icon_state = "pmx" + + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "pmx" + + caliber = "10mm" + magazine_type = /obj/item/ammo_magazine/pmx + allowed_magazines = list(/obj/item/ammo_magazine/pmx) + projectile_type = /obj/item/projectile/bullet/pistol/bh1 + fire_sound = "sound/weapons/serdy/9mmpistol.ogg" + + + +/// Lynks /// + + +/obj/item/gun/projectile/automatic/serdy/lynx + name = "SVK-428 Lynx" + desc = "An accurate, deadly sniper rifle, utilized by Black Hole marksmen, based on a venerable Pan-Slavic design. Chambered in 7.76x55mm." + caliber = "7.76mm" + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + icon_state = "lynx" + + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "lynx" + wielded_item_state = "lynx_w" + recoil = 0 //screenshake cringe and gay + magazine_type = /obj/item/ammo_magazine/lynx + allowed_magazines = list(/obj/item/ammo_magazine/lynx) + icon_state = "lynx" + projectile_type = /obj/item/projectile/bullet/rifle/a145/bh2 + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT + w_class = ITEMSIZE_HUGE + actions_types = list(/datum/action/item_action/use_scope) + accuracy = 10 + scoped_accuracy = 50 + one_handed_penalty = 100 + fire_sound = "sound/weapons/serdy/sks.ogg" + +/obj/item/gun/projectile/automatic/serdy/lynx/ui_action_click() + scope() + +/obj/item/gun/projectile/automatic/serdy/lynx/verb/scope() + set category = "Object" + set name = "Use Scope" + set popup_menu = 1 + + toggle_scope(2.0) + + + +///Zvir/// + + + +/obj/item/gun/projectile/automatic/serdy/zvir + name = "KaSK-2 Zvir" + desc = "An utterly confusing weapon utilized by Black Hole machinegunners; a bullpupped version of an old Pan-Slav design. Despite it's rather silly appearance, it is quite controllable, and infact, still a machinegun. Chambered in 7.62mm" + caliber = "7.62mm" + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + icon_state = "zvir" + + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "zvir" + wielded_item_state = "zvir_w" + burst_delay = 1.5 + magazine_type = /obj/item/ammo_magazine/zvir + allowed_magazines = list(/obj/item/ammo_magazine/zvir) + + projectile_type = /obj/item/projectile/bullet/rifle/a545/bh1 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15), dispersion=list(0.0, 0.6, 1.0)), + list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-15,-15,-30,-30), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2)), + list(mode_name="long bursts", burst=15, move_delay=8, burst_accuracy = list(0,-15,-15,-30,-30,0,-15,-15,-30,-30,0,-15,-15,-30,-30), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2,0.6, 1.0, 1.0, 1.0, 1.2,0.6, 1.0, 1.0, 1.0, 1.2)) + ) + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT + w_class = ITEMSIZE_LARGE + one_handed_penalty = 30 + fire_sound = "sound/weapons/serdy/ak74.ogg" + + + + + +///Drobarka/// + + + +/obj/item/gun/projectile/automatic/serdy/barka + name = "KaSK-9 Drobarka" + desc = "An absolutely monsterous automatic weapon, more suitable for a mech than a person. Essentially an autocannon taken off of it's mount. It is bulky, unwieldy, but the sheer volume of death it can put down in a short amount of time is unmatched. Chambered in 15x80mm." + caliber = "15mm" + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + icon_state = "drobarka" + + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "drobarka" + wielded_item_state = "drobarka_w" + burst_delay = 1.5 + slowdown = 2 //BIG ASS GUN + magazine_type = /obj/item/ammo_magazine/barka + allowed_magazines = list(/obj/item/ammo_magazine/barka) + + projectile_type = /obj/item/projectile/bullet/rifle/a545/bh3 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15), dispersion=list(0.0, 0.6, 1.0)), + list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-15,-15,-30,-30), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2)), + list(mode_name="long bursts", burst=15, move_delay=8, burst_accuracy = list(0,-15,-15,-30,-30,0,-15,-15,-30,-30,0,-15,-15,-30,-30), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2,0.6, 1.0, 1.0, 1.0, 1.2,0.6, 1.0, 1.0, 1.0, 1.2)) + ) + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT + w_class = ITEMSIZE_HUGE + one_handed_penalty = 30 + fire_sound = 'sound/weapons/serdy/strela.ogg' + + + +///Voroh/// + + + +/obj/item/gun/projectile/automatic/serdy/voroh + name = "RR-80 recoilless rifle" + desc = "A deadly recoilless rifle, used by Black Hole soldiers. Chambered in 80mm recoilless shells." + caliber = "80mm" + auto_loading_type = NO_AUTO_LOAD + load_method = SINGLE_CASING|SPEEDLOADER + only_open_load = TRUE + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + icon_state = "voroh" + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "voroh" + wielded_item_state = "voroh_w" + + + projectile_type = /obj/item/projectile/explosive_rocket/blackhole + max_shells = 1 + + ammo_type = /obj/item/ammo_casing/a80mm + w_class = ITEMSIZE_HUGE + one_handed_penalty = 70 + bolt_name = "bolt" + sound_eject = 'sound/weapons/serdy/launcher_open.ogg' + sound_chamber = 'sound/weapons/serdy/launcher_closed.ogg' + fire_sound = 'sound/weapons/serdy/recoilless.ogg' + + + +/// BM51 /// + + + +/obj/item/gun/projectile/automatic/serdy/bm51 + name = "BM51 service rifle" + desc = "A robust, versatile, and most importantly, very durable combat rifle used by endemic SDF forces. Chambered in 6.5x50mm." + caliber = "6.5mm" + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "bm51" + wielded_item_state = "bm51_w" + burst_delay = 1.5 + magazine_type = /obj/item/ammo_magazine/bm51 + allowed_magazines = list(/obj/item/ammo_magazine/bm51) + icon_state = "bm51" + projectile_type = /obj/item/projectile/bullet/rifle/a556 + firemodes = list( + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) + ) + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT + w_class = ITEMSIZE_HUGE + one_handed_penalty = 30 + fire_sound = 'sound/weapons/serdy/sks.ogg' + + + +/// BM109 /// + + + +/obj/item/gun/projectile/automatic/serdy/bm109 + name = "BM109 marksman rifle" + desc = "A legendary rifle, typically seen in the hands of SDF rangers. While considered suboptimal by most modern standards, it is deadly in the hands of a real marksman. Chambered in 8.6x65mm." + caliber = "8.6mm" + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + icon_state = "bm109" + + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "bm109" + wielded_item_state = "bm109_w" + recoil = 0 //screenshake cringe and gay + magazine_type = /obj/item/ammo_magazine/bm109 + allowed_magazines = list(/obj/item/ammo_magazine/bm109) + icon_state = "bm109" + projectile_type = /obj/item/projectile/bullet/rifle/a145/bh2 + load_method = MAGAZINE + auto_loading_type = CLOSED_BOLT + w_class = ITEMSIZE_HUGE + actions_types = list(/datum/action/item_action/use_scope) + accuracy = 10 + scoped_accuracy = 50 + one_handed_penalty = 100 + fire_sound = "sound/weapons/serdy/sks.ogg" + +/obj/item/gun/projectile/automatic/serdy/bm109/ui_action_click() + scope() + +/obj/item/gun/projectile/automatic/serdy/bm109/verb/scope() + set category = "Object" + set name = "Use Scope" + set popup_menu = 1 + + toggle_scope(2.0) + + + +/// SUPER DIYAAB /// + + + +/obj/item/gun/projectile/serdy_pistols/sdiyaab + name = "SM19 Super Diyaab" + desc = "An interesting full sized magnum service pistol, used by some SDF forces. Fairly robust despite it's odd shape. Chambered in .44." + icon = 'modular_chomp/icons/blackhole/pre-gatteningx32.dmi' + icon_state = "sdiyaab" + + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "sdiyaab" + + caliber = ".44" + magazine_type = /obj/item/ammo_magazine/sdiyaab + allowed_magazines = list(/obj/item/ammo_magazine/sdiyaab) + projectile_type = /obj/item/projectile/bullet/pistol/strong + fire_sound = "sound/weapons/serdy/44mag.ogg" + + + +/// SAVIK /// + + + +/obj/item/gun/projectile/shotgun/pump/combat/savik + name = "BM17 Savik lever-action shotgun" + desc = "The shotgun of choice for SDF rangers, the ever reliable Savik. As fearsome as it's namesake. Uses 12g rounds." + icon_state = "savik" + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "savik" + wielded_item_state = "savik_w" + max_shells = 11 + ammo_type = /obj/item/ammo_casing/a12g + load_method = SINGLE_CASING|SPEEDLOADER + pump_animation = "savik" + action_sound = 'sound/weapons/serdy/leverrack.ogg' + + + +/// KURURAK /// + + + +/obj/item/gun/projectile/automatic/serdy/kururak + name = "BM26 Kururak" + desc = "A durable bolt action rifle, produced on Sif for the SDF. Chambered in 8.6x65mm." + caliber = "8.6mm" + auto_loading_type = NO_AUTO_LOAD + load_method = SINGLE_CASING|SPEEDLOADER + only_open_load = TRUE + icon_state = "kururak" + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "kururak" + wielded_item_state = "kururak_w" + projectile_type = /obj/item/projectile/bullet/rifle/a145/bh2 + max_shells = 10 + ammo_type = /obj/item/ammo_casing/a86 + w_class = ITEMSIZE_HUGE + one_handed_penalty = 70 + bolt_name = "bolt" + sound_eject = 'sound/weapons/ballistics/boltactionopen.ogg' + sound_chamber = 'sound/weapons/ballistics/boltactionclose.ogg' + fire_sound = "sound/weapons/serdy/sks.ogg" + +/obj/item/gun/projectile/automatic/serdy/kururak/scoped + name = "BM27 Kururak sniper" + icon_state = "kururak_scoped" + icon = 'modular_chomp/icons/blackhole/pre-gatteningx64.dmi' + item_icons = list( + slot_l_hand_str = 'modular_chomp/icons/blackhole/mobs_lefthand.dmi', + slot_r_hand_str = 'modular_chomp/icons/blackhole/mobs_righthand.dmi', + ) + item_state = "kururak" + wielded_item_state = "kururak_w" + desc = "A durable bolt action rifle, produced on Sif for the SDF. This one has a scope, and better craftsmanship, for sniping. Chambered in 8.6x65mm." + actions_types = list(/datum/action/item_action/use_scope) + accuracy = -15 + recoil = 0 //screenshake cringe and gay + scoped_accuracy = 50 + one_handed_penalty = 70 + +/obj/item/gun/projectile/automatic/serdy/kururak/scoped/ui_action_click() + scope() + +/obj/item/gun/projectile/automatic/serdy/kururak/scoped/verb/scope() + set category = "Object" + set name = "Use Scope" + set popup_menu = 1 + + toggle_scope(2.0) diff --git a/modular_chomp/code/modules/projectiles/guns/zBallisticPort/magazines.dm b/modular_chomp/code/modules/projectiles/guns/zBallisticPort/magazines.dm index 520fc9f8a4..e1846e57fe 100644 --- a/modular_chomp/code/modules/projectiles/guns/zBallisticPort/magazines.dm +++ b/modular_chomp/code/modules/projectiles/guns/zBallisticPort/magazines.dm @@ -545,3 +545,122 @@ matter = list(MAT_STEEL = 800) multiple_sprites = 1 ammo_type = /obj/item/ammo_casing/a44 + + + + +// ------------------------- GATTENING EARLY PORT STUFF, THIS IS (i pray to god) TEMPORARY ------------------------- // + + + + +/obj/item/ammo_magazine/lynx + name = "Lynx magazine (7.76x55mm)" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + caliber = "7.76mm" + icon_state = "rifle_medium" + max_ammo = 10 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(MAT_STEEL = 2400) + ammo_type = /obj/item/ammo_casing/a776 + +/obj/item/ammo_magazine/zvir + name = "Zvir magazine (7.62)" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + caliber = "7.62mm" + icon_state = "rifle_box" + max_ammo = 100 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(MAT_STEEL = 5400) + ammo_type = /obj/item/ammo_casing/a762/ap + +/obj/item/ammo_magazine/barka + name = "Drobarka magazine (15x80mm)" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + caliber = "15mm" + icon_state = "rifle_magnum_box" + max_ammo = 50 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(MAT_STEEL = 5400) + ammo_type = /obj/item/ammo_casing/a15mm + + +/obj/item/ammo_magazine/bm51 + name = "BM51 magazine (6.5x50mm)" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + caliber = "6.5mm" + icon_state = "rifle_light_large" + max_ammo = 25 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(MAT_STEEL = 1400) + ammo_type = /obj/item/ammo_casing/a6550mm + +/obj/item/ammo_magazine/bm51/ap + name = "armor-piercing BM51 magazine (6.5x50mm)" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + caliber = "6.5mm" + icon_state = "rifle_light_large" + max_ammo = 25 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(MAT_STEEL = 1400) + ammo_type = /obj/item/ammo_casing/a6550mm/ap + +/obj/item/ammo_magazine/bm109 + name = "BM109 magazine (8.6x65mm)" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + caliber = "8.6mm" + icon_state = "rifle_heavy_alt" + max_ammo = 11 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(MAT_STEEL = 2400) + ammo_type = /obj/item/ammo_casing/a86 + +/obj/item/ammo_magazine/pmx + name = "PMX magazine (10mm)" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + caliber = "10mm" + icon_state = "pistol_light" + max_ammo = 8 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(MAT_STEEL = 1400) + ammo_type = /obj/item/ammo_casing/a10mm + +/obj/item/ammo_magazine/viper + name = "Ka12 Viper magazine (10mm)" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + caliber = "10mm" + icon_state = "smg_light" + max_ammo = 25 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(MAT_STEEL = 2000) + ammo_type = /obj/item/ammo_casing/a10mm + +/obj/item/ammo_magazine/sdiyaab + name = "Super Diyaab magazine (.44)" + icon = 'modular_chomp/icons/blackhole/pre-gattening-misc.dmi' + caliber = ".44" + icon_state = "pistol_heavy" + max_ammo = 11 + mag_type = MAGAZINE + multiple_sprites = 1 + matter = list(MAT_STEEL = 1400) + ammo_type = /obj/item/ammo_casing/a44 + +/obj/item/ammo_magazine/ammo_box/a86 + name = "ammo box (8.6x65mm)" + desc = "A box of 8.6x65mm rounds." + icon_state = "rifle" + caliber = "8.6mm" + ammo_type = /obj/item/ammo_casing/a86 + matter = list(MAT_STEEL = 6000) + max_ammo = 31 + multiple_sprites = 1 + diff --git a/modular_chomp/icons/blackhole/blackhole128x92.dmi b/modular_chomp/icons/blackhole/blackhole128x92.dmi new file mode 100644 index 0000000000..7dc0b725c9 Binary files /dev/null and b/modular_chomp/icons/blackhole/blackhole128x92.dmi differ diff --git a/modular_chomp/icons/blackhole/blackhole32x32.dmi b/modular_chomp/icons/blackhole/blackhole32x32.dmi index a6377fad5d..e9ccef4f01 100644 Binary files a/modular_chomp/icons/blackhole/blackhole32x32.dmi and b/modular_chomp/icons/blackhole/blackhole32x32.dmi differ diff --git a/modular_chomp/icons/blackhole/blackhole64x32.dmi b/modular_chomp/icons/blackhole/blackhole64x32.dmi index 7c6c909d65..d5c80a011e 100644 Binary files a/modular_chomp/icons/blackhole/blackhole64x32.dmi and b/modular_chomp/icons/blackhole/blackhole64x32.dmi differ diff --git a/modular_chomp/icons/blackhole/blackhole64x64.dmi b/modular_chomp/icons/blackhole/blackhole64x64.dmi index 4121dcde16..124027de8d 100644 Binary files a/modular_chomp/icons/blackhole/blackhole64x64.dmi and b/modular_chomp/icons/blackhole/blackhole64x64.dmi differ diff --git a/modular_chomp/icons/blackhole/equipment.dmi b/modular_chomp/icons/blackhole/equipment.dmi new file mode 100644 index 0000000000..db58d43f35 Binary files /dev/null and b/modular_chomp/icons/blackhole/equipment.dmi differ diff --git a/modular_chomp/icons/blackhole/mobs_back_suit.dmi b/modular_chomp/icons/blackhole/mobs_back_suit.dmi new file mode 100644 index 0000000000..3a20de60e6 Binary files /dev/null and b/modular_chomp/icons/blackhole/mobs_back_suit.dmi differ diff --git a/modular_chomp/icons/blackhole/mobs_lefthand.dmi b/modular_chomp/icons/blackhole/mobs_lefthand.dmi new file mode 100644 index 0000000000..81147e8ea1 Binary files /dev/null and b/modular_chomp/icons/blackhole/mobs_lefthand.dmi differ diff --git a/modular_chomp/icons/blackhole/mobs_righthand.dmi b/modular_chomp/icons/blackhole/mobs_righthand.dmi new file mode 100644 index 0000000000..5a38d60fd7 Binary files /dev/null and b/modular_chomp/icons/blackhole/mobs_righthand.dmi differ diff --git a/modular_chomp/icons/blackhole/pre-gattening-misc.dmi b/modular_chomp/icons/blackhole/pre-gattening-misc.dmi new file mode 100644 index 0000000000..a110d5d0dd Binary files /dev/null and b/modular_chomp/icons/blackhole/pre-gattening-misc.dmi differ diff --git a/modular_chomp/icons/blackhole/pre-gatteningx32.dmi b/modular_chomp/icons/blackhole/pre-gatteningx32.dmi new file mode 100644 index 0000000000..7365bed693 Binary files /dev/null and b/modular_chomp/icons/blackhole/pre-gatteningx32.dmi differ diff --git a/modular_chomp/icons/blackhole/pre-gatteningx64.dmi b/modular_chomp/icons/blackhole/pre-gatteningx64.dmi new file mode 100644 index 0000000000..35e503c82b Binary files /dev/null and b/modular_chomp/icons/blackhole/pre-gatteningx64.dmi differ diff --git a/modular_chomp/maps/common_areas/event.dm b/modular_chomp/maps/common_areas/event.dm new file mode 100644 index 0000000000..cb80eec42f --- /dev/null +++ b/modular_chomp/maps/common_areas/event.dm @@ -0,0 +1,5 @@ +/area/submap/blackholecruiser + name = "Black Hole battlecruiser" + icon_state = "submap" + flags = RAD_SHIELDED | AREA_FORBID_EVENTS | PHASE_SHIELDED + ambience = AMBIENCE_OTHERWORLDLY diff --git a/sound/weapons/rocketartillery1.ogg b/sound/weapons/rocketartillery1.ogg new file mode 100644 index 0000000000..c6484cda8a Binary files /dev/null and b/sound/weapons/rocketartillery1.ogg differ diff --git a/sound/weapons/serdy/flamethrower1.ogg b/sound/weapons/serdy/flamethrower1.ogg new file mode 100644 index 0000000000..447245d50b Binary files /dev/null and b/sound/weapons/serdy/flamethrower1.ogg differ diff --git a/sound/weapons/serdy/gauss1.ogg b/sound/weapons/serdy/gauss1.ogg new file mode 100644 index 0000000000..33998b3580 Binary files /dev/null and b/sound/weapons/serdy/gauss1.ogg differ diff --git a/sound/weapons/serdy/gauss2.ogg b/sound/weapons/serdy/gauss2.ogg new file mode 100644 index 0000000000..b9f6a8c029 Binary files /dev/null and b/sound/weapons/serdy/gauss2.ogg differ diff --git a/sound/weapons/serdy/heavyflamethrower.ogg b/sound/weapons/serdy/heavyflamethrower.ogg new file mode 100644 index 0000000000..71421c88f0 Binary files /dev/null and b/sound/weapons/serdy/heavyflamethrower.ogg differ diff --git a/sound/weapons/serdy/ionrifle1.ogg b/sound/weapons/serdy/ionrifle1.ogg new file mode 100644 index 0000000000..349f9f8c1c Binary files /dev/null and b/sound/weapons/serdy/ionrifle1.ogg differ diff --git a/sound/weapons/serdy/ionrifle2.ogg b/sound/weapons/serdy/ionrifle2.ogg new file mode 100644 index 0000000000..c0fc506e77 Binary files /dev/null and b/sound/weapons/serdy/ionrifle2.ogg differ diff --git a/sound/weapons/serdy/launcher_closed.ogg b/sound/weapons/serdy/launcher_closed.ogg new file mode 100644 index 0000000000..96ae449d2a Binary files /dev/null and b/sound/weapons/serdy/launcher_closed.ogg differ diff --git a/sound/weapons/serdy/launcher_open.ogg b/sound/weapons/serdy/launcher_open.ogg new file mode 100644 index 0000000000..16a1e71ee9 Binary files /dev/null and b/sound/weapons/serdy/launcher_open.ogg differ diff --git a/sound/weapons/serdy/launcher_reload.ogg b/sound/weapons/serdy/launcher_reload.ogg new file mode 100644 index 0000000000..f7d07c1560 Binary files /dev/null and b/sound/weapons/serdy/launcher_reload.ogg differ diff --git a/sound/weapons/serdy/leverrack.ogg b/sound/weapons/serdy/leverrack.ogg new file mode 100644 index 0000000000..865dbef3d0 Binary files /dev/null and b/sound/weapons/serdy/leverrack.ogg differ diff --git a/sound/weapons/serdy/plasma1.ogg b/sound/weapons/serdy/plasma1.ogg new file mode 100644 index 0000000000..8cc2cd443d Binary files /dev/null and b/sound/weapons/serdy/plasma1.ogg differ diff --git a/sound/weapons/serdy/plasma2.ogg b/sound/weapons/serdy/plasma2.ogg new file mode 100644 index 0000000000..79849b0211 Binary files /dev/null and b/sound/weapons/serdy/plasma2.ogg differ diff --git a/sound/weapons/serdy/plasma3.ogg b/sound/weapons/serdy/plasma3.ogg new file mode 100644 index 0000000000..30c343b550 Binary files /dev/null and b/sound/weapons/serdy/plasma3.ogg differ diff --git a/sound/weapons/serdy/plasma4.ogg b/sound/weapons/serdy/plasma4.ogg new file mode 100644 index 0000000000..5c164e2690 Binary files /dev/null and b/sound/weapons/serdy/plasma4.ogg differ diff --git a/sound/weapons/serdy/pulselaser.ogg b/sound/weapons/serdy/pulselaser.ogg new file mode 100644 index 0000000000..ececf86dc9 Binary files /dev/null and b/sound/weapons/serdy/pulselaser.ogg differ diff --git a/sound/weapons/serdy/recoilless.ogg b/sound/weapons/serdy/recoilless.ogg new file mode 100644 index 0000000000..b569b385cc Binary files /dev/null and b/sound/weapons/serdy/recoilless.ogg differ diff --git a/sound/weapons/serdy/retrolaser.ogg b/sound/weapons/serdy/retrolaser.ogg new file mode 100644 index 0000000000..7e9a8f1fa4 Binary files /dev/null and b/sound/weapons/serdy/retrolaser.ogg differ diff --git a/sound/weapons/serdy/retrolaser2.ogg b/sound/weapons/serdy/retrolaser2.ogg new file mode 100644 index 0000000000..5fd431fd9e Binary files /dev/null and b/sound/weapons/serdy/retrolaser2.ogg differ diff --git a/sound/weapons/serdy/rpg_reload.ogg b/sound/weapons/serdy/rpg_reload.ogg new file mode 100644 index 0000000000..dca45b3609 Binary files /dev/null and b/sound/weapons/serdy/rpg_reload.ogg differ diff --git a/vorestation.dme b/vorestation.dme index 7924a97880..4102356cb0 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4732,8 +4732,8 @@ #include "code\modules\research\tg\design_disks\engineering.dm" #include "code\modules\research\tg\design_disks\security.dm" #include "code\modules\research\tg\designs\ai_designs.dm" -#include "code\modules\research\tg\designs\chomp_designs.dm" #include "code\modules\research\tg\designs\ammunition_designs.dm" +#include "code\modules\research\tg\designs\chomp_designs.dm" #include "code\modules\research\tg\designs\circuitry_designs.dm" #include "code\modules\research\tg\designs\construction_designs.dm" #include "code\modules\research\tg\designs\cybernetic_designs.dm" @@ -5409,10 +5409,12 @@ #include "modular_chomp\code\modules\clothing\spacesuits\rig\modules\specific\defib.dm" #include "modular_chomp\code\modules\clothing\spacesuits\rig\modules\specific\mounted_gun.dm" #include "modular_chomp\code\modules\clothing\spacesuits\rig\suits\alien.dm" +#include "modular_chomp\code\modules\clothing\spacesuits\void\blackhole.dm" #include "modular_chomp\code\modules\clothing\spacesuits\void\station.dm" #include "modular_chomp\code\modules\clothing\spacesuits\void\void.dm" #include "modular_chomp\code\modules\clothing\suits\armor.dm" #include "modular_chomp\code\modules\clothing\suits\jobs.dm" +#include "modular_chomp\code\modules\clothing\under\blackhole.dm" #include "modular_chomp\code\modules\clothing\under\jobs\medsec.dm" #include "modular_chomp\code\modules\datums\supplypacks\contraband.dm" #include "modular_chomp\code\modules\datums\supplypacks\engineering.dm" @@ -5640,6 +5642,7 @@ #include "modular_chomp\maps\common\common_things.dm" #include "modular_chomp\maps\common\common_turfs.dm" #include "modular_chomp\maps\common\common_wildlife_encounter.dm" +#include "modular_chomp\maps\common_areas\event.dm" #include "modular_chomp\maps\common_areas\expoutpost.dm" #include "modular_chomp\maps\common_areas\offmap.dm" #include "modular_chomp\maps\common_areas\planetary.dm"