Files
ArchBTW 57fb5f016d Viscerator PASS flags (#93912)
## About The Pull Request

Viscerator has PASSMOB, but doesn't respect the flag. Fixes possible
oversight.
Adds flags PASSMACHINE && PASSFLAP.

## Why It's Good For The Game

PASSMOB:
- Possible oversight - Supposed to be respecting the PASSMOB flag

PASSMACHINE && PASSFLAP:
- Realistically manhacks would be able to fly over machines, and fly
through flaps

## Changelog

🆑 ArchBTW
balance: viscerators get PASSMACHINE && PASSFLAP
fix: viscerators respect the PASSMOB flag
/🆑
2025-11-13 19:17:21 +01:00

255 lines
8.3 KiB
Plaintext

/// Syndicate troopers
/mob/living/basic/trooper/syndicate
name = "Syndicate Operative"
desc = "Death to Nanotrasen."
faction = list(ROLE_SYNDICATE)
corpse = /obj/effect/mob_spawn/corpse/human/syndicatesoldier
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatesoldier
/mob/living/basic/trooper/syndicate/space
name = "Syndicate Commando"
maxHealth = 170
health = 170
corpse = /obj/effect/gibspawner/human
unsuitable_atmos_damage = 0
minimum_survivable_temperature = 0
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatecommando
/mob/living/basic/trooper/syndicate/space/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
set_light(4)
/mob/living/basic/trooper/syndicate/space/stormtrooper
name = "Syndicate Stormtrooper"
maxHealth = 250
health = 250
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatestormtrooper
/mob/living/basic/trooper/syndicate/melee //dude with a knife and no shields
melee_damage_lower = 15
melee_damage_upper = 15
corpse = /obj/effect/gibspawner/human
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
r_hand = /obj/item/knife/combat/survival
var/projectile_deflect_chance = 0
/mob/living/basic/trooper/syndicate/melee/projectile_hit(obj/projectile/hitting_projectile, def_zone, piercing_hit, blocked)
if(prob(projectile_deflect_chance))
visible_message(span_danger("[src] blocks [hitting_projectile] with its shield!"))
return BULLET_ACT_BLOCK
return ..()
/mob/living/basic/trooper/syndicate/melee/space
name = "Syndicate Commando"
maxHealth = 170
health = 170
unsuitable_atmos_damage = 0
minimum_survivable_temperature = 0
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatecommando
/mob/living/basic/trooper/syndicate/melee/space/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
set_light(4)
/mob/living/basic/trooper/syndicate/melee/space/stormtrooper
name = "Syndicate Stormtrooper"
maxHealth = 250
health = 250
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatestormtrooper
/mob/living/basic/trooper/syndicate/melee/sword
melee_damage_lower = 30
melee_damage_upper = 30
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
attack_sound = 'sound/items/weapons/blade1.ogg'
armour_penetration = 35
projectile_deflect_chance = 50
light_range = 2
light_power = 2.5
light_color = COLOR_SOFT_RED
r_hand = /obj/item/melee/energy/sword/saber/red
l_hand = /obj/item/shield/energy
/mob/living/basic/trooper/syndicate/melee/sword/space
name = "Syndicate Commando"
maxHealth = 170
health = 170
unsuitable_atmos_damage = 0
minimum_survivable_temperature = 0
projectile_deflect_chance = 50
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatecommando
/mob/living/basic/trooper/syndicate/melee/sword/space/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
/mob/living/basic/trooper/syndicate/melee/sword/space/stormtrooper
name = "Syndicate Stormtrooper"
maxHealth = 250
health = 250
projectile_deflect_chance = 50
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatestormtrooper
///////////////Guns////////////
/mob/living/basic/trooper/syndicate/ranged
corpse = /obj/effect/gibspawner/human
ai_controller = /datum/ai_controller/basic_controller/trooper/ranged
r_hand = /obj/item/gun/ballistic/automatic/pistol
/// Type of bullet we use
var/casingtype = /obj/item/ammo_casing/c9mm
/// Sound to play when firing weapon
var/projectilesound = 'sound/items/weapons/gun/pistol/shot.ogg'
/// number of burst shots
var/burst_shots
/// Time between taking shots
var/ranged_cooldown = 1 SECONDS
/mob/living/basic/trooper/syndicate/ranged/Initialize(mapload)
. = ..()
AddComponent(\
/datum/component/ranged_attacks,\
casing_type = casingtype,\
projectile_sound = projectilesound,\
cooldown_time = ranged_cooldown,\
burst_shots = burst_shots,\
)
if (ranged_cooldown <= 1 SECONDS)
AddComponent(/datum/component/ranged_mob_full_auto)
/mob/living/basic/trooper/syndicate/ranged/infiltrator //shuttle loan event
projectilesound = 'sound/items/weapons/gun/smg/shot_suppressed.ogg'
corpse = /obj/effect/mob_spawn/corpse/human/syndicatesoldier
/mob/living/basic/trooper/syndicate/ranged/space
name = "Syndicate Commando"
maxHealth = 170
health = 170
unsuitable_atmos_damage = 0
minimum_survivable_temperature = 0
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatecommando
/mob/living/basic/trooper/syndicate/ranged/space/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
set_light(4)
/mob/living/basic/trooper/syndicate/ranged/space/stormtrooper
name = "Syndicate Stormtrooper"
maxHealth = 250
health = 250
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatestormtrooper
/mob/living/basic/trooper/syndicate/ranged/smg
casingtype = /obj/item/ammo_casing/c45
projectilesound = 'sound/items/weapons/gun/smg/shot.ogg'
ai_controller = /datum/ai_controller/basic_controller/trooper/ranged/burst
burst_shots = 3
ranged_cooldown = 3 SECONDS
r_hand = /obj/item/gun/ballistic/automatic/c20r
///Spawns from an emagged orion trail machine set to kill the player.
/mob/living/basic/trooper/syndicate/ranged/smg/orion
name = "spaceport security"
desc = "Premier corporate security forces for all spaceports found along the Orion Trail."
faction = list(FACTION_ORION)
corpse = null
/mob/living/basic/trooper/syndicate/ranged/smg/pilot //caravan ambush ruin
name = "Syndicate Salvage Pilot"
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatepilot
corpse = /obj/effect/mob_spawn/corpse/human/syndicatepilot
/mob/living/basic/trooper/syndicate/ranged/smg/space
name = "Syndicate Commando"
maxHealth = 170
health = 170
unsuitable_atmos_damage = 0
minimum_survivable_temperature = 0
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatecommando
/mob/living/basic/trooper/syndicate/ranged/smg/space/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
set_light(4)
/mob/living/basic/trooper/syndicate/ranged/smg/space/stormtrooper
name = "Syndicate Stormtrooper"
maxHealth = 250
health = 250
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatestormtrooper
/mob/living/basic/trooper/syndicate/ranged/shotgun
casingtype = /obj/item/ammo_casing/shotgun/buckshot //buckshot (up to 72.5 brute) fired in a two-round burst
ai_controller = /datum/ai_controller/basic_controller/trooper/ranged/shotgunner
ranged_cooldown = 3 SECONDS
burst_shots = 2
r_hand = /obj/item/gun/ballistic/shotgun/bulldog
/mob/living/basic/trooper/syndicate/ranged/shotgun/space
name = "Syndicate Commando"
maxHealth = 170
health = 170
unsuitable_atmos_damage = 0
minimum_survivable_temperature = 0
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatecommando
/mob/living/basic/trooper/syndicate/ranged/shotgun/space/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
set_light(4)
/mob/living/basic/trooper/syndicate/ranged/shotgun/space/stormtrooper
name = "Syndicate Stormtrooper"
maxHealth = 250
health = 250
mob_spawner = /obj/effect/mob_spawn/corpse/human/syndicatestormtrooper
///////////////Misc////////////
/mob/living/basic/viscerator
name = "viscerator"
desc = "A small, twin-bladed machine capable of inflicting very deadly lacerations."
icon_state = "viscerator_attack"
icon_living = "viscerator_attack"
density = FALSE
pass_flags = PASSTABLE | PASSMOB | PASSMACHINE | PASSFLAPS
combat_mode = TRUE
mob_biotypes = MOB_ROBOTIC
basic_mob_flags = DEL_ON_DEATH
unsuitable_atmos_damage = 0
minimum_survivable_temperature = 0
maximum_survivable_temperature = 700
unsuitable_cold_damage = 0
health = 25
maxHealth = 25
melee_damage_lower = 15
melee_damage_upper = 15
wound_bonus = -10
exposed_wound_bonus = 20
sharpness = SHARP_EDGED
obj_damage = 0
attack_verb_continuous = "cuts"
attack_verb_simple = "cut"
attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
faction = list(ROLE_SYNDICATE)
mob_size = MOB_SIZE_TINY
limb_destroyer = 1
speak_emote = list("states")
bubble_icon = "syndibot"
gold_core_spawnable = HOSTILE_SPAWN
death_message = "is smashed into pieces!"
ai_controller = /datum/ai_controller/basic_controller/trooper/viscerator
/mob/living/basic/viscerator/Initialize(mapload)
. = ..()
AddElement(/datum/element/simple_flying)
AddComponent(/datum/component/swarming)