mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-14 01:24:21 +01:00
Merge pull request #17477 from KorPhaeron/hugbox
Makes drakes more hugbox
This commit is contained in:
@@ -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
|
||||
@@ -28,6 +29,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 +43,13 @@
|
||||
return
|
||||
else
|
||||
..()
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
if(L.stat == DEAD)
|
||||
L.gib()
|
||||
visible_message("<span class='danger'>[src] devours [L]!</span>")
|
||||
src << "<span class='userdanger'>You feast on [L], restoring your health!</span>"
|
||||
adjustBruteLoss(-L.maxHealth)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/dragon/Process_Spacemove(movement_dir = 0)
|
||||
return 1
|
||||
@@ -51,16 +60,27 @@
|
||||
name = "fireball"
|
||||
desc = "Get out of the way!"
|
||||
layer = 6
|
||||
dir = SOUTH
|
||||
randomdir = 0
|
||||
duration = 10
|
||||
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
|
||||
duration = 10
|
||||
|
||||
/obj/effect/overlay/temp/dragon_swoop
|
||||
name = "certain death"
|
||||
desc = "Don't just stand there, move!"
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
icon_state = "rune_large"
|
||||
layer = MOB_LAYER - 0.1
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
color = "#FF0000"
|
||||
duration = 10
|
||||
|
||||
/obj/effect/overlay/temp/target/ex_act()
|
||||
return
|
||||
@@ -81,8 +101,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()
|
||||
@@ -103,33 +123,36 @@
|
||||
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))
|
||||
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 << "<span class='danger'>You're hit by the drake's fire breath!</span>"
|
||||
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"
|
||||
@@ -150,9 +173,10 @@
|
||||
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, 'sound/effects/meteorimpact.ogg', 200, 1)
|
||||
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1)
|
||||
for(var/mob/living/L in range(1,tturf))
|
||||
if(L == src)
|
||||
continue
|
||||
@@ -170,6 +194,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
|
||||
@@ -228,8 +265,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)
|
||||
@@ -248,21 +285,15 @@
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/random = rand(1,5)
|
||||
var/random = rand(1,3)
|
||||
|
||||
switch(random)
|
||||
if(1)
|
||||
user << "<span class='danger'>The blood sears your insides! What the hell were you thinking?</span>"
|
||||
user.reagents.add_reagent("hellwater", 50)
|
||||
if(2)
|
||||
user << "<span class='danger'>Other than tasting terrible, nothing really happens.</span>"
|
||||
if(3)
|
||||
if(2)
|
||||
user << "<span class='danger'>Your flesh begins to melt! Miraculously, you seem fine otherwise.</span>"
|
||||
H.set_species(/datum/species/skeleton)
|
||||
if(4)
|
||||
user << "<span class='danger'>The blood mixes with your own, filling your veins with a pulsing fire.</span>"
|
||||
H.dna.species.coldmod = 0
|
||||
if(5)
|
||||
if(3)
|
||||
user << "<span class='danger'>You don't feel so good...</span>"
|
||||
H.ForceContractDisease(new /datum/disease/transformation/dragon(0))
|
||||
playsound(user.loc,'sound/items/drink.ogg', rand(10,50), 1)
|
||||
@@ -318,15 +349,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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user