mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-21 12:17:40 +01:00
Small Tyr Changes (#12624)
This commit is contained in:
@@ -196,7 +196,7 @@
|
||||
strength = 15
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro //secondary spawner
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro //smol
|
||||
name = "mhydro ant"
|
||||
icon_state = "mhydro_ant"
|
||||
icon_living = "mhydro_ant"
|
||||
@@ -208,9 +208,14 @@
|
||||
/obj/item/stack/material/mhydrogen = 4
|
||||
)
|
||||
size_multiplier = 0.5
|
||||
movement_cooldown = -1
|
||||
mob_size = MOB_MINISCULE
|
||||
pass_flags = PASSTABLE
|
||||
layer = MOB_LAYER
|
||||
density = 0
|
||||
melee_damage_lower = 6
|
||||
melee_damage_upper = 6
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite //flames
|
||||
name = "painite metal ant"
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
|
||||
icon_state = "painite_ant"
|
||||
@@ -231,7 +236,7 @@
|
||||
to_chat(L, span_danger("You've been burned by \the [src]!"))
|
||||
L.ignite_mob()
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze //spawns a legion
|
||||
name = "bronze metal ant"
|
||||
icon_state = "bronze_ant"
|
||||
icon_living = "bronze_ant"
|
||||
@@ -307,7 +312,7 @@
|
||||
new build_type(T)
|
||||
return TRUE
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/silver
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/silver //transparent
|
||||
name = "silver ant"
|
||||
icon_state = "silver_ant"
|
||||
icon_living = "silver_ant"
|
||||
@@ -319,29 +324,11 @@
|
||||
/obj/item/stack/material/silver = 10
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/silver/bullet_act(obj/item/projectile/P)
|
||||
if(prob(45))
|
||||
visible_message(span_danger("The [P.name] gets reflected by [src]'s armor!"), \
|
||||
span_userdanger("The [P.name] gets reflected by [src]'s armor!"))
|
||||
|
||||
// Find a turf near or on the original location to bounce to
|
||||
if(P.starting)
|
||||
var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
|
||||
var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
|
||||
var/turf/curloc = get_turf(src)
|
||||
|
||||
// redirect the projectile
|
||||
P.redirect(new_x, new_y, curloc, src)
|
||||
P.reflected = 1
|
||||
|
||||
return -1 // complete projectile permutation
|
||||
|
||||
return (..(P))
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/gold
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/gold //emp on death
|
||||
name = "gold ant"
|
||||
icon_state = "gold_ant"
|
||||
icon_living = "gold_ant"
|
||||
desc = "A large ant with a metallic golden rear end. Is crackling with lightning."
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/tyrant_burn
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/gold = 18\
|
||||
@@ -349,20 +336,24 @@
|
||||
harvest_results = list(
|
||||
/obj/item/stack/material/gold = 10
|
||||
)
|
||||
var/exploded = FALSE
|
||||
var/explosion_delay_lower = 5 SECOND // Lower bound for explosion delay.
|
||||
var/explosion_delay_upper = 8 SECONDS // Upper bound.
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/gold/proc/explode()
|
||||
if(src && !exploded)
|
||||
visible_message(span_danger("\The [src]'s body detonates!"))
|
||||
exploded = TRUE
|
||||
empulse(src, 1, 2, 0, 0)
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/gold/death()
|
||||
visible_message(span_critical("\The [src]'s body begins to rupture!"))
|
||||
var/delay = rand(explosion_delay_lower, explosion_delay_upper)
|
||||
animate(src, color = "#000000", time = 0.1 SECONDS, loop = ceil(delay/2))
|
||||
animate(color = "#FF0000", time = 0.1 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(explode)), delay, TIMER_DELETE_ME)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/gold/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
if(prob(33))
|
||||
A.emp_act(4) //The weakest strength of EMP
|
||||
playsound(src, 'sound/weapons/egloves.ogg', 75, 1)
|
||||
L.Weaken(4)
|
||||
L.Stun(4)
|
||||
L.stuttering = max(L.stuttering, 4)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, L)
|
||||
s.start()
|
||||
visible_message(span_danger("The grub releases a powerful shock!"))
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/queen //the nurses of the ants
|
||||
name = "queen ant"
|
||||
|
||||
@@ -3,207 +3,41 @@
|
||||
desc = "A strange insect."
|
||||
icon_state = "firefly"
|
||||
icon_dead = "firefly_dead"
|
||||
maxHealth = 10 //Not sure why you're fighting this, but any agate weapon one shots it. Except bow.
|
||||
maxHealth = 10 //One shotable by pratically anyweapon
|
||||
health = 10
|
||||
pass_flags = PASSTABLE
|
||||
movement_cooldown = 1
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/passive
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/guard_limit/pointblank
|
||||
|
||||
mob_size = MOB_MINISCULE //need to click the tiny sprite
|
||||
|
||||
projectiletype = /obj/item/projectile/energy/blob/rainbowfly
|
||||
projectile_dispersion = 8
|
||||
projectile_accuracy = -15
|
||||
base_attack_cooldown = 5
|
||||
|
||||
glow_color = "#FF3300"
|
||||
light_color = "#FF3300"
|
||||
glow_range = 4
|
||||
glow_intensity = 4
|
||||
|
||||
melee_damage_lower = 5 //I guess it could theortically kill you dirrectly
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
|
||||
hovering = TRUE
|
||||
|
||||
/obj/item/projectile/energy/blob/rainbowfly
|
||||
damage = 10
|
||||
check_armour = "melee"
|
||||
splatter = TRUE
|
||||
my_chems = list(REAGENT_ID_CRYPTOBIOLIN)
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/rainbow_fly/handle_special()
|
||||
if(stat != DEAD)
|
||||
painbow_aura()
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/rainbow_fly/proc/painbow_aura()
|
||||
for(var/mob/living/L in view(src, 5))
|
||||
for(var/mob/living/L in view(src, 7))
|
||||
L.druggy = max(L.druggy, 10)
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/groundpitcher
|
||||
name = "underground pitcher"
|
||||
desc = "A large insect."
|
||||
icon_state = "groundpitcher"
|
||||
icon_dead = "groundpitcher"
|
||||
maxHealth = 20 //two hits with sword and spear..
|
||||
health = 20
|
||||
pass_flags = PASSTABLE //This was from me copy and pasting but...it's an unmoving plant. Kind of want to keep it here.
|
||||
movement_cooldown = 1
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/passive/pitcher
|
||||
|
||||
melee_damage_lower = 0 //This cannot kill you unless you fall into it
|
||||
melee_damage_upper = 0
|
||||
|
||||
meat_type = /obj/item/stack/material/fiber
|
||||
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/cloth = 1\
|
||||
)
|
||||
|
||||
vore_bump_chance = 100
|
||||
vore_bump_emote = "slurps up" //Not really a good way to make the grammar work with a passive vore plant.
|
||||
vore_active = 1
|
||||
vore_capacity = 1
|
||||
vore_pounce_chance = 100
|
||||
swallowTime = 3
|
||||
vore_ignores_undigestable = 0
|
||||
vore_default_mode = DM_DIGEST
|
||||
|
||||
//This is legit pitcher plant bellies with slightly altered bits.
|
||||
/mob/living/simple_mob/animal/tyr/groundpitcher/load_default_bellies()
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.desc = "You leaned a little too close to the pitcher plant, stumbling over the lip and splashing into a puddle of liquid filling the bottom of the cramped pitcher. You squirm madly, righting yourself and scrabbling at the walls in vain as the slick surface offers no purchase. The dim light grows dark as the pitcher's cap lowers, silently sealing the exit. With a sinking feeling you realize you won't be able to push the exit open even if you could somehow climb that high, leaving you helplessly trapped in the slick, tingling fluid."
|
||||
B.digest_burn = 0.5
|
||||
B.digest_brute = 0
|
||||
B.vore_verb = "trip"
|
||||
B.name = "pitcher"
|
||||
B.mode_flags = DM_FLAG_THICKBELLY
|
||||
B.wet_loop = 0 //As nice as the fancy internal sounds are this is a plant.
|
||||
B.digestchance = 20
|
||||
B.escapechance = 20
|
||||
B.fancy_vore = 1
|
||||
B.vore_sound = "Squish2"
|
||||
B.release_sound = "Pred Escape"
|
||||
B.contamination_color = "purple"
|
||||
B.contamination_flavor = "Wet"
|
||||
//Why is it we have all these customizeable belly options which nobody ever alters for mobs?
|
||||
|
||||
B.emote_lists[DM_HOLD] = list(
|
||||
"Slick fluid trickles over you, carrying threads of sweetness.",
|
||||
"Everything is still, dark, and quiet. Your breaths echo quietly.",
|
||||
"The surrounding air feels thick and humid.")
|
||||
|
||||
B.emote_lists[DM_DIGEST] = list(
|
||||
"The slimy puddle stings faintly. It seems the plant has no need to quickly break down victims.",
|
||||
"The humid air settles in your lungs, keeping each breath more labored than the last.",
|
||||
"Fluid drips onto you, burning faintly as your body heat warms it."
|
||||
)
|
||||
|
||||
B.emote_lists[DM_DRAIN] = list(
|
||||
"Each bead of slick fluid running down your body leaves you feeling weaker.",
|
||||
"It's cramped and dark, the air thick and heavy. Your limbs feel like lead.",
|
||||
"Strength drains from your frame. The cramped chamber feels easier to settle into with each passing moment.")
|
||||
|
||||
//Preadtory Things
|
||||
/obj/structure/mob_spawner/beetle_hill
|
||||
name = "beetle tunnel"
|
||||
desc = "An entrance to the nest of metallic ants."
|
||||
icon = 'modular_chomp/icons/obj/tribal_gear.dmi'
|
||||
icon_state = "hole"
|
||||
anchored = TRUE
|
||||
|
||||
spawn_delay = 10 MINUTES
|
||||
|
||||
spawn_types = list(
|
||||
/mob/living/simple_mob/animal/tyr/electronic_beetle = 1,
|
||||
/mob/living/simple_mob/animal/tyr/explode_beetle = 1,
|
||||
/mob/living/simple_mob/animal/tyr/glowing_beetle = 1,
|
||||
)
|
||||
|
||||
simultaneous_spawns = 2
|
||||
|
||||
destructible = 1
|
||||
health = 50
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/electronic_beetle
|
||||
name = "charged beetle"
|
||||
desc = "A large insect."
|
||||
icon_state = "lighting_beetle"
|
||||
icon_dead = "beetle_dead"
|
||||
maxHealth = 18
|
||||
health = 18
|
||||
pass_flags = PASSTABLE //flying bug
|
||||
movement_cooldown = 1
|
||||
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/meat/grubmeat
|
||||
meat_amount = 2
|
||||
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/chitin = 1\
|
||||
)
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
|
||||
|
||||
see_in_dark = 3
|
||||
melee_damage_lower = 12 //Kills you 8ish if unarmored, or 10ish if wearing the tribal armor
|
||||
melee_damage_upper = 12 //Rng numbers are wierd
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/electronic_beetle/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
A.emp_act(4) //The weakest strength of EMP
|
||||
playsound(src, 'sound/weapons/Egloves.ogg', 75, 1)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, L)
|
||||
s.start()
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/explode_beetle
|
||||
name = "fiery beetle"
|
||||
desc = "A large insect."
|
||||
icon_state = "fire_beetle"
|
||||
icon_dead = "beetle_dead"
|
||||
maxHealth = 18
|
||||
health = 18
|
||||
pass_flags = PASSTABLE //flying bug
|
||||
movement_cooldown = 1
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
|
||||
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/carpmeat
|
||||
meat_amount = 2
|
||||
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/chitin = 1\
|
||||
)
|
||||
|
||||
see_in_dark = 3
|
||||
melee_damage_lower = 6 //Kills you 8ish if unarmored, or 10ish if wearing the tribal armor
|
||||
melee_damage_upper = 6 //Rng numbers are wierd
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/explode_beetle/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
L.adjust_fire_stacks(3)
|
||||
L.ignite_mob()
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/glowing_beetle
|
||||
name = "glowing beetle"
|
||||
desc = "A large insect."
|
||||
icon_state = "green_beetle"
|
||||
icon_dead = "beetle_dead"
|
||||
maxHealth = 18
|
||||
health = 18
|
||||
pass_flags = PASSTABLE
|
||||
movement_cooldown = 1
|
||||
|
||||
needs_reload = TRUE
|
||||
reload_max = 1
|
||||
reload_time = 2 SECONDS
|
||||
|
||||
ai_holder_type = /datum/ai_holder/hostile/ranged/robust
|
||||
projectiletype = /obj/item/projectile/arc/spore
|
||||
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/deathclawmeat
|
||||
meat_amount = 2
|
||||
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/chitin = 1\
|
||||
)
|
||||
|
||||
see_in_dark = 3
|
||||
melee_damage_lower = 16
|
||||
melee_damage_upper = 16
|
||||
|
||||
ranged_cooldown = 30
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
anchored = 1
|
||||
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100)
|
||||
projectiletype = /obj/item/projectile/energy/eclipse_boss/tyrjavelin
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse_boss/tyrjavelin
|
||||
loot_list = list(/obj/item/tool/wirecutters/hybrid/alien = 10,
|
||||
/obj/item/tool/wrench/hybrid/alien = 10,
|
||||
/obj/item/tool/crowbar/hybrid/alien = 10,
|
||||
@@ -40,11 +41,9 @@
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, 2), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(2)
|
||||
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
|
||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 3, 7), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(3)
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse_boss/tyrjavelin
|
||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, 1, 0.5 SECONDS), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
|
||||
@@ -51,8 +51,8 @@
|
||||
icon_state = "poison_boss"
|
||||
icon_living = "poison_boss"
|
||||
wreckage = /obj/item/prop/tyrlore/acid_boss
|
||||
specialattackprojectile = /obj/item/projectile/energy/neurotoxin/toxic/tyr_flora
|
||||
projectiletype = /obj/item/projectile/energy/neurotoxin/toxic/tyr_flora
|
||||
specialattackprojectile = /obj/item/projectile/energy/blob/tyrflora
|
||||
projectiletype = /obj/item/projectile/energy/blob/tyrflora
|
||||
var/regeneration_strength = -20
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/acid_boss/load_default_bellies()
|
||||
|
||||
@@ -13,17 +13,6 @@
|
||||
//So if you miss, you're stuck with a middling melee weapon for a bit.
|
||||
//Whilst the shot gun has more shots, but you need to get up closih.
|
||||
//Chain gets AP whilst shotgun gets knockback
|
||||
/obj/item/projectile/energy/spikeenergy_ball
|
||||
name = "energy ball"
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "spikeenergyball"
|
||||
damage = 45 //after remebering throwing things into walls deals bonus damage. Will that wall thwacking out damage this 5 bonus...yes. But shotgun likly wins most DPS tests anyway
|
||||
armor_penetration = 60 //damage and AP matching makes brain happy for some reason. No real logic here, just brain saying yes, this is right
|
||||
range = 8
|
||||
speed = 5
|
||||
penetrating = 2
|
||||
check_armour = "melee"
|
||||
damage_type = BRUTE
|
||||
|
||||
/obj/item/projectile/energy/tyr_rifle
|
||||
name = "laser blast"
|
||||
@@ -149,14 +138,13 @@
|
||||
armor_penetration = 50
|
||||
penetrating = 5
|
||||
|
||||
/obj/item/projectile/arc/fragmentation/tyr_mortar
|
||||
icon_state = "mortar"
|
||||
fragment_amount = 10
|
||||
spread_range = 3
|
||||
fragment_types = list(
|
||||
/obj/item/projectile/bullet/astral_blade/artillery, /obj/item/projectile/bullet/astral_blade/artillery, \
|
||||
/obj/item/projectile/bullet/astral_blade/artillery, /obj/item/projectile/bullet/astral_blade/artillery/secondary
|
||||
)
|
||||
/obj/item/projectile/energy/blob/tyrflora
|
||||
damage = 20 //10 with intended armor
|
||||
speed = 12
|
||||
armor_penetration = 50
|
||||
check_armour = "bio"
|
||||
damage_type = BURN
|
||||
my_chems = list(REAGENT_ID_NEUROTOXIC_PROTEIN)
|
||||
|
||||
/obj/item/projectile/energy/agate_lighting
|
||||
damage = 15
|
||||
@@ -169,4 +157,4 @@
|
||||
|
||||
/obj/item/projectile/energy/agate_lighting/fast
|
||||
damage = 20
|
||||
speed = 3
|
||||
speed = 4
|
||||
|
||||
Reference in New Issue
Block a user