Makes shiny versions of lavaland monsters slightly more distinct (#30502)

* Makes shiny versions of lavaland monsters slightly more distinct

* classic

* lower drop

* tweak drops

* this is kind of absurd
This commit is contained in:
Joan Lung
2017-09-11 21:54:09 -04:00
committed by CitadelStationBot
parent a2ead1b017
commit 2dc3868949
13 changed files with 201 additions and 79 deletions

View File

@@ -4,6 +4,7 @@
status_type = STATUS_EFFECT_UNIQUE status_type = STATUS_EFFECT_UNIQUE
alert_type = /obj/screen/alert/status_effect/freon alert_type = /obj/screen/alert/status_effect/freon
var/icon/cube var/icon/cube
var/can_melt = TRUE
/obj/screen/alert/status_effect/freon /obj/screen/alert/status_effect/freon
name = "Frozen Solid" name = "Frozen Solid"
@@ -20,7 +21,7 @@
/datum/status_effect/freon/tick() /datum/status_effect/freon/tick()
owner.update_canmove() owner.update_canmove()
if(owner && owner.bodytemperature >= 310.055) if(can_melt && owner.bodytemperature >= 310.055)
qdel(src) qdel(src)
/datum/status_effect/freon/on_remove() /datum/status_effect/freon/on_remove()
@@ -29,3 +30,7 @@
owner.cut_overlay(cube) owner.cut_overlay(cube)
owner.bodytemperature += 100 owner.bodytemperature += 100
owner.update_canmove() owner.update_canmove()
/datum/status_effect/freon/watcher
duration = 8
can_melt = FALSE

View File

@@ -131,9 +131,9 @@
has_data = TRUE has_data = TRUE
/turf/open/floor/plating/asteroid/airless/cave/volcanic /turf/open/floor/plating/asteroid/airless/cave/volcanic
mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast = 50, /mob/living/simple_animal/hostile/spawner/lavaland/goliath = 3, \ mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast/random = 50, /mob/living/simple_animal/hostile/spawner/lavaland/goliath = 3, \
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 40, /mob/living/simple_animal/hostile/spawner/lavaland = 2, \ /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/random = 40, /mob/living/simple_animal/hostile/spawner/lavaland = 2, \
/mob/living/simple_animal/hostile/asteroid/hivelord/legion = 30, /mob/living/simple_animal/hostile/spawner/lavaland/legion = 3, \ /mob/living/simple_animal/hostile/asteroid/hivelord/legion/random = 30, /mob/living/simple_animal/hostile/spawner/lavaland/legion = 3, \
SPAWN_MEGAFAUNA = 6, /mob/living/simple_animal/hostile/asteroid/goldgrub = 10) SPAWN_MEGAFAUNA = 6, /mob/living/simple_animal/hostile/asteroid/goldgrub = 10)
data_having_type = /turf/open/floor/plating/asteroid/airless/cave/volcanic/has_data data_having_type = /turf/open/floor/plating/asteroid/airless/cave/volcanic/has_data

View File

