Admins can now spawn cosmetic blood stones (#31378)

* Admins can now spawn cosmetic blood stones

* Update code/datums/gamemode/factions/bloodcult/bloodcult_buildings.dm

* Update code/datums/gamemode/factions/bloodcult/bloodcult_buildings.dm

* Update code/datums/gamemode/factions/bloodcult/bloodcult_buildings.dm

* Update code/modules/admin/topic.dm

* Update code/modules/admin/topic.dm

* Update code/datums/gamemode/factions/bloodcult/bloodcult_buildings.dm
This commit is contained in:
DeityLink
2021-11-24 17:54:40 +01:00
committed by GitHub
parent 1f58e1e2ac
commit 3d15e47872
5 changed files with 174 additions and 1 deletions

View File

@@ -1262,6 +1262,12 @@ var/list/cult_spires = list()
overlays += I
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //Spawns next to blood stones
// OBSIDIAN PILLAR //
// //
///////////////////////////
/obj/structure/cult/pillar
name = "obsidian pillar"
icon_state = "pillar-enter"
@@ -1319,6 +1325,154 @@ var/list/cult_spires = list()
if (3)
takeDamage(20)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //Re-added as a cosmetic structure by admin request
// BLOOD STONE //
// //
///////////////////////////
/obj/structure/cult/bloodstone
name = "blood stone"
icon_state = "bloodstone-enter1"
icon = 'icons/obj/cult_64x64.dmi'
pixel_x = -16 * PIXEL_MULTIPLIER
health = 600
maxHealth = 600
sound_damaged = 'sound/effects/stone_hit.ogg'
sound_destroyed = 'sound/effects/stone_crumble.ogg'
plane = EFFECTS_PLANE
layer = BELOW_PROJECTILE_LAYER
light_color = "#FF0000"
/obj/structure/cult/bloodstone/New()
..()
set_light(3)
/obj/structure/cult/bloodstone/proc/flashy_entrance()
for (var/obj/O in loc)
if (O != src && !istype(O,/obj/item/weapon/melee/soulblade))
O.ex_act(2)
safe_space()
for(var/mob/M in player_list)
if (M.z == z && M.client)
if (get_dist(M,src)<=20)
M.playsound_local(src, get_sfx("explosion"), 50, 1)
shake_camera(M, 4, 1)
else
M.playsound_local(src, 'sound/effects/explosionfar.ogg', 50, 1)
shake_camera(M, 1, 1)
spawn(10)
var/list/pillars = list()
icon_state = "bloodstone-enter2"
for(var/mob/M in player_list)
if (M.z == z && M.client)
if (get_dist(M,src)<=20)
M.playsound_local(src, get_sfx("explosion"), 50, 1)
shake_camera(M, 4, 1)
else
M.playsound_local(src, 'sound/effects/explosionfar.ogg', 50, 1)
shake_camera(M, 1, 1)
var/turf/T1 = locate(x-2,y-2,z)
pillars += new /obj/structure/cult/pillar(T1)
var/turf/T2 = locate(x+2,y-2,z)
pillars += new /obj/structure/cult/pillar/alt(T2)
var/turf/T3 = locate(x-2,y+2,z)
pillars += new /obj/structure/cult/pillar(T3)
var/turf/T4 = locate(x+2,y+2,z)
pillars += new /obj/structure/cult/pillar/alt(T4)
sleep(10)
icon_state = "bloodstone-enter3"
for(var/mob/M in player_list)
if (M.z == z && M.client)
if (get_dist(M,src)<=20)
M.playsound_local(src, get_sfx("explosion"), 50, 1)
shake_camera(M, 4, 1)
else
M.playsound_local(src, 'sound/effects/explosionfar.ogg', 50, 1)
shake_camera(M, 1, 1)
for (var/obj/structure/cult/pillar/P in pillars)
P.update_icon()
sleep(10)
update_icon()
/obj/structure/cult/bloodstone/Destroy()
new /obj/effect/decal/cleanable/ash(loc)
new /obj/item/weapon/ectoplasm(loc)
..()
/obj/structure/cult/bloodstone/attack_construct(var/mob/user)
if (!Adjacent(user))
return 0
cultist_act(user)
return 1
/obj/structure/cult/bloodstone/cultist_act(var/mob/user)
.=..()
if (!.)
return
if(isliving(user))
var/obj/effect/cult_ritual/dance/dance_center = locate() in loc
if (dance_center)
dance_center.add_dancer(user)
else
dance_center = new(loc, user)
if (prob(5))
user.say("Let me show you the dance of my people!","C")
else
user.say("Tok-lyr rqa'nap g'lt-ulotf!","C")
/obj/structure/cult/bloodstone/conceal()
return
/obj/structure/cult/bloodstone/takeDamage(var/damage)
health -= damage
if (health <= 0)
if (sound_destroyed)
playsound(src, sound_destroyed, 100, 1)
qdel(src)
else
update_icon()
/obj/structure/cult/bloodstone/ex_act(var/severity)
switch(severity)
if (1)
takeDamage(250)
if (2)
takeDamage(50)
if (3)
takeDamage(10)
/obj/structure/cult/bloodstone/update_icon()
icon_state = "bloodstone-9"
overlays.len = 0
var/image/I_base = image('icons/obj/cult_64x64.dmi',"bloodstone-base")
I_base.appearance_flags |= RESET_COLOR//we don't want the stone to pulse
overlays += I_base
if (health < maxHealth/3)
overlays.Add("bloodstone_damage2")
else if (health < 2*maxHealth/3)
overlays.Add("bloodstone_damage1")
/obj/structure/cult/bloodstone/proc/set_animate()
animate(src, color = list(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0), time = 10, loop = -1)
animate(color = list(1.125,0.06,0,0,0,1.125,0.06,0,0.06,0,1.125,0,0,0,0,1,0,0,0,0), time = 2)
animate(color = list(1.25,0.12,0,0,0,1.25,0.12,0,0.12,0,1.25,0,0,0,0,1,0,0,0,0), time = 2)
animate(color = list(1.375,0.19,0,0,0,1.375,0.19,0,0.19,0,1.375,0,0,0,0,1,0,0,0,0), time = 1.5)
animate(color = list(1.5,0.27,0,0,0,1.5,0.27,0,0.27,0,1.5,0,0,0,0,1,0,0,0,0), time = 1.5)
animate(color = list(1.625,0.35,0.06,0,0.06,1.625,0.35,0,0.35,0.06,1.625,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.75,0.45,0.12,0,0.12,1.75,0.45,0,0.45,0.12,1.75,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.875,0.56,0.19,0,0.19,1.875,0.56,0,0.56,0.19,1.875,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(2,0.67,0.27,0,0.27,2,0.67,0,0.67,0.27,2,0,0,0,0,1,0,0,0,0), time = 5)
animate(color = list(1.875,0.56,0.19,0,0.19,1.875,0.56,0,0.56,0.19,1.875,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.75,0.45,0.12,0,0.12,1.75,0.45,0,0.45,0.12,1.75,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.625,0.35,0.06,0,0.06,1.625,0.35,0,0.35,0.06,1.625,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.5,0.27,0,0,0,1.5,0.27,0,0.27,0,1.5,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.375,0.19,0,0,0,1.375,0.19,0,0.19,0,1.375,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.25,0.12,0,0,0,1.25,0.12,0,0.12,0,1.25,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.125,0.06,0,0,0,1.125,0.06,0,0.06,0,1.125,0,0,0,0,1,0,0,0,0), time = 1)
update_icon()
/*
var/list/bloodstone_list = list()

View File

@@ -560,6 +560,9 @@ var/list/astral_projections = list()
/mob/living/simple_animal/astral_projection/attempt_suicide(forced = 0, suicide_set = 1)
death()
/mob/living/simple_animal/astral_projection/ex_act(var/severity)
death()
//called once when we are created, shapes our appearance in the image of our anchor
/mob/living/simple_animal/astral_projection/proc/ascend(var/mob/living/body)
if (!body)

View File

@@ -345,7 +345,8 @@ var/list/arcane_pockets = list()
/spell/astral_return/cast(var/list/targets, var/mob/user)
var/mob/living/simple_animal/astral_projection/astral = user
astral.death()//pretty straightforward isn't it?
if (istype(astral))
astral.death()//pretty straightforward isn't it?
/spell/astral_toggle
name = "Toggle Tangibility"

View File

@@ -886,6 +886,7 @@ var/global/floorIsLava = 0
<BR>
<A href='?src=\ref[src];secretsfun=placeturret'>Create a turret</A><BR>
<A href='?src=\ref[src];secretsfun=virusdish'>Create a new virus in a dish</A><BR>
<A href='?src=\ref[src];secretsfun=bloodstone'>Spawn a cult Blood Stone</A><BR>
<BR>
<A href='?src=\ref[src];secretsfun=traitor_all'>Make everyone traitors</A><BR>
<A href='?src=\ref[src];secretsfun=onlyone'>Highlander/Wizard Wars Mode (There can be only one!)</A><BR>

View File

@@ -4218,6 +4218,20 @@
virus2_make_custom(usr.client,null)
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","VIR")
if("bloodstone")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","BS")
var/choice = alert("Flashy spawn and surroundings cultification?","Blood Stone Spawning","Yes","No")
if (!choice)
return
var/turf/T = get_turf(usr)
var/obj/structure/cult/bloodstone/blood_stone = new(T)
if(choice == "Yes")
blood_stone.flashy_entrance()
if(choice == "No")
blood_stone.update_icon()
message_admins("[key_name_admin(usr)] spawned a blood stone at [formatJumpTo(get_turf(usr))].")
if("hardcore_mode")
var/choice = input("Are you sure you want to [ticker.hardcore_mode ? "disable" : "enable"] hardcore mode? Starvation will [ticker.hardcore_mode ? "no longer":""]slowly kill player-controlled humans.", "Admin Abuse") in list("Yes", "No!")