Adds "shiny" variants of lavaland mobs (#30416)

* Shiny lavaland mobs!

* Changes based on feedback
This commit is contained in:
Ashe Higgs
2017-09-06 20:14:55 -04:00
committed by CitadelStationBot
parent 3f71fdcb4e
commit dcd0fa67f0
6 changed files with 70 additions and 3 deletions
@@ -80,5 +80,35 @@
loot = list()
butcher_results = list(/obj/item/ore/diamond = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 1)
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/make_shiny()
if(prob(75))
name = "magmawing watcher"
real_name = name
desc = "When raised very close to lava, some watchers adapt to the extreme heat and change coloration. Such watchers are known as magmawings and use intense heat as their tool for hunting and defense."
icon_state = "watcher_magmawing"
icon_living = "watcher_magmawing"
icon_aggro = "watcher_magmawing"
icon_dead = "watcher_magmawing_dead"
maxHealth = 215 //Compensate for the lack of slowdown on projectiles with a bit of extra health
health = 215
projectiletype = /obj/item/projectile/temp/basilisk/magmawing
else
name = "icewing watcher"
real_name = name
desc = "Very rarely, some watchers will eke out an existence far from heat sources. In the absence of warmth, their wings will become papery and turn to an icy blue; these watchers are fragile but much quicker to fire their trademark freezing blasts."
icon_state = "watcher_icewing"
icon_living = "watcher_icewing"
icon_aggro = "watcher_icewing"
icon_dead = "watcher_icewing_dead"
maxHealth = 150
health = 150
ranged_cooldown_time = 20
butcher_results = list(/obj/item/ore/diamond = 5, /obj/item/stack/sheet/bone = 1) //No sinew; the wings are too fragile to be usable
/obj/item/projectile/temp/basilisk/magmawing
name = "scorching blast"
icon_state = "gaussstrong"
temperature = 500 //Heats you up!
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/tendril
fromtendril = TRUE
@@ -86,14 +86,29 @@
throw_message = "does nothing to the tough hide of the"
pre_attack_icon = "goliath2"
crusher_loot = /obj/item/crusher_trophy/goliath_tentacle
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/goliath = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 1, /obj/item/stack/sheet/bone = 2)
loot = list()
stat_attack = UNCONSCIOUS
robust_searching = 1
/mob/living/simple_animal/hostile/asteroid/goliath/make_shiny()
name = "precursor goliath"
real_name = name
desc = "Due to their stone hide, goliaths are biologically immortal, although future generations evolved to look much different. This goliath is likely a very early ancestor to many others here, and at least several centuries old."
icon_state = "Goliath"
icon_living = "Goliath"
icon_aggro = "Goliath_alert"
icon_dead = "Goliath_dead"
pre_attack_icon = "Goliath_preattack"
throw_message = "does nothing to the rocky hide of the"
loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) //A throwback to the asteroid days
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/goliath = 2, /obj/item/stack/sheet/bone = 2)
/mob/living/simple_animal/hostile/asteroid/goliath/beast/tendril
fromtendril = TRUE
/mob/living/simple_animal/hostile/asteroid/goliath/beast/tendril/make_shiny()
return //Precursor goliaths don't come from tendrils!
//tentacles
/obj/effect/goliath_tentacle
name = "Goliath tentacle"
@@ -110,8 +110,21 @@
del_on_death = 1
stat_attack = UNCONSCIOUS
robust_searching = 1
shiny_chance = 5
var/mob/living/carbon/human/stored_mob
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/make_shiny()
name = "dwarf legion"
real_name = name
desc = "On the rare occasion that a human with dwarfism falls to a legion, they can become infested like any other."
icon_state = "dwarf_legion"
icon_living = "dwarf_legion"
icon_aggro = "dwarf_legion"
icon_dead = "dwarf_legion"
maxHealth = 60
health = 60
speed = 2 //faster!
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/death(gibbed)
visible_message("<span class='warning'>The skulls on [src] wail in anger as they flee from their dying host!</span>")
var/turf/T = get_turf(src)
@@ -170,6 +183,8 @@
H.adjustBruteLoss(1000)
L.stored_mob = H
H.forceMove(L)
if(H.dna.check_mutation(DWARFISM))
L.make_shiny() //dwarf legions aren't just fluff!
qdel(src)
//Advanced Legion is slightly tougher to kill and can raise corpses (revive other legions)
@@ -15,15 +15,22 @@
a_intent = INTENT_HARM
var/crusher_loot
var/throw_message = "bounces off of"
var/icon_aggro = null // for swapping to when we get aggressive
var/fromtendril = FALSE
see_in_dark = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
mob_size = MOB_SIZE_LARGE
var/icon_aggro = null
var/shiny = FALSE //If this mob is a much rarer version of its normal self
var/shiny_chance = 1 //If this chance passes, the mob will somehow be different from normal ones
/mob/living/simple_animal/hostile/asteroid/Initialize(mapload)
. = ..()
apply_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
if(prob(shiny_chance))
shiny = TRUE
make_shiny()
/mob/living/simple_animal/hostile/asteroid/proc/make_shiny() //Override this on a per-mob basis
/mob/living/simple_animal/hostile/asteroid/Aggro()
..()
@@ -57,7 +64,7 @@
/mob/living/simple_animal/hostile/asteroid/death(gibbed)
SSblackbox.add_details("mobs_killed_mining","[src.type]")
var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
if(C && crusher_loot && prob((C.total_damage/maxHealth)) * 5) //on average, you'll need to kill 20 creatures before getting the item
if(C && crusher_loot && prob(((C.total_damage/maxHealth)) * 5) + shiny) //on average, you'll need to kill 20 creatures before getting the item
spawn_crusher_loot()
..(gibbed)