From b953db165d63937ba674097806d9b027f239dcd9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 30 Jul 2017 19:58:21 -0500 Subject: [PATCH] Colossus's shotgun is now a static-spread blast of 6 bolts --- .../hostile/megafauna/colossus.dm | 79 ++++++------------- code/modules/projectiles/projectile.dm | 2 +- 2 files changed, 25 insertions(+), 56 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index b5d88fe450..1e47342416 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -78,7 +78,7 @@ Difficulty: Very Hard double_spiral() else visible_message("\"Judgement.\"") - INVOKE_ASYNC(src, .proc/spiral_shoot, rand(0, 1)) + INVOKE_ASYNC(src, .proc/spiral_shoot, pick(TRUE, FALSE)) else if(prob(20)) ranged_cooldown = world.time + 30 @@ -142,46 +142,11 @@ Difficulty: Very Hard sleep(10) INVOKE_ASYNC(src, .proc/spiral_shoot) - INVOKE_ASYNC(src, .proc/spiral_shoot, 1) + INVOKE_ASYNC(src, .proc/spiral_shoot, TRUE) -/mob/living/simple_animal/hostile/megafauna/colossus/proc/spiral_shoot(negative = 0, counter_start = 1) +/mob/living/simple_animal/hostile/megafauna/colossus/proc/spiral_shoot(negative = FALSE, counter_start = 8) var/counter = counter_start - var/turf/marker for(var/i in 1 to 80) - switch(counter) - if(1) - marker = locate(x, y - 2, z) - if(2) - marker = locate(x - 1, y - 2, z) - if(3) - marker = locate(x - 2, y - 2, z) - if(4) - marker = locate(x - 2, y - 1, z) - if(5) - marker = locate(x - 2, y, z) - if(6) - marker = locate(x - 2, y + 1, z) - if(7) - marker = locate(x - 2, y + 2, z) - if(8) - marker = locate(x - 1, y + 2, z) - if(9) - marker = locate(x, y + 2, z) - if(10) - marker = locate(x + 1, y + 2, z) - if(11) - marker = locate(x + 2, y + 2, z) - if(12) - marker = locate(x + 2, y + 1, z) - if(13) - marker = locate(x + 2, y, z) - if(14) - marker = locate(x + 2, y - 1, z) - if(15) - marker = locate(x + 2, y - 2, z) - if(16) - marker = locate(x + 1, y - 2, z) - if(negative) counter-- else @@ -190,25 +155,25 @@ Difficulty: Very Hard counter = 1 if(counter < 1) counter = 16 - shoot_projectile(marker) + shoot_projectile(null, counter * 22.5) playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, 1) sleep(1) -/mob/living/simple_animal/hostile/megafauna/colossus/proc/shoot_projectile(turf/marker) - if(!marker || marker == loc) +/mob/living/simple_animal/hostile/megafauna/colossus/proc/shoot_projectile(turf/marker, set_angle) + if(!isnum(set_angle) && (!marker || marker == loc)) return var/turf/startloc = get_turf(src) var/obj/item/projectile/P = new /obj/item/projectile/colossus(startloc) P.current = startloc P.starting = startloc P.firer = src - P.yo = marker.y - startloc.y - P.xo = marker.x - startloc.x + if(marker) + P.yo = marker.y - startloc.y + P.xo = marker.x - startloc.x + P.original = marker if(target) P.original = target - else - P.original = marker - P.fire() + P.fire(set_angle) /mob/living/simple_animal/hostile/megafauna/colossus/proc/random_shots() var/turf/U = get_turf(src) @@ -217,17 +182,21 @@ Difficulty: Very Hard if(prob(5)) shoot_projectile(T) -/mob/living/simple_animal/hostile/megafauna/colossus/proc/blast() - playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 200, 1, 2) - var/turf/T = get_turf(target) - newtonian_move(get_dir(T, targets_from)) - for(var/turf/turf in range(1, T)) - shoot_projectile(turf) +/mob/living/simple_animal/hostile/megafauna/colossus/proc/blast(set_angle) + var/turf/target_turf = get_turf(target) + playsound(src, 'sound/magic/clockwork/invoke_general.ogg', 200, 1, 2) + newtonian_move(get_dir(target_turf, src)) + var/angle_to_target = Get_Angle(src, target_turf) + if(isnum(set_angle)) + angle_to_target = set_angle + var/static/list/colossus_shotgun_shot_angles = list(12.5, 7.5, 2.5, -2.5, -7.5, -12.5) + for(var/i in colossus_shotgun_shot_angles) + shoot_projectile(null, angle_to_target + i) /mob/living/simple_animal/hostile/megafauna/colossus/proc/dir_shots(list/dirs) if(!islist(dirs)) dirs = GLOB.alldirs.Copy() - playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 200, 1, 2) + playsound(src, 'sound/magic/clockwork/invoke_general.ogg', 200, 1, 2) for(var/d in dirs) var/turf/E = get_step(src, d) shoot_projectile(E) @@ -235,9 +204,9 @@ Difficulty: Very Hard /mob/living/simple_animal/hostile/megafauna/colossus/proc/telegraph() for(var/mob/M in range(10,src)) if(M.client) - flash_color(M.client, rgb(200, 0, 0), 1) + flash_color(M.client, "#C80000", 1) shake_camera(M, 4, 3) - playsound(get_turf(src),'sound/magic/clockwork/narsie_attack.ogg', 200, 1) + playsound(src, 'sound/magic/clockwork/narsie_attack.ogg', 200, 1) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 3508c39bb2..528c33e631 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -203,7 +203,7 @@ direct_target.bullet_act(src, def_zone) qdel(src) return - if(setAngle) + if(isnum(setAngle)) Angle = setAngle var/old_pixel_x = pixel_x var/old_pixel_y = pixel_y