mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
makes tar king more bearable (#21953)
* idont care anymore * Update jungle_status_effects.dm * Update jungle_items.dm * Update jungle_megafauna.dm * Update jungle_megafauna.dm * Update yogstation/code/modules/jungleland/jungle_items.dm Co-authored-by: Byemoh <baiomurang@gmail.com> * Update jungle_megafauna.dm --------- Co-authored-by: Byemoh <baiomurang@gmail.com>
This commit is contained in:
@@ -364,8 +364,8 @@
|
|||||||
icon_state = "slime_sling_0"
|
icon_state = "slime_sling_0"
|
||||||
|
|
||||||
/obj/item/clothing/head/yogs/tar_king_crown
|
/obj/item/clothing/head/yogs/tar_king_crown
|
||||||
name = "Crown of the Tar King"
|
name = "crown of the tar king"
|
||||||
desc = "And old and withered crown made out of bone of unknown origin, there is a vibrant pinkish crystal embedded in it, it is warm to the touch..."
|
desc = "An old and withered crown from bones of unknown origin with a vibrant pinkish crystal embedded in the central spike. It is warm to the touch."
|
||||||
icon = 'yogstation/icons/obj/jungle.dmi'
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
||||||
icon_state = "tar_king_crown"
|
icon_state = "tar_king_crown"
|
||||||
armor = list(MELEE = 80, BULLET = 40, LASER = 60, ENERGY = 50, BOMB = 80, BIO = 70, RAD = 60, FIRE = 100, ACID = 100)
|
armor = list(MELEE = 80, BULLET = 40, LASER = 60, ENERGY = 50, BOMB = 80, BIO = 70, RAD = 60, FIRE = 100, ACID = 100)
|
||||||
@@ -662,7 +662,7 @@
|
|||||||
|
|
||||||
/obj/item/gem/tarstone
|
/obj/item/gem/tarstone
|
||||||
name = "primal tarstone"
|
name = "primal tarstone"
|
||||||
desc = "An incredibly dense and tough chunk of ancient tar. Millions of microscopic runes subtly line the surface, and probably make this artifact worth thousands."
|
desc = "A dense, tough chunk of ancient tar. Millions of microscopic runes subtly line the surface."
|
||||||
icon = 'yogstation/icons/obj/jungle.dmi'
|
icon = 'yogstation/icons/obj/jungle.dmi'
|
||||||
icon_state = "targem"
|
icon_state = "targem"
|
||||||
point_value = 3000
|
point_value = 3000
|
||||||
|
|||||||
@@ -3,13 +3,12 @@
|
|||||||
#define RUNE_ATTACK "rune"
|
#define RUNE_ATTACK "rune"
|
||||||
#define TAR_ATTACK "tar"
|
#define TAR_ATTACK "tar"
|
||||||
#define TELEPORT_ATTACK "teleport"
|
#define TELEPORT_ATTACK "teleport"
|
||||||
#define SPAWN_ATTACK "spawn"
|
|
||||||
|
|
||||||
#define DIRECTION_MATRIX list("NORTH" = 0 , "EAST" = 0, "SOUTH" = 0, "WEST" = 0, "NORTHEAST" = 0 , "SOUTHEAST" = 0 , "SOUTHWEST" = 0, "NORTHWEST" = 0)
|
#define DIRECTION_MATRIX list("NORTH" = 0 , "EAST" = 0, "SOUTH" = 0, "WEST" = 0, "NORTHEAST" = 0 , "SOUTHEAST" = 0 , "SOUTHWEST" = 0, "NORTHWEST" = 0)
|
||||||
#define ATTACK_MATRIX list(SLASH_ATTACK = DIRECTION_MATRIX, RUNE_ATTACK = DIRECTION_MATRIX, IMPALE_ATTACK = DIRECTION_MATRIX)
|
#define ATTACK_MATRIX list(SLASH_ATTACK = DIRECTION_MATRIX, RUNE_ATTACK = DIRECTION_MATRIX, IMPALE_ATTACK = DIRECTION_MATRIX)
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/megafauna/tar_king
|
/mob/living/simple_animal/hostile/megafauna/tar_king
|
||||||
name = "king of tar"
|
name = "King of Tar"
|
||||||
desc = "A hunking mass of tar resembling a human, a shining gem glows from within. It yearns for the end of its agony..."
|
desc = "A hunking mass of tar resembling a human, a shining gem glows from within. It yearns for the end of its agony..."
|
||||||
health = 2000
|
health = 2000
|
||||||
maxHealth = 2000
|
maxHealth = 2000
|
||||||
@@ -20,9 +19,10 @@
|
|||||||
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
||||||
light_color = "#dd35d5"
|
light_color = "#dd35d5"
|
||||||
a_intent = INTENT_HARM
|
a_intent = INTENT_HARM
|
||||||
melee_damage_lower = 25
|
melee_damage_lower = 40
|
||||||
melee_damage_upper = 50
|
melee_damage_upper = 40
|
||||||
movement_type = GROUND
|
movement_type = GROUND
|
||||||
|
gps_name = "Murky Signal"
|
||||||
ranged = TRUE
|
ranged = TRUE
|
||||||
faction = list("tar", "boss")
|
faction = list("tar", "boss")
|
||||||
speak_emote = list("roars")
|
speak_emote = list("roars")
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
deathsound = "bodyfall"
|
deathsound = "bodyfall"
|
||||||
do_footstep = TRUE
|
do_footstep = TRUE
|
||||||
ranged_cooldown_time = 10 SECONDS
|
ranged_cooldown_time = 10 SECONDS
|
||||||
armour_penetration = 50
|
armour_penetration = 40
|
||||||
dodge_prob = 0
|
dodge_prob = 0
|
||||||
loot = list(/obj/item/clothing/head/yogs/tar_king_crown = 1, /obj/item/gem/tarstone = 1, /obj/item/demon_core = 1)
|
loot = list(/obj/item/clothing/head/yogs/tar_king_crown = 1, /obj/item/gem/tarstone = 1, /obj/item/demon_core = 1)
|
||||||
crusher_loot = list(/obj/item/crusher_trophy/jungleland/aspect_of_tar = 1,/obj/item/clothing/head/yogs/tar_king_crown = 1, /obj/item/gem/tarstone = 1, /obj/item/demon_core = 1)
|
crusher_loot = list(/obj/item/crusher_trophy/jungleland/aspect_of_tar = 1,/obj/item/clothing/head/yogs/tar_king_crown = 1, /obj/item/gem/tarstone = 1, /obj/item/demon_core = 1)
|
||||||
@@ -133,8 +133,6 @@
|
|||||||
rune_attack_chain()
|
rune_attack_chain()
|
||||||
if(TELEPORT_ATTACK)
|
if(TELEPORT_ATTACK)
|
||||||
teleport_attack_chain()
|
teleport_attack_chain()
|
||||||
if(SPAWN_ATTACK)
|
|
||||||
spawn_attack_chain()
|
|
||||||
attack_stack -= move
|
attack_stack -= move
|
||||||
Goto(target,move_to_delay,minimum_distance)
|
Goto(target,move_to_delay,minimum_distance)
|
||||||
SLEEP_CHECK_DEATH(1 SECONDS)
|
SLEEP_CHECK_DEATH(1 SECONDS)
|
||||||
@@ -189,7 +187,7 @@
|
|||||||
|
|
||||||
/mob/living/simple_animal/hostile/megafauna/tar_king/proc/forge_combo()
|
/mob/living/simple_animal/hostile/megafauna/tar_king/proc/forge_combo()
|
||||||
var/list/combo = list()
|
var/list/combo = list()
|
||||||
var/list/possible_moves = list(SLASH_ATTACK,IMPALE_ATTACK,RUNE_ATTACK,TELEPORT_ATTACK,SPAWN_ATTACK)
|
var/list/possible_moves = list(SLASH_ATTACK,IMPALE_ATTACK,RUNE_ATTACK,TELEPORT_ATTACK)
|
||||||
for(var/i = 0 ; i < 3; i++)
|
for(var/i = 0 ; i < 3; i++)
|
||||||
combo += pick_n_take(possible_moves)
|
combo += pick_n_take(possible_moves)
|
||||||
return combo
|
return combo
|
||||||
@@ -261,7 +259,7 @@
|
|||||||
SLEEP_CHECK_DEATH(8)
|
SLEEP_CHECK_DEATH(8)
|
||||||
for(var/mob/living/carbon/C in (range(2,src) - range(1,src)))
|
for(var/mob/living/carbon/C in (range(2,src) - range(1,src)))
|
||||||
var/limb_to_hit = C.get_bodypart(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
var/limb_to_hit = C.get_bodypart(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
||||||
C.apply_damage(45, BURN, limb_to_hit, C.run_armor_check(limb_to_hit, MAGIC, null, null, armour_penetration), wound_bonus = CANT_WOUND)
|
C.apply_damage(25, BURN, limb_to_hit, C.run_armor_check(limb_to_hit, MAGIC, null, null, armour_penetration), wound_bonus = CANT_WOUND)
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/megafauna/tar_king/proc/teleport_attack_chain()
|
/mob/living/simple_animal/hostile/megafauna/tar_king/proc/teleport_attack_chain()
|
||||||
new /obj/effect/tar_king/orb_in(get_turf(src),src,dir)
|
new /obj/effect/tar_king/orb_in(get_turf(src),src,dir)
|
||||||
@@ -288,21 +286,6 @@
|
|||||||
visible_message(span_colossus("Atyr!"))
|
visible_message(span_colossus("Atyr!"))
|
||||||
throw_at(target,get_dist(target,src),4, spin = FALSE)
|
throw_at(target,get_dist(target,src),4, spin = FALSE)
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/megafauna/tar_king/proc/spawn_attack_chain()
|
|
||||||
if(!GLOB.tar_pits.len)
|
|
||||||
return
|
|
||||||
visible_message(span_colossus("At-Karan!"))
|
|
||||||
var/list/spawnable = list(/mob/living/simple_animal/hostile/asteroid/hivelordbrood/tar)
|
|
||||||
for(var/TP in GLOB.tar_pits)
|
|
||||||
if(prob(50))
|
|
||||||
continue
|
|
||||||
var/obj/structure/tar_pit/pit = TP
|
|
||||||
var/picked = pick(spawnable)
|
|
||||||
var/mob/living/simple_animal/hostile/H = new picked(pit.loc)
|
|
||||||
H.GiveTarget(target)
|
|
||||||
H.friends = friends
|
|
||||||
H.faction = faction.Copy()
|
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/megafauna/tar_king/proc/process_orbitals()
|
/mob/living/simple_animal/hostile/megafauna/tar_king/proc/process_orbitals()
|
||||||
var/orbitals_shown = 3
|
var/orbitals_shown = 3
|
||||||
switch(maxHealth - health)
|
switch(maxHealth - health)
|
||||||
@@ -321,13 +304,14 @@
|
|||||||
var/ycoord = loc.y + orbital_range * sin(orbitals[i])
|
var/ycoord = loc.y + orbital_range * sin(orbitals[i])
|
||||||
var/turf/located = locate(xcoord,ycoord,loc.z)
|
var/turf/located = locate(xcoord,ycoord,loc.z)
|
||||||
var/obj/effect/better_animated_temp_visual/tar_king_chaser_impale/T = new(located, src)
|
var/obj/effect/better_animated_temp_visual/tar_king_chaser_impale/T = new(located, src)
|
||||||
T.damage = 25
|
T.damage = 10
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/megafauna/tar_king/proc/sword_hit(list/turfs)
|
/mob/living/simple_animal/hostile/megafauna/tar_king/proc/sword_hit(list/turfs)
|
||||||
for(var/turf/T as anything in turfs)
|
for(var/turf/T as anything in turfs)
|
||||||
for(var/mob/living/carbon/C in T.contents)
|
for(var/mob/living/carbon/C in T.contents)
|
||||||
var/limb_to_hit = C.get_bodypart(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
var/limb_to_hit = C.get_bodypart(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
||||||
C.apply_damage(35, BRUTE, limb_to_hit, C.run_armor_check(limb_to_hit, MELEE, null, null, armour_penetration), wound_bonus = CANT_WOUND)
|
C.apply_damage(15, BRUTE, limb_to_hit, C.run_armor_check(limb_to_hit, MELEE, null, null, armour_penetration), wound_bonus = CANT_WOUND)
|
||||||
|
|
||||||
|
|
||||||
/mob/living/simple_animal/hostile/megafauna/tar_king/proc/stage_transition()
|
/mob/living/simple_animal/hostile/megafauna/tar_king/proc/stage_transition()
|
||||||
walk(src,0)
|
walk(src,0)
|
||||||
@@ -383,7 +367,7 @@
|
|||||||
to_chat(L, span_userdanger("You're struck by a [name]!"))
|
to_chat(L, span_userdanger("You're struck by a [name]!"))
|
||||||
var/limb_to_hit = L.get_bodypart(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
var/limb_to_hit = L.get_bodypart(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG))
|
||||||
var/armor = L.run_armor_check(limb_to_hit, MELEE, "Your armor absorbs [src]!", "Your armor blocks part of [src]!", 50, "Your armor was penetrated by [src]!")
|
var/armor = L.run_armor_check(limb_to_hit, MELEE, "Your armor absorbs [src]!", "Your armor blocks part of [src]!", 50, "Your armor was penetrated by [src]!")
|
||||||
L.apply_damage(damage, BRUTE, limb_to_hit, armor)
|
L.apply_damage(damage, BRUTE, limb_to_hit, armor, wound_bonus = CANT_WOUND)
|
||||||
if(caster)
|
if(caster)
|
||||||
log_combat(caster, L, "struck with a [name]")
|
log_combat(caster, L, "struck with a [name]")
|
||||||
|
|
||||||
@@ -427,6 +411,7 @@
|
|||||||
. = pick(cardinal_copy)
|
. = pick(cardinal_copy)
|
||||||
|
|
||||||
/obj/effect/temp_visual/tar_king_chaser/proc/seek_target()
|
/obj/effect/temp_visual/tar_king_chaser/proc/seek_target()
|
||||||
|
|
||||||
if(!currently_seeking)
|
if(!currently_seeking)
|
||||||
currently_seeking = TRUE
|
currently_seeking = TRUE
|
||||||
targetturf = get_turf(target)
|
targetturf = get_turf(target)
|
||||||
@@ -458,3 +443,8 @@
|
|||||||
var/obj/effect/better_animated_temp_visual/tar_king_chaser_impale/T = new(loc, caster)
|
var/obj/effect/better_animated_temp_visual/tar_king_chaser_impale/T = new(loc, caster)
|
||||||
T.damage = damage
|
T.damage = damage
|
||||||
|
|
||||||
|
/obj/item/gps/internal/tar_king
|
||||||
|
icon_state = null
|
||||||
|
gpstag = "Murky Signal"
|
||||||
|
desc = "There's something flickering in the dark."
|
||||||
|
invisibility = 100
|
||||||
|
|||||||
Reference in New Issue
Block a user