@@ -231,6 +231,31 @@
else else
H.ranged_cooldown_time = bonus_value + world.time H.ranged_cooldown_time = bonus_value + world.time
//magmawing watcher
/obj/item/crusher_trophy/blaster_tubes/magma_wing
name = "magmawing watcher wing"
desc = "A still-searing wing from a magmawing watcher. Suitable as a trophy for a kinetic crusher."
icon_state = "magma_wing"
gender = NEUTER
bonus_value = 5
/obj/item/crusher_trophy/blaster_tubes/magma_wing/effect_desc()
return "mark detonation to make the next destabilizer shot deal <b>[bonus_value]</b> damage"
/obj/item/crusher_trophy/blaster_tubes/magma_wing/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user)
if(deadly_shot)
marker.name = "heated [marker.name]"
marker.icon_state = "lava"
marker.damage = bonus_value
marker.nodamage = FALSE
deadly_shot = FALSE
//icewing watcher
/obj/item/crusher_trophy/watcher_wing/ice_wing
name = "icewing watcher wing"
desc = "A carefully preserved frozen wing from an icewing watcher. Suitable as a trophy for a kinetic crusher."
icon_state = "ice_wing"
//legion //legion
/obj/item/crusher_trophy/legion_skull /obj/item/crusher_trophy/legion_skull
name = "legion skull" name = "legion skull"
@@ -281,7 +306,7 @@
playsound(L, 'sound/magic/fireball.ogg', 20, 1) playsound(L, 'sound/magic/fireball.ogg', 20, 1)
new /obj/effect/temp_visual/fire(L.loc) new /obj/effect/temp_visual/fire(L.loc)
addtimer(CALLBACK(src, .proc/pushback, L, user), 1) //no free backstabs, we push AFTER module stuff is done addtimer(CALLBACK(src, .proc/pushback, L, user), 1) //no free backstabs, we push AFTER module stuff is done
L.adjustBruteLoss(bonus_value) L.adjustFireLoss(bonus_value, forced = TRUE)
/obj/item/crusher_trophy/tail_spike/proc/pushback(mob/living/target, mob/living/user) /obj/item/crusher_trophy/tail_spike/proc/pushback(mob/living/target, mob/living/user)
if(!QDELETED(target) && !QDELETED(user) && (!target.anchored || ismegafauna(target))) //megafauna will always be pushed if(!QDELETED(target) && !QDELETED(user) && (!target.anchored || ismegafauna(target))) //megafauna will always be pushed

View File

@@ -571,10 +571,10 @@
var/obj/C = loc var/obj/C = loc
C.container_resist(src) C.container_resist(src)
else if(has_status_effect(/datum/status_effect/freon)) else if(IsFrozen())
to_chat(src, "You start breaking out of the ice cube!") to_chat(src, "You start breaking out of the ice cube!")
if(do_mob(src, src, 40)) if(do_mob(src, src, 40))
if(has_status_effect(/datum/status_effect/freon)) if(IsFrozen())
to_chat(src, "You break out of the ice cube!") to_chat(src, "You break out of the ice cube!")
remove_status_effect(/datum/status_effect/freon) remove_status_effect(/datum/status_effect/freon)
update_canmove() update_canmove()
@@ -974,7 +974,7 @@
fall() fall()
else if(ko || move_and_fall || (!has_legs && !ignore_legs) || chokehold) else if(ko || move_and_fall || (!has_legs && !ignore_legs) || chokehold)
fall(forced = 1) fall(forced = 1)
canmove = !(ko || resting || has_status_effect(STATUS_EFFECT_STUN) || has_status_effect(/datum/status_effect/freon) || chokehold || buckled || (!has_legs && !ignore_legs && !has_arms)) canmove = !(ko || resting || IsStun() || IsFrozen() || chokehold || buckled || (!has_legs && !ignore_legs && !has_arms))
density = !lying density = !lying
if(lying) if(lying)
if(layer == initial(layer)) //to avoid special cases like hiding larvas. if(layer == initial(layer)) //to avoid special cases like hiding larvas.

View File

