New Hierophant sprites (#22404)
* New Hierophant sprites * actual boss sprites: MAYBE * byond does not actually catch this error * anomaly * I'm a sucker for stupid-ass puns
@@ -1,64 +1,604 @@
|
||||
"a" = (/turf/closed/indestructible/riveted/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"b" = (/obj/effect/decal/cleanable/blood/tracks,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"c" = (/obj/effect/decal/cleanable/cobweb,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"d" = (/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"e" = (/obj/effect/gibspawner/human,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"f" = (/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"g" = (/obj/effect/light_emitter{set_cap = 3; set_luminosity = 7},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"h" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (EAST)"; icon_state = "tracks"; dir = 4},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"i" = (/obj/effect/decal/cleanable/blood/old,/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (EAST)"; icon_state = "tracks"; dir = 4},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"j" = (/obj/effect/decal/cleanable/blood/old,/obj/effect/decal/remains/human,/obj/effect/light_emitter{set_cap = 3; set_luminosity = 5},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"k" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (SOUTHWEST)"; icon_state = "tracks"; dir = 10},/obj/effect/decal/cleanable/blood,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"l" = (/obj/effect/light_emitter{set_cap = 3; set_luminosity = 5},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"m" = (/obj/effect/gibspawner/generic,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"n" = (/obj/effect/decal/cleanable/blood,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"o" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (NORTHEAST)"; icon_state = "tracks"; dir = 5},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"p" = (/obj/effect/light_emitter,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"q" = (/obj/effect/decal/cleanable/blood/old,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"r" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (NORTHWEST)"; icon_state = "tracks"; dir = 9},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"s" = (/obj/effect/decal/cleanable/blood/gibs/limb,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"t" = (/obj/effect/decal/cleanable/ash,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"u" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (SOUTHWEST)"; icon_state = "tracks"; dir = 10},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"v" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (NORTHEAST)"; icon_state = "tracks"; dir = 5},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"w" = (/obj/effect/gibspawner/human,/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (SOUTHEAST)"; icon_state = "tracks"; dir = 6},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"x" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (WEST)"; icon_state = "tracks"; dir = 8},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"y" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (WEST)"; icon_state = "tracks"; dir = 8},/obj/effect/light_emitter{set_cap = 3; set_luminosity = 7},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"z" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (NORTHWEST)"; icon_state = "tracks"; dir = 9},/obj/effect/decal/cleanable/blood,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"A" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (SOUTHEAST)"; icon_state = "tracks"; dir = 6},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"B" = (/mob/living/simple_animal/hostile/megafauna/hierophant,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"C" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (WEST)"; icon_state = "tracks"; dir = 8},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"D" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"E" = (/obj/effect/decal/cleanable/blood/gibs/up,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"F" = (/obj/effect/decal/cleanable/blood/old,/obj/effect/decal/remains/human,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"G" = (/obj/effect/decal/cleanable/blood/gibs/core,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"H" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (SOUTHWEST)"; icon_state = "tracks"; dir = 10},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"I" = (/obj/effect/gibspawner/human,/obj/effect/light_emitter{set_cap = 3; set_luminosity = 5},/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
"J" = (/obj/effect/decal/cleanable/blood/gibs/down,/turf/open/indestructible/hierophant,/area/ruin/unpowered/hierophant)
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/closed/indestructible/riveted/hierophant,
|
||||
/area/ruin/unpowered/hierophant)
|
||||
"b" = (
|
||||
/turf/open/indestructible/hierophant,
|
||||
/area/ruin/unpowered/hierophant)
|
||||
"c" = (
|
||||
/obj/effect/light_emitter{
|
||||
set_cap = 3;
|
||||
set_luminosity = 5
|
||||
},
|
||||
/turf/open/indestructible/hierophant,
|
||||
/area/ruin/unpowered/hierophant)
|
||||
"d" = (
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant,
|
||||
/turf/open/indestructible/hierophant/two,
|
||||
/area/ruin/unpowered/hierophant)
|
||||
"f" = (
|
||||
/obj/effect/light_emitter{
|
||||
set_cap = 3;
|
||||
set_luminosity = 5
|
||||
},
|
||||
/turf/open/indestructible/hierophant/two,
|
||||
/area/ruin/unpowered/hierophant)
|
||||
"e" = (
|
||||
/turf/open/indestructible/hierophant/two,
|
||||
/area/ruin/unpowered/hierophant)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaaaaaaaaaaabaaaaaaaaaaaa
|
||||
acdddddddddddddddddddddda
|
||||
adeddfddddddgdddhhhdiddda
|
||||
addjddddddddkhhddddddldda
|
||||
adddadddaaaaaaaaadddaddda
|
||||
addddmhdhddddddddddmddnda
|
||||
adddddgdddddddddddgddodda
|
||||
addddddddkdopddfdddbdddda
|
||||
adqdadddddadddaddddbaddda
|
||||
adddadddddrdddddddddaddda
|
||||
adstadddadudhhdvadhwabdda
|
||||
adddadrxxmddddduddddaddda
|
||||
xxyoazApddddBddddpddadyxC
|
||||
addbabddddddddtdddddaddda
|
||||
addbabddadDdEdddadddafdda
|
||||
adddabddddddndddddqdaddda
|
||||
adddabddddadddadddddadnda
|
||||
adqedbddsdddpddddddddddda
|
||||
addddAgddddeddddddgFdddGa
|
||||
addddmdddddHdehddxdedddda
|
||||
adddadddaaaaaaaaadddaddda
|
||||
addlddddddddrdddddAddIdda
|
||||
adddddJdddddgdddqddddddda
|
||||
adnddddddFddbdddddddnddda
|
||||
aaaaaaaaaaaabaaaaaaaaaaaa
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
e
|
||||
e
|
||||
e
|
||||
a
|
||||
e
|
||||
e
|
||||
e
|
||||
a
|
||||
e
|
||||
e
|
||||
e
|
||||
c
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
f
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
a
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
a
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
a
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
a
|
||||
c
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
e
|
||||
e
|
||||
f
|
||||
e
|
||||
e
|
||||
d
|
||||
e
|
||||
e
|
||||
f
|
||||
e
|
||||
e
|
||||
c
|
||||
c
|
||||
b
|
||||
b
|
||||
c
|
||||
a
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
a
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
a
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
a
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
a
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
f
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
e
|
||||
e
|
||||
e
|
||||
a
|
||||
e
|
||||
e
|
||||
e
|
||||
a
|
||||
e
|
||||
e
|
||||
e
|
||||
c
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
"}
|
||||
(19,1,1) = {"
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
a
|
||||
a
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
"}
|
||||
(20,1,1) = {"
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
"}
|
||||
(21,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(22,1,1) = {"
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
c
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
"}
|
||||
(23,1,1) = {"
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
b
|
||||
b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
|
||||
@@ -536,12 +536,12 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
|
||||
return 1
|
||||
|
||||
/proc/is_blocked_turf(turf/T)
|
||||
/proc/is_blocked_turf(turf/T, exclude_mobs)
|
||||
if(T.density)
|
||||
return 1
|
||||
for(var/i in T)
|
||||
var/atom/A = i
|
||||
if(A.density)
|
||||
if(A.density && (!exclude_mobs || !ismob(A)))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
|
||||
/datum/action/item_action/toggle_unfriendly_fire
|
||||
name = "Toggle Friendly Fire \[ON\]"
|
||||
desc = "Toggles if the staff causes friendly fire."
|
||||
desc = "Toggles if the club's blasts cause friendly fire."
|
||||
button_icon_state = "vortex_ff_on"
|
||||
|
||||
/datum/action/item_action/toggle_unfriendly_fire/Trigger()
|
||||
@@ -214,8 +214,8 @@
|
||||
UpdateButtonIcon()
|
||||
|
||||
/datum/action/item_action/toggle_unfriendly_fire/UpdateButtonIcon()
|
||||
if(istype(target, /obj/item/weapon/hierophant_staff))
|
||||
var/obj/item/weapon/hierophant_staff/H = target
|
||||
if(istype(target, /obj/item/weapon/hierophant_club))
|
||||
var/obj/item/weapon/hierophant_club/H = target
|
||||
if(H.friendly_fire_check)
|
||||
button_icon_state = "vortex_ff_off"
|
||||
name = "Toggle Friendly Fire \[OFF\]"
|
||||
@@ -226,12 +226,12 @@
|
||||
|
||||
/datum/action/item_action/vortex_recall
|
||||
name = "Vortex Recall"
|
||||
desc = "Recall yourself, and anyone nearby, to an attuned hierophant rune at any time.<br>If no such rune exists, will produce a rune at your location."
|
||||
desc = "Recall yourself, and anyone nearby, to an attuned hierophant beacon at any time.<br>If the beacon is still attached, will detach it."
|
||||
button_icon_state = "vortex_recall"
|
||||
|
||||
/datum/action/item_action/vortex_recall/IsAvailable()
|
||||
if(istype(target, /obj/item/weapon/hierophant_staff))
|
||||
var/obj/item/weapon/hierophant_staff/H = target
|
||||
if(istype(target, /obj/item/weapon/hierophant_club))
|
||||
var/obj/item/weapon/hierophant_club/H = target
|
||||
if(H.teleporting)
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
/datum/map_template/ruin/lavaland/hierophant
|
||||
name = "Hierophant's Arena"
|
||||
id = "hierophant"
|
||||
description = "A huge fucking bird priest awaits you in this arena."
|
||||
description = "A strange, square chunk of metal of massive size. Inside awaits only death and many, many squares."
|
||||
suffix = "lavaland_surface_hierophant.dmm"
|
||||
cost = 0
|
||||
allow_duplicates = FALSE
|
||||
|
||||
@@ -40,6 +40,9 @@
|
||||
|
||||
timerid = QDEL_IN(src, duration)
|
||||
|
||||
/obj/effect/overlay/temp/ex_act()
|
||||
return
|
||||
|
||||
/obj/effect/overlay/temp/dir_setting
|
||||
randomdir = FALSE
|
||||
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
..()
|
||||
if(smooth)
|
||||
queue_smooth(src)
|
||||
icon_state = ""
|
||||
|
||||
/turf/closed/indestructible/riveted/uranium
|
||||
icon = 'icons/turf/walls/uranium_wall.dmi'
|
||||
@@ -97,3 +96,10 @@
|
||||
icon_state = "necro"
|
||||
explosion_block = 50
|
||||
baseturf = /turf/closed/indestructible/necropolis
|
||||
|
||||
/turf/closed/indestructible/riveted/hierophant
|
||||
name = "wall"
|
||||
desc = "A wall made out of a strange metal. The squares on it pulse in a predictable pattern."
|
||||
icon = 'icons/turf/walls/hierophant_wall.dmi'
|
||||
icon_state = "wall"
|
||||
smooth = SMOOTH_TRUE
|
||||
|
||||
@@ -31,6 +31,19 @@
|
||||
if(prob(12))
|
||||
icon_state = "necro[rand(2,3)]"
|
||||
|
||||
/turf/open/indestructible/hierophant
|
||||
icon = 'icons/turf/floors/hierophant_floor.dmi'
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
baseturf = /turf/open/indestructible/hierophant
|
||||
smooth = SMOOTH_TRUE
|
||||
|
||||
/turf/open/indestructible/hierophant/New()
|
||||
..()
|
||||
if(smooth)
|
||||
queue_smooth(src)
|
||||
|
||||
/turf/open/indestructible/hierophant/two
|
||||
|
||||
|
||||
/turf/open/Initalize_Atmos(times_fired)
|
||||
excited = 0
|
||||
@@ -198,7 +211,7 @@
|
||||
if(wet == TURF_WET_PERMAFROST)
|
||||
wet = TURF_WET_ICE
|
||||
else if(wet == TURF_WET_ICE)
|
||||
wet = TURF_WET_WATER
|
||||
wet = TURF_WET_WATER
|
||||
else
|
||||
wet = TURF_DRY
|
||||
if(wet_overlay)
|
||||
|
||||
@@ -758,33 +758,41 @@
|
||||
qdel(src)
|
||||
|
||||
//Hierophant
|
||||
|
||||
/obj/item/weapon/hierophant_staff
|
||||
name = "Hierophant's staff"
|
||||
desc = "A large club with intense magic power infused into it."
|
||||
icon_state = "hierophant_staff"
|
||||
item_state = "hierophant_staff"
|
||||
icon = 'icons/obj/guns/magic.dmi'
|
||||
/obj/item/weapon/hierophant_club
|
||||
name = "hierophant club"
|
||||
desc = "The strange technology of this large club allows various nigh-magical feats. It used to beat you, but now you can set the beat."
|
||||
icon_state = "hierophant_club_ready_beacon"
|
||||
item_state = "hierophant_club_ready_beacon"
|
||||
icon = 'icons/obj/lavaland/artefacts.dmi'
|
||||
lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
|
||||
inhand_x_dimension = 64
|
||||
inhand_y_dimension = 64
|
||||
slot_flags = SLOT_BACK
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
force = 20
|
||||
hitsound = "swing_hit"
|
||||
//hitsound = 'sound/weapons/sonic_jackhammer.ogg'
|
||||
force = 15
|
||||
hitsound = 'sound/weapons/sonic_jackhammer.ogg'
|
||||
actions_types = list(/datum/action/item_action/vortex_recall, /datum/action/item_action/toggle_unfriendly_fire)
|
||||
var/cooldown_time = 20 //how long the cooldown between non-melee ranged attacks is
|
||||
var/chaser_cooldown = 101 //how long the cooldown between firing chasers at mobs is
|
||||
var/chaser_cooldown = 81 //how long the cooldown between firing chasers at mobs is
|
||||
var/chaser_timer = 0 //what our current chaser cooldown is
|
||||
var/chaser_speed = 0.8 //how fast our chasers are
|
||||
var/timer = 0 //what our current cooldown is
|
||||
var/blast_range = 3 //how long the cardinal blast's walls are
|
||||
var/obj/effect/hierophant/rune //the associated rune we teleport to
|
||||
var/blast_range = 13 //how long the cardinal blast's walls are
|
||||
var/obj/effect/hierophant/beacon //the associated beacon we teleport to
|
||||
var/teleporting = FALSE //if we ARE teleporting
|
||||
var/friendly_fire_check = FALSE //if the blasts we make will consider our faction against the faction of hit targets
|
||||
|
||||
/obj/item/weapon/hierophant_staff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
/obj/item/weapon/hierophant_club/examine(mob/user)
|
||||
..()
|
||||
user << "<span class='hierophant_warning'>The[beacon ? " beacon is not currently":"re is a beacon"] attached.</span>"
|
||||
|
||||
/obj/item/weapon/hierophant_club/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
..()
|
||||
var/turf/T = get_turf(target)
|
||||
if(!T || timer > world.time)
|
||||
return
|
||||
calculate_anger_mod(user)
|
||||
timer = world.time + CLICK_CD_MELEE //by default, melee attacks only cause melee blasts, and have an accordingly short cooldown
|
||||
if(proximity_flag)
|
||||
addtimer(src, "aoe_burst", 0, TIMER_NORMAL, T, user)
|
||||
@@ -797,77 +805,123 @@
|
||||
timer = world.time + cooldown_time
|
||||
if(isliving(target) && chaser_timer <= world.time) //living and chasers off cooldown? fire one!
|
||||
chaser_timer = world.time + chaser_cooldown
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/chaser, list(get_turf(user), user, target, 1.5, friendly_fire_check))
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/chaser, list(get_turf(user), user, target, chaser_speed, friendly_fire_check))
|
||||
add_logs(user, target, "fired a chaser at", src)
|
||||
else
|
||||
addtimer(src, "cardinal_blasts", 0, TIMER_NORMAL, T, user) //otherwise, just do cardinal blast
|
||||
add_logs(user, target, "fired cardinal blast at", src)
|
||||
else
|
||||
user << "<span class='warning'>That target is out of range!</span>" //too far away
|
||||
timer = world.time
|
||||
addtimer(src, "prepare_icon_update", 0)
|
||||
|
||||
/obj/item/weapon/hierophant_staff/ui_action_click(mob/user, action)
|
||||
/obj/item/weapon/hierophant_club/proc/calculate_anger_mod(mob/user) //we get stronger as the user loses health
|
||||
chaser_cooldown = initial(chaser_cooldown)
|
||||
cooldown_time = initial(cooldown_time)
|
||||
chaser_speed = initial(chaser_speed)
|
||||
blast_range = initial(blast_range)
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
var/health_percent = L.health / L.maxHealth
|
||||
chaser_cooldown += round(health_percent * 20) //two tenths of a second for each missing 10% of health
|
||||
cooldown_time += round(health_percent * 10) //one tenth of a second for each missing 10% of health
|
||||
chaser_speed = max(chaser_speed + health_percent, 0.5) //one tenth of a second faster for each missing 10% of health
|
||||
blast_range -= round(health_percent * 10) //one additional range for each missing 10% of health
|
||||
|
||||
/obj/item/weapon/hierophant_club/update_icon()
|
||||
icon_state = "hierophant_club[timer <= world.time ? "_ready":""][beacon ? "":"_beacon"]"
|
||||
item_state = icon_state
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_hands()
|
||||
M.update_inv_back()
|
||||
|
||||
/obj/item/weapon/hierophant_club/proc/prepare_icon_update()
|
||||
update_icon()
|
||||
sleep(timer - world.time)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/hierophant_club/ui_action_click(mob/user, action)
|
||||
if(istype(action, /datum/action/item_action/toggle_unfriendly_fire)) //toggle friendly fire...
|
||||
friendly_fire_check = !friendly_fire_check
|
||||
user << "<span class='warning'>You toggle friendly fire [friendly_fire_check ? "off":"on"]!</span>"
|
||||
return
|
||||
if(!user.is_holding(src)) //you need to hold the staff to teleport
|
||||
user << "<span class='warning'>You need to hold the staff in your hands to [rune ? "teleport with it":"create a rune"]!</span>"
|
||||
if(timer > world.time)
|
||||
return
|
||||
if(!rune)
|
||||
if(!user.is_holding(src)) //you need to hold the staff to teleport
|
||||
user << "<span class='warning'>You need to hold the club in your hands to [beacon ? "teleport with it":"detach the beacon"]!</span>"
|
||||
return
|
||||
if(!beacon)
|
||||
if(isturf(user.loc))
|
||||
user.visible_message("<span class='hierophant_warning'>[user] holds [src] carefully in front of [user.p_them()], moving it in a strange pattern...</span>", \
|
||||
"<span class='notice'>You start creating a hierophant rune to teleport to...</span>")
|
||||
user.visible_message("<span class='hierophant_warning'>[user] starts fiddling with [src]'s pommel...</span>", \
|
||||
"<span class='notice'>You start detaching the hierophant beacon...</span>")
|
||||
timer = world.time + 51
|
||||
if(do_after(user, 50, target = user))
|
||||
addtimer(src, "prepare_icon_update", 0)
|
||||
if(do_after(user, 50, target = user) && !beacon)
|
||||
var/turf/T = get_turf(user)
|
||||
playsound(T,'sound/magic/Blind.ogg', 200, 1, -4)
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/teleport, list(T, user))
|
||||
var/obj/effect/hierophant/H = new/obj/effect/hierophant(T)
|
||||
rune = H
|
||||
beacon = new/obj/effect/hierophant(T)
|
||||
user.update_action_buttons_icon()
|
||||
user.visible_message("<span class='hierophant_warning'>[user] creates a strange rune beneath [user.p_them()]!</span>", \
|
||||
"<span class='hierophant'>You create a hierophant rune, which you can teleport yourself and any allies to at any time!</span>\n\
|
||||
<span class='notice'>You can remove the rune to place a new one by striking it with the staff.</span>")
|
||||
user.visible_message("<span class='hierophant_warning'>[user] places a strange machine beneath [user.p_their()] feet!</span>", \
|
||||
"<span class='hierophant'>You detach the hierophant beacon, allowing you to teleport yourself and any allies to it at any time!</span>\n\
|
||||
<span class='notice'>You can remove the beacon to place it again by striking it with the club.</span>")
|
||||
else
|
||||
timer = world.time
|
||||
addtimer(src, "prepare_icon_update", 0)
|
||||
else
|
||||
user << "<span class='warning'>You need to be on solid ground to produce a rune!</span>"
|
||||
user << "<span class='warning'>You need to be on solid ground to detach the beacon!</span>"
|
||||
return
|
||||
if(get_dist(user, rune) <= 2) //rune too close abort
|
||||
user << "<span class='warning'>You are too close to the rune to teleport to it!</span>"
|
||||
if(get_dist(user, beacon) <= 2) //beacon too close abort
|
||||
user << "<span class='warning'>You are too close to the beacon to teleport to it!</span>"
|
||||
return
|
||||
if(is_blocked_turf(get_turf(rune)))
|
||||
user << "<span class='warning'>The rune is blocked by something, preventing teleportation!</span>"
|
||||
if(is_blocked_turf(get_turf(beacon), TRUE))
|
||||
user << "<span class='warning'>The beacon is blocked by something, preventing teleportation!</span>"
|
||||
return
|
||||
if(!isturf(user.loc))
|
||||
user << "<span class='warning'>You don't have enough space to teleport from here!</span>"
|
||||
return
|
||||
teleporting = TRUE //start channel
|
||||
user.update_action_buttons_icon()
|
||||
user.visible_message("<span class='hierophant_warning'>[user] starts to glow faintly...</span>")
|
||||
timer = world.time + 50
|
||||
if(do_after(user, 40, target = user) && rune)
|
||||
var/turf/T = get_turf(rune)
|
||||
addtimer(src, "prepare_icon_update", 0)
|
||||
beacon.icon_state = "hierophant_tele_on"
|
||||
var/obj/effect/overlay/temp/hierophant/telegraph/edge/TE1 = PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/edge, user.loc)
|
||||
var/obj/effect/overlay/temp/hierophant/telegraph/edge/TE2 = PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/edge, beacon.loc)
|
||||
if(do_after(user, 40, target = user) && user && beacon)
|
||||
var/turf/T = get_turf(beacon)
|
||||
var/turf/source = get_turf(user)
|
||||
if(is_blocked_turf(T))
|
||||
if(is_blocked_turf(T, TRUE))
|
||||
teleporting = FALSE
|
||||
user << "<span class='warning'>The rune is blocked by something, preventing teleportation!</span>"
|
||||
user << "<span class='warning'>The beacon is blocked by something, preventing teleportation!</span>"
|
||||
user.update_action_buttons_icon()
|
||||
timer = world.time
|
||||
addtimer(src, "prepare_icon_update", 0)
|
||||
beacon.icon_state = "hierophant_tele_off"
|
||||
return
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(T, user))
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(source, user))
|
||||
playsound(T,'sound/magic/blink.ogg', 200, 1)
|
||||
//playsound(T,'sound/magic/Wand_Teleport.ogg', 200, 1)
|
||||
playsound(source,'sound/magic/blink.ogg', 200, 1)
|
||||
//playsound(source,'sound/machines/AirlockOpen.ogg', 200, 1)
|
||||
if(!do_after(user, 3, target = user) || !rune) //no walking away shitlord
|
||||
playsound(T,'sound/magic/Wand_Teleport.ogg', 200, 1)
|
||||
playsound(source,'sound/machines/AirlockOpen.ogg', 200, 1)
|
||||
if(!do_after(user, 3, target = user) || !user || !beacon) //no walking away shitlord
|
||||
teleporting = FALSE
|
||||
if(user)
|
||||
user.update_action_buttons_icon()
|
||||
timer = world.time
|
||||
addtimer(src, "prepare_icon_update", 0)
|
||||
if(beacon)
|
||||
beacon.icon_state = "hierophant_tele_off"
|
||||
return
|
||||
if(is_blocked_turf(T))
|
||||
if(is_blocked_turf(T, TRUE))
|
||||
teleporting = FALSE
|
||||
user << "<span class='warning'>The rune is blocked by something, preventing teleportation!</span>"
|
||||
user << "<span class='warning'>The beacon is blocked by something, preventing teleportation!</span>"
|
||||
user.update_action_buttons_icon()
|
||||
timer = world.time
|
||||
addtimer(src, "prepare_icon_update", 0)
|
||||
beacon.icon_state = "hierophant_tele_off"
|
||||
return
|
||||
add_logs(user, rune, "teleported self from ([source.x],[source.y],[source.z]) to")
|
||||
add_logs(user, beacon, "teleported self from ([source.x],[source.y],[source.z]) to")
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/teleport, list(T, user))
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/teleport, list(source, user))
|
||||
for(var/t in RANGE_TURFS(1, T))
|
||||
@@ -879,15 +933,22 @@
|
||||
for(var/mob/living/L in range(1, source))
|
||||
addtimer(src, "teleport_mob", 0, TIMER_NORMAL, source, L, T, user) //regardless, take all mobs near us along
|
||||
sleep(6) //at this point the blasts detonate
|
||||
if(beacon)
|
||||
beacon.icon_state = "hierophant_tele_off"
|
||||
else
|
||||
qdel(TE1)
|
||||
qdel(TE2)
|
||||
timer = world.time
|
||||
addtimer(src, "prepare_icon_update", 0)
|
||||
if(beacon)
|
||||
beacon.icon_state = "hierophant_tele_off"
|
||||
teleporting = FALSE
|
||||
if(user)
|
||||
user.update_action_buttons_icon()
|
||||
|
||||
/obj/item/weapon/hierophant_staff/proc/teleport_mob(turf/source, mob/M, turf/target, mob/user)
|
||||
/obj/item/weapon/hierophant_club/proc/teleport_mob(turf/source, mob/M, turf/target, mob/user)
|
||||
var/turf/turf_to_teleport_to = get_step(target, get_dir(source, M)) //get position relative to caster
|
||||
if(!turf_to_teleport_to || is_blocked_turf(turf_to_teleport_to))
|
||||
if(!turf_to_teleport_to || is_blocked_turf(turf_to_teleport_to, TRUE))
|
||||
return
|
||||
animate(M, alpha = 0, time = 2, easing = EASE_OUT) //fade out
|
||||
sleep(1)
|
||||
@@ -909,18 +970,17 @@
|
||||
if(user != M)
|
||||
add_logs(user, M, "teleported", null, "from ([source.x],[source.y],[source.z])")
|
||||
|
||||
/obj/item/weapon/hierophant_staff/proc/cardinal_blasts(turf/T, mob/living/user) //fire cardinal cross blasts with a delay
|
||||
/obj/item/weapon/hierophant_club/proc/cardinal_blasts(turf/T, mob/living/user) //fire cardinal cross blasts with a delay
|
||||
if(!T)
|
||||
return
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/cardinal, list(T, user))
|
||||
playsound(T,'sound/magic/blink.ogg', 200, 1)
|
||||
//playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
sleep(2)
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(T, user, friendly_fire_check))
|
||||
for(var/d in cardinal)
|
||||
addtimer(src, "blast_wall", 0, TIMER_NORMAL, T, d, user)
|
||||
|
||||
/obj/item/weapon/hierophant_staff/proc/blast_wall(turf/T, dir, mob/living/user) //make a wall of blasts blast_range tiles long
|
||||
/obj/item/weapon/hierophant_club/proc/blast_wall(turf/T, dir, mob/living/user) //make a wall of blasts blast_range tiles long
|
||||
if(!T)
|
||||
return
|
||||
var/range = blast_range
|
||||
@@ -933,12 +993,11 @@
|
||||
previousturf = J
|
||||
J = get_step(previousturf, dir)
|
||||
|
||||
/obj/item/weapon/hierophant_staff/proc/aoe_burst(turf/T, mob/living/user) //make a 3x3 blast around a target
|
||||
/obj/item/weapon/hierophant_club/proc/aoe_burst(turf/T, mob/living/user) //make a 3x3 blast around a target
|
||||
if(!T)
|
||||
return
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(T, user))
|
||||
playsound(T,'sound/magic/blink.ogg', 200, 1)
|
||||
//playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
sleep(2)
|
||||
for(var/t in RANGE_TURFS(1, T))
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(t, user, friendly_fire_check))
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
The Hierophant
|
||||
|
||||
The Hierophant spawns in its arena, an area designed to make it harder to fight than it would otherwise be.
|
||||
The Hierophant spawns in its arena, which makes fighting it challenging but not impossible.
|
||||
|
||||
The text this boss speaks is ROT4, use ROT22 to decode
|
||||
|
||||
@@ -21,51 +21,53 @@ The Hierophant's attacks are as follows, and INTENSIFY at a random chance based
|
||||
If chasers are off cooldown, creates four high-speed chasers.
|
||||
- IF TARGET WAS STRUCK IN MELEE: Creates a 3x3 square of blasts under the target.
|
||||
|
||||
Cross Blasts and the AoE burst gain additional range as the Hierophant loses health, while Chasers gain additional speed.
|
||||
- IF TARGET IS OUTSIDE THE ARENA: Creates an arena around the target for 10 seconds, blinking to it if Hierophant is not in the arena.
|
||||
The arena has a 20 second cooldown, giving people a small window to get the fuck out.
|
||||
|
||||
When The Hierophant dies, it leaves behind its staff, which, while much weaker than when wielded by The Hierophant itself, is still quite effective.
|
||||
- The staff can place a teleport rune, allowing the user to teleport themself and their allies to the rune.
|
||||
Cross Blasts and the AoE burst gain additional range as Hierophant loses health, while Chasers gain additional speed.
|
||||
|
||||
When Hierophant dies, it stops trying to murder you and shrinks into a small form, which, while much weaker, is still quite effective.
|
||||
- The smaller club can place a teleport beacon, allowing the user to teleport themself and their allies to the beacon.
|
||||
|
||||
Difficulty: Hard
|
||||
|
||||
*/
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant
|
||||
name = "Hierophant"
|
||||
desc = "Stolen from Hyper Light Drifter."
|
||||
name = "hierophant"
|
||||
desc = "A massive metal club that hangs in the air as though waiting. It'll make you dance to its beat."
|
||||
health = 2500
|
||||
maxHealth = 2500
|
||||
attacktext = "clubs"
|
||||
//attack_sound = 'sound/weapons/sonic_jackhammer.ogg'
|
||||
attack_sound = "swing_hit"
|
||||
attack_sound = 'sound/weapons/sonic_jackhammer.ogg'
|
||||
icon_state = "hierophant"
|
||||
icon_living = "hierophant"
|
||||
friendly = "stares down"
|
||||
icon = 'icons/mob/lavaland/hierophant.dmi'
|
||||
icon = 'icons/mob/lavaland/hierophant_new.dmi'
|
||||
faction = list("boss") //asteroid mobs? get that shit out of my beautiful square house
|
||||
speak_emote = list("preaches")
|
||||
armour_penetration = 50
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
speed = 1
|
||||
move_to_delay = 10
|
||||
ranged = 1
|
||||
pixel_x = -16
|
||||
ranged_cooldown_time = 40
|
||||
aggro_vision_range = 23
|
||||
loot = list(/obj/item/weapon/hierophant_staff)
|
||||
aggro_vision_range = 21 //so it can see to one side of the arena to the other
|
||||
loot = list(/obj/item/weapon/hierophant_club)
|
||||
wander = FALSE
|
||||
var/burst_range = 3 //range on burst aoe
|
||||
var/beam_range = 5 //range on cross blast beams
|
||||
var/chaser_speed = 3 //how fast chasers are currently
|
||||
var/chaser_cooldown = 101 //base cooldown/cooldown var between spawning chasers
|
||||
var/major_attack_cooldown = 60 //base cooldown for major attacks
|
||||
var/arena_cooldown = 200 //base cooldown/cooldown var for creating an arena
|
||||
var/blinking = FALSE //if we're doing something that requires us to stand still and not attack
|
||||
var/obj/effect/hierophant/spawned_rune //the rune we teleport back to
|
||||
var/timeout_time = 15 //after this many Life() ticks with no target, we return to our rune
|
||||
var/did_reset = TRUE //if we timed out, returned to our rune, and healed some
|
||||
//var/list/kill_phrases = list("Wsyvgi sj irivkc xettih. Vitemvmrk...", "Irivkc wsyvgi jsyrh. Vitemvmrk...", "Jyip jsyrh. Egxmzexmrk vitemv gcgpiw...")
|
||||
//var/list/target_phrases = list("Xevkix psgexih.", "Iriqc jsyrh.", "Eguymvih xevkix.")
|
||||
var/obj/effect/hierophant/spawned_beacon //the beacon we teleport back to
|
||||
var/timeout_time = 15 //after this many Life() ticks with no target, we return to our beacon
|
||||
var/did_reset = TRUE //if we timed out, returned to our beacon, and healed some
|
||||
var/list/kill_phrases = list("Wsyvgi sj irivkc xettih. Vitemvmrk...", "Irivkc wsyvgi jsyrh. Vitemvmrk...", "Jyip jsyrh. Egxmzexmrk vitemv gcgpiw...", "Kix fiex. Liepmrk...")
|
||||
var/list/target_phrases = list("Xevkix psgexih.", "Iriqc jsyrh.", "Eguymvih xevkix.")
|
||||
medal_type = MEDAL_PREFIX
|
||||
score_type = BIRD_SCORE
|
||||
del_on_death = TRUE
|
||||
@@ -74,25 +76,25 @@ Difficulty: Hard
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/New()
|
||||
..()
|
||||
internal = new/obj/item/device/gps/internal/hierophant(src)
|
||||
spawned_rune = new(loc)
|
||||
spawned_beacon = new(loc)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/Life()
|
||||
. = ..()
|
||||
if(. && spawned_rune && !client)
|
||||
if(target || loc == spawned_rune.loc)
|
||||
if(. && spawned_beacon && !qdeleted(spawned_beacon) && !client)
|
||||
if(target || loc == spawned_beacon.loc)
|
||||
timeout_time = initial(timeout_time)
|
||||
else
|
||||
timeout_time--
|
||||
if(timeout_time <= 0 && !did_reset)
|
||||
did_reset = TRUE
|
||||
//visible_message("<span class='hierophant'>\"Vixyvrmrk xs fewi...\"</span>")
|
||||
blink(spawned_rune)
|
||||
adjustHealth(min((health - maxHealth) * 0.5, -50)) //heal for 50% of our missing health
|
||||
visible_message("<span class='hierophant_warning'>\"Vixyvrmrk xs fewi...\"</span>")
|
||||
blink(spawned_beacon)
|
||||
adjustHealth(min((health - maxHealth) * 0.5, -250)) //heal for 50% of our missing health, minimum 10% of maximum health
|
||||
wander = FALSE
|
||||
/*if(health > maxHealth * 0.9)
|
||||
if(health > maxHealth * 0.9)
|
||||
visible_message("<span class='hierophant'>\"Vitemvw gsqtpixi. Stivexmrk ex qebmqyq ijjmgmirgc.\"</span>")
|
||||
else
|
||||
visible_message("<span class='hierophant'>\"Vitemvw gsqtpixi. Stivexmsrep ijjmgmirgc gsqtvsqmwih.\"</span>")*/
|
||||
visible_message("<span class='hierophant'>\"Vitemvw gsqtpixi. Stivexmsrep ijjmgmirgc gsqtvsqmwih.\"</span>")
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/death()
|
||||
if(health > 0 || stat == DEAD)
|
||||
@@ -100,36 +102,33 @@ Difficulty: Hard
|
||||
else
|
||||
stat = DEAD
|
||||
blinking = TRUE //we do a fancy animation, release a huge burst(), and leave our staff.
|
||||
animate(src, alpha = 0, color = "660099", time = 20, easing = EASE_OUT)
|
||||
addtimer(src, "update_atom_colour", 20)
|
||||
burst_range = 10
|
||||
//visible_message("<span class='hierophant'>\"Mrmxmexmrk wipj-hiwxvygx wiuyirgi...\"</span>")
|
||||
visible_message("<span class='hierophant_warning'>[src] disappears in a massive burst of magic, leaving only its staff.</span>")
|
||||
visible_message("<span class='hierophant'>\"Mrmxmexmrk wipj-hiwxvygx wiuyirgi...\"</span>")
|
||||
visible_message("<span class='hierophant_warning'>[src] shrinks, releasing a massive burst of energy!</span>")
|
||||
burst(get_turf(src))
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/Destroy()
|
||||
qdel(spawned_rune)
|
||||
qdel(spawned_beacon)
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/devour(mob/living/L)
|
||||
for(var/obj/item/W in L)
|
||||
if(!L.unEquip(W))
|
||||
qdel(W)
|
||||
/*visible_message(
|
||||
"<span class='hierophant'>\"[pick(kill_phrases)]\"</span>\n<span class='hierophant_warning'>[src] annihilates [L]!</span>",
|
||||
"<span class='userdanger'>You annihilate [L], restoring your health!</span>")*/
|
||||
visible_message(
|
||||
"<span class='hierophant'>\"Caw.\"</span>\n<span class='hierophant_warning'>[src] annihilates [L]!</span>",
|
||||
"<span class='hierophant_warning'>\"[pick(kill_phrases)]\"\n[src] annihilates [L]!</span>",
|
||||
"<span class='userdanger'>You annihilate [L], restoring your health!</span>")
|
||||
adjustHealth(-L.maxHealth*0.5)
|
||||
L.dust()
|
||||
|
||||
/*/mob/living/simple_animal/hostile/megafauna/hierophant/GiveTarget(new_target)
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/GiveTarget(new_target)
|
||||
var/targets_the_same = (new_target == target)
|
||||
. = ..()
|
||||
if(. && target && !targets_the_same)
|
||||
visible_message("<span class='hierophant'>\"[pick(target_phrases)]\"</span>")*/
|
||||
visible_message("<span class='hierophant_warning'>\"[pick(target_phrases)]\"</span>")
|
||||
if(spawned_beacon && loc == spawned_beacon.loc && did_reset)
|
||||
arena_trap(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/adjustHealth(amount, updating_health = TRUE, forced = FALSE)
|
||||
. = ..()
|
||||
@@ -149,9 +148,14 @@ Difficulty: Hard
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/Move()
|
||||
if(!blinking)
|
||||
/*if(!stat)
|
||||
playsound(loc, 'sound/mecha/mechmove04.ogg', 150, 1, -4)*/
|
||||
..()
|
||||
var/prevloc = loc
|
||||
. = ..()
|
||||
if(!stat && .)
|
||||
var/obj/effect/overlay/temp/hierophant/squares/HS = PoolOrNew(/obj/effect/overlay/temp/hierophant/squares, prevloc)
|
||||
HS.dir = dir
|
||||
playsound(loc, 'sound/mecha/mechmove04.ogg', 150, 1, -4)
|
||||
if(target)
|
||||
arena_trap(target)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/Goto(target, delay, minimum_distance)
|
||||
wander = TRUE
|
||||
@@ -177,6 +181,8 @@ Difficulty: Hard
|
||||
chaser_speed = max(1, (3 - anger_modifier * 0.04) + target_is_slow * 0.5)
|
||||
if(blinking)
|
||||
return
|
||||
|
||||
arena_trap(target)
|
||||
ranged_cooldown = world.time + max(5, ranged_cooldown_time - anger_modifier * 0.75) //scale cooldown lower with high anger.
|
||||
|
||||
if(prob(anger_modifier * 0.75)) //major ranged attack
|
||||
@@ -197,7 +203,7 @@ Difficulty: Hard
|
||||
switch(pick(possibilities))
|
||||
if("blink_spam") //blink either once or multiple times.
|
||||
if(health < maxHealth * 0.5 && !target_is_slow && blink_counter > 1)
|
||||
//visible_message("<span class='hierophant'>\"Mx ampp rsx iwgeti.\"</span>")
|
||||
visible_message("<span class='hierophant'>\"Mx ampp rsx iwgeti.\"</span>")
|
||||
var/oldcolor = color
|
||||
animate(src, color = "#660099", time = 6)
|
||||
while(health && target && blink_counter)
|
||||
@@ -215,13 +221,13 @@ Difficulty: Hard
|
||||
else
|
||||
blink(target)
|
||||
if("cross_blast_spam") //fire a lot of cross blasts at a target.
|
||||
//visible_message("<span class='hierophant'>\"Piezi mx rsalivi xs vyr.\"</span>")
|
||||
visible_message("<span class='hierophant'>\"Piezi mx rsalivi xs vyr.\"</span>")
|
||||
blinking = TRUE
|
||||
var/oldcolor = color
|
||||
animate(src, color = "#660099", time = 6)
|
||||
while(health && target && cross_counter)
|
||||
cross_counter--
|
||||
var/delay = 6
|
||||
var/delay = 7
|
||||
if(prob(60))
|
||||
addtimer(src, "cardinal_blasts", 0, TIMER_NORMAL, target)
|
||||
else
|
||||
@@ -233,7 +239,7 @@ Difficulty: Hard
|
||||
sleep(8)
|
||||
blinking = FALSE
|
||||
if("chaser_swarm") //fire four fucking chasers at a target and their friends.
|
||||
//visible_message("<span class='hierophant'>\"Mx gerrsx lmhi.\"</span>")
|
||||
visible_message("<span class='hierophant'>\"Mx gerrsx lmhi.\"</span>")
|
||||
blinking = TRUE
|
||||
var/oldcolor = color
|
||||
animate(src, color = "#660099", time = 10)
|
||||
@@ -243,7 +249,7 @@ Difficulty: Hard
|
||||
var/mob/living/pickedtarget = pick(targets)
|
||||
if(targets.len > 4)
|
||||
pickedtarget = pick_n_take(targets)
|
||||
if(pickedtarget.stat == DEAD)
|
||||
if(!istype(pickedtarget) || pickedtarget.stat == DEAD)
|
||||
pickedtarget = target
|
||||
var/obj/effect/overlay/temp/hierophant/chaser/C = PoolOrNew(/obj/effect/overlay/temp/hierophant/chaser, list(loc, src, pickedtarget, chaser_speed, FALSE))
|
||||
C.moving = 3
|
||||
@@ -289,8 +295,7 @@ Difficulty: Hard
|
||||
if(!T)
|
||||
return
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/diagonal, list(T, src))
|
||||
playsound(T,'sound/magic/blink.ogg', 200, 1)
|
||||
//playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
sleep(2)
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(T, src, FALSE))
|
||||
for(var/d in diagonals)
|
||||
@@ -301,8 +306,7 @@ Difficulty: Hard
|
||||
if(!T)
|
||||
return
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/cardinal, list(T, src))
|
||||
playsound(T,'sound/magic/blink.ogg', 200, 1)
|
||||
//playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
sleep(2)
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(T, src, FALSE))
|
||||
for(var/d in cardinal)
|
||||
@@ -313,21 +317,46 @@ Difficulty: Hard
|
||||
if(!T)
|
||||
return
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(T, src))
|
||||
playsound(T,'sound/magic/blink.ogg', 200, 1)
|
||||
//playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
sleep(2)
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(T, src, FALSE))
|
||||
for(var/d in alldirs)
|
||||
addtimer(src, "blast_wall", 0, TIMER_NORMAL, T, d)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/blast_wall(turf/T, dir) //make a wall of blasts beam_range tiles long
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/blast_wall(turf/T, set_dir) //make a wall of blasts beam_range tiles long
|
||||
var/range = beam_range
|
||||
var/turf/previousturf = T
|
||||
var/turf/J = get_step(previousturf, dir)
|
||||
var/turf/J = get_step(previousturf, set_dir)
|
||||
for(var/i in 1 to range)
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(J, src, FALSE))
|
||||
previousturf = J
|
||||
J = get_step(previousturf, dir)
|
||||
J = get_step(previousturf, set_dir)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/arena_trap(mob/victim) //trap a target in an arena
|
||||
var/turf/T = get_turf(victim)
|
||||
if(!istype(victim) || victim.stat == DEAD || !T || arena_cooldown > world.time)
|
||||
return
|
||||
if((istype(get_area(T), /area/ruin/unpowered/hierophant) || istype(get_area(src), /area/ruin/unpowered/hierophant)) && victim != src)
|
||||
return
|
||||
arena_cooldown = world.time + initial(arena_cooldown)
|
||||
for(var/d in cardinal)
|
||||
addtimer(src, "arena_squares", 0, TIMER_NORMAL, T, d)
|
||||
for(var/t in RANGE_TURFS(11, T))
|
||||
if(t && get_dist(t, T) == 11)
|
||||
new /obj/effect/overlay/temp/hierophant/wall(t)
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(t, src, FALSE))
|
||||
if(get_dist(src, T) >= 11) //hey you're out of range I need to get closer to you!
|
||||
addtimer(src, "blink", 0, TIMER_NORMAL, T)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/arena_squares(turf/T, set_dir) //make a fancy effect extending from the arena target
|
||||
var/turf/previousturf = T
|
||||
var/turf/J = get_step(previousturf, set_dir)
|
||||
for(var/i in 1 to 10)
|
||||
var/obj/effect/overlay/temp/hierophant/squares/HS = PoolOrNew(/obj/effect/overlay/temp/hierophant/squares, J)
|
||||
HS.dir = set_dir
|
||||
previousturf = J
|
||||
J = get_step(previousturf, set_dir)
|
||||
sleep(0.5)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/blink(mob/victim) //blink to a target
|
||||
if(blinking || !victim)
|
||||
@@ -336,10 +365,8 @@ Difficulty: Hard
|
||||
var/turf/source = get_turf(src)
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(T, src))
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(source, src))
|
||||
playsound(T,'sound/magic/blink.ogg', 200, 1)
|
||||
//playsound(T,'sound/magic/Wand_Teleport.ogg', 200, 1)
|
||||
playsound(source,'sound/magic/blink.ogg', 200, 1)
|
||||
//playsound(source,'sound/machines/AirlockOpen.ogg', 200, 1)
|
||||
playsound(T,'sound/magic/Wand_Teleport.ogg', 200, 1)
|
||||
playsound(source,'sound/machines/AirlockOpen.ogg', 200, 1)
|
||||
blinking = TRUE
|
||||
sleep(2) //short delay before we start...
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/teleport, list(T, src))
|
||||
@@ -371,15 +398,13 @@ Difficulty: Hard
|
||||
if(!T)
|
||||
return
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph, list(T, src))
|
||||
playsound(T,'sound/magic/blink.ogg', 200, 1)
|
||||
//playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
playsound(T,'sound/effects/bin_close.ogg', 200, 1)
|
||||
sleep(2)
|
||||
for(var/t in RANGE_TURFS(1, T))
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(t, src, FALSE))
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/burst(turf/original) //release a wave of blasts
|
||||
playsound(original,'sound/magic/blink.ogg', 200, 1)
|
||||
//playsound(original,'sound/machines/AirlockOpen.ogg', 200, 1)
|
||||
playsound(original,'sound/machines/AirlockOpen.ogg', 200, 1)
|
||||
var/last_dist = 0
|
||||
for(var/t in spiral_range_turfs(burst_range, original))
|
||||
var/turf/T = t
|
||||
@@ -388,7 +413,7 @@ Difficulty: Hard
|
||||
var/dist = get_dist(original, T)
|
||||
if(dist > last_dist)
|
||||
last_dist = dist
|
||||
sleep(1 + (burst_range - last_dist) * 0.5) //gets faster as it gets further out
|
||||
sleep(1 + min(burst_range - last_dist, 12) * 0.5) //gets faster as it gets further out
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/blast, list(T, src, FALSE))
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/AltClickOn(atom/A) //player control handler(don't give this to a player holy fuck)
|
||||
@@ -398,6 +423,7 @@ Difficulty: Hard
|
||||
|
||||
//Hierophant overlays
|
||||
/obj/effect/overlay/temp/hierophant
|
||||
name = "vortex energy"
|
||||
layer = BELOW_MOB_LAYER
|
||||
var/mob/living/caster //who made this, anyway
|
||||
|
||||
@@ -406,6 +432,41 @@ Difficulty: Hard
|
||||
if(new_caster)
|
||||
caster = new_caster
|
||||
|
||||
/obj/effect/overlay/temp/hierophant/squares
|
||||
icon_state = "hierophant_squares"
|
||||
duration = 3
|
||||
luminosity = 1
|
||||
randomdir = FALSE
|
||||
|
||||
/obj/effect/overlay/temp/hierophant/squares/New(loc, new_caster)
|
||||
..()
|
||||
if(ismineralturf(loc))
|
||||
var/turf/closed/mineral/M = loc
|
||||
M.gets_drilled(caster)
|
||||
|
||||
/obj/effect/overlay/temp/hierophant/wall //smoothing and pooling are not friends. TODO: figure this out
|
||||
name = "vortex wall"
|
||||
icon = 'icons/turf/walls/hierophant_wall_temp.dmi'
|
||||
icon_state = "wall"
|
||||
luminosity = 1
|
||||
duration = 100
|
||||
smooth = SMOOTH_TRUE
|
||||
|
||||
/obj/effect/overlay/temp/hierophant/wall/New(loc, new_caster)
|
||||
..()
|
||||
queue_smooth_neighbors(src)
|
||||
queue_smooth(src)
|
||||
|
||||
/obj/effect/overlay/temp/hierophant/wall/Destroy()
|
||||
queue_smooth_neighbors(src)
|
||||
..()
|
||||
return QDEL_HINT_QUEUE
|
||||
|
||||
/obj/effect/overlay/temp/hierophant/wall/CanPass(atom/movable/mover, turf/target, height = 0)
|
||||
if(mover == caster)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/effect/overlay/temp/hierophant/chaser //a hierophant's chaser. follows target around, moving and producing a blast every speed deciseconds.
|
||||
duration = 98
|
||||
var/mob/living/target //what it's following
|
||||
@@ -483,6 +544,10 @@ Difficulty: Hard
|
||||
icon_state = "hierophant_telegraph_teleport"
|
||||
duration = 9
|
||||
|
||||
/obj/effect/overlay/temp/hierophant/telegraph/edge
|
||||
icon_state = "hierophant_telegraph_edge"
|
||||
duration = 40
|
||||
|
||||
/obj/effect/overlay/temp/hierophant/blast
|
||||
icon_state = "hierophant_blast"
|
||||
name = "vortex blast"
|
||||
@@ -545,34 +610,40 @@ Difficulty: Hard
|
||||
M.take_damage(damage, BURN, 0, 0)
|
||||
|
||||
/obj/effect/hierophant
|
||||
name = "hierophant rune"
|
||||
desc = "A powerful magic mark allowing whomever attunes themself to it to return to it at will."
|
||||
icon = 'icons/obj/rune.dmi'
|
||||
icon_state = "hierophant"
|
||||
name = "hierophant beacon"
|
||||
desc = "A strange beacon, allowing mass teleportation for those able to use it."
|
||||
icon = 'icons/obj/lavaland/artefacts.dmi'
|
||||
icon_state = "hierophant_tele_off"
|
||||
luminosity = 2
|
||||
layer = LOW_OBJ_LAYER
|
||||
anchored = TRUE
|
||||
color = "#CC00FF"
|
||||
|
||||
/obj/effect/hierophant/ex_act()
|
||||
return
|
||||
|
||||
/obj/effect/hierophant/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/hierophant_staff))
|
||||
var/obj/item/weapon/hierophant_staff/H = I
|
||||
if(H.rune == src)
|
||||
user << "<span class='notice'>You start removing your hierophant rune...</span>"
|
||||
if(istype(I, /obj/item/weapon/hierophant_club))
|
||||
var/obj/item/weapon/hierophant_club/H = I
|
||||
if(H.timer > world.time)
|
||||
return
|
||||
if(H.beacon == src)
|
||||
user << "<span class='notice'>You start removing your hierophant beacon...</span>"
|
||||
H.timer = world.time + 51
|
||||
addtimer(H, "prepare_icon_update", 0)
|
||||
if(do_after(user, 50, target = src))
|
||||
playsound(src,'sound/magic/Blind.ogg', 200, 1, -4)
|
||||
PoolOrNew(/obj/effect/overlay/temp/hierophant/telegraph/teleport, list(get_turf(src), user))
|
||||
user << "<span class='hierophant_warning'>You touch the rune with the staff, dispelling it!</span>"
|
||||
H.rune = null
|
||||
user << "<span class='hierophant_warning'>You collect [src], reattaching it to the club!</span>"
|
||||
H.beacon = null
|
||||
user.update_action_buttons_icon()
|
||||
qdel(src)
|
||||
else
|
||||
H.timer = world.time
|
||||
addtimer(H, "prepare_icon_update", 0)
|
||||
else
|
||||
user << "<span class='hierophant_warning'>You touch the rune with the staff, but nothing happens.</span>"
|
||||
|
||||
user << "<span class='hierophant_warning'>You touch the beacon with the club, but nothing happens.</span>"
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/device/gps/internal/hierophant
|
||||
icon_state = null
|
||||
@@ -580,21 +651,4 @@ Difficulty: Hard
|
||||
desc = "Heed its words."
|
||||
invisibility = 100
|
||||
|
||||
/turf/open/indestructible/hierophant
|
||||
icon_state = "hierophant1"
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
desc = "A floor with a square pattern. It's faintly cool to the touch."
|
||||
|
||||
/turf/open/indestructible/hierophant/New()
|
||||
..()
|
||||
if(prob(50))
|
||||
icon_state = "hierophant2"
|
||||
|
||||
/turf/closed/indestructible/riveted/hierophant
|
||||
name = "wall"
|
||||
desc = "A wall made out of smooth, cold stone."
|
||||
icon = 'icons/turf/walls/hierophant_wall.dmi'
|
||||
icon_state = "hierophant"
|
||||
smooth = SMOOTH_TRUE
|
||||
|
||||
#undef MEDAL_PREFIX
|
||||
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 513 KiB After Width: | Height: | Size: 516 KiB |
|
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 937 B After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
@@ -71,8 +71,8 @@ h1.alert, h2.alert {color: #000000;}
|
||||
.cultlarge {color: #960000; font-weight: bold; font-size: 3;}
|
||||
.narsie {color: #960000; font-weight: bold; font-size: 15;}
|
||||
.colossus {color: #7F282A; font-size: 5;}
|
||||
.hierophant {color: #660099; font-weight: bold; font-size: 4;}
|
||||
.hierophant_warning {color: #660099; font-weight: bold; font-style: italic;}
|
||||
.hierophant {color: #660099; font-weight: bold; font-style: italic;}
|
||||
.hierophant_warning {color: #660099; font-style: italic;}
|
||||
.purple {color: #5e2d79;}
|
||||
.holoparasite {color: #35333a;}
|
||||
.holoparasitebold {color: #35333a; font-weight: bold;}
|
||||
|
||||