Tyr Update (#10780)
@@ -1,18 +1,3 @@
|
||||
/obj/structure/prop/blackbox/tyr_precursor_a
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/blackbox/tyr_precursor_a)
|
||||
|
||||
/datum/category_item/catalogue/information/blackbox/tyr_precursor_a
|
||||
|
||||
/obj/structure/prop/blackbox/tyr_precursor_b
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/blackbox/tyr_precursor_b)
|
||||
|
||||
/datum/category_item/catalogue/information/blackbox/tyr_precursor_b
|
||||
|
||||
/obj/structure/prop/blackbox/tyr_precursor_c
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/blackbox/tyr_precursor_c)
|
||||
|
||||
/datum/category_item/catalogue/information/blackbox/tyr_precursor_c
|
||||
|
||||
//oooh, shiny
|
||||
/obj/structure/prop/tyr_elevator //This won't function for a while, if ever
|
||||
name = "odd elevator"
|
||||
@@ -300,3 +285,138 @@
|
||||
prob(5);/obj/structure/outcrop/weathered_gate,
|
||||
prob(3);/obj/structure/outcrop/hydrogen,
|
||||
prob(1);/obj/structure/outcrop/lead/tyr)
|
||||
|
||||
/obj/item/prop/tyrlore
|
||||
name = "alien disk"
|
||||
desc = "A disc for storing data."
|
||||
icon = 'modular_chomp/icons/obj/weather_ruins.dmi'
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
/obj/item/prop/tyrlore/reddisc
|
||||
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyr_red)
|
||||
icon_state = "disc_red"
|
||||
|
||||
/obj/item/prop/tyrlore/purpledisc
|
||||
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyr_purple)
|
||||
icon_state = "disc_purple"
|
||||
|
||||
/obj/item/prop/tyrlore/greendisc
|
||||
catalogue_data = list(/datum/category_item/catalogue/anomalous/tyr_green)
|
||||
icon_state = "disc_green"
|
||||
|
||||
/obj/item/prop/tyrlore/baseneon
|
||||
name = "data disc"
|
||||
desc = "A disc for storing data."
|
||||
catalogue_data = list(/datum/category_item/catalogue/technology/base_neon)
|
||||
icon_state = "neon_disc"
|
||||
|
||||
/obj/item/prop/tyrlore/neonsec
|
||||
name = "data disc"
|
||||
desc = "A disc for storing data."
|
||||
catalogue_data = list(/datum/category_item/catalogue/technology/base_neon_forward)
|
||||
icon_state = "sec_disc"
|
||||
|
||||
/obj/item/prop/tyrlore/neonmedi
|
||||
name = "data disc"
|
||||
desc = "A disc for storing data."
|
||||
catalogue_data = list(/datum/category_item/catalogue/technology/base_neon_virus)
|
||||
icon_state = "medi_disc"
|
||||
|
||||
/obj/item/prop/tyrlore/monodisc
|
||||
name = "strange disk"
|
||||
desc = "A disc for storing data, but it appears to have none on it"
|
||||
icon_state = "mono_disc"
|
||||
|
||||
/obj/item/prop/tyrlore/neonengi
|
||||
name = "data disc"
|
||||
desc = "A disc for storing data."
|
||||
catalogue_data = list(/datum/category_item/catalogue/technology/base_neon_anomalous)
|
||||
icon_state = "engi_disc"
|
||||
|
||||
/datum/category_item/catalogue/anomalous/tyr_red
|
||||
name = "Precursor Object - Tyr Data Disc Red"
|
||||
desc = "The following data has been corrupted. \
|
||||
<br><br>\
|
||||
oslra yclce hietg hotfsaun ifev undhdre htiytr veesn.\
|
||||
No huftrer ritrdecisev cevredive. \
|
||||
notencnidoc tihw fof pantel posd lsot wot tuhanosd cslcey..\
|
||||
leif sgisn lbeow tslo gilans reorsr.\
|
||||
ireaneregnot dops wolakrbe.. \
|
||||
rsoescure gaklicn. \
|
||||
cenictomon To lawdorr.\
|
||||
tatepmt treeh hudnedr senevty tow."
|
||||
value = CATALOGUER_REWARD_HARD
|
||||
|
||||
/datum/category_item/catalogue/anomalous/tyr_purple
|
||||
name = "Precursor Object - Tyr Data Disc Purple"
|
||||
desc = "The following data has been corrupted. \
|
||||
<br><br>\
|
||||
tapa'cnsi lgo, 1 ohur rebofe rcoy elpa.\
|
||||
I ma ont yerlal rues wtah yeht tawn ee to ptu ni tihs. \
|
||||
ts'i tjsu gipretena tginsh e'vi yarelad sida.\
|
||||
amirpexnlet irwnig is gongi yirwahe.\
|
||||
varesel crew memebers are filling ill. \
|
||||
But the elevators are holding strong. \
|
||||
And stable power is, well, stable.\
|
||||
I hope for a good dream."
|
||||
value = CATALOGUER_REWARD_HARD
|
||||
|
||||
/datum/category_item/catalogue/anomalous/tyr_green
|
||||
name = "Precursor Object - Tyr Data Disc Green"
|
||||
desc = "Final mortality count before cryo leap.\
|
||||
29,895 illness\
|
||||
113,615 workplace injuries\
|
||||
20,105 off planet\
|
||||
300 to be determined."
|
||||
value = CATALOGUER_REWARD_HARD
|
||||
|
||||
/datum/category_item/catalogue/technology/base_neon
|
||||
name = "Goal Manifest"
|
||||
desc = "After we activation of the seal upon sif our foundation collapsed.\
|
||||
We have migrated most of this systems forces to new hidden sights as a result.\
|
||||
The discovery of three siginals lead us here, along with two other locals.\
|
||||
The discovery of this cool point in an overheated planet proved anomalous,\
|
||||
precursor ruins being swiftly discovered.\
|
||||
However they appear to be diffrent then the ones upon Sif. \
|
||||
No signs of the shadelurkers here, nor in the other two new sights.\
|
||||
We have been given the second most resources of this branch, with potential\
|
||||
for further. Praying for all three leads to give us support."
|
||||
value = CATALOGUER_REWARD_HARD
|
||||
|
||||
/datum/category_item/catalogue/technology/base_neon_forward
|
||||
name = "Going Forward"
|
||||
desc = "Check List Of Things To Do.\
|
||||
1. Get the precursor vanguard for further protection.\
|
||||
2. Set up a false friendly docking bay for further materials.\
|
||||
3. Expanded Operating Base Neon southwards,\
|
||||
4. Recruit the locals potentially.\
|
||||
5. Obtain a Absoulete Zero Mecha. \
|
||||
6. See if a phazon and janus combined could phase deeper below.\
|
||||
7. Construct a Mountain Killer prototype. Patent that name too\
|
||||
8. Get a better source of food."
|
||||
value = CATALOGUER_REWARD_HARD
|
||||
|
||||
/datum/category_item/catalogue/technology/base_neon_virus
|
||||
name = "Note Worthy Ailments"
|
||||
desc = "Offical note taking mode. Not sure out higher ups even read this but here we go\
|
||||
We discovered traces remains of a virus within the precursor ruins, but seems adapated for beings centuries ago.\
|
||||
Although there are some theroies this is a renamant of a dead plague.\
|
||||
Either way, we assume all the precursors of tyr are dead, sealed in a tomb of their own making,\
|
||||
But that doesn't explain the siginal we've been recevving..\
|
||||
Newly activated, and leagues below the earth. \
|
||||
Our scans say the ruins should be able to go that deep, but we've yet to find a way to breach.\
|
||||
So running theory is rogue Ai, or some small pockect of immune folks.."
|
||||
value = CATALOGUER_REWARD_HARD
|
||||
|
||||
/datum/category_item/catalogue/technology/base_neon_anomalous
|
||||
name = "Anomalous Conditions"
|
||||
desc = "The work conditions keep changing! Horrendous!\
|
||||
Southern ruins are horrendous, some wires burst into lavas and crystals!.\
|
||||
Then others burst with water and sparky smoke!\
|
||||
Scientists blabber about heated crystals, and steam power but nothing beats,\
|
||||
good old fashioned alien flora!\
|
||||
The weather is also strange, weather fireworks being wrong for here. \
|
||||
Proabaly something to do with this valley being a pockect of cool in the heat."
|
||||
value = CATALOGUER_REWARD_HARD
|
||||
|
||||
|
||||
|
||||
@@ -87,3 +87,82 @@
|
||||
center_of_mass_y= 16 //CHOMPEdit
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list(REAGENT_ID_PROTEIN = 24)
|
||||
|
||||
|
||||
//ant meats
|
||||
/obj/item/reagent_containers/food/snacks/copperant
|
||||
name = "Bronze Ant Slice"
|
||||
desc = "A slice from a ant"
|
||||
icon_state = "meat"
|
||||
center_of_mass_x = 17 //CHOMPEdit
|
||||
center_of_mass_y= 16 //CHOMPEdit
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list(REAGENT_ID_PROTEIN = 3, REAGENT_ID_SHOCKCHEM = 3)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/copperant/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(REAGENT_ID_PROTEIN, 3)
|
||||
reagents.add_reagent(REAGENT_ID_SHOCKCHEM, 3)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/painiteant
|
||||
name = "Painite Ant Slice"
|
||||
desc = "A slice from a ant"
|
||||
icon_state = "meat"
|
||||
center_of_mass_x = 17 //CHOMPEdit
|
||||
center_of_mass_y= 16 //CHOMPEdit
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list(REAGENT_ID_PROTEIN = 3, REAGENT_ID_NEOLIQUIDFIRE = 3)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/painiteant/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(REAGENT_ID_PROTEIN, 3)
|
||||
reagents.add_reagent(REAGENT_ID_NEOLIQUIDFIRE, 3)
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/bronzeant
|
||||
name = "Bronze Ant Slice"
|
||||
desc = "A slice from a ant"
|
||||
icon_state = "meat"
|
||||
center_of_mass_x = 17 //CHOMPEdit
|
||||
center_of_mass_y= 16 //CHOMPEdit
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list(REAGENT_ID_PROTEIN = 3, REAGENT_ID_LIQUIDFIRE = 3)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/bronzeant/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(REAGENT_ID_PROTEIN, 3)
|
||||
reagents.add_reagent(REAGENT_ID_LIQUIDFIRE, 3)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/quartzant
|
||||
name = "Bronze Ant Slice"
|
||||
desc = "A slice from a ant"
|
||||
icon_state = "meat"
|
||||
center_of_mass_x = 17 //CHOMPEdit
|
||||
center_of_mass_y= 16 //CHOMPEdit
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list(REAGENT_ID_PROTEIN = 3, REAGENT_ID_DEATHBLOOD = 3)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/quartzant/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(REAGENT_ID_PROTEIN, 3)
|
||||
reagents.add_reagent(REAGENT_ID_DEATHBLOOD, 3)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/agateant
|
||||
name = "Bronze Ant Slice"
|
||||
desc = "A slice from a ant"
|
||||
icon_state = "meat"
|
||||
center_of_mass_x = 17 //CHOMPEdit
|
||||
center_of_mass_y= 16 //CHOMPEdit
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list(REAGENT_ID_PROTEIN = 3, REAGENT_ID_LIQUIDLIFE = 3)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/agateant/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(REAGENT_ID_PROTEIN, 3)
|
||||
reagents.add_reagent(REAGENT_ID_LIQUIDLIFE, 3)
|
||||
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants
|
||||
name = "metal ant"
|
||||
desc = "A large ant."
|
||||
icon_state = "normal_ant"
|
||||
icon_dead = "dead_ant"
|
||||
icon_state = "ne_ant"
|
||||
icon_dead = "dead_new"
|
||||
maxHealth = 25 //two hits with agate sword, three with spear, one with hammer, four with bow
|
||||
health = 25
|
||||
pass_flags = PASSTABLE
|
||||
movement_cooldown = 1
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
|
||||
|
||||
see_in_dark = 12
|
||||
melee_damage_lower = 8 //12.5 hits unarmored. 15.625 with the tribal armor
|
||||
melee_damage_upper = 8 //Rng numbers are wierd
|
||||
see_in_dark = 3
|
||||
melee_damage_lower = 16 //6.25 hits unarmored.
|
||||
melee_damage_upper = 16 //Rng numbers are wierd
|
||||
attack_sharp = TRUE
|
||||
attack_edge = 1
|
||||
|
||||
@@ -57,35 +57,56 @@
|
||||
B.absorbchance = 0
|
||||
B.escapechance = 25
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze //shockers
|
||||
icon_state = "bronze_ant"
|
||||
icon_living = "bronze_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/bronze = 6\
|
||||
/obj/item/stack/material/bronze = 18\
|
||||
)
|
||||
meat_amount = 3
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/bronzeant
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/copper
|
||||
icon_state = "copper_ant"
|
||||
icon_living = "copper_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/copper = 6\
|
||||
/obj/item/stack/material/copper = 18\
|
||||
)
|
||||
meat_amount = 3
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/copperant
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/agate
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/agate //shockers
|
||||
icon_state = "agate_ant"
|
||||
icon_living = "agate_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/weathered_agate = 6\
|
||||
/obj/item/stack/material/weathered_agate = 18\
|
||||
)
|
||||
meat_amount = 3
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/agateant
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/quartz
|
||||
icon_state = "quartz_ant"
|
||||
icon_living = "quartz_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/quartz = 6\
|
||||
/obj/item/stack/material/quartz = 18\
|
||||
)
|
||||
meat_amount = 3
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/quartzant
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite
|
||||
icon_state = "painite_ant"
|
||||
icon_living = "painite_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/painite = 6\
|
||||
/obj/item/stack/material/painite = 18\
|
||||
)
|
||||
meat_amount = 3
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/painiteant
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/builder
|
||||
icon_state = "builder_ant"
|
||||
icon_living = "builder_ant"
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/concrete = 6\
|
||||
)
|
||||
@@ -185,13 +206,12 @@ ANT STRUCTURES
|
||||
spawn_delay = 10 MINUTES
|
||||
|
||||
spawn_types = list(
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze = 5,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/builder = 7,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/copper = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/agate = 3,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/quartz = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/builder = 1
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/agate = 1,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite = 5
|
||||
)
|
||||
|
||||
simultaneous_spawns = 5
|
||||
@@ -303,13 +323,12 @@ ANT STRUCTURES
|
||||
anchored = FALSE
|
||||
layer = HIDING_LAYER
|
||||
health = 3
|
||||
grow_as = list(/mob/living/simple_mob/animal/tyr/mineral_ants,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze,
|
||||
grow_as = list(/mob/living/simple_mob/animal/tyr/mineral_ants/bronze,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/builder,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/copper,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/agate,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/quartz,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/builder)
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/agate,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite)
|
||||
faction = FACTION_TYR
|
||||
|
||||
/obj/effect/ant_structure/webbarrier
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
attack_edge = 1
|
||||
attacktext = list("slashed", "stabbed")
|
||||
projectile_dispersion = 0
|
||||
ranged_cooldown = 10
|
||||
ranged_cooldown = 40
|
||||
armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100) // Simple mob immunuties plus base Eclipse foe stuff
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
@@ -54,8 +54,8 @@
|
||||
projectilesound = 'sound/weapons/Gunshot_light.ogg'
|
||||
|
||||
needs_reload = TRUE
|
||||
reload_max = 7 // Not the best default, but it fits the pistol
|
||||
reload_time = 1.5 SECONDS
|
||||
reload_max = 4
|
||||
reload_time = 2.5 SECONDS
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/eclipse
|
||||
|
||||
special_attack_cooldown = 15 SECONDS
|
||||
@@ -138,7 +138,7 @@
|
||||
visible_message(span_cult("[P] seems ineffective!."))
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/snipertesh
|
||||
name = "Solar Eclipse Sniper"
|
||||
name = "Solar Eclipse Breaker"
|
||||
desc = "An armored teshari with a sniper, protected from laser and energy based attacks"
|
||||
health = 50 //old 20
|
||||
maxHealth = 50
|
||||
@@ -153,7 +153,7 @@
|
||||
|
||||
reload_max = 1
|
||||
reload_time = 2.5 SECONDS
|
||||
ranged_attack_delay = 1.5 SECONDS
|
||||
ranged_attack_delay = 2 SECONDS
|
||||
var/cloaked_alpha = 60 // Lower = Harder to see.
|
||||
var/cloak_cooldown = 5 SECONDS // Amount of time needed to re-cloak after losing it.
|
||||
var/last_uncloak = 0
|
||||
@@ -467,9 +467,9 @@
|
||||
projectiletype = /obj/item/projectile/bullet/crystalineburst
|
||||
reload_max = 1
|
||||
reload_time = 2.5 SECONDS
|
||||
ranged_attack_delay = 1.5 SECONDS
|
||||
ranged_attack_delay = 2 SECONDS
|
||||
var/cloaked_alpha = 40 // Lower = Harder to see.
|
||||
var/cloak_cooldown = 1 SECONDS // Amount of time needed to re-cloak after losing it.
|
||||
var/cloak_cooldown = 1 SECOND // Amount of time needed to re-cloak after losing it.
|
||||
var/last_uncloak = 0
|
||||
|
||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||
@@ -653,9 +653,10 @@
|
||||
icon_state = "eclipse_gravliz"
|
||||
icon_living = "eclipse_gravliz"
|
||||
reload_max = 1
|
||||
reload_time = 3 SECONDS
|
||||
movement_cooldown = 1
|
||||
|
||||
special_attack_cooldown = 7 SECONDS
|
||||
special_attack_cooldown = 15 SECONDS
|
||||
special_attack_min_range = 1
|
||||
special_attack_max_range = 7
|
||||
|
||||
@@ -717,7 +718,7 @@
|
||||
projectiletype = /obj/item/projectile/ion/pistol
|
||||
icon_state = "eclipse_diver" //note to self try to redo this sprite sometime
|
||||
reload_max = 1
|
||||
reload_time = 1.5 SECOND
|
||||
reload_time = 5 SECONDS
|
||||
|
||||
specialattackprojectile = /obj/item/projectile/energy/mechahack
|
||||
|
||||
@@ -780,13 +781,172 @@
|
||||
/mob/living/simple_mob/humanoid/eclipse/proc/gravity_pull(mob/living/L)
|
||||
if(!L)
|
||||
return
|
||||
L.throw_at(src, 2, 4) // Just yoinked.
|
||||
for(L in view(src, 7))
|
||||
L.throw_at(src, 2, 4) // Just yoinked.
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/proc/itemyoink(mob/living/carbon/human/H)
|
||||
if(!H)
|
||||
return
|
||||
var/obj/item/I = H.get_active_hand()
|
||||
H.drop_item()
|
||||
if(I)
|
||||
I.throw_at(src, 2, 4) // Just yoinked.
|
||||
src.visible_message(span_danger("The [name] heaves, pulling \the [H]'s weapon from their hands!"))
|
||||
if(H in view(src, 7))
|
||||
H.drop_item()
|
||||
if(I)
|
||||
I.throw_at(src, 2, 4) // Just yoinked.
|
||||
src.visible_message(span_danger("The [name] heaves, pulling \the [H]'s weapon from their hands!"))
|
||||
|
||||
|
||||
//new tyr mobs
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/heavyshark //melee shork, anti-flesh
|
||||
name = "Lunar Eclipse Brusier"
|
||||
desc = "A akula in a strange eriee red and black armor. Bullets and melee armaments seem ineffective."
|
||||
icon_state = "aegis_shark"
|
||||
icon_living = "aegis_shark"
|
||||
projectiletype = null
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 30
|
||||
attack_armor_pen = 30
|
||||
|
||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||
/obj/item/bone/skull = 100,
|
||||
/obj/item/soulstone = 30,
|
||||
/obj/item/melee/cursedblade = 15
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/heavyshark/apply_melee_effects(var/atom/A) //maybe replace this with Doom lite
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
L.add_modifier(/datum/modifier/deep_wounds, 10 SECONDS)
|
||||
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/cultfanatic //A semi tough creature
|
||||
name = "Lunar Eclipse Fanatic"
|
||||
desc = "A furry creature with stolen and modified cult attire. Seemingly swapped high energy resistance for brunt and sharp."
|
||||
icon_state = "return"
|
||||
icon_living = "return"
|
||||
projectiletype = /obj/item/projectile/bullet/crystaline
|
||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||
/obj/item/bone/skull = 100,
|
||||
/obj/item/clothing/suit/cultrobes/alt = 40,
|
||||
/obj/item/clothing/head/culthood/alt = 40
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/cultfanatic/do_special_attack(atom/A)
|
||||
teleport(A)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/cultfanatic/attackby(var/obj/item/O as obj, var/mob/user as mob) //I question why you are meleeing the meleeing resisting mob but funny shield flavour
|
||||
if(O.force)
|
||||
if(prob(70))
|
||||
visible_message(span_danger("\The [src] blocks \the [O] with its shield!"))
|
||||
if(user)
|
||||
ai_holder.react_to_attack(user)
|
||||
return
|
||||
else
|
||||
..()
|
||||
else
|
||||
to_chat(user, span_warning("This weapon is ineffective, it does no damage."))
|
||||
visible_message(span_warning("\The [user] gently taps [src] with \the [O]."))
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/changeling //A wierd creature
|
||||
name = "Lunar Eclipse Bio-Weapon"
|
||||
desc = "A horror of twisted and armored flesh. Whilst bullets and blades bounce off, perhaps it still burns."
|
||||
icon_state = "horror"
|
||||
icon_living = "horror"
|
||||
projectiletype = /obj/item/projectile/energy/blob/acid
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
attack_armor_pen = 40
|
||||
specialattackprojectile = /obj/item/projectile/arc/spore
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/lunar/changeling/do_special_attack(atom/A)
|
||||
Beam(A, icon_state = "tentacle", time = 3 SECONDS, maxdistance = INFINITY)
|
||||
addtimer(CALLBACK(src, PROC_REF(special_projectile), A), 3.5 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/clockspear //Melee creature
|
||||
name = "Solar Eclipse Spearmaster"
|
||||
desc = "A furry creature wearing modified artifact armor, protecting itself from burns and energy."
|
||||
icon_state = "clock_spear"
|
||||
icon_living = "clock_spear"
|
||||
projectiletype = null
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 30
|
||||
attack_armor_pen = 60
|
||||
melee_attack_delay = 3 SECONDS
|
||||
|
||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||
/obj/item/bone/skull = 100,
|
||||
/obj/item/rig/ch/clockwork = 10,
|
||||
/obj/item/ratvarian_spear = 30
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/clockspear/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)
|
||||
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()
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/clocksgun //Melee creature
|
||||
name = "Solar Eclipse Artificer"
|
||||
desc = "A furry creature wearing modified artifact armor, protecting itself from burns and energy."
|
||||
icon_state = "clock_gun"
|
||||
icon_living = "clock_gun"
|
||||
projectiletype = /obj/item/projectile/bullet/rifle/clockwork
|
||||
ranged_cooldown = 20
|
||||
reload_max = 10
|
||||
reload_time = 5 SECONDS
|
||||
specialattackprojectile = /obj/item/projectile/beam/shock/clockwork
|
||||
|
||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||
/obj/item/bone/skull = 100,
|
||||
/obj/item/rig/ch/clockwork = 10,
|
||||
/obj/item/gun/energy/clockwork = 30
|
||||
)
|
||||
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/clocksgun/do_special_attack(atom/A)
|
||||
Beam(A, icon_state = "volt_ray", time = 5 SECONDS, maxdistance = INFINITY)
|
||||
addtimer(CALLBACK(src, PROC_REF(special_projectile), A), 5.5 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/zaddat //Melee creature
|
||||
name = "Solar Eclipse Spacer"
|
||||
desc = "A zaddat wearing orange armor, shielding itself from lasers and energy."
|
||||
icon_state = "zaddat_spacer"
|
||||
icon_living = "zaddat_spacer"
|
||||
reload_max = 3
|
||||
reload_time = 3 SECONDS
|
||||
|
||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||
/obj/item/bone/skull = 100,
|
||||
/obj/item/clothing/head/helmet/space/void/zaddat = 30,
|
||||
/obj/item/clothing/suit/space/void/zaddat = 30,
|
||||
/obj/item/material/fishing_rod/modern = 30
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/solar/zaddat/bullet_act(obj/item/projectile/P)
|
||||
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
||||
var/reflect_prob = P.damage
|
||||
if(prob(reflect_prob))
|
||||
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))
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
has_heal_droid = TRUE
|
||||
specialattackprojectile = /obj/item/projectile/bullet/dragon
|
||||
loot_list = list(/obj/item/gun/energy/flamegun = 100,
|
||||
/obj/item/prop/tyrlore/neonsec = 100,
|
||||
/obj/item/bone/skull = 100
|
||||
)
|
||||
|
||||
@@ -140,6 +141,11 @@
|
||||
special_attack_max_range = 8
|
||||
projectiletype = /obj/item/projectile/energy/homing_bolt
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
|
||||
loot_list = list(/obj/item/prop/tyrlore/baseneon = 100,
|
||||
/obj/item/disposable_teleporter = 100,
|
||||
/obj/item/hand_tele = 10,
|
||||
/obj/item/bone/skull = 100
|
||||
)
|
||||
var/fullshield = 4
|
||||
var/shieldrage = 4
|
||||
|
||||
@@ -188,7 +194,8 @@
|
||||
/obj/item/material/twohanded/fireaxe = 60,
|
||||
/obj/item/storage/toolbox/syndicate/powertools = 60,
|
||||
/obj/item/rig/ce = 60,
|
||||
/obj/item/rig_module/teleporter = 5
|
||||
/obj/item/rig_module/teleporter = 5,
|
||||
/obj/item/prop/tyrlore/neonengi = 100
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/head/engineer/Initialize(mapload)
|
||||
@@ -215,6 +222,7 @@
|
||||
/obj/item/ammo_casing/microbattery/medical/brute3 = 15,
|
||||
/obj/item/ammo_casing/microbattery/medical/burn3 = 15,
|
||||
/obj/item/ammo_casing/microbattery/medical/toxin3 = 15,
|
||||
/obj/item/prop/tyrlore/neonmedi = 100,
|
||||
/obj/item/ammo_casing/microbattery/medical/omni3 = 5
|
||||
)
|
||||
|
||||
|
||||
@@ -790,7 +790,7 @@
|
||||
upfour_leftfour(target)
|
||||
upfour_leftthree(target)
|
||||
upfour_lefttwo(target)
|
||||
if(prob(50))
|
||||
if(prob(20))
|
||||
addtimer(CALLBACK(src, PROC_REF(beglaser), target, next_cycle), 1 SECOND, TIMER_DELETE_ME)
|
||||
else
|
||||
attackcycle = next_cycle
|
||||
@@ -828,39 +828,11 @@
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt //The final boss
|
||||
name = "Eclipse Expirmental Janus"
|
||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 80, bio = 100, rad = 100)
|
||||
specialattackprojectile = /obj/item/projectile/energy/darkspike
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse/janusjavelin
|
||||
pilot_type = /mob/living/simple_mob/humanoid/eclipse/head/tyrlead
|
||||
icon_state = "eclipse_janus"
|
||||
attackcycle = 1
|
||||
|
||||
/obj/item/projectile/energy/darkspike //This will end you
|
||||
name = "gravity well"
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "gravity_well"
|
||||
damage = 60
|
||||
armor_penetration = 30
|
||||
speed = 15 //Note to self, may need to slow down even further.
|
||||
|
||||
/obj/item/projectile/energy/infernosphere
|
||||
name = "burning plasma"
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "plasma"
|
||||
damage = 60
|
||||
armor_penetration = 30
|
||||
speed = 15
|
||||
|
||||
/obj/item/projectile/energy/infernosphere/Move()
|
||||
. = ..()
|
||||
if(prob(20))
|
||||
new /obj/fire(src.loc)
|
||||
|
||||
/obj/item/projectile/bullet/eclipsejanus
|
||||
use_submunitions = 1
|
||||
range = 0
|
||||
embed_chance = 0
|
||||
submunition_spread_max = 900
|
||||
submunition_spread_min = 100
|
||||
submunitions = list(/obj/item/projectile/energy/darkspike = 3, /obj/item/projectile/energy/infernosphere = 3)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/bullet_act(obj/item/projectile/P)
|
||||
.= ..()
|
||||
@@ -878,76 +850,58 @@
|
||||
switch(a_intent)
|
||||
if(I_DISARM) // Phase 3
|
||||
if(attackcycle == 1)
|
||||
phasethree_cycleone(A)
|
||||
specialattackprojectile = /obj/item/projectile/arc/explosive_rocket
|
||||
attackcycle = 0
|
||||
if(prob(50))
|
||||
addtimer(CALLBACK(src, PROC_REF(miniburst_a), A, 1), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
else
|
||||
addtimer(CALLBACK(src, PROC_REF(miniburst_b), A, 1), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
else if(attackcycle == 2)
|
||||
phasethree_cycletwo(A)
|
||||
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 10, 2, 0.75 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 3)
|
||||
phasethree_cyclethree(A)
|
||||
say("Hypercharge laser burst!")
|
||||
specialattackprojectile = /obj/item/projectile/beam/heavylaser
|
||||
addtimer(CALLBACK(src, PROC_REF(burst), A, 3), 6 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 4)
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse/janusjavelin
|
||||
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 10, 1, 0.75 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(I_HURT) // Phase 1
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse/janusjavelin
|
||||
if(attackcycle == 1)
|
||||
phaseone_cycleone(A)
|
||||
addtimer(CALLBACK(src, PROC_REF(spin_to_win), A, 2), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 2)
|
||||
phaseone_cycletwo(A)
|
||||
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 10, 3, 0.75 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 3)
|
||||
phaseone_cyclethree(A)
|
||||
addtimer(CALLBACK(src, PROC_REF(beglaser), A, 4), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 4)
|
||||
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 10, 1, 0.75 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(I_GRAB) // Phase 2
|
||||
if(attackcycle == 1)
|
||||
phasetwo_cycleone(A)
|
||||
addtimer(CALLBACK(src, PROC_REF(teleport_attack), A, 2), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 2)
|
||||
phasetwo_cycletwo(A)
|
||||
say("Activating laser surge")
|
||||
specialattackprojectile = /obj/item/projectile/energy/burninglaser/boss
|
||||
addtimer(CALLBACK(src, PROC_REF(miniburst_a), A, 2), 3 SECONDS, TIMER_DELETE_ME)
|
||||
else if(attackcycle == 3)
|
||||
phasetwo_cyclethree(A)
|
||||
|
||||
//Phase One. Appears random but isn't. Scales higher.
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/proc/phaseone_cycleone(atom/target)
|
||||
specialattackprojectile = /obj/item/projectile/energy/darkspike
|
||||
addtimer(CALLBACK(src, PROC_REF(spin_to_win), target, 2), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/proc/phaseone_cycletwo(atom/target)
|
||||
specialattackprojectile = /obj/item/projectile/energy/darkspike
|
||||
addtimer(CALLBACK(src, PROC_REF(beglaser), target, 3), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/proc/phaseone_cyclethree(atom/target)
|
||||
specialattackprojectile = /obj/item/projectile/energy/darkspike
|
||||
addtimer(CALLBACK(src, PROC_REF(random_firing), target, 20, 1, 0.2 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
//Phase Two where we change things up a bit.
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/proc/phasetwo_cycleone(atom/target) //shows a laser then fires a rockect
|
||||
specialattackprojectile = /obj/item/projectile/energy/infernosphere
|
||||
addtimer(CALLBACK(src, PROC_REF(spin_to_win), target, 2), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/proc/phasetwo_cycletwo(atom/target) //summon the most useless horde
|
||||
specialattackprojectile = /obj/item/projectile/energy/infernosphere
|
||||
addtimer(CALLBACK(src, PROC_REF(beglaser), target, 3), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/proc/phasetwo_cyclethree(atom/target) //turns out the horde is meant to be a shield for the next attack.
|
||||
specialattackprojectile = /obj/item/projectile/energy/infernosphere
|
||||
addtimer(CALLBACK(src, PROC_REF(random_firing), target, 20, 1, 0.2 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
//Phase three 2 wierd patterns, and 1 strange attack.
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/proc/phasethree_cycleone(atom/target)
|
||||
specialattackprojectile = /obj/item/projectile/bullet/eclipsejanus
|
||||
addtimer(CALLBACK(src, PROC_REF(spin_to_win), target, 2), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/proc/phasethree_cycletwo(atom/target)
|
||||
specialattackprojectile = /obj/item/projectile/energy/homing_bolt
|
||||
addtimer(CALLBACK(src, PROC_REF(beglaser), target, 3), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/proc/phasethree_cyclethree(atom/target) //eight spinning death beams
|
||||
specialattackprojectile = /obj/item/projectile/bullet/eclipsejanus
|
||||
addtimer(CALLBACK(src, PROC_REF(random_firing), target, 20, 1, 0.2 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse/janusjavelin
|
||||
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 10, 4, 0.75 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 4)
|
||||
specialattackprojectile = /obj/item/projectile/bullet/gyro
|
||||
Beam(A, icon_state = "solar_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
|
||||
addtimer(CALLBACK(src, PROC_REF(singleproj), A, 1), 3 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/engimecha
|
||||
name = "Eclipse Expirmental Mining Mecha"
|
||||
name = "Eclipse Expirmental Enginering Mecha"
|
||||
health = 300
|
||||
maxHealth = 300
|
||||
specialattackprojectile = /obj/item/projectile/energy/excavate/weak
|
||||
@@ -1496,3 +1450,25 @@
|
||||
s2.start()
|
||||
attackcycle = next_cycle
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/sniper
|
||||
name = "Eclipse Lead Pilot"
|
||||
icon_state = "captian"
|
||||
icon_living = "captian"
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases
|
||||
armor = list(melee = 70, bullet = 70, laser = 70, energy = 70, bomb = 50, bio = 100, rad = 100)
|
||||
specialattackprojectile = /obj/item/projectile/arc/explosive_rocket
|
||||
wreckage = /obj/item/prop/tyrlore/monodisc
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/sniper/do_special_attack(atom/A)
|
||||
. = TRUE // So we don't fire a bolt as well.
|
||||
if(attackcycle == 1)
|
||||
addtimer(CALLBACK(src, PROC_REF(teleport_attack), A, 2), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 2)
|
||||
specialattackprojectile = /obj/item/projectile/beam/heavylaser/cannon
|
||||
Beam(A, icon_state = "solar_beam", time = 0.75 SECONDS, maxdistance = INFINITY)
|
||||
addtimer(CALLBACK(src, PROC_REF(singleproj), A, 1), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
|
||||
@@ -3,10 +3,11 @@
|
||||
vore_capacity = 2
|
||||
vore_max_size = RESIZE_HUGE
|
||||
vore_min_size = RESIZE_SMALL
|
||||
vore_pounce_chance = 0 // Beat them into crit before eating.
|
||||
vore_pounce_chance = 30
|
||||
vore_icons = null
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
can_be_drop_prey = FALSE
|
||||
can_be_drop_pred = TRUE
|
||||
|
||||
/mob/living/simple_mob/humanoid/eclipse/Login()
|
||||
. = ..()
|
||||
|
||||
@@ -482,19 +482,6 @@
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/powertower
|
||||
name = "automated remote handless testing unit"
|
||||
desc = "A large, very important looking robot."
|
||||
icon_state = "powertower"
|
||||
size_multiplier = 2
|
||||
maxHealth = 1000
|
||||
health = 1000
|
||||
glow_toggle = TRUE
|
||||
glow_override = TRUE
|
||||
glow_color = "#FFA723"
|
||||
glow_range = 16
|
||||
wreckage = /obj/item/prop/nanoweave/terraformers
|
||||
|
||||
/*
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/green/do_special_attack(atom/A)
|
||||
. = TRUE // So we don't fire a bolt as well.
|
||||
|
||||
@@ -14,3 +14,73 @@
|
||||
|
||||
/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege
|
||||
projectiletype = /obj/item/projectile/arc //Polaris, don't make the same mob twice.
|
||||
|
||||
/mob/living/simple_mob/mechanical/hivebot/tyr
|
||||
name = "terraforming hivebot"
|
||||
maxHealth = 1.5 LASERS_TO_KILL // 60 hp
|
||||
health = 1.5 LASERS_TO_KILL
|
||||
icon = 'modular_chomp/icons/mob/hivebot.dmi'
|
||||
desc = "A robot with strange gardening looking gear."
|
||||
loot_list = list(/obj/structure/foamedmetal = 100
|
||||
)
|
||||
pass_flags = PASSTABLE
|
||||
movement_cooldown = -3
|
||||
icon_state = "janitor"
|
||||
icon_living = "janitor"
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr
|
||||
name = "ai control center"
|
||||
desc = "A large, very important looking ai. Plating appears similiar to albative plating."
|
||||
icon_state = "powertower"
|
||||
icon_living = "powertower"
|
||||
movement_cooldown = 7
|
||||
size_multiplier = 2
|
||||
maxHealth = 500
|
||||
health = 500
|
||||
wreckage = /obj/item/prop/tyrlore/reddisc
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases/nomove
|
||||
anchored = 1
|
||||
armor = list(melee = 40, bullet = 40, laser = 80, energy = 80, bomb = 50, bio = 100, rad = 100)
|
||||
|
||||
/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(summon_janitor), A, 5, 2), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 2)
|
||||
say("Prepare. Area. Cleanse. Radiation.")
|
||||
specialattackprojectile = /obj/item/projectile/beam/gamma
|
||||
addtimer(CALLBACK(src, PROC_REF(burst), A, 3), 6 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 3)
|
||||
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
|
||||
addtimer(CALLBACK(src, PROC_REF(alpha_slash), A, 4), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 4)
|
||||
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
|
||||
addtimer(CALLBACK(src, PROC_REF(omega), A, 5), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
else if(attackcycle == 5)
|
||||
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
|
||||
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 12, 1, 0.5 SECONDS), 1 SECOND, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr/proc/summon_janitor(atom/target, var/amount, var/next_cycle)
|
||||
if(!target)
|
||||
return
|
||||
new /mob/living/simple_mob/mechanical/combat_drone/artillery
|
||||
amount--
|
||||
if(amount > 0)
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_drones), target, amount, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
else
|
||||
attackcycle = next_cycle
|
||||
|
||||
/obj/item/projectile/energy/spikeenergy_ball/boss
|
||||
damage = 40
|
||||
armor_penetration = 60
|
||||
speed = 10
|
||||
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/omega_three(atom/target, var/next_cycle)
|
||||
if(!target)
|
||||
return
|
||||
addtimer(CALLBACK(src, PROC_REF(omega_three), target, next_cycle), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
addtimer(CALLBACK(src, PROC_REF(omega_four), target, next_cycle), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
uptwo_leftfour(target)
|
||||
downtwo_leftfour(target)
|
||||
uptwo_rightfour(target)
|
||||
|
||||
@@ -33,26 +33,26 @@ var/datum/planet/tyr/planet_tyr = null
|
||||
|
||||
switch(sun_position)
|
||||
if(0 to 0.20) // Night
|
||||
low_brightness = 0.1
|
||||
low_brightness = 0.4
|
||||
low_color = "#0A0028"
|
||||
|
||||
high_brightness = 0.3
|
||||
high_brightness = 0.7
|
||||
high_color = "#21007F"
|
||||
min = 0
|
||||
min = 0.3
|
||||
|
||||
if(0.20 to 0.30) // Twilight
|
||||
low_brightness = 0.35
|
||||
low_brightness = 0.65
|
||||
low_color = "#310D54"
|
||||
|
||||
high_brightness = 0.5
|
||||
high_brightness = 0.8
|
||||
high_color = "#58389E"
|
||||
min = 0.40
|
||||
min = 0.50
|
||||
|
||||
if(0.30 to 0.40) // Sunrise/set
|
||||
low_brightness = 0.5
|
||||
low_brightness = 0.8
|
||||
low_color = "#19277F"
|
||||
|
||||
high_brightness = 0.6
|
||||
high_brightness = 0.9
|
||||
high_color = "#2437B5"
|
||||
min = 0.50
|
||||
|
||||
@@ -122,8 +122,8 @@ var/datum/planet/tyr/planet_tyr = null
|
||||
/datum/weather/tyr/clear
|
||||
name = "clear"
|
||||
transition_chances = list(
|
||||
WEATHER_CLEAR = 50,
|
||||
WEATHER_SANDSTORM = 50
|
||||
WEATHER_CLEAR = 80,
|
||||
WEATHER_SANDSTORM = 20
|
||||
)
|
||||
transition_messages = list(
|
||||
"The sky clears up.",
|
||||
@@ -188,9 +188,9 @@ var/datum/planet/tyr/planet_tyr = null
|
||||
name = "sandstorm"
|
||||
icon_state = "sandstorm"
|
||||
transition_chances = list(
|
||||
WEATHER_CLEAR = 60,
|
||||
WEATHER_SANDSTORM = 20,
|
||||
WEATHER_HEAVYSANDSTORM = 20)
|
||||
WEATHER_CLEAR = 80,
|
||||
WEATHER_SANDSTORM = 10,
|
||||
WEATHER_HEAVYSANDSTORM = 10)
|
||||
transition_messages = list(
|
||||
"The sky is engulfed by sand."
|
||||
)
|
||||
@@ -225,9 +225,9 @@ var/datum/planet/tyr/planet_tyr = null
|
||||
name = "fierce sandstorm"
|
||||
icon_state = "sandstorm"
|
||||
transition_chances = list(
|
||||
WEATHER_CLEAR = 60,
|
||||
WEATHER_SANDSTORM = 20,
|
||||
WEATHER_HEAVYSANDSTORM = 20)
|
||||
WEATHER_CLEAR = 80,
|
||||
WEATHER_SANDSTORM = 10,
|
||||
WEATHER_HEAVYSANDSTORM = 10)
|
||||
transition_messages = list(
|
||||
"The sky is engulfed by sand."
|
||||
)
|
||||
|
||||
@@ -216,7 +216,7 @@
|
||||
nodamage = 1
|
||||
damage_type = HALLOSS
|
||||
speed = 2
|
||||
var/power = 35 //How hard it will hit for with electrocute_act(), decreases with each bounce.
|
||||
var/power = 20 //How hard it will hit for with electrocute_act(), decreases with each bounce.
|
||||
|
||||
/obj/item/projectile/energy/lightingspark/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0)
|
||||
//First we shock the guy we just hit.
|
||||
@@ -247,17 +247,17 @@
|
||||
|
||||
//The normal laser is easier to guard, but can chain screw ups easier
|
||||
/obj/item/projectile/energy/eclipse/lorge
|
||||
damage = 50
|
||||
armor_penetration = 20
|
||||
damage = 30
|
||||
armor_penetration = 60
|
||||
eyeblur = 3
|
||||
icon_state = "mega_laser"
|
||||
speed = 15
|
||||
speed = 10
|
||||
|
||||
/obj/item/projectile/energy/eclipse/lorgealien
|
||||
damage = 50
|
||||
armor_penetration = 40
|
||||
armor_penetration = 60
|
||||
icon_state = "mega_laser_p"
|
||||
speed = 15
|
||||
speed = 10
|
||||
|
||||
/obj/item/projectile/bullet/crystalineburst
|
||||
use_submunitions = 1
|
||||
@@ -267,3 +267,12 @@
|
||||
submunition_spread_max = 120
|
||||
submunition_spread_min = 60
|
||||
submunitions = list(/obj/item/projectile/bullet/crystaline = 5)
|
||||
|
||||
/obj/item/projectile/energy/eclipse/janusjavelin //This will end you
|
||||
name = "energy javelin"
|
||||
icon_state = "javelin"
|
||||
damage_type = SEARING
|
||||
check_armour = "bullet"
|
||||
damage = 90
|
||||
armor_penetration = 50
|
||||
speed = 10
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
/obj/item/projectile/beam/precursor_tyr
|
||||
name = "laser"
|
||||
icon_state = "laser"
|
||||
damage = 20
|
||||
damage = 15
|
||||
armor_penetration = 30
|
||||
penetrating = 20
|
||||
damage_type = BURN
|
||||
|
||||
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.7 KiB |
@@ -124,156 +124,36 @@
|
||||
name = "Base Neon"
|
||||
icon_state = "bluenew"
|
||||
outdoors = OUTDOORS_NO
|
||||
requires_power = FALSE
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/sciencehalls
|
||||
name = "Base Neon - Science Halls"
|
||||
/area/surface/tyr/eclipse_stronghold/sec
|
||||
name = "Base Neon - Security Branch"
|
||||
icon_state = "red"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/creaturestorageA
|
||||
name = "Base Neon - Creature Storage A"
|
||||
/area/surface/tyr/eclipse_stronghold/engineering
|
||||
name = "Base Neon - Enginering Branch"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/creaturestorageB
|
||||
name = "Base Neon - Creature Storage B"
|
||||
/area/surface/tyr/eclipse_stronghold/science
|
||||
name = "Base Neon - Science Branch"
|
||||
icon_state = "purple"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/toolstorage
|
||||
name = "Base Neon - Tool Storage"
|
||||
/area/surface/tyr/eclipse_stronghold/medical
|
||||
name = "Base Neon - Medical Branch"
|
||||
icon_state = "blue2"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/meatstorage
|
||||
name = "Base Neon - Meat Storage"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/slimeresearch
|
||||
name = "Base Neon - Slime Den"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/breakroom
|
||||
name = "Base Neon - Breakroom"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/poolroom
|
||||
name = "Base Neon - Poolroom"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/bathroom
|
||||
name = "Base Neon - Bathroom"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/showers
|
||||
name = "Base Neon - Shower"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/researchleadoffice
|
||||
name = "Base Neon - Head Scientist Study"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/furnace
|
||||
name = "Base Neon - Furnace"
|
||||
|
||||
//Medical area
|
||||
/area/surface/tyr/eclipse_stronghold/medicalhalls
|
||||
name = "Base Neon - Medical Halls"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/chemicalgas
|
||||
name = "Base Neon - Distillery Storage"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/viro
|
||||
name = "Base Neon - Virus Study"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/genetics
|
||||
name = "Base Neon - Life Study"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/distillery
|
||||
name = "Base Neon - Distillery"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/surgery
|
||||
name = "Base Neon - Mass Operations"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/alienbotany
|
||||
name = "Base Neon - Abnormal Botany"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/chemista
|
||||
name = "Base Neon - Chemistry"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/chemistb
|
||||
name = "Base Neon - Sub-Chemistry"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/cmooffice
|
||||
name = "Base Neon - Lead Medical Officer Restzone"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/recoveryA
|
||||
name = "Base Neon - Recovery Zone A"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/recoveryB
|
||||
name = "Base Neon - Recovery Zone B"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/recoveryC
|
||||
name = "Base Neon - Recovery Zone C"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/morgue
|
||||
name = "Base Neon - Final Rest Zone"
|
||||
|
||||
//sec areas
|
||||
/area/surface/tyr/eclipse_stronghold/sechalls
|
||||
name = "Base Neon - Security Halls"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/breakroom
|
||||
name = "Base Neon - Breaking Room"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/jailhouse
|
||||
name = "Base Neon - Jailhouse"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/secoffice
|
||||
name = "Base Neon - Warden Office"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/stash
|
||||
name = "Base Neon - Obtained Equipment Stash"
|
||||
|
||||
//engi areas
|
||||
/area/surface/tyr/eclipse_stronghold/engihalls
|
||||
name = "Base Neon - Eletrical Halls"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/radequipmentA
|
||||
name = "Base Neon - Glowing Equipment A"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/radequipmentB
|
||||
name = "Base Neon - Glowing Equipment B"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/engihead
|
||||
name = "Base Neon - Lighting Master Den"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/powerplantgens
|
||||
name = "Base Neon - Main Generator"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/powerplantfuel
|
||||
name = "Base Neon - Generator Battery"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/generatorA
|
||||
name = "Base Neon - Backup Battery A"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/generatorB
|
||||
name = "Base Neon - Backup Battery B"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/teslastorage
|
||||
name = "Base Neon - Tesla Storage"
|
||||
|
||||
//the cargo misc area
|
||||
/area/surface/tyr/eclipse_stronghold/cargohalls
|
||||
name = "Base Neon - Cargo Hall"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/cafe
|
||||
name = "Base Neon - Cafe"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/antroom
|
||||
name = "Base Neon - Antroom"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/miscstorage
|
||||
name = "Base Neon - Misc Storage"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/filestorage
|
||||
name = "Base Neon - File Storage"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/docks
|
||||
name = "Base Neon - Docks"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/generatorC
|
||||
name = "Base Neon - Backup Battery C"
|
||||
/area/surface/tyr/eclipse_stronghold/command
|
||||
name = "Base Neon - Command Branch"
|
||||
icon_state = "green"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/cargo
|
||||
name = "Base Neon - Cargo Branch"
|
||||
icon_state = "dark"
|
||||
|
||||
/area/surface/tyr/eclipse_stronghold/sectorfinale
|
||||
name = "Precursor Ruins"
|
||||
requires_power = FALSE
|
||||
icon_state = "away"
|
||||
|
||||
|
||||
/area/surface/tyr/precursorruins
|
||||
icon_state = "bluenew"
|
||||
|
||||