@@ -85,35 +85,70 @@
loot = list() loot = list()
butcher_results = list(/obj/item/ore/diamond = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 1) 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() /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/random/Initialize()
. = ..()
if(prob(1))
if(prob(75)) if(prob(75))
new /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/magmawing(loc)
else
new /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/icewing(loc)
return INITIALIZE_HINT_QDEL
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/magmawing
name = "magmawing watcher" name = "magmawing watcher"
real_name = name desc = "When raised very close to lava, some watchers adapt to the extreme heat and use lava as both a weapon and wings."
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_state = "watcher_magmawing"
icon_living = "watcher_magmawing" icon_living = "watcher_magmawing"
icon_aggro = "watcher_magmawing" icon_aggro = "watcher_magmawing"
icon_dead = "watcher_magmawing_dead" icon_dead = "watcher_magmawing_dead"
maxHealth = 215 //Compensate for the lack of slowdown on projectiles with a bit of extra health maxHealth = 215 //Compensate for the lack of slowdown on projectiles with a bit of extra health
health = 215 health = 215
light_range = 3
light_power = 2.5
light_color = LIGHT_COLOR_LAVA
projectiletype = /obj/item/projectile/temp/basilisk/magmawing projectiletype = /obj/item/projectile/temp/basilisk/magmawing
else crusher_loot = /obj/item/crusher_trophy/blaster_tubes/magma_wing
crusher_drop_mod = 60
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/icewing
name = "icewing watcher" 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, they become icy and fragile but fire much stronger freezing blasts."
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_state = "watcher_icewing"
icon_living = "watcher_icewing" icon_living = "watcher_icewing"
icon_aggro = "watcher_icewing" icon_aggro = "watcher_icewing"
icon_dead = "watcher_icewing_dead" icon_dead = "watcher_icewing_dead"
maxHealth = 150 maxHealth = 170
health = 150 health = 170
ranged_cooldown_time = 20 projectiletype = /obj/item/projectile/temp/basilisk/icewing
butcher_results = list(/obj/item/ore/diamond = 5, /obj/item/stack/sheet/bone = 1) //No sinew; the wings are too fragile to be usable butcher_results = list(/obj/item/ore/diamond = 5, /obj/item/stack/sheet/bone = 1) //No sinew; the wings are too fragile to be usable
crusher_loot = /obj/item/crusher_trophy/watcher_wing/ice_wing
crusher_drop_mod = 30
/obj/item/projectile/temp/basilisk/magmawing /obj/item/projectile/temp/basilisk/magmawing
name = "scorching blast" name = "scorching blast"
icon_state = "gaussstrong" icon_state = "lava"
damage = 5
damage_type = BURN
nodamage = FALSE
temperature = 500 //Heats you up! temperature = 500 //Heats you up!
/obj/item/projectile/temp/basilisk/magmawing/on_hit(atom/target, blocked = FALSE)
. = ..()
if(.)
var/mob/living/L = target
L.adjust_fire_stacks(0.1)
L.IgniteMob()
/obj/item/projectile/temp/basilisk/icewing
damage = 5
damage_type = BURN
nodamage = FALSE
/obj/item/projectile/temp/basilisk/icewing/on_hit(atom/target, blocked = FALSE)
. = ..()
if(.)
var/mob/living/L = target
L.apply_status_effect(/datum/status_effect/freon/watcher)
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/tendril /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/tendril
fromtendril = TRUE fromtendril = TRUE

View File

