Backports some event mobs from Torchstation (#8425)

This commit is contained in:
SilencedMP5A5
2024-05-23 12:26:09 -04:00
committed by GitHub
parent 78b3875b7f
commit 454a3c791d
3 changed files with 417 additions and 0 deletions

View File

@@ -0,0 +1,416 @@
//File dedicated to my assorted syndicate mobtypes! -- Serdy
/mob/living/simple_mob/vore/otie/syndicate //Spawn this one only if you're looking for a bad time. Not friendly.
name = "commandotie"
desc = "The classic bioengineered longdog, now in treacherous anarchist flavor!"
tt_desc = "Otus robustus"
icon = 'modular_chomp/icons/mob/vore64x32_ch.dmi'
icon_state = "syndotie_std"
icon_living = "syndotie_std"
icon_dead = "syndotie_std-dead"
icon_rest = "syndotie_std_rest"
faction = "syndicate"
maxHealth = 200
health = 200
minbodytemp = 200
melee_damage_lower = 15
melee_damage_upper = 20
see_in_dark = 8
response_help = "pets"
response_disarm = "bops"
response_harm = "hits"
attacktext = list("mauled","chomped","savaged")
friendly = list("nuzzles", "slobberlicks", "noses softly at", "noseboops", "headbumps against", "leans on", "nibbles affectionately on")
meat_amount = 6
movement_cooldown = -2.5
melee_attack_delay = 0
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
melee_miss_chance = 0
max_buckled_mobs = 1 //Yeehaw
can_buckle = TRUE
buckle_movable = TRUE
buckle_lying = FALSE
mount_offset_y = 10
ai_holder_type = /datum/ai_holder/simple_mob/melee
say_list_type = /datum/say_list/otie
tame_chance = 0
armor = list( // Values for normal getarmor() checks
"melee" = 20,
"bullet" = 10,
"laser" = 20,
"energy" = 5,
"bomb" = 0,
"bio" = 100,
"rad" = 100
)
armor_soak = list( // Values for getsoak() checks.
"melee" = 0,
"bullet" = 0,
"laser" = 0,
"energy" = 0,
"bomb" = 0,
"bio" = 0,
"rad" = 0
)
// Leaping is a special attack, so these values determine when leap can happen.
// Leaping won't occur if its on cooldown.
special_attack_min_range = 1
special_attack_max_range = 7
special_attack_cooldown = 5 SECONDS
var/leap_warmup = 0.5 SECOND // How long the leap telegraphing is.
var/leap_sound = 'sound/weapons/spiderlunge.ogg'
player_msg = "You are very fast, and <b>can perform a leaping attack</b> by clicking on someone from a short distance away.<br>\
If the leap succeeds, the target will be knocked down briefly and you will be on top of them.<br>\
Note that there is a short delay before you leap!<br>\
In addition, you will do more damage to incapacitated opponents."
/mob/living/simple_mob/vore/otie/syndicate/chubby //Spawn this one only if you're looking for a bad time. Not friendly.
name = "chubby commandotie"
desc = "The classic bioengineered longdog, now in treacherous anarchist flavor! This one is an absolute unit, too."
tt_desc = "Otus robustus"
icon = 'modular_chomp/icons/mob/vore64x32_ch.dmi'
icon_state = "syndcotie_std"
icon_living = "syndcotie_std"
icon_dead = "syndcotie_std-dead"
icon_rest = "syndcotie_std_rest"
maxHealth = 350
health = 350
meat_amount = 12
melee_attack_delay = 0.5
movement_cooldown = 0
special_attack_min_range = 1
special_attack_max_range = 3
special_attack_cooldown = 30 SECONDS
armor = list( // Values for normal getarmor() checks
"melee" = 20,
"bullet" = 20,
"laser" = 20,
"energy" = 5,
"bomb" = 0,
"bio" = 100,
"rad" = 100
)
armor_soak = list( // Values for getsoak() checks.
"melee" = 5,
"bullet" = 5,
"laser" = 5,
"energy" = 5,
"bomb" = 5,
"bio" = 0,
"rad" = 0
)
/mob/living/simple_mob/vore/otie/syndicate/apply_bonus_melee_damage(atom/A, damage_amount)
if(isliving(A))
var/mob/living/L = A
if(L.incapacitated(INCAPACITATION_DISABLED))
return damage_amount * 1.5
return ..()
/mob/living/simple_mob/vore/otie/syndicate/do_special_attack(atom/A)
set waitfor = FALSE
set_AI_busy(TRUE)
do_windup_animation(A, leap_warmup)
sleep(leap_warmup) // For the telegraphing.
status_flags |= LEAPING
visible_message(span("danger","\The [src] leaps at \the [A]!"))
throw_at(get_step(get_turf(A), get_turf(src)), special_attack_max_range+1, 1, src)
playsound(src, leap_sound, 75, 1)
sleep(5)
if(status_flags & LEAPING)
status_flags &= ~LEAPING
var/turf/T = get_turf(src)
. = FALSE
// Now for the stun.
var/mob/living/victim = null
for(var/mob/living/L in T)
if(L == src)
continue
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(H.check_shields(damage = 0, damage_source = src, attacker = src, def_zone = null, attack_text = "the leap"))
continue // We were blocked.
victim = L
break
if(victim)
victim.Weaken(2)
victim.visible_message(span("danger","\The [src] knocks down \the [victim]!"))
to_chat(victim, span("critical", "\The [src] jumps on you!"))
. = TRUE
set_AI_busy(FALSE)
/mob/living/simple_mob/vore/wolf/direwolf/syndicate
name = "mercenary commandoggo"
desc = "A huge white furred wolfdog, wearing a blood red combat harness. They look ravenously hungry, too..."
tt_desc = "Canis maxdirus"
icon = 'modular_chomp/icons/mob/vore64x32_ch.dmi'
faction = "syndicate"
icon_dead = "synddog_wht-dead"
icon_living = "synddog_wht"
icon_state = "synddog_wht"
icon_rest = "synddog_wht_rest"
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
movement_cooldown = 0
harm_intent_damage = 10
melee_damage_lower = 30
melee_damage_upper = 35
maxHealth = 350
melee_attack_delay = 1
minbodytemp = 0
max_buckled_mobs = 1
mount_offset_y = 14
mount_offset_x = 2
can_buckle = TRUE
buckle_movable = TRUE
buckle_lying = FALSE
vore_icons = SA_ICON_LIVING | SA_ICON_REST
armor = list( // Values for normal getarmor() checks
"melee" = 30,
"bullet" = 10,
"laser" = 10,
"energy" = 5,
"bomb" = 0,
"bio" = 100,
"rad" = 100
)
armor_soak = list( // Values for getsoak() checks.
"melee" = 5,
"bullet" = 5,
"laser" = 5,
"energy" = 5,
"bomb" = 5,
"bio" = 0,
"rad" = 0
)
/mob/living/simple_mob/vore/wolf/direwolf/syndicate/black
name = "mercenary commandoggo"
desc = "A huge black furred wolfdog, wearing a blood red combat harness. They look ravenously hungry, too..."
tt_desc = "Canis maxdirus"
icon = 'modular_chomp/icons/mob/vore64x32_ch.dmi'
faction = "syndicate"
icon_dead = "synddog_blk-dead"
icon_living = "synddog_blk"
icon_state = "synddog_blk"
icon_rest = "synddog_blk_rest"
/datum/ai_holder/simple_mob/merc/ranged/torch //Only use these ai types if you want them not to give any warning before blastin'
threaten = FALSE
returns_home = TRUE
wander = TRUE
intelligence_level = AI_SMART
threaten_delay = 0 SECONDS
use_astar = TRUE
/datum/ai_holder/simple_mob/merc/ranged/torch/lmg
threaten = FALSE
returns_home = TRUE
wander = TRUE
intelligence_level = AI_SMART
threaten_delay = 0 SECONDS
use_astar = TRUE
conserve_ammo = FALSE
/datum/ai_holder/simple_mob/merc/ranged/torch/lmg/chill
threaten = FALSE
returns_home = TRUE
wander = TRUE
intelligence_level = AI_SMART
threaten_delay = 30 SECONDS
use_astar = TRUE
conserve_ammo = FALSE
/datum/ai_holder/simple_mob/merc/ranged/sniper/torch
vision_range = 20
threaten = FALSE
returns_home = TRUE
wander = TRUE
intelligence_level = AI_SMART
threaten_delay = 0 SECONDS
use_astar = TRUE
/mob/living/simple_mob/vore/wolftaur/syndicate
name = "mercenary commando"
desc = "A tough looking armored canid creature armed with a battle rifle."
icon = 'modular_chomp/icons/mob/vore64x32_ch.dmi'
faction = "syndicate"
icon_dead = "synditaur"
icon_living = "synditaur"
icon_state = "synditaur"
icon_rest = "synditaur"
maxHealth = 200
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")
random_skin = 0
old_x = -16
old_y = 0
default_pixel_x = -16
pixel_x = -16
pixel_y = 0
random_skin = 0
var/exploded = FALSE
var/explosion_dev_range = 0
var/explosion_heavy_range = 0
var/explosion_light_range = 1
var/explosion_flash_range = 6
var/explosion_delay_lower = 0 SECOND // Lower bound for explosion delay.
var/explosion_delay_upper = 1 SECONDS // Upper bound.
loot_list = list(/obj/item/weapon/gun/projectile/automatic/serdy/type901 = 1)
projectiletype = /obj/item/projectile/bullet/rifle/a545
projectilesound = 'sound/weapons/serdy/type901.ogg'
projectile_dispersion = 3
projectile_accuracy = -15
base_attack_cooldown = 8
reload_max = 30
ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged
say_list_type = /datum/say_list/merc
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/wolftaur/New()
..()
var/oursize = rand(90, 200) / 100
resize(oursize)
/mob/living/simple_mob/vore/wolftaur/syndicate/death()
visible_message(span("critical", "\The [src]'s explosive implant lets out a shrill beep!!!"))
var/delay = rand(explosion_delay_lower, explosion_delay_upper)
spawn(0)
// Flash black and red as a warning.
for(var/i = 1 to delay)
if(i % 2 == 0)
color = "#FFFFFF"
else
color = "#FF7777"
sleep(1)
spawn(delay)
// The actual boom.
if(src && !exploded)
visible_message(span("danger", "\The [src]'s body violentl explodes!"))
exploded = TRUE
new /obj/effect/decal/cleanable/blood/gibs(src.loc)
explosion(src.loc, explosion_dev_range, explosion_heavy_range, explosion_light_range, explosion_flash_range)
gib(src)
return ..()
/mob/living/simple_mob/vore/wolftaur/syndicate/alt1
icon_dead = "synditaur_r1"
icon_living = "synditaur_r1"
icon_state = "synditaur_r1"
icon_rest = "synditaur_r1"
/mob/living/simple_mob/vore/wolftaur/syndicate/alt2
icon_dead = "synditaur_r3"
icon_living = "synditaur_r3"
icon_state = "synditaur_r3"
icon_rest = "synditaur_r3"
/mob/living/simple_mob/vore/wolftaur/syndicate/alt3
icon_dead = "synditaur_r2"
icon_living = "synditaur_r2"
icon_state = "synditaur_r2"
icon_rest = "synditaur_r2"
/mob/living/simple_mob/vore/wolftaur/syndicate/lmg
name = "mercenary commando heavy"
desc = "A tough looking armored canid creature armed with an LMG!"
faction = "syndicate"
icon_dead = "synditaur_lmg"
icon_living = "synditaur_lmg"
icon_state = "synditaur_lmg"
icon_rest = "synditaur_lmg"
loot_list = list(/obj/item/weapon/gun/projectile/automatic/l6_saw = 1)
projectiletype = /obj/item/projectile/bullet/pistol
projectilesound = 'sound/weapons/ballistics/a545.ogg'
projectile_dispersion = 12
projectile_accuracy = -25
random_skin = 0
base_attack_cooldown = 0.3
reload_max = 50
ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/torch/lmg/chill
/mob/living/simple_mob/vore/wolftaur/syndicate/smg
name = "mercenary commando"
desc = "A tough looking armored canid creature armed with an SMG!"
faction = "syndicate"
icon_dead = "synditaur_smg"
icon_living = "synditaur_smg"
icon_state = "synditaur_smg"
icon_rest = "synditaur_smg"
loot_list = list(/obj/item/weapon/gun/projectile/automatic/p90 = 15)
projectiletype = /obj/item/projectile/bullet/a57
projectilesound = 'sound/weapons/ballistics/a545.ogg'
projectile_dispersion = 1
projectile_accuracy = -10
random_skin = 0
base_attack_cooldown = 0.1
reload_max = 15
ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged
/*
/mob/living/simple_mob/vore/wolftaur/syndicate/awp
name = "mercenary commando sniper"
desc = "A tough looking armored canid creature armed with a sniper rifle!"
faction = "syndicate"
icon_dead = "synditaur_awp"
icon_living = "synditaur_awp"
icon_state = "synditaur_awp"
icon_rest = "synditaur_awp"
loot_list = list(/obj/item/weapon/gun/projectile/automatic/serdy/awp = 1)
projectiletype = /obj/item/projectile/bullet/rifle/a338
projectilesound = 'sound/weapons/ballistics/a762x54.ogg'
projectile_dispersion = 0
projectile_accuracy = 50
random_skin = 0
base_attack_cooldown = 30
ranged_attack_delay = 2.5
reload_max = 5
ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged/sniper/torch
\*
*/
///commented this guy out because i couldn't figure out how to make him do the neat little laser pointer targeting thingy the regular merc sniper does before blastin' - Serdy