mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-22 12:47:16 +01:00
Tyr Update (#12045)
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
/obj/structure/blob/core/living_agate
|
||||
desired_blob_type = /datum/blob_type/living_agate
|
||||
|
||||
/datum/blob_type/living_agate
|
||||
name = "agate hive"
|
||||
desc = "A tide of precursor technolgy gone wrong, energerized agate taking on an aggressive desire to spread and consume."
|
||||
effect_desc = "Spreads much faster than average"
|
||||
ai_desc = "genocidal"
|
||||
difficulty = BLOB_DIFFICULTY_SUPERHARD // Fastest spread of them all and has snowballing capabilities.
|
||||
color = "#FF3300"
|
||||
complementary_color = "#FF5125"
|
||||
spread_modifier = 1.0
|
||||
slow_spread_with_size = FALSE
|
||||
ai_aggressiveness = 95
|
||||
can_build_resources = TRUE
|
||||
attack_message = "The tide tries to swallow you"
|
||||
attack_message_living = ", and you feel your skin dissolve"
|
||||
attack_message_synth = ", and your external plating dissolves"
|
||||
faction = FACTION_TYR
|
||||
|
||||
damage_type = SEARING
|
||||
armor_check = "melee"
|
||||
armor_pen = 30
|
||||
damage_lower = 35
|
||||
damage_upper = 35
|
||||
|
||||
brute_multiplier = 0.5
|
||||
burn_multiplier = 0.5
|
||||
|
||||
can_build_factories = TRUE
|
||||
can_build_resources = TRUE
|
||||
can_build_nodes = TRUE
|
||||
|
||||
ranged_spores = TRUE
|
||||
spore_range = 7
|
||||
spore_projectile = /obj/item/projectile/energy/eclipse/tyrjavelin
|
||||
|
||||
spore_type = /mob/living/simple_mob/blob/spore/infesting
|
||||
|
||||
/datum/blob_type/living_agate/on_received_damage(var/obj/structure/blob/B, damage, damage_type, mob/living/attacker)
|
||||
if(damage > 0 && attacker && get_dist(B, attacker) <= 1)
|
||||
B.visible_message(span_danger("The [name] retaliates, lashing out at \the [attacker]!"))
|
||||
B.blob_attack_animation(attacker, B.overmind)
|
||||
attacker.blob_act(B)
|
||||
return ..()
|
||||
|
||||
/datum/blob_type/living_agate/on_attack(obj/structure/blob/B, mob/living/victim, def_zone)
|
||||
victim.electrocute_act(10, src, 1, def_zone)
|
||||
victim.stun_effect_act(0, 40, BP_TORSO, src, electric = TRUE)
|
||||
|
||||
/datum/blob_type/living_agate/on_spore_death(mob/living/simple_mob/blob/spore/S)
|
||||
if(S.is_infesting)
|
||||
return // Don't make blobs if they were on someone's head.
|
||||
var/turf/T = get_turf(S)
|
||||
var/obj/structure/blob/B = locate(/obj/structure/blob) in T
|
||||
if(B) // Is there already a blob here? If so, just heal it.
|
||||
B.adjust_integrity(10)
|
||||
else
|
||||
B = new /obj/structure/blob/normal(T, S.overmind) // Otherwise spread it.
|
||||
B.visible_message(span_danger("\A [B] forms on \the [T] as \the [S] bursts!"))
|
||||
@@ -97,9 +97,11 @@
|
||||
special_attack_max_range = 2
|
||||
special_attack_cooldown = 10 SECONDS
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/copper/do_special_attack(atom/A)
|
||||
empulse(src.loc, 1, 2, 3, 4)
|
||||
playsound(src, 'sound/weapons/Egloves.ogg', 75, 1)
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/copper/bullet_act(obj/item/projectile/P)
|
||||
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
||||
visible_message(span_cult("[P] seems ineffective!."))
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/agate //rushes at you and explodes
|
||||
name = "agate metal ant"
|
||||
|
||||
@@ -22,11 +22,10 @@
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/do_special_attack(atom/A)
|
||||
bullet_heck(A, 3, 3)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/bullet_act(obj/item/projectile/P) //removal of E net cheese
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hitby(obj/item/projectile/P) //removal of E net cheese
|
||||
if(P == /obj/item/projectile/beam/energy_net)
|
||||
return
|
||||
else
|
||||
..()
|
||||
..()
|
||||
|
||||
/datum/ai_holder/simple_mob/intentional/three_phases
|
||||
use_astar = TRUE
|
||||
@@ -49,3 +48,9 @@
|
||||
|
||||
else
|
||||
holder.a_intent = I_HURT
|
||||
|
||||
|
||||
/datum/ai_holder/simple_mob/intentional/three_phases/no_movement
|
||||
|
||||
/datum/ai_holder/simple_mob/intentional/three_phases/no_movement/move_once()
|
||||
return
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr
|
||||
name = "ai control center"
|
||||
desc = "A large, very important looking ai. It sparks as it moves to attacks."
|
||||
icon_state = "powertower"
|
||||
icon_living = "powertower"
|
||||
faction = FACTION_TYR
|
||||
movement_cooldown = 10
|
||||
size_multiplier = 2
|
||||
maxHealth = 500
|
||||
health = 500
|
||||
wreckage = /obj/item/prop/tyrlore/gatekeeper
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases/no_movement
|
||||
anchored = 1
|
||||
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100)
|
||||
|
||||
loot_list = list(/obj/item/tool/wirecutters/hybrid/alien = 10,
|
||||
/obj/item/tool/wrench/hybrid/alien = 10,
|
||||
/obj/item/tool/crowbar/hybrid/alien = 10,
|
||||
/obj/item/tool/screwdriver/hybrid/alien = 10,
|
||||
/obj/item/pickaxe/diamonddrill/alien = 10,
|
||||
/obj/item/melee/energy/sword/dualsaber = 10,
|
||||
/obj/item/shield_projector/rectangle/automatic/tyrbarrier = 0.1,
|
||||
/obj/item/stock_parts/scanning_module/omni = 80,
|
||||
/obj/item/stock_parts/micro_laser/omni = 80,
|
||||
/obj/item/stock_parts/capacitor/omni = 80,
|
||||
/obj/item/stock_parts/manipulator/omni = 80,
|
||||
/obj/item/stock_parts/matter_bin/omni = 80,
|
||||
/obj/item/stock_parts/scanning_module/hyper = 80,
|
||||
/obj/item/stock_parts/micro_laser/hyper = 80,
|
||||
/obj/item/stock_parts/capacitor/hyper = 80,
|
||||
/obj/item/stock_parts/manipulator/hyper = 80,
|
||||
/obj/item/stock_parts/matter_bin/hyper = 80,
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr/do_special_attack(atom/A)
|
||||
. = TRUE // So we don't fire a bolt as well.
|
||||
switch(attackcycle)
|
||||
if(1)
|
||||
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, 15), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(3)
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse/tyrjavelin
|
||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, 1, 0.5 SECONDS), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/nanoweavetower
|
||||
name = "ai control center"
|
||||
desc = "A large, very important looking ai."
|
||||
icon_state = "bluetower"
|
||||
icon_living = "bluetower"
|
||||
faction = FACTION_HIVEBOT
|
||||
movement_cooldown = 10
|
||||
size_multiplier = 2
|
||||
maxHealth = 500
|
||||
health = 500
|
||||
wreckage = /obj/structure/loot_pile/surface/alien/engineering
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases/no_movement
|
||||
anchored = 1
|
||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 50, bio = 100, rad = 100)
|
||||
loot_list = list(/obj/item/prop/alien/junk = 100,
|
||||
/obj/item/multitool/alien = 30,
|
||||
/obj/item/stack/cable_coil/alien = 30,
|
||||
/obj/item/tool/crowbar/alien = 30,
|
||||
/obj/item/tool/screwdriver/alien = 30,
|
||||
/obj/item/weldingtool/alien = 30,
|
||||
/obj/item/tool/wirecutters/alien = 30,
|
||||
/obj/item/tool/wrench/alien = 30,
|
||||
/obj/item/cell/device/weapon/recharge/alien = 40,
|
||||
/obj/item/prop/nanoweave/terraformers = 50,
|
||||
/obj/item/prop/nanoweave/cyan = 50,
|
||||
/obj/item/prop/nanoweave/lime = 50,
|
||||
/obj/item/perfect_tele/alien = 100
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/nanoweavetower/do_special_attack(atom/A)
|
||||
. = TRUE // So we don't fire a bolt as well.
|
||||
switch(attackcycle)
|
||||
if(1)
|
||||
specialattackprojectile = /obj/item/projectile/beam/midlaser/shortrange
|
||||
rng_cycle = rand(1,4)
|
||||
direct_say("PROTOCOL: CROSS X.")
|
||||
addtimer(CALLBACK(src, PROC_REF(star_burst), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(2)
|
||||
specialattackprojectile = /obj/item/projectile/energy/wallbreaker/boss
|
||||
rng_cycle = rand(1,4)
|
||||
direct_say("PROTOCOL: PRECISION. SWEEP.")
|
||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle, 25), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(3)
|
||||
specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
|
||||
rng_cycle = rand(1,4)
|
||||
direct_say("PROTOCOL: DISCHARGE.")
|
||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, rng_cycle, 15), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(4)
|
||||
specialattackprojectile = /obj/item/projectile/arc/explosive_rocket/big
|
||||
rng_cycle = rand(1,4)
|
||||
Beam(A, icon_state = "r_beam", time = 1 SECOND, maxdistance = INFINITY)
|
||||
direct_say("PROTOCOL: MISSILE.")
|
||||
addtimer(CALLBACK(src, PROC_REF(singleproj), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
icon_state = "drop_marker"
|
||||
mouse_opacity = 0 //no touching the attack
|
||||
spread_range = 3
|
||||
var/fuse_time = 2 SECONDS
|
||||
var/fuse_time = 3.5 SECONDS
|
||||
|
||||
/obj/item/grenade/shooter/auto_explode/Initialize(mapload)
|
||||
..()
|
||||
|
||||
@@ -21,17 +21,15 @@
|
||||
unacidable = TRUE
|
||||
special_attack_min_range = 0
|
||||
special_attack_max_range = 7
|
||||
wreckage = /obj/item/prop/tyrlore/drones
|
||||
wreckage = /obj/item/prop/tyrlore/gatekeeper
|
||||
|
||||
loot_list = list(/obj/item/gun/energy/curse_tyrshotgun = 30,
|
||||
/obj/item/gun/energy/energyballchain = 30,
|
||||
loot_list = list(/obj/item/gun/energy/tyr_rifle = 30,
|
||||
/obj/item/tool/wirecutters/hybrid/alien = 30,
|
||||
/obj/item/tool/wrench/hybrid/alien = 30,
|
||||
/obj/item/tool/crowbar/hybrid/alien = 30,
|
||||
/obj/item/tool/screwdriver/hybrid/alien = 30,
|
||||
/obj/item/pickaxe/diamonddrill/alien = 30,
|
||||
/obj/item/melee/energy/sword/dualsaber = 30,
|
||||
/obj/item/shield_projector/rectangle/automatic/tyrbarrier = 1,
|
||||
/obj/item/shield_projector/rectangle/automatic/tyrbarrier = 0.1,
|
||||
/obj/item/stock_parts/scanning_module/omni = 80,
|
||||
/obj/item/stock_parts/micro_laser/omni = 80,
|
||||
/obj/item/stock_parts/capacitor/omni = 80,
|
||||
@@ -51,7 +49,7 @@
|
||||
desc = "A strange furball fused with plant life."
|
||||
icon_state = "poison_boss"
|
||||
icon_living = "poison_boss"
|
||||
wreckage = /obj/item/prop/tyrlore/basicflora
|
||||
wreckage = /obj/item/prop/tyrlore/acid_boss
|
||||
projectiletype = /obj/item/projectile/bullet/astral_blade
|
||||
specialattackprojectile = /obj/item/projectile/energy/neurotoxin/toxic/tyr_flora
|
||||
var/regeneration_strength = -30
|
||||
@@ -100,7 +98,7 @@
|
||||
icon_state = "sonic_boss"
|
||||
icon_living = "sonic_boss"
|
||||
projectiletype = /obj/item/projectile/knockback/slow
|
||||
wreckage = /obj/item/prop/tyrlore/basicsonic
|
||||
wreckage = /obj/item/prop/tyrlore/sonic_boss
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/sonic_boss/load_default_bellies()
|
||||
. = ..()
|
||||
@@ -141,7 +139,7 @@
|
||||
icon_state = "UPshield_boss"
|
||||
icon_living = "UPshield_boss"
|
||||
projectiletype = /obj/item/projectile/energy/eclipse/tyrjavelin
|
||||
wreckage = /obj/item/prop/tyrlore/basicshield
|
||||
wreckage = /obj/item/prop/tyrlore/shield_boss
|
||||
var/fullshield = 200
|
||||
var/shieldrage = 200
|
||||
|
||||
@@ -198,6 +196,7 @@
|
||||
icon_state = "crystalized"
|
||||
icon_living = "crystalized"
|
||||
specialattackprojectile = /obj/item/projectile/arc/fragmentation/tyr_mortar
|
||||
wreckage = /obj/item/prop/tyrlore/crystal_boss
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/crystal_boss/do_special_attack(atom/A)
|
||||
rng_cycle = rand(1,3)
|
||||
@@ -216,6 +215,7 @@
|
||||
name = "experiment 25"
|
||||
icon_state = "naga_boss"
|
||||
icon_living = "naga_boss"
|
||||
wreckage = /obj/item/prop/tyrlore/gravity_boss
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/naga_boss/do_special_attack(atom/A)
|
||||
rng_cycle = rand(1,3)
|
||||
@@ -239,7 +239,7 @@
|
||||
icon_living = "cyan"
|
||||
size_multiplier = 3
|
||||
projectiletype = /obj/item/projectile/bullet/tyr_bladeburst
|
||||
wreckage = /obj/item/prop/tyrlore/ants
|
||||
wreckage = /obj/item/prop/tyrlore/shotgun
|
||||
specialattackprojectile = /obj/item/projectile/bullet/astral_blade
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/defense_ai/do_special_attack(atom/A)
|
||||
@@ -265,7 +265,7 @@
|
||||
icon_state = "yellow"
|
||||
icon_living = "yellow"
|
||||
size_multiplier = 3
|
||||
wreckage = /obj/item/prop/tyrlore/basicpower
|
||||
wreckage = /obj/item/prop/tyrlore/engi_boss
|
||||
specialattackprojectile = /obj/item/projectile/energy/agate_lighting
|
||||
projectiletype = /obj/item/projectile/energy/agate_lighting
|
||||
|
||||
@@ -293,7 +293,7 @@
|
||||
icon_living = "bright_green"
|
||||
icon = 'modular_chomp/icons/mob/hivebot.dmi'
|
||||
size_multiplier = 3
|
||||
wreckage = /obj/item/prop/tyrlore/drones
|
||||
wreckage = /obj/item/prop/tyrlore/swarm_boss
|
||||
special_attack_cooldown = 8 SECONDS
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
@@ -323,8 +323,66 @@
|
||||
size_multiplier = 3
|
||||
specialattackprojectile = /obj/item/projectile/arc/blue_energy/precusor
|
||||
projectiletype = /obj/item/projectile/arc/blue_energy/precusor
|
||||
wreckage = /obj/item/prop/tyrlore/meteor_boss
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/meteor_ai/do_special_attack(atom/A, var/strike_downx, var/strikedowny)
|
||||
strike_downx = rand(-7,7)
|
||||
strikedowny = rand(-7,7)
|
||||
bullet_heck(A, strike_downx, strikedowny)
|
||||
wreckage = bullet_heck(A, strike_downx, strikedowny)
|
||||
|
||||
//the add tutortial
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/medical_bot
|
||||
name = "medical robot"
|
||||
desc = "A massive hivebot with medical equipment."
|
||||
health = 600
|
||||
maxHealth = 600
|
||||
icon_state = "white"
|
||||
icon_living = "wite"
|
||||
icon = 'icons/mob/hivebot.dmi'
|
||||
size_multiplier = 3
|
||||
wreckage = /obj/item/prop/tyrlore/medical_boss
|
||||
special_attack_cooldown = 8 SECONDS
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
attack_armor_pen = 50
|
||||
movement_cooldown = 4
|
||||
|
||||
special_attack_cooldown = 10 SECONDS
|
||||
|
||||
var/datum/disease/base_disease = /datum/disease/advance/agate_rot
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/medical_bot/apply_melee_effects(atom/A)
|
||||
if(ishuman(A) && prob(25))
|
||||
var/mob/living/carbon/human/H = A
|
||||
H.ContractDisease(base_disease)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/swarm_ai/do_special_attack(atom/A)
|
||||
for(var/i =1 to 3)
|
||||
new /mob/living/simple_mob/mechanical/hivebot/tyr/heart(src.loc)
|
||||
|
||||
/mob/living/simple_mob/mechanical/hivebot/tyr/heart
|
||||
name = "barrier unit"
|
||||
icon = 'modular_chomp/icons/mob/tyr.dmi'
|
||||
icon_state = "guardian"
|
||||
icon_living = "guardian"
|
||||
maxHealth = 2.5 LASERS_TO_KILL // 100 hp
|
||||
health = 2.5 LASERS_TO_KILL
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
attack_armor_pen = 80
|
||||
|
||||
/mob/living/simple_mob/mechanical/hivebot/tyr/heart/handle_special()
|
||||
if(stat != DEAD)
|
||||
untouchable_aura()
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/mechanical/hivebot/tyr/heart/proc/untouchable_aura()
|
||||
for(var/mob/living/L in orange(src, 3))
|
||||
if(L.stat == DEAD || !IIsAlly(L))
|
||||
continue
|
||||
L.add_modifier(/datum/modifier/aura/heart_barrier, null, src)
|
||||
|
||||
/datum/modifier/aura/heart_barrier
|
||||
mob_overlay_state = "deflect"
|
||||
incoming_damage_percent = 0
|
||||
aura_max_distance = 3
|
||||
|
||||
+1
-1
@@ -629,7 +629,7 @@
|
||||
special_attack_min_range = 1
|
||||
special_attack_max_range = 7
|
||||
|
||||
projectiletype = /obj/item/projectile/energy/wp_shotgun //using the weapon found upon tyr
|
||||
projectiletype = /obj/item/projectile/energy/tyr_rifle //using the weapon found upon tyr
|
||||
specialattackprojectile = /obj/item/projectile/arc/microsingulo
|
||||
|
||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||
|
||||
+3
-113
@@ -22,7 +22,7 @@
|
||||
icon = 'modular_chomp/icons/mob/hivebot.dmi'
|
||||
pass_flags = PASSTABLE
|
||||
hovering = TRUE
|
||||
movement_cooldown = -3
|
||||
movement_cooldown = 1
|
||||
faction = FACTION_TYR
|
||||
melee_damage_lower = 12
|
||||
melee_damage_upper = 12
|
||||
@@ -30,8 +30,8 @@
|
||||
icon_living = "orange"
|
||||
|
||||
/mob/living/simple_mob/mechanical/hivebot/tyr/swarm
|
||||
maxHealth = 1
|
||||
health = 1
|
||||
maxHealth = 3
|
||||
health = 3
|
||||
icon_state = "bright_green"
|
||||
icon_living = "bright_green"
|
||||
|
||||
@@ -41,122 +41,12 @@
|
||||
ai_holder_type = /datum/ai_holder/hostile/ranged/robust
|
||||
projectiletype = /obj/item/projectile/energy/agate_lighting/fast
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr
|
||||
name = "ai control center"
|
||||
desc = "A large, very important looking ai. It sparks as it moves to attacks."
|
||||
icon_state = "powertower"
|
||||
icon_living = "powertower"
|
||||
faction = FACTION_TYR
|
||||
movement_cooldown = 10
|
||||
size_multiplier = 2
|
||||
maxHealth = 500
|
||||
health = 500
|
||||
wreckage = /obj/item/prop/tyrlore/reddisc
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases
|
||||
anchored = 1
|
||||
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100)
|
||||
|
||||
loot_list = list(/obj/item/tool/wirecutters/hybrid/alien = 10,
|
||||
/obj/item/tool/wrench/hybrid/alien = 10,
|
||||
/obj/item/tool/crowbar/hybrid/alien = 10,
|
||||
/obj/item/tool/screwdriver/hybrid/alien = 10,
|
||||
/obj/item/pickaxe/diamonddrill/alien = 10,
|
||||
/obj/item/melee/energy/sword/dualsaber = 10,
|
||||
/obj/item/shield_projector/rectangle/automatic/tyrbarrier = 1,
|
||||
/obj/item/stock_parts/scanning_module/omni = 80,
|
||||
/obj/item/stock_parts/micro_laser/omni = 80,
|
||||
/obj/item/stock_parts/capacitor/omni = 80,
|
||||
/obj/item/stock_parts/manipulator/omni = 80,
|
||||
/obj/item/stock_parts/matter_bin/omni = 80,
|
||||
/obj/item/stock_parts/scanning_module/hyper = 80,
|
||||
/obj/item/stock_parts/micro_laser/hyper = 80,
|
||||
/obj/item/stock_parts/capacitor/hyper = 80,
|
||||
/obj/item/stock_parts/manipulator/hyper = 80,
|
||||
/obj/item/stock_parts/matter_bin/hyper = 80,
|
||||
)
|
||||
|
||||
|
||||
/datum/ai_holder/simple_mob/intentional/three_phases/nomove/walk_to_destination()
|
||||
return
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr/do_special_attack(atom/A)
|
||||
. = TRUE // So we don't fire a bolt as well.
|
||||
if(attackcycle == 1)
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, 2), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 2)
|
||||
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
|
||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 3, 15), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 3)
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse/tyrjavelin
|
||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, 1, 0.5 SECONDS), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
/obj/item/projectile/energy/spikeenergy_ball/boss
|
||||
damage = 40
|
||||
armor_penetration = 60
|
||||
speed = 10
|
||||
crawl_destroy = TRUE
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/nanoweavetower
|
||||
name = "ai control center"
|
||||
desc = "A large, very important looking ai."
|
||||
icon_state = "bluetower"
|
||||
icon_living = "bluetower"
|
||||
faction = FACTION_HIVEBOT
|
||||
movement_cooldown = 10
|
||||
size_multiplier = 2
|
||||
maxHealth = 500
|
||||
health = 500
|
||||
wreckage = /obj/structure/loot_pile/surface/alien/engineering
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases/nomove
|
||||
anchored = 1
|
||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 50, bio = 100, rad = 100)
|
||||
loot_list = list(/obj/item/prop/alien/junk = 100,
|
||||
/obj/item/multitool/alien = 30,
|
||||
/obj/item/stack/cable_coil/alien = 30,
|
||||
/obj/item/tool/crowbar/alien = 30,
|
||||
/obj/item/tool/screwdriver/alien = 30,
|
||||
/obj/item/weldingtool/alien = 30,
|
||||
/obj/item/tool/wirecutters/alien = 30,
|
||||
/obj/item/tool/wrench/alien = 30,
|
||||
/obj/item/cell/device/weapon/recharge/alien = 40,
|
||||
/obj/item/prop/nanoweave/terraformers = 50,
|
||||
/obj/item/prop/nanoweave/cyan = 50,
|
||||
/obj/item/prop/nanoweave/lime = 50,
|
||||
/obj/item/perfect_tele/alien = 100
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/nanoweavetower/do_special_attack(atom/A)
|
||||
. = TRUE // So we don't fire a bolt as well.
|
||||
var/rng_cycle
|
||||
if(attackcycle == 1)
|
||||
specialattackprojectile = /obj/item/projectile/beam/midlaser/shortrange
|
||||
rng_cycle = rand(1,4)
|
||||
say("PROTOCOL: CROSS X.")
|
||||
addtimer(CALLBACK(src, PROC_REF(star_burst), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 2)
|
||||
specialattackprojectile = /obj/item/projectile/energy/wallbreaker/boss
|
||||
rng_cycle = rand(1,4)
|
||||
say("PROTOCOL: PRECISION. SWEEP.")
|
||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle, 25), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 3)
|
||||
specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
|
||||
rng_cycle = rand(1,4)
|
||||
say("PROTOCOL: DISCHARGE.")
|
||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, rng_cycle, 15), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 4)
|
||||
specialattackprojectile = /obj/item/projectile/arc/explosive_rocket/big
|
||||
rng_cycle = rand(1,4)
|
||||
Beam(A, icon_state = "r_beam", time = 1 SECOND, maxdistance = INFINITY)
|
||||
say("PROTOCOL: MISSILE.")
|
||||
addtimer(CALLBACK(src, PROC_REF(singleproj), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
|
||||
/mob/living/simple_mob/mechanical/hivebot/eclipse
|
||||
name = "repurposed hivebot"
|
||||
|
||||
@@ -80,19 +80,8 @@
|
||||
icon_living = "rex"
|
||||
|
||||
/mob/living/simple_mob/vore/fossiltank/do_special_attack(atom/A)
|
||||
if(health < maxHealth*0.25)
|
||||
visible_message(span_bolddanger(span_orange("The fossil tank begins self repairs!.")))
|
||||
addtimer(CALLBACK(src, PROC_REF(cycle_heal), 8), 1 SECOND, TIMER_DELETE_ME)
|
||||
else
|
||||
Beam(A, icon_state = "sat_beam", time = 3.5 SECONDS, maxdistance = INFINITY)
|
||||
addtimer(CALLBACK(src, PROC_REF(sniper_shot), A), 4 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/vore/fossiltank/proc/cycle_heal(var/healamount)
|
||||
adjustBruteLoss(-100)
|
||||
adjustFireLoss(-100)
|
||||
if(healamount > 0)
|
||||
healamount -= 1
|
||||
addtimer(CALLBACK(src, PROC_REF(cycle_heal), 8), 1 SECOND, TIMER_DELETE_ME)
|
||||
Beam(A, icon_state = "sat_beam", time = 3.5 SECONDS, maxdistance = INFINITY)
|
||||
addtimer(CALLBACK(src, PROC_REF(sniper_shot), A), 4 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/vore/fossiltank/proc/sniper_shot(atom/target)
|
||||
if(!target)
|
||||
@@ -126,7 +115,7 @@
|
||||
icon = 'modular_chomp/icons/mob/tyr.dmi'
|
||||
icon_state = "jellyfish"
|
||||
icon_living = "jellyfish"
|
||||
icon_dead = "jelltdish_dead"
|
||||
icon_dead = "jellyfish_dead"
|
||||
movement_cooldown = 1
|
||||
damage_fatigue_mult = 0 //It's a mutant jellyfish boss mob.
|
||||
melee_attack_delay = 1.5 SECOND
|
||||
|
||||
@@ -25,28 +25,12 @@
|
||||
check_armour = "melee"
|
||||
damage_type = BRUTE
|
||||
|
||||
/obj/item/projectile/energy/wp_shotgun
|
||||
name = "laser blast"
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "shotgun_blast"
|
||||
damage = 25
|
||||
range = 5
|
||||
check_armour = "bullet"
|
||||
damage_type = BRUTE
|
||||
|
||||
/obj/item/projectile/energy/wp_shotgun/on_hit(var/atom/movable/target, var/blocked = 0)
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
var/throwdir = get_dir(firer,L)
|
||||
L.throw_at(get_edge_target_turf(L, throwdir), 3, 10)
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/energy/wp_blaster
|
||||
/obj/item/projectile/energy/tyr_rifle
|
||||
name = "laser blast"
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "blaster_blast"
|
||||
damage = 35
|
||||
range = 5
|
||||
range = 6
|
||||
penetrating = 2
|
||||
check_armour = "laser"
|
||||
|
||||
@@ -58,7 +42,7 @@
|
||||
penetrating = 2
|
||||
damage_type = BURN
|
||||
check_armour = "laser"
|
||||
range = 5
|
||||
range = 4
|
||||
eyeblur = 0 //no no no no no
|
||||
hitscan = 1
|
||||
hud_state = "laser"
|
||||
@@ -69,36 +53,12 @@
|
||||
range = 0
|
||||
embed_chance = 0
|
||||
spread_submunition_damage = FALSE
|
||||
submunition_spread_max = 150
|
||||
submunition_spread_min = 60
|
||||
submunitions = list(/obj/item/projectile/beam/precursor_tyr = 5)
|
||||
submunition_spread_max = 180
|
||||
submunition_spread_min = 80
|
||||
submunitions = list(/obj/item/projectile/beam/precursor_tyr = 7)
|
||||
|
||||
/obj/item/gun/energy/energyballchain
|
||||
name = "tyrian energy club"
|
||||
desc = "A strange alien weapon from tyr."
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "violence"
|
||||
item_state = "violence"
|
||||
wielded_item_state = "placeholder"
|
||||
origin_tech = list(TECH_COMBAT = 6, TECH_POWER = 5, TECH_PRECURSOR = 3)
|
||||
|
||||
charge_cost = 625 //Uses all it's charge in a single shot.
|
||||
battery_lock = 1 //No changing
|
||||
|
||||
accept_cell_type = /obj/item/cell/device
|
||||
cell_type = /obj/item/cell/device/weapon/recharge/alien/tyr
|
||||
projectile_type = /obj/item/projectile/energy/spikeenergy_ball
|
||||
|
||||
force = 45 //functions as a melee weapon too! Ain't great, but still works.
|
||||
|
||||
recoil_mode = 0
|
||||
charge_meter = 1
|
||||
|
||||
move_delay = 0
|
||||
one_handed_penalty = 50
|
||||
|
||||
/obj/item/gun/energy/curse_tyrshotgun
|
||||
name = "tyrian enforcer firearm"
|
||||
/obj/item/gun/energy/tyr_rifle
|
||||
name = "tyrian longarm"
|
||||
desc = "A strange alien weapon from tyr."
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "shotgun"
|
||||
@@ -111,41 +71,21 @@
|
||||
|
||||
accept_cell_type = /obj/item/cell/device
|
||||
cell_type = /obj/item/cell/device/weapon/recharge/alien/tyr
|
||||
projectile_type = /obj/item/projectile/energy/wp_shotgun
|
||||
projectile_type = /obj/item/projectile/energy/tyr_rifle
|
||||
|
||||
force = 35
|
||||
|
||||
recoil_mode = 0
|
||||
charge_meter = 1
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="explosive", projectile_type=/obj/item/projectile/energy/wp_shotgun, charge_cost = 625),
|
||||
list(mode_name="spray", projectile_type=/obj/item/projectile/bullet/tyrshotburst, charge_cost = 625),
|
||||
list(mode_name="single", projectile_type=/obj/item/projectile/energy/tyr_rifle, charge_cost = 250),
|
||||
list(mode_name="area", projectile_type=/obj/item/projectile/bullet/tyrshotburst, charge_cost = 500),
|
||||
)
|
||||
|
||||
move_delay = 0
|
||||
one_handed_penalty = 50
|
||||
|
||||
/obj/item/gun/energy/curse_blaster
|
||||
name = "tyrian infantry firearm"
|
||||
desc = "A strange alien weapon from tyr."
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "solider_blaster"
|
||||
item_state = "solider_blaster"
|
||||
wielded_item_state = "placeholder"
|
||||
origin_tech = list(TECH_COMBAT = 6, TECH_POWER = 5, TECH_PRECURSOR = 3)
|
||||
|
||||
charge_cost = 250
|
||||
battery_lock = 1 //No changing
|
||||
|
||||
accept_cell_type = /obj/item/cell/device
|
||||
cell_type = /obj/item/cell/device/weapon/recharge/alien/tyr
|
||||
projectile_type = /obj/item/projectile/energy/wp_blaster
|
||||
|
||||
recoil_mode = 0
|
||||
charge_meter = 1
|
||||
|
||||
move_delay = 0
|
||||
one_handed_penalty = 50
|
||||
|
||||
/obj/item/cell/device/weapon/recharge/alien/tyr
|
||||
name = "odd cell"
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
@@ -182,7 +122,7 @@
|
||||
icon_state = "astral_sea_blade"
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
damage = 30 //21 with intended armor
|
||||
armor_penetration = 20
|
||||
armor_penetration = 10
|
||||
damage_type = BRUTE
|
||||
check_armour = "melee"
|
||||
embed_chance = 0
|
||||
@@ -191,8 +131,9 @@
|
||||
crawl_destroy = TRUE
|
||||
|
||||
/obj/item/projectile/bullet/astral_blade/short
|
||||
damage = 20
|
||||
speed = 0.3
|
||||
range = 4
|
||||
range = 2
|
||||
|
||||
/obj/item/projectile/bullet/tyr_bladeburst
|
||||
use_submunitions = 1
|
||||
|
||||
+11
-10
@@ -3,14 +3,15 @@
|
||||
description = "A scientist or explorer will need to obtain data discs from Tyr!"
|
||||
required_points = 3
|
||||
required_atoms = list(
|
||||
/obj/item/prop/tyrlore/reddisc = 1,
|
||||
/obj/item/prop/tyrlore/purpledisc = 1,
|
||||
/obj/item/prop/tyrlore/greendisc = 1,
|
||||
/obj/item/prop/tyrlore/basicflora = 1,
|
||||
/obj/item/prop/tyrlore/basicshield = 1,
|
||||
/obj/item/prop/tyrlore/advanceshield = 1,
|
||||
/obj/item/prop/tyrlore/basicsonic = 1,
|
||||
/obj/item/prop/tyrlore/basicpower = 1,
|
||||
/obj/item/prop/tyrlore/ants = 1,
|
||||
/obj/item/prop/tyrlore/drones = 1,
|
||||
/obj/item/prop/tyrlore/acid_boss = 1,
|
||||
/obj/item/prop/tyrlore/sonic_boss = 1,
|
||||
/obj/item/prop/tyrlore/shield_boss = 1,
|
||||
/obj/item/prop/tyrlore/crystal_boss = 1,
|
||||
/obj/item/prop/tyrlore/gravity_boss = 1,
|
||||
/obj/item/prop/tyrlore/gatekeeper = 1,
|
||||
/obj/item/prop/tyrlore/shotgun = 1,
|
||||
/obj/item/prop/tyrlore/engi_boss = 1,
|
||||
/obj/item/prop/tyrlore/meteor_boss = 1,
|
||||
/obj/item/prop/tyrlore/swarm_boss = 1,
|
||||
/obj/item/prop/tyrlore/medical_boss = 1.
|
||||
)
|
||||
|
||||
@@ -1,31 +1,9 @@
|
||||
/datum/design_techweb/tyrenergyballchain
|
||||
name = "Tyrian Melee Weapon"
|
||||
id = "tyr_meleegun"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_BRONZE = 12000,MAT_DIAMOND = 4000,MAT_URANIUM = 3000,MAT_COPPER = 3000,MAT_GOLD = 3000,MAT_METALHYDROGEN = 3000,MAT_QUARTZ = 3000,MAT_EAGATE = 3000)
|
||||
build_path = /obj/item/gun/energy/energyballchain
|
||||
category = list(
|
||||
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
|
||||
|
||||
/datum/design_techweb/tyrenergyshotgun
|
||||
name = "Tyrian Enforcer Firearm"
|
||||
id = "tyr_shotgun"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_BRONZE = 12000,MAT_DIAMOND = 4000,MAT_URANIUM = 3000,MAT_COPPER = 3000,MAT_GOLD = 3000,MAT_METALHYDROGEN = 3000,MAT_QUARTZ = 3000,MAT_EAGATE = 3000)
|
||||
build_path = /obj/item/gun/energy/curse_tyrshotgun
|
||||
category = list(
|
||||
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
|
||||
|
||||
/datum/design_techweb/tyrenergyrifle
|
||||
name = "Tyrian Infantry Firearm"
|
||||
name = "Tyrian Longarm"
|
||||
id = "tyr_rifle"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_BRONZE = 12000,MAT_DIAMOND = 4000,MAT_URANIUM = 3000,MAT_COPPER = 3000,MAT_GOLD = 3000,MAT_METALHYDROGEN = 3000,MAT_QUARTZ = 3000,MAT_EAGATE = 3000)
|
||||
build_path = /obj/item/gun/energy/curse_blaster
|
||||
build_path = /obj/item/gun/energy/tyr_rifle
|
||||
category = list(
|
||||
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
|
||||
)
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
prereq_ids = list(TECHWEB_NODE_MOD_ANOMALY_SUIT)
|
||||
design_ids = list(
|
||||
"tyr_rifle",
|
||||
"tyr_shotgun",
|
||||
"tyr_meleegun",
|
||||
"magnet_belt",
|
||||
"tyr_sabre",
|
||||
"tyr_barrier",
|
||||
|
||||
Reference in New Issue
Block a user