@@ -31,10 +31,9 @@
var/pre_attack = 0 var/pre_attack = 0
var/pre_attack_icon = "Goliath_preattack" var/pre_attack_icon = "Goliath_preattack"
loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) loot = list(/obj/item/stack/sheet/animalhide/goliath_hide)
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)
/mob/living/simple_animal/hostile/asteroid/goliath/Life() /mob/living/simple_animal/hostile/asteroid/goliath/Life()
..() . = ..()
handle_preattack() handle_preattack()
/mob/living/simple_animal/hostile/asteroid/goliath/proc/handle_preattack() /mob/living/simple_animal/hostile/asteroid/goliath/proc/handle_preattack()
@@ -58,8 +57,8 @@
if(!isturf(tturf)) if(!isturf(tturf))
return return
if(get_dist(src, target) <= 7)//Screen range check, so you can't get tentacle'd offscreen if(get_dist(src, target) <= 7)//Screen range check, so you can't get tentacle'd offscreen
visible_message("<span class='warning'>The [src.name] digs its tentacles under [target.name]!</span>") visible_message("<span class='warning'>[src] digs its tentacles under [target]!</span>")
new /obj/effect/goliath_tentacle/original(tturf) new /obj/effect/temp_visual/goliath_tentacle/original(tturf, src)
ranged_cooldown = world.time + ranged_cooldown_time ranged_cooldown = world.time + ranged_cooldown_time
icon_state = icon_aggro icon_state = icon_aggro
pre_attack = 0 pre_attack = 0
@@ -87,62 +86,106 @@
throw_message = "does nothing to the tough hide of the" throw_message = "does nothing to the tough hide of the"
pre_attack_icon = "goliath2" pre_attack_icon = "goliath2"
crusher_loot = /obj/item/crusher_trophy/goliath_tentacle 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() loot = list()
stat_attack = UNCONSCIOUS stat_attack = UNCONSCIOUS
robust_searching = 1 robust_searching = 1
/mob/living/simple_animal/hostile/asteroid/goliath/make_shiny() /mob/living/simple_animal/hostile/asteroid/goliath/beast/random/Initialize()
name = "precursor goliath" . = ..()
real_name = name if(prob(1))
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." new /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient(loc)
return INITIALIZE_HINT_QDEL
/mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient
name = "ancient goliath"
desc = "Goliaths are biologically immortal, and rare specimens have survived for centuries. This one is clearly ancient, and its tentacles constantly churn the earth around it."
icon_state = "Goliath" icon_state = "Goliath"
icon_living = "Goliath" icon_living = "Goliath"
icon_aggro = "Goliath_alert" icon_aggro = "Goliath_alert"
icon_dead = "Goliath_dead" icon_dead = "Goliath_dead"
maxHealth = 400
health = 400
speed = 4
pre_attack_icon = "Goliath_preattack" pre_attack_icon = "Goliath_preattack"
throw_message = "does nothing to the rocky hide of the" 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 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)
crusher_drop_mod = 30
wander = FALSE
var/list/cached_tentacle_turfs
var/turf/last_location
var/tentacle_recheck_cooldown = 100
/mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/Life()
. = ..()
if(isturf(loc))
if(!LAZYLEN(cached_tentacle_turfs) || loc != last_location || tentacle_recheck_cooldown <= world.time)
LAZYCLEARLIST(cached_tentacle_turfs)
last_location = loc
tentacle_recheck_cooldown = world.time + initial(tentacle_recheck_cooldown)
for(var/turf/open/T in orange(4, loc))
LAZYADD(cached_tentacle_turfs, T)
for(var/t in cached_tentacle_turfs)
if(isopenturf(t))
if(prob(10))
new /obj/effect/temp_visual/goliath_tentacle(t, src)
else
cached_tentacle_turfs -= t
/mob/living/simple_animal/hostile/asteroid/goliath/beast/tendril /mob/living/simple_animal/hostile/asteroid/goliath/beast/tendril
fromtendril = TRUE fromtendril = TRUE
/mob/living/simple_animal/hostile/asteroid/goliath/beast/tendril/make_shiny()
return //Precursor goliaths don't come from tendrils!
//tentacles //tentacles
/obj/effect/goliath_tentacle /obj/effect/temp_visual/goliath_tentacle
name = "Goliath tentacle" name = "goliath tentacle"
icon = 'icons/mob/lavaland/lavaland_monsters.dmi' icon = 'icons/mob/lavaland/lavaland_monsters.dmi'
icon_state = "Goliath_tentacle" icon_state = "Goliath_tentacle_spawn"
var/latched = FALSE layer = BELOW_MOB_LAYER
anchored = TRUE var/mob/living/spawner
/obj/effect/goliath_tentacle/Initialize() /obj/effect/temp_visual/goliath_tentacle/Initialize(mapload, mob/living/new_spawner)
. = ..() . = ..()
if(locate(/obj/effect/temp_visual/goliath_tentacle) in loc)
return INITIALIZE_HINT_QDEL
if(!QDELETED(new_spawner))
spawner = new_spawner
if(ismineralturf(loc)) if(ismineralturf(loc))
var/turf/closed/mineral/M = loc var/turf/closed/mineral/M = loc
M.gets_drilled() M.gets_drilled()
addtimer(CALLBACK(src, .proc/Trip), 10) deltimer(timerid)
timerid = addtimer(CALLBACK(src, .proc/tripanim), 7, TIMER_STOPPABLE)
/obj/effect/goliath_tentacle/original/Initialize() /obj/effect/temp_visual/goliath_tentacle/original/Initialize(mapload, new_spawner)
. = ..() . = ..()
for(var/obj/effect/goliath_tentacle/original/O in loc)//No more GG NO RE from 2+ goliaths simultaneously tentacling you
if(O != src)
qdel(src)
var/list/directions = GLOB.cardinals.Copy() var/list/directions = GLOB.cardinals.Copy()
for(var/i in 1 to 3) for(var/i in 1 to 3)
var/spawndir = pick_n_take(directions) var/spawndir = pick_n_take(directions)
var/turf/T = get_step(src,spawndir) var/turf/T = get_step(src, spawndir)
if(T) if(T)
new /obj/effect/goliath_tentacle(T) new /obj/effect/temp_visual/goliath_tentacle(T, spawner)
/obj/effect/goliath_tentacle/proc/Trip() /obj/effect/temp_visual/goliath_tentacle/proc/tripanim()
for(var/mob/living/M in src.loc) icon_state = "Goliath_tentacle_wiggle"
visible_message("<span class='danger'>The [src.name] grabs hold of [M.name]!</span>") deltimer(timerid)
M.Stun(100) timerid = addtimer(CALLBACK(src, .proc/trip), 3, TIMER_STOPPABLE)
M.adjustBruteLoss(rand(10,15))
/obj/effect/temp_visual/goliath_tentacle/proc/trip()
var/latched = FALSE
for(var/mob/living/L in loc)
if((!QDELETED(spawner) && spawner.faction_check_mob(L)) || L.stat == DEAD)
continue
visible_message("<span class='danger'>[src] grabs hold of [L]!</span>")
L.Stun(100)
L.adjustBruteLoss(rand(10,15))
latched = TRUE latched = TRUE
if(!latched) if(!latched)
qdel(src) retract()
else else
QDEL_IN(src, 50) deltimer(timerid)
timerid = addtimer(CALLBACK(src, .proc/retract), 10, TIMER_STOPPABLE)
/obj/effect/temp_visual/goliath_tentacle/proc/retract()
icon_state = "Goliath_tentacle_retract"
deltimer(timerid)
timerid = QDEL_IN(src, 7)

