Ports TG Hierophant trophy, and TG colossus changes. (#18666)

* Ports TG Hierophant trophy, colossus changes.

* Runechat / unneeded check

* makes colossus not control the time stream.

Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>

* lewc's changes

* fuck

Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>

Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>
Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
This commit is contained in:
Qwertytoforty
2022-08-02 17:24:26 +01:00
committed by GitHub
co-authored by Charlie AffectedArc07
parent 0266a0bd85
commit a08468ac21
3 changed files with 80 additions and 19 deletions
@@ -442,17 +442,12 @@
denied_type = /obj/item/crusher_trophy/vortex_talisman
/obj/item/crusher_trophy/vortex_talisman/effect_desc()
return "mark detonation to create a barrier you can pass"
return "mark detonation to create a homing hierophant chaser"
/obj/item/crusher_trophy/vortex_talisman/on_mark_detonation(mob/living/target, mob/living/user)
var/turf/T = get_turf(user)
new /obj/effect/temp_visual/hierophant/wall/crusher(T, user) //a wall only you can pass!
var/turf/otherT = get_step(T, turn(user.dir, 90))
if(otherT)
new /obj/effect/temp_visual/hierophant/wall/crusher(otherT, user)
otherT = get_step(T, turn(user.dir, -90))
if(otherT)
new /obj/effect/temp_visual/hierophant/wall/crusher(otherT, user)
var/obj/effect/temp_visual/hierophant/chaser/chaser = new(get_turf(user), user, target, 3, TRUE)
chaser.monster_damage_boost = FALSE // Weaker due to no cooldown
chaser.damage = 20 //But also stronger due to AI / mining mob resistance
/obj/effect/temp_visual/hierophant/wall/crusher
duration = 75
@@ -1,3 +1,7 @@
#define RANDOM_SHOTS "Wrath"
#define BLAST "Retribution"
#define DIR_SHOTS "Lament"
/*
COLOSSUS
@@ -42,6 +46,7 @@ Difficulty: Very Hard
ranged = TRUE
pixel_x = -32
del_on_death = TRUE
universal_speak = TRUE
internal_type = /obj/item/gps/internal/colossus
medal_type = BOSS_MEDAL_COLOSSUS
score_type = COLOSSUS_SCORE
@@ -53,6 +58,8 @@ Difficulty: Very Hard
/datum/action/innate/megafauna_attack/aoe_attack,
/datum/action/innate/megafauna_attack/shotgun,
/datum/action/innate/megafauna_attack/alternating_cardinals)
/// Have we used our final attack yet?
var/final_available = TRUE
/datum/action/innate/megafauna_attack/spiral_attack
name = "Spiral Shots"
@@ -82,6 +89,10 @@ Difficulty: Very Hard
chosen_message = "<span class='colossus'>You are now firing in alternating cardinal directions.</span>"
chosen_attack_num = 4
/mob/living/simple_animal/hostile/megafauna/colossus/say(message, bubble_type, list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null, filterproof = null)
. = ..(("<span class='colossus'><b>[uppertext(message)]</b></span>"), sanitize = FALSE, ignore_speech_problems = TRUE, ignore_atmospherics = TRUE)
/mob/living/simple_animal/hostile/megafauna/colossus/OpenFire()
anger_modifier = clamp(((maxHealth - health)/50),0,20)
ranged_cooldown = world.time + 120
@@ -100,7 +111,7 @@ Difficulty: Very Hard
if(enrage(target))
if(move_to_delay == initial(move_to_delay))
visible_message("<span class='colossus'>\"<b>You can't dodge.</b>\"</span>")
say("You can't dodge")
ranged_cooldown = world.time + 30
telegraph()
dir_shots(GLOB.alldirs)
@@ -109,7 +120,10 @@ Difficulty: Very Hard
else
move_to_delay = initial(move_to_delay)
if(prob(20+anger_modifier)) //Major attack
if(health <= maxHealth / 10 && final_available) //One time use final attack
final_available = FALSE
final_attack()
else if(prob(20 + anger_modifier)) //Major attack
select_spiral_attack()
else if(prob(20))
random_shots()
@@ -127,6 +141,8 @@ Difficulty: Very Hard
/mob/living/simple_animal/hostile/megafauna/colossus/proc/alternating_dir_shots()
ranged_cooldown = world.time + 40
telegraph(DIR_SHOTS)
SLEEP_CHECK_DEATH(1.5 SECONDS)
dir_shots(GLOB.diagonals)
SLEEP_CHECK_DEATH(10)
dir_shots(GLOB.cardinal)
@@ -136,20 +152,22 @@ Difficulty: Very Hard
dir_shots(GLOB.cardinal)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/select_spiral_attack()
telegraph()
if(health < maxHealth/3)
return double_spiral()
visible_message("<span class='colossus'>\"<b>Judgement.</b>\"</span>")
say("Judgement.")
telegraph()
SLEEP_CHECK_DEATH(1.5 SECONDS)
return spiral_shoot()
/mob/living/simple_animal/hostile/megafauna/colossus/proc/double_spiral()
visible_message("<span class='colossus'>\"<b>Die.</b>\"</span>")
SLEEP_CHECK_DEATH(10)
say("Die.")
telegraph()
SLEEP_CHECK_DEATH(2.5 SECONDS)
INVOKE_ASYNC(src, .proc/spiral_shoot, FALSE)
INVOKE_ASYNC(src, .proc/spiral_shoot, TRUE)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/spiral_shoot(negative = pick(TRUE, FALSE), counter_start = 8)
icon_state = "eva_attack"
var/turf/start_turf = get_step(src, pick(GLOB.alldirs))
var/counter = counter_start
for(var/i in 1 to 80)
@@ -164,6 +182,7 @@ Difficulty: Very Hard
shoot_projectile(start_turf, counter * 22.5)
playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
SLEEP_CHECK_DEATH(1)
icon_state = initial(icon_state)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/shoot_projectile(turf/marker, set_angle)
if(!isnum(set_angle) && (!marker || marker == loc))
@@ -177,16 +196,22 @@ Difficulty: Very Hard
P.original = target
P.fire(set_angle)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/random_shots()
/mob/living/simple_animal/hostile/megafauna/colossus/proc/random_shots(do_sleep = TRUE)
ranged_cooldown = world.time + 30
if(do_sleep)
telegraph(RANDOM_SHOTS)
SLEEP_CHECK_DEATH(1.5 SECONDS)
var/turf/U = get_turf(src)
playsound(U, 'sound/magic/clockwork/invoke_general.ogg', 300, TRUE, 5)
for(var/T in RANGE_TURFS(12, U) - U)
if(prob(5))
shoot_projectile(T)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/blast(set_angle)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/blast(set_angle, do_sleep = TRUE)
ranged_cooldown = world.time + 20
if(do_sleep)
telegraph(BLAST)
SLEEP_CHECK_DEATH(1.5 SECONDS)
var/turf/target_turf = get_turf(target)
playsound(src, 'sound/magic/clockwork/invoke_general.ogg', 200, TRUE, 2)
newtonian_move(get_dir(target_turf, src))
@@ -205,12 +230,49 @@ Difficulty: Very Hard
var/turf/E = get_step(src, d)
shoot_projectile(E)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/telegraph()
/mob/living/simple_animal/hostile/megafauna/colossus/proc/telegraph(mode)
for(var/mob/M in range(10, src))
M.flash_screen_color("#C80000", 1)
shake_camera(M, 4, 3)
playsound(src, 'sound/magic/narsie_attack.ogg', 200, TRUE)
if(mode)
say("[mode]")
/mob/living/simple_animal/hostile/megafauna/colossus/proc/final_attack()
icon_state = "eva_attack"
say("PERISH MORTAL!")
telegraph()
ranged_cooldown = world.time + 20 SECONDS // Yeah let us NOT have people get triple attacked
SLEEP_CHECK_DEATH(2.5 SECONDS) //run
var/finale_counter = 10
for(var/i in 1 to 20)
if(finale_counter > 4)
telegraph()
blast(do_sleep = FALSE)
if(finale_counter > 1)
finale_counter--
var/turf/start_turf = get_turf(src)
for(var/turf/target_turf in RANGE_TURFS(12, start_turf))
if(prob(min(finale_counter, 2)) && target_turf != get_turf(src))
shoot_projectile(target_turf)
SLEEP_CHECK_DEATH(finale_counter + 0.2 SECONDS) //Doubled from TG, this was insane
for(var/i in 1 to 3)
telegraph()
random_shots(do_sleep = FALSE)
finale_counter += 6
SLEEP_CHECK_DEATH(finale_counter)
for(var/i in 1 to 3)
telegraph()
dir_shots()
SLEEP_CHECK_DEATH(1 SECONDS)
icon_state = initial(icon_state)
ranged_cooldown = world.time + 4 SECONDS
/mob/living/simple_animal/hostile/megafauna/colossus/devour(mob/living/L)
visible_message("<span class='colossus'>[src] disintegrates [L]!</span>")
@@ -273,3 +335,7 @@ Difficulty: Very Hard
gpstag = "Angelic Signal"
desc = "Get in the fucking robot."
invisibility = 100
#undef RANDOM_SHOTS
#undef BLAST
#undef DIR_SHOTS
Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

After

Width:  |  Height:  |  Size: 233 KiB