diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 9a9133c196..8c18225f6a 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -78,7 +78,7 @@ #define STATUS_EFFECT_CRUSHERMARK /datum/status_effect/crusher_mark //if struck with a proto-kinetic crusher, takes a ton of damage -#define STATUS_EFFECT_SAWBLEED /datum/status_effect/saw_bleed //if the bleed builds up enough, takes a ton of damage +#define STATUS_EFFECT_SAWBLEED /datum/status_effect/stacking/saw_bleed //if the bleed builds up enough, takes a ton of damage #define STATUS_EFFECT_NECKSLICE /datum/status_effect/neck_slice //Creates the flavor messages for the neck-slice diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 3094c53d3f..13ac820778 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -446,7 +446,7 @@ Turf and target are separate in case you want to teleport some distance from a t * * offset - Angle offset, 180 input would make the returned target turf be in the opposite direction */ /proc/get_ranged_target_turf_direct(atom/A, atom/target, range, offset) - var/angle = ATAN2(target.x - A.x, target.y - A.y) + var/angle = arctan(target.x - A.x, target.y - A.y) if(offset) angle += offset var/turf/T = get_turf(A) diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index b90f1e6144..456fd72a1f 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -149,6 +149,8 @@ var/list/megafauna_spawn_list /// Flora that can spawn in the tunnel, weighted list var/list/flora_spawn_list + /// Terrain that can spawn in the tunnel, weighted list. + var/list/terrain_spawn_list /// if the tunnel should keep being created var/sanity = 1 /// Cave direction to move @@ -335,6 +337,7 @@ var/spawned_terrain = FALSE if(is_mining_level(z)) spawned_flora = SpawnFlora(T) + spawned_terrain = SpawnTerrain(T) if(!spawned_flora && !spawned_terrain) // no rocks beneath mob spawners / mobs. SpawnMonster(T) T.ChangeTurf(turf_type, null, CHANGETURF_IGNORE_AIR) @@ -390,6 +393,17 @@ new randumb(T) return TRUE +/turf/open/floor/plating/asteroid/airless/cave/proc/SpawnTerrain(turf/T) + if(prob(1)) + if(istype(loc, /area/mine/explored) || istype(loc, /area/lavaland/surface/outdoors/explored)) + return + var/randumb = pickweight(terrain_spawn_list) + for(var/obj/structure/geyser/F in range(7, T)) + if(istype(F, randumb)) + return + new randumb(T) + + /turf/open/floor/plating/asteroid/snow gender = PLURAL name = "snow" diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 4dd86a847a..012d0a12e5 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -659,6 +659,7 @@ nemesis_factions = list("mining", "boss") var/transform_cooldown var/swiping = FALSE + var/bleed_stacks_per_hit = 3 total_mass = 2.75 total_mass_on = 5 @@ -701,12 +702,11 @@ user.changeNext_move(CLICK_CD_MELEE * 0.5) //when closed, it attacks very rapidly /obj/item/melee/transforming/cleaving_saw/nemesis_effects(mob/living/user, mob/living/target) - var/datum/status_effect/saw_bleed/B = target.has_status_effect(STATUS_EFFECT_SAWBLEED) + var/datum/status_effect/stacking/saw_bleed/B = target.has_status_effect(STATUS_EFFECT_SAWBLEED) if(!B) - if(!active) //This isn't in the above if-check so that the else doesn't care about active - target.apply_status_effect(STATUS_EFFECT_SAWBLEED) + target.apply_status_effect(STATUS_EFFECT_SAWBLEED,bleed_stacks_per_hit) else - B.add_bleed(B.bleed_buildup) + B.add_stacks(bleed_stacks_per_hit) /obj/item/melee/transforming/cleaving_saw/attack(mob/living/target, mob/living/carbon/human/user) if(!active || swiping || !target.density || get_turf(target) == get_turf(user)) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm index 4ba68cb13d..67ea32b7d4 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm @@ -32,7 +32,6 @@ Difficulty: Extremely Hard blood_volume = BLOOD_VOLUME_NORMAL deathmessage = "falls to the ground, decaying into plasma particles." deathsound = "bodyfall" - footstep_type = FOOTSTEP_MOB_HEAVY attack_action_types = list(/datum/action/innate/megafauna_attack/frost_orbs, /datum/action/innate/megafauna_attack/snowball_machine_gun, /datum/action/innate/megafauna_attack/ice_shotgun) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm index 4b96e724d7..89693b0ffc 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm @@ -35,7 +35,6 @@ Difficulty: Hard blood_volume = BLOOD_VOLUME_NORMAL deathmessage = "falls, shaking the ground around it" deathsound = 'sound/effects/gravhit.ogg' - footstep_type = FOOTSTEP_MOB_HEAVY attack_action_types = list(/datum/action/innate/megafauna_attack/heavy_stomp, /datum/action/innate/megafauna_attack/teleport, /datum/action/innate/megafauna_attack/disorienting_scream) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm index 7e17d97ed0..27447aab11 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm @@ -38,7 +38,6 @@ stat_attack = UNCONSCIOUS movement_type = FLYING robust_searching = TRUE - footstep_type = FOOTSTEP_MOB_CLAW /// Distance the demon will teleport from the target var/teleport_distance = 3