View File

@@ -110,13 +110,18 @@
del_on_death = 1 del_on_death = 1
stat_attack = UNCONSCIOUS stat_attack = UNCONSCIOUS
robust_searching = 1 robust_searching = 1
shiny_chance = 5 var/dwarf_mob = FALSE
var/mob/living/carbon/human/stored_mob var/mob/living/carbon/human/stored_mob
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/make_shiny() /mob/living/simple_animal/hostile/asteroid/hivelord/legion/random/Initialize()
. = ..()
if(prob(5))
new /mob/living/simple_animal/hostile/asteroid/hivelord/legion/dwarf(loc)
return INITIALIZE_HINT_QDEL
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/dwarf
name = "dwarf legion" name = "dwarf legion"
real_name = name desc = "You can still see what was once a rather small human under the shifting mass of corruption."
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_state = "dwarf_legion"
icon_living = "dwarf_legion" icon_living = "dwarf_legion"
icon_aggro = "dwarf_legion" icon_aggro = "dwarf_legion"
@@ -124,6 +129,8 @@
maxHealth = 60 maxHealth = 60
health = 60 health = 60
speed = 2 //faster! speed = 2 //faster!
crusher_drop_mod = 20
dwarf_mob = TRUE
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/death(gibbed) /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>") visible_message("<span class='warning'>The skulls on [src] wail in anger as they flee from their dying host!</span>")
@@ -134,6 +141,8 @@
stored_mob = null stored_mob = null
else if(fromtendril) else if(fromtendril)
new /obj/effect/mob_spawn/human/corpse/charredskeleton(T) new /obj/effect/mob_spawn/human/corpse/charredskeleton(T)
else if(dwarf_mob)
new /obj/effect/mob_spawn/human/corpse/damaged/legioninfested/dwarf(T)
else else
new /obj/effect/mob_spawn/human/corpse/damaged/legioninfested(T) new /obj/effect/mob_spawn/human/corpse/damaged/legioninfested(T)
..(gibbed) ..(gibbed)
@@ -177,14 +186,16 @@
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/proc/infest(mob/living/carbon/human/H) /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/proc/infest(mob/living/carbon/human/H)
visible_message("<span class='warning'>[name] burrows into the flesh of [H]!</span>") visible_message("<span class='warning'>[name] burrows into the flesh of [H]!</span>")
var/mob/living/simple_animal/hostile/asteroid/hivelord/legion/L = new(H.loc) var/mob/living/simple_animal/hostile/asteroid/hivelord/legion/L
if(H.dna.check_mutation(DWARFISM)) //dwarf legions aren't just fluff!
L = new /mob/living/simple_animal/hostile/asteroid/hivelord/legion/dwarf(H.loc)
else
L = new(H.loc)
visible_message("<span class='warning'>[L] staggers to their feet!</span>") visible_message("<span class='warning'>[L] staggers to their feet!</span>")
H.death() H.death()
H.adjustBruteLoss(1000) H.adjustBruteLoss(1000)
L.stored_mob = H L.stored_mob = H
H.forceMove(L) H.forceMove(L)
if(H.dna.check_mutation(DWARFISM))
L.make_shiny() //dwarf legions aren't just fluff!
qdel(src) qdel(src)
//Advanced Legion is slightly tougher to kill and can raise corpses (revive other legions) //Advanced Legion is slightly tougher to kill and can raise corpses (revive other legions)
@@ -251,6 +262,10 @@
//Legion infested mobs //Legion infested mobs
/obj/effect/mob_spawn/human/corpse/damaged/legioninfested/dwarf/equip(mob/living/carbon/human/H)
. = ..()
H.dna.add_mutation(DWARFISM)
/obj/effect/mob_spawn/human/corpse/damaged/legioninfested/Initialize() /obj/effect/mob_spawn/human/corpse/damaged/legioninfested/Initialize()
var/type = pickweight(list("Miner" = 66, "Ashwalker" = 10, "Golem" = 10,"Clown" = 10, pick(list("Shadow", "YeOlde","Operative", "Cultist")) = 4)) var/type = pickweight(list("Miner" = 66, "Ashwalker" = 10, "Golem" = 10,"Clown" = 10, pick(list("Shadow", "YeOlde","Operative", "Cultist")) = 4))
switch(type) switch(type)

View File

@@ -20,17 +20,11 @@
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
mob_size = MOB_SIZE_LARGE mob_size = MOB_SIZE_LARGE
var/icon_aggro = null var/icon_aggro = null
var/shiny = FALSE //If this mob is a much rarer version of its normal self var/crusher_drop_mod = 5
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) /mob/living/simple_animal/hostile/asteroid/Initialize(mapload)
. = ..() . = ..()
apply_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) 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() /mob/living/simple_animal/hostile/asteroid/Aggro()
..() ..()
@@ -64,7 +58,7 @@
/mob/living/simple_animal/hostile/asteroid/death(gibbed) /mob/living/simple_animal/hostile/asteroid/death(gibbed)
SSblackbox.add_details("mobs_killed_mining","[src.type]") SSblackbox.add_details("mobs_killed_mining","[src.type]")
var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
if(C && crusher_loot && prob(((C.total_damage/maxHealth)) * 5) + shiny) //on average, you'll need to kill 20 creatures before getting the item if(C && crusher_loot && prob((C.total_damage/maxHealth) * crusher_drop_mod)) //on average, you'll need to kill 20 creatures before getting the item
spawn_crusher_loot() spawn_crusher_loot()
..(gibbed) ..(gibbed)

View File

@@ -99,6 +99,11 @@
K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating) K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating)
return K return K
///////////////////////////////// FROZEN /////////////////////////////////////
/mob/living/proc/IsFrozen()
return has_status_effect(/datum/status_effect/freon)
///////////////////////////////////// STUN ABSORPTION ///////////////////////////////////// ///////////////////////////////////// STUN ABSORPTION /////////////////////////////////////
/mob/living/proc/add_stun_absorption(key, duration, priority, message, self_message, examine_message) /mob/living/proc/add_stun_absorption(key, duration, priority, message, self_message, examine_message)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 111 KiB