From cb13c1dcce8a77fd2666579e710477208b922eed Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sun, 8 May 2016 07:24:35 -0500 Subject: [PATCH 1/7] Makes drakes more hugbox --- .../simple_animal/hostile/megafauna/dragon.dm | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 0267d112d90..fd7b04a0d74 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -1,8 +1,8 @@ /mob/living/simple_animal/hostile/megafauna/dragon name = "ash drake" desc = "Guardians of the necropolis." - health = 2500 - maxHealth = 2500 + health = 2000 + maxHealth = 2000 attacktext = "chomps" attack_sound = 'sound/magic/demon_attack1.ogg' icon_state = "dragon" @@ -62,6 +62,17 @@ anchored = 1 luminosity = 2 +/obj/effect/temp/dragon_swoop + mouse_opacity = 0 + name = "certain death" + desc = "Don't just stand there, move!" + icon = 'icons/effects/96x96.dmi' + icon_state = "rune_large" + layer = MOB_LAYER - 0.1 + anchored = 1 + pixel_x = -32 + pixel_y = -32 + color = "#FF0000" /obj/effect/overlay/temp/target/ex_act() return @@ -110,21 +121,21 @@ attack_dirs = list(NORTH,WEST,SOUTH,EAST) playsound(get_turf(src),'sound/magic/Fireball.ogg', 200, 1) - spawn(0) - for(var/d in attack_dirs) + for(var/d in attack_dirs) + spawn(0) var/turf/E = get_edge_target_turf(src, d) var/range = 10 for(var/turf/open/J in getline(src,E)) if(!range) break range-- - PoolOrNew(/obj/effect/hotspot,J) J.hotspot_expose(700,50,1) for(var/mob/living/L in J) if(L != src) L.adjustFireLoss(20) L << "You're hit by the drake's fire breath!" + sleep(1) /mob/living/simple_animal/hostile/megafauna/dragon/proc/swoop_attack(fire_rain = 0) if(stat) @@ -150,9 +161,11 @@ else tturf = get_turf(src) src.loc = tturf + var/obj/effect/temp/dragon_swoop/D = new(tturf) animate(src, pixel_x = 0, pixel_z = 0, time = 10) sleep(10) - playsound(src, 'sound/effects/meteorimpact.ogg', 200, 1) + qdel(D) + playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1) for(var/mob/living/L in range(1,tturf)) if(L == src) continue From 1cb4408def8a416d088cd6218455cd8dc7ad0d2d Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sun, 8 May 2016 12:54:55 -0500 Subject: [PATCH 2/7] Removes extra lines, bad loot --- .../simple_animal/hostile/megafauna/dragon.dm | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index fd7b04a0d74..d7f1c6d04ab 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -53,17 +53,14 @@ layer = 6 dir = SOUTH pixel_z = 500 - anchored = 1 /obj/effect/overlay/temp/target icon = 'icons/mob/actions.dmi' icon_state = "sniper_zoom" layer = MOB_LAYER - 0.1 - anchored = 1 luminosity = 2 /obj/effect/temp/dragon_swoop - mouse_opacity = 0 name = "certain death" desc = "Don't just stand there, move!" icon = 'icons/effects/96x96.dmi' @@ -73,6 +70,7 @@ pixel_x = -32 pixel_y = -32 color = "#FF0000" + /obj/effect/overlay/temp/target/ex_act() return @@ -331,15 +329,11 @@ /obj/structure/closet/crate/necropolis/dragon/New() ..() - var/loot = rand(1,4) + var/loot = rand(1,3) switch(loot) if(1) - for(var/i in 1 to 10) - new /obj/item/weapon/ore/diamond(src) - new /obj/item/weapon/ore/gold(src) - if(2) new /obj/item/weapon/melee/ghost_sword(src) - if(3) + if(2) new /obj/item/weapon/dragons_blood(src) - if(4) + if(3) new /obj/item/weapon/lava_staff(src) From 98f927ac2148d3b7e2c195b8b4a97f0fe412b70d Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Mon, 9 May 2016 01:35:02 -0500 Subject: [PATCH 3/7] Player controlled swooping --- .../simple_animal/hostile/megafauna/dragon.dm | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index d7f1c6d04ab..01229a4e91e 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -1,8 +1,8 @@ /mob/living/simple_animal/hostile/megafauna/dragon name = "ash drake" desc = "Guardians of the necropolis." - health = 2000 - maxHealth = 2000 + health = 2500 + maxHealth = 2500 attacktext = "chomps" attack_sound = 'sound/magic/demon_attack1.ogg' icon_state = "dragon" @@ -28,6 +28,7 @@ var/anger_modifier = 0 var/obj/item/device/gps/internal var/swooping = 0 + var/swoop_cooldown = 0 deathmessage = "collapes into a pile of bones, it's flesh sloughing away." death_sound = 'sound/magic/demon_dies.ogg' damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) @@ -41,6 +42,13 @@ return else ..() + if(isliving(target)) + var/mob/living/L = target + if(L.stat) + L.gib() + visible_message("[src] devours [L]!") + src << "You feast on [L], restoring your health!" + L.adjustBruteLoss(-L.maxHealth) /mob/living/simple_animal/hostile/megafauna/dragon/Process_Spacemove(movement_dir = 0) return 1 @@ -90,8 +98,8 @@ anger_modifier = Clamp(((maxHealth - health)/50),0,20) ranged_cooldown = world.time + ranged_cooldown_time - if(prob(15 + anger_modifier)) - if(health < maxHealth/2 && !client) + if(prob(15 + anger_modifier) && !client) + if(health < maxHealth/2) swoop_attack(1) else fire_rain() @@ -112,7 +120,6 @@ if(prob(10)) new /obj/effect/overlay/temp/target(turf) - /mob/living/simple_animal/hostile/megafauna/dragon/proc/fire_walls() var/list/attack_dirs = list(NORTH,EAST,SOUTH,WEST) if(prob(50)) @@ -135,10 +142,14 @@ L << "You're hit by the drake's fire breath!" sleep(1) -/mob/living/simple_animal/hostile/megafauna/dragon/proc/swoop_attack(fire_rain = 0) +/mob/living/simple_animal/hostile/megafauna/dragon/proc/swoop_attack(fire_rain = 0, atom/movable/manual_target) if(stat) return - var/mob/living/swoop_target = target + var/swoop_target + if(manual_target) + swoop_target = manual_target + else + swoop_target = target stop_automated_movement = TRUE swooping = 1 icon_state = "swoop" @@ -181,6 +192,19 @@ stop_automated_movement = FALSE swooping = 0 density = 1 + swoop_cooldown = world.time + 200 + + + + +/mob/living/simple_animal/hostile/megafauna/dragon/AltClickOn(atom/movable/A) + if(!istype(A)) + return + if(swoop_cooldown >= world.time) + src << "You need to wait 20 seconds between swoop attacks!" + return + swoop_attack(1, A) + /obj/item/device/gps/internal/dragon icon_state = null @@ -239,8 +263,8 @@ /mob/living/simple_animal/hostile/megafauna/dragon/lesser name = "lesser ash drake" - maxHealth = 500 - health = 500 + maxHealth = 750 + health = 750 melee_damage_upper = 30 melee_damage_lower = 30 damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) @@ -259,21 +283,15 @@ return var/mob/living/carbon/human/H = user - var/random = rand(1,5) + var/random = rand(1,3) switch(random) if(1) - user << "The blood sears your insides! What the hell were you thinking?" - user.reagents.add_reagent("hellwater", 50) - if(2) user << "Other than tasting terrible, nothing really happens." - if(3) + if(2) user << "Your flesh begins to melt! Miraculously, you seem fine otherwise." H.set_species(/datum/species/skeleton) - if(4) - user << "The blood mixes with your own, filling your veins with a pulsing fire." - H.dna.species.coldmod = 0 - if(5) + if(3) user << "You don't feel so good..." H.ForceContractDisease(new /datum/disease/transformation/dragon(0)) playsound(user.loc,'sound/items/drink.ogg', rand(10,50), 1) From e4559ff03e33e7db28fa5978f7b400cc709c5897 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Mon, 9 May 2016 15:54:50 -0500 Subject: [PATCH 4/7] Removes redundant line --- .../modules/mob/living/simple_animal/hostile/megafauna/dragon.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 01229a4e91e..0f1310356bd 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -74,7 +74,6 @@ icon = 'icons/effects/96x96.dmi' icon_state = "rune_large" layer = MOB_LAYER - 0.1 - anchored = 1 pixel_x = -32 pixel_y = -32 color = "#FF0000" From ce293fe6da9aee1e02e2aeaa74310764148eea5a Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Thu, 12 May 2016 03:25:36 -0500 Subject: [PATCH 5/7] Dragon Fixes --- .../simple_animal/hostile/megafauna/dragon.dm | 15 +++++++++------ .../simple_animal/hostile/megafauna/megafauna.dm | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 0f1310356bd..ae457336fcd 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -12,6 +12,7 @@ icon = 'icons/mob/lavaland/dragon.dmi' faction = list("mining") speak_emote = list("roars") + luminosity = 3 armour_penetration = 40 melee_damage_lower = 40 melee_damage_upper = 40 @@ -44,11 +45,11 @@ ..() if(isliving(target)) var/mob/living/L = target - if(L.stat) + if(L.stat == DEAD) L.gib() visible_message("[src] devours [L]!") src << "You feast on [L], restoring your health!" - L.adjustBruteLoss(-L.maxHealth) + adjustBruteLoss(-L.maxHealth) /mob/living/simple_animal/hostile/megafauna/dragon/Process_Spacemove(movement_dir = 0) return 1 @@ -59,7 +60,8 @@ name = "fireball" desc = "Get out of the way!" layer = 6 - dir = SOUTH + randomdir = 0 + duration = 10 pixel_z = 500 /obj/effect/overlay/temp/target @@ -67,8 +69,9 @@ icon_state = "sniper_zoom" layer = MOB_LAYER - 0.1 luminosity = 2 + duration = 10 -/obj/effect/temp/dragon_swoop +/obj/effect/overlay/temp/dragon_swoop name = "certain death" desc = "Don't just stand there, move!" icon = 'icons/effects/96x96.dmi' @@ -77,6 +80,7 @@ pixel_x = -32 pixel_y = -32 color = "#FF0000" + duration = 10 /obj/effect/overlay/temp/target/ex_act() return @@ -169,10 +173,9 @@ else tturf = get_turf(src) src.loc = tturf - var/obj/effect/temp/dragon_swoop/D = new(tturf) + var/obj/effect/overlay/temp/dragon_swoop/D = new(tturf) animate(src, pixel_x = 0, pixel_z = 0, time = 10) sleep(10) - qdel(D) playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1) for(var/mob/living/L in range(1,tturf)) if(L == src) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 6a273d83b3e..8a846d02623 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -3,6 +3,7 @@ desc = "Attack the weak point for massive damage." health = 1000 maxHealth = 1000 + a_intent = "harm" sentience_type = SENTIENCE_BOSS environment_smash = 4 robust_searching = 1 From ec5291471da2eec7930598fd00573b90999c8052 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Thu, 12 May 2016 03:42:31 -0500 Subject: [PATCH 6/7] Removes warning --- .../modules/mob/living/simple_animal/hostile/megafauna/dragon.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index ae457336fcd..d6c6fb97e60 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -173,7 +173,6 @@ else tturf = get_turf(src) src.loc = tturf - var/obj/effect/overlay/temp/dragon_swoop/D = new(tturf) animate(src, pixel_x = 0, pixel_z = 0, time = 10) sleep(10) playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1) From eae335e28173cb2bace5efaceff31112534aaa67 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Thu, 12 May 2016 03:51:56 -0500 Subject: [PATCH 7/7] Forgot a commit --- .../modules/mob/living/simple_animal/hostile/megafauna/dragon.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index d6c6fb97e60..652bea72c7c 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -173,6 +173,7 @@ else tturf = get_turf(src) src.loc = tturf + new/obj/effect/overlay/temp/dragon_swoop(tturf) animate(src, pixel_x = 0, pixel_z = 0, time = 10) sleep(10) playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1)