mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 20:45:28 +01:00
[MIRROR] Icebox QoL minus features (#3459)
* Icebox QoL minus features (#56472) * Icebox QoL minus features Co-authored-by: Whoneedspacee <yougotreallyowned@gmail.com>
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
GLOBAL_LIST_EMPTY(frost_miner_prisms)
|
||||
|
||||
/*
|
||||
|
||||
Difficulty: Extremely Hard
|
||||
@@ -23,10 +25,11 @@ Difficulty: Extremely Hard
|
||||
armour_penetration = 100
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
aggro_vision_range = 18 // large vision range so combat doesn't abruptly end when someone runs a bit away
|
||||
vision_range = 18 // large vision range so combat doesn't abruptly end when someone runs a bit away
|
||||
rapid_melee = 4
|
||||
speed = 20
|
||||
move_to_delay = 20
|
||||
gps_name = "Bloodchilling Signal"
|
||||
ranged = TRUE
|
||||
crusher_loot = list(/obj/effect/decal/remains/plasma, /obj/item/crusher_trophy/ice_block_talisman)
|
||||
loot = list(/obj/effect/decal/remains/plasma)
|
||||
@@ -51,6 +54,8 @@ Difficulty: Extremely Hard
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner/Initialize()
|
||||
. = ..()
|
||||
for(var/obj/structure/frost_miner_prism/prism_to_set in GLOB.frost_miner_prisms)
|
||||
prism_to_set.set_prism_light(LIGHT_COLOR_BLUE, 5)
|
||||
AddComponent(/datum/component/knockback, 7, FALSE, TRUE)
|
||||
AddComponent(/datum/component/lifesteal, 50)
|
||||
|
||||
@@ -77,7 +82,7 @@ Difficulty: Extremely Hard
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner/OpenFire()
|
||||
check_enraged()
|
||||
projectile_speed_multiplier = 1 - enraged * 0.25
|
||||
projectile_speed_multiplier = 1 - enraged * 0.5
|
||||
SetRecoveryTime(100, 100)
|
||||
|
||||
if(client)
|
||||
@@ -129,7 +134,7 @@ Difficulty: Extremely Hard
|
||||
icon_state = "nuclear_particle"
|
||||
damage = 5
|
||||
armour_penetration = 100
|
||||
speed = 4
|
||||
speed = 3
|
||||
damage_type = BRUTE
|
||||
|
||||
/obj/projectile/ice_blast
|
||||
@@ -137,7 +142,7 @@ Difficulty: Extremely Hard
|
||||
icon_state = "ice_2"
|
||||
damage = 15
|
||||
armour_penetration = 100
|
||||
speed = 4
|
||||
speed = 3
|
||||
damage_type = BRUTE
|
||||
|
||||
/obj/projectile/ice_blast/on_hit(atom/target, blocked = FALSE)
|
||||
@@ -252,6 +257,8 @@ Difficulty: Extremely Hard
|
||||
icon_state = "demonic_miner_phase2"
|
||||
animate(src, pixel_y = pixel_y - 96, time = 8, flags = ANIMATION_END_NOW)
|
||||
spin(8, 2)
|
||||
for(var/obj/structure/frost_miner_prism/prism_to_set in GLOB.frost_miner_prisms)
|
||||
prism_to_set.set_prism_light(LIGHT_COLOR_PURPLE, 5)
|
||||
SLEEP_CHECK_DEATH(8)
|
||||
for(var/mob/living/L in viewers(src))
|
||||
shake_camera(L, 3, 2)
|
||||
@@ -265,6 +272,8 @@ Difficulty: Extremely Hard
|
||||
return
|
||||
var/turf/T = get_turf(src)
|
||||
var/loot = rand(1, 3)
|
||||
for(var/obj/structure/frost_miner_prism/prism_to_set in GLOB.frost_miner_prisms)
|
||||
prism_to_set.set_prism_light(COLOR_GRAY, 1)
|
||||
switch(loot)
|
||||
if(1)
|
||||
new /obj/item/resurrection_crystal(T)
|
||||
@@ -312,7 +321,7 @@ Difficulty: Extremely Hard
|
||||
desc = "A pair of winter boots contractually made by a devil, they cannot be taken off once put on."
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
var/on = FALSE
|
||||
var/change_turf = /turf/open/floor/plating/ice/icemoon
|
||||
var/change_turf = /turf/open/floor/plating/ice/icemoon/no_planet_atmos
|
||||
var/duration = 6 SECONDS
|
||||
|
||||
/obj/item/clothing/shoes/winterboots/ice_boots/ice_trail/Initialize()
|
||||
@@ -376,12 +385,17 @@ Difficulty: Extremely Hard
|
||||
|
||||
/datum/status_effect/ice_block_talisman
|
||||
id = "ice_block_talisman"
|
||||
duration = 40
|
||||
status_type = STATUS_EFFECT_REFRESH
|
||||
duration = 4 SECONDS
|
||||
status_type = STATUS_EFFECT_REPLACE
|
||||
alert_type = /atom/movable/screen/alert/status_effect/ice_block_talisman
|
||||
/// Stored icon overlay for the hit mob, removed when effect is removed
|
||||
var/icon/cube
|
||||
|
||||
/datum/status_effect/ice_block_talisman/on_creation(mob/living/new_owner, set_duration)
|
||||
if(isnum(set_duration))
|
||||
duration = set_duration
|
||||
return ..()
|
||||
|
||||
/atom/movable/screen/alert/status_effect/ice_block_talisman
|
||||
name = "Frozen Solid"
|
||||
desc = "You're frozen inside an ice cube, and cannot move!"
|
||||
@@ -406,3 +420,22 @@ Difficulty: Extremely Hard
|
||||
to_chat(owner, "<span class='notice'>The cube melts!</span>")
|
||||
owner.cut_overlay(cube)
|
||||
UnregisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE)
|
||||
|
||||
/obj/structure/frost_miner_prism
|
||||
name = "frost miner light prism"
|
||||
desc = "A magical crystal enhanced by a demonic presence."
|
||||
icon = 'icons/obj/slimecrossing.dmi'
|
||||
icon_state = "lightprism"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
|
||||
|
||||
/obj/structure/frost_miner_prism/Initialize(mapload)
|
||||
. = ..()
|
||||
GLOB.frost_miner_prisms |= src
|
||||
set_prism_light(LIGHT_COLOR_BLUE, 5)
|
||||
|
||||
/obj/structure/frost_miner_prism/proc/set_prism_light(new_color, new_range)
|
||||
color = new_color
|
||||
set_light_color(new_color)
|
||||
set_light(new_range)
|
||||
|
||||
@@ -276,19 +276,26 @@
|
||||
dragon_fire_line(src, turfs)
|
||||
|
||||
//fire line keeps going even if dragon is deleted
|
||||
/proc/dragon_fire_line(atom/source, list/turfs)
|
||||
/proc/dragon_fire_line(atom/source, list/turfs, frozen = FALSE)
|
||||
var/list/hit_list = list()
|
||||
for(var/turf/T in turfs)
|
||||
if(istype(T, /turf/closed))
|
||||
break
|
||||
new /obj/effect/hotspot(T)
|
||||
var/obj/effect/hotspot/drake_fire_hotspot = new /obj/effect/hotspot(T)
|
||||
if(frozen)
|
||||
drake_fire_hotspot.add_atom_colour(COLOR_BLUE_LIGHT, FIXED_COLOUR_PRIORITY)
|
||||
T.hotspot_expose(DRAKE_FIRE_TEMP,DRAKE_FIRE_EXPOSURE,1)
|
||||
for(var/mob/living/L in T.contents)
|
||||
if(L in hit_list || istype(L, source.type))
|
||||
continue
|
||||
hit_list += L
|
||||
L.adjustFireLoss(20)
|
||||
to_chat(L, "<span class='userdanger'>You're hit by [source]'s fire breath!</span>")
|
||||
if(!frozen)
|
||||
L.adjustFireLoss(20)
|
||||
to_chat(L, "<span class='userdanger'>You're hit by [source]'s fire breath!</span>")
|
||||
continue
|
||||
L.adjustFireLoss(10)
|
||||
L.apply_status_effect(/datum/status_effect/ice_block_talisman, 20)
|
||||
to_chat(L, "<span class='userdanger'>You're hit by [source]'s freezing breath!</span>")
|
||||
|
||||
// deals damage to mechs
|
||||
for(var/obj/vehicle/sealed/mecha/M in T.contents)
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
/mob/living/simple_animal/hostile/megafauna/proc/SetRecoveryTime(buffer_time, ranged_buffer_time)
|
||||
recovery_time = world.time + buffer_time
|
||||
ranged_cooldown = world.time + buffer_time
|
||||
if(ranged_buffer_time)
|
||||
if(isnum(ranged_buffer_time))
|
||||
ranged_cooldown = world.time + ranged_buffer_time
|
||||
|
||||
/// Grants medals and achievements to surrounding players
|
||||
|
||||
@@ -30,6 +30,7 @@ Difficulty: Hard
|
||||
ranged = TRUE
|
||||
pixel_x = -16
|
||||
base_pixel_x = -16
|
||||
gps_name = "Berserk Signal"
|
||||
loot = list()
|
||||
butcher_results = list()
|
||||
guaranteed_butcher_results = list(/obj/item/wendigo_blood = 1)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
projectilesound = 'sound/weapons/pierce.ogg'
|
||||
ranged = TRUE
|
||||
ranged_message = "manifests ice"
|
||||
ranged_cooldown_time = 30
|
||||
ranged_cooldown_time = 3 SECONDS
|
||||
minimum_distance = 3
|
||||
retreat_distance = 3
|
||||
maxHealth = 150
|
||||
@@ -46,20 +46,20 @@
|
||||
/obj/projectile/temp/basilisk/ice
|
||||
name = "ice blast"
|
||||
damage = 5
|
||||
speed = 4
|
||||
nodamage = FALSE
|
||||
temperature = -75
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/ice_demon/OpenFire()
|
||||
ranged_cooldown = world.time + ranged_cooldown_time
|
||||
// Sentient ice demons teleporting has been linked to server crashes
|
||||
if(client)
|
||||
return ..()
|
||||
if(teleport_distance <= 0)
|
||||
return ..()
|
||||
var/list/possible_ends = list()
|
||||
for(var/turf/T in view(teleport_distance, target.loc) - view(teleport_distance - 1, target.loc))
|
||||
if(isclosedturf(T))
|
||||
continue
|
||||
possible_ends |= T
|
||||
var/list/possible_ends = view(teleport_distance, target.loc) - view(teleport_distance - 1, target.loc)
|
||||
for(var/turf/closed/turf_to_remove in possible_ends)
|
||||
possible_ends -= turf_to_remove
|
||||
if(!possible_ends.len)
|
||||
return ..()
|
||||
var/turf/end = pick(possible_ends)
|
||||
|
||||
@@ -10,12 +10,12 @@
|
||||
friendly_verb_continuous = "stares down"
|
||||
friendly_verb_simple = "stare down"
|
||||
speak_emote = list("roars")
|
||||
speed = 30
|
||||
move_to_delay = 30
|
||||
speed = 12
|
||||
move_to_delay = 12
|
||||
ranged = TRUE
|
||||
ranged_cooldown_time = 50
|
||||
maxHealth = 350
|
||||
health = 350
|
||||
ranged_cooldown_time = 5 SECONDS
|
||||
maxHealth = 300
|
||||
health = 300
|
||||
obj_damage = 40
|
||||
armour_penetration = 20
|
||||
melee_damage_lower = 20
|
||||
@@ -23,6 +23,7 @@
|
||||
attack_verb_continuous = "chomps"
|
||||
attack_verb_simple = "chomp"
|
||||
attack_sound = 'sound/magic/demon_attack1.ogg'
|
||||
ranged_message = "breathes fire at"
|
||||
vision_range = 9
|
||||
aggro_vision_range = 9
|
||||
move_force = MOVE_FORCE_VERY_STRONG
|
||||
@@ -39,10 +40,10 @@
|
||||
/// How far the whelps fire can go
|
||||
var/fire_range = 4
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/ice_whelp/OpenFire()
|
||||
var/turf/T = get_ranged_target_turf_direct(src, target, fire_range)
|
||||
var/list/burn_turfs = getline(src, T) - get_turf(src)
|
||||
dragon_fire_line(src, burn_turfs)
|
||||
/mob/living/simple_animal/hostile/asteroid/ice_whelp/Shoot()
|
||||
var/turf/target_fire_turf = get_ranged_target_turf_direct(src, target, fire_range)
|
||||
var/list/burn_turfs = getline(src, target_fire_turf) - get_turf(src)
|
||||
dragon_fire_line(src, burn_turfs, frozen = TRUE)
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/ice_whelp/Life(delta_time = SSMOBS_DT, times_fired)
|
||||
. = ..()
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
friendly_verb_continuous = "growls at"
|
||||
friendly_verb_simple = "growl at"
|
||||
speak_emote = list("growls")
|
||||
speed = 12
|
||||
move_to_delay = 12
|
||||
speed = 8
|
||||
move_to_delay = 8
|
||||
maxHealth = 300
|
||||
health = 300
|
||||
obj_damage = 40
|
||||
@@ -28,7 +28,6 @@
|
||||
butcher_results = list(/obj/item/food/meat/slab/bear = 3, /obj/item/stack/sheet/bone = 2)
|
||||
guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 1)
|
||||
loot = list()
|
||||
crusher_loot = /obj/item/crusher_trophy/goliath_tentacle
|
||||
stat_attack = HARD_CRIT
|
||||
robust_searching = TRUE
|
||||
footstep_type = FOOTSTEP_MOB_CLAW
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
pull_force = MOVE_FORCE_WEAK
|
||||
butcher_results = list(/obj/item/food/meat/slab = 2, /obj/item/stack/sheet/sinew/wolf = 2, /obj/item/stack/sheet/bone = 2)
|
||||
loot = list()
|
||||
crusher_loot = /obj/item/crusher_trophy/watcher_wing
|
||||
stat_attack = HARD_CRIT
|
||||
robust_searching = TRUE
|
||||
footstep_type = FOOTSTEP_MOB_CLAW
|
||||
|
||||
Reference in New Issue
Block a user