diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm index ff92b67978..688c921a73 100644 --- a/code/datums/status_effects/gas.dm +++ b/code/datums/status_effects/gas.dm @@ -4,6 +4,7 @@ status_type = STATUS_EFFECT_UNIQUE alert_type = /obj/screen/alert/status_effect/freon var/icon/cube + var/can_melt = TRUE /obj/screen/alert/status_effect/freon name = "Frozen Solid" @@ -20,7 +21,7 @@ /datum/status_effect/freon/tick() owner.update_canmove() - if(owner && owner.bodytemperature >= 310.055) + if(can_melt && owner.bodytemperature >= 310.055) qdel(src) /datum/status_effect/freon/on_remove() @@ -29,3 +30,7 @@ owner.cut_overlay(cube) owner.bodytemperature += 100 owner.update_canmove() + +/datum/status_effect/freon/watcher + duration = 8 + can_melt = FALSE diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index c6dd8cb2eb..57c64d2350 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -131,9 +131,9 @@ has_data = TRUE /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/living/simple_animal/hostile/asteroid/basilisk/watcher = 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_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/random = 40, /mob/living/simple_animal/hostile/spawner/lavaland = 2, \ + /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) data_having_type = /turf/open/floor/plating/asteroid/airless/cave/volcanic/has_data diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 372956ce2f..89e9d6fd10 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -231,6 +231,31 @@ else 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 [bonus_value] 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 /obj/item/crusher_trophy/legion_skull name = "legion skull" @@ -281,7 +306,7 @@ playsound(L, 'sound/magic/fireball.ogg', 20, 1) 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 - L.adjustBruteLoss(bonus_value) + L.adjustFireLoss(bonus_value, forced = TRUE) /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 diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 29022da42d..5e6d489185 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -571,10 +571,10 @@ var/obj/C = loc 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!") 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!") remove_status_effect(/datum/status_effect/freon) update_canmove() @@ -974,7 +974,7 @@ fall() else if(ko || move_and_fall || (!has_legs && !ignore_legs) || chokehold) 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 if(lying) if(layer == initial(layer)) //to avoid special cases like hiding larvas. diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm index 14b8056af6..b883720ace 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm @@ -85,35 +85,70 @@ 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 +/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/random/Initialize() + . = ..() + if(prob(1)) + 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" + desc = "When raised very close to lava, some watchers adapt to the extreme heat and use lava as both a weapon and wings." + 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 + light_range = 3 + light_power = 2.5 + light_color = LIGHT_COLOR_LAVA + projectiletype = /obj/item/projectile/temp/basilisk/magmawing + 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" + 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." + icon_state = "watcher_icewing" + icon_living = "watcher_icewing" + icon_aggro = "watcher_icewing" + icon_dead = "watcher_icewing_dead" + maxHealth = 170 + health = 170 + 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 + crusher_loot = /obj/item/crusher_trophy/watcher_wing/ice_wing + crusher_drop_mod = 30 /obj/item/projectile/temp/basilisk/magmawing name = "scorching blast" - icon_state = "gaussstrong" + icon_state = "lava" + damage = 5 + damage_type = BURN + nodamage = FALSE 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 fromtendril = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index 598b6c8ff0..12388807ba 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -31,10 +31,9 @@ var/pre_attack = 0 var/pre_attack_icon = "Goliath_preattack" 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() - ..() + . = ..() handle_preattack() /mob/living/simple_animal/hostile/asteroid/goliath/proc/handle_preattack() @@ -58,8 +57,8 @@ if(!isturf(tturf)) return if(get_dist(src, target) <= 7)//Screen range check, so you can't get tentacle'd offscreen - visible_message("The [src.name] digs its tentacles under [target.name]!") - new /obj/effect/goliath_tentacle/original(tturf) + visible_message("[src] digs its tentacles under [target]!") + new /obj/effect/temp_visual/goliath_tentacle/original(tturf, src) ranged_cooldown = world.time + ranged_cooldown_time icon_state = icon_aggro pre_attack = 0 @@ -87,62 +86,106 @@ 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." +/mob/living/simple_animal/hostile/asteroid/goliath/beast/random/Initialize() + . = ..() + if(prob(1)) + 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_living = "Goliath" icon_aggro = "Goliath_alert" icon_dead = "Goliath_dead" + maxHealth = 400 + health = 400 + speed = 4 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) + 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 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" +/obj/effect/temp_visual/goliath_tentacle + name = "goliath tentacle" icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "Goliath_tentacle" - var/latched = FALSE - anchored = TRUE + icon_state = "Goliath_tentacle_spawn" + layer = BELOW_MOB_LAYER + 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)) var/turf/closed/mineral/M = loc 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() for(var/i in 1 to 3) var/spawndir = pick_n_take(directions) - var/turf/T = get_step(src,spawndir) + var/turf/T = get_step(src, spawndir) if(T) - new /obj/effect/goliath_tentacle(T) + new /obj/effect/temp_visual/goliath_tentacle(T, spawner) -/obj/effect/goliath_tentacle/proc/Trip() - for(var/mob/living/M in src.loc) - visible_message("The [src.name] grabs hold of [M.name]!") - M.Stun(100) - M.adjustBruteLoss(rand(10,15)) +/obj/effect/temp_visual/goliath_tentacle/proc/tripanim() + icon_state = "Goliath_tentacle_wiggle" + deltimer(timerid) + timerid = addtimer(CALLBACK(src, .proc/trip), 3, TIMER_STOPPABLE) + +/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("[src] grabs hold of [L]!") + L.Stun(100) + L.adjustBruteLoss(rand(10,15)) latched = TRUE if(!latched) - qdel(src) + retract() 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) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 81e675106e..100327ea72 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -110,13 +110,18 @@ del_on_death = 1 stat_attack = UNCONSCIOUS robust_searching = 1 - shiny_chance = 5 + var/dwarf_mob = FALSE 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" - real_name = name - desc = "On the rare occasion that a human with dwarfism falls to a legion, they can become infested like any other." + desc = "You can still see what was once a rather small human under the shifting mass of corruption." icon_state = "dwarf_legion" icon_living = "dwarf_legion" icon_aggro = "dwarf_legion" @@ -124,6 +129,8 @@ maxHealth = 60 health = 60 speed = 2 //faster! + crusher_drop_mod = 20 + dwarf_mob = TRUE /mob/living/simple_animal/hostile/asteroid/hivelord/legion/death(gibbed) visible_message("The skulls on [src] wail in anger as they flee from their dying host!") @@ -134,6 +141,8 @@ stored_mob = null else if(fromtendril) 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 new /obj/effect/mob_spawn/human/corpse/damaged/legioninfested(T) ..(gibbed) @@ -177,14 +186,16 @@ /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/proc/infest(mob/living/carbon/human/H) visible_message("[name] burrows into the flesh of [H]!") - 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("[L] staggers to their feet!") H.death() 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) @@ -251,6 +262,10 @@ //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() var/type = pickweight(list("Miner" = 66, "Ashwalker" = 10, "Golem" = 10,"Clown" = 10, pick(list("Shadow", "YeOlde","Operative", "Cultist")) = 4)) switch(type) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm index 3fd48c18f5..0ea88aedcf 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm @@ -20,17 +20,11 @@ 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 + var/crusher_drop_mod = 5 /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() ..() @@ -64,7 +58,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) + 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() ..(gibbed) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index a7af1daef8..3d50f03e17 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -99,6 +99,11 @@ K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating) return K +///////////////////////////////// FROZEN ///////////////////////////////////// + +/mob/living/proc/IsFrozen() + return has_status_effect(/datum/status_effect/freon) + ///////////////////////////////////// STUN ABSORPTION ///////////////////////////////////// /mob/living/proc/add_stun_absorption(key, duration, priority, message, self_message, examine_message) diff --git a/icons/mob/lavaland/lavaland_monsters.dmi b/icons/mob/lavaland/lavaland_monsters.dmi index 7d70ce4202..f072421196 100644 Binary files a/icons/mob/lavaland/lavaland_monsters.dmi and b/icons/mob/lavaland/lavaland_monsters.dmi differ diff --git a/icons/mob/lavaland/watcher.dmi b/icons/mob/lavaland/watcher.dmi index 6897ca4e98..df4bbb6182 100644 Binary files a/icons/mob/lavaland/watcher.dmi and b/icons/mob/lavaland/watcher.dmi differ diff --git a/icons/obj/lavaland/artefacts.dmi b/icons/obj/lavaland/artefacts.dmi index 9b7ed4a35f..ce3030b6c5 100644 Binary files a/icons/obj/lavaland/artefacts.dmi and b/icons/obj/lavaland/artefacts.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index def7a71bd3..74f9df85a7 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