(cult music stops) (#29664)

* safety cult dance

* cult dance emote

* more fix also box

* durp
This commit is contained in:
DeityLink
2021-06-03 01:54:26 +02:00
committed by GitHub
parent d2e3e77805
commit 1628ee2cec
9 changed files with 176 additions and 6 deletions

View File

@@ -1653,7 +1653,7 @@ var/list/bloodstone_list = list()
/obj/structure/cult/proc/dance_start()
while(timeleft > 0)
for (var/mob/M in contributors)
if (!iscultist(M) || get_dist(src,M) > 1 || (M.stat != CONSCIOUS))
if (!iscultist(M) || get_dist(src,M) > 1 || M.incapacitated() || M.occult_muted())
if (M.client)
M.client.images -= progbar
contributors.Remove(M)
@@ -1680,6 +1680,7 @@ var/list/bloodstone_list = list()
switch(dance_move)
if ("clock")
for (var/mob/M in contributors)
M.lazy_invoke_event(/lazy_event/on_before_move)
switch (get_dir(src,M))
if (NORTHWEST,NORTH)
M.forceMove(get_step(M,EAST))
@@ -1693,8 +1694,11 @@ var/list/bloodstone_list = list()
if (SOUTHWEST,WEST)
M.forceMove(get_step(M,NORTH))
M.dir = NORTH
M.lazy_invoke_event(/lazy_event/on_after_move)
M.lazy_invoke_event(/lazy_event/on_moved, list("mover" = M))
if ("counter")
for (var/mob/M in contributors)
M.lazy_invoke_event(/lazy_event/on_before_move)
switch (get_dir(src,M))
if (NORTHEAST,NORTH)
M.forceMove(get_step(M,WEST))
@@ -1708,15 +1712,22 @@ var/list/bloodstone_list = list()
if (NORTHWEST,WEST)
M.forceMove(get_step(M,SOUTH))
M.dir = SOUTH
M.lazy_invoke_event(/lazy_event/on_after_move)
M.lazy_invoke_event(/lazy_event/on_moved, list("mover" = M))
if ("spin")
for (var/mob/M in contributors)
spawn()
M.dir = SOUTH
M.lazy_invoke_event(/lazy_event/on_face)
sleep(0.75)
M.dir = EAST
M.lazy_invoke_event(/lazy_event/on_face)
sleep(0.75)
M.dir = NORTH
M.lazy_invoke_event(/lazy_event/on_face)
sleep(0.75)
M.dir = WEST
M.lazy_invoke_event(/lazy_event/on_face)
sleep(0.75)
M.dir = SOUTH
M.lazy_invoke_event(/lazy_event/on_face)

View File

@@ -596,3 +596,92 @@ var/bloodstone_backup = 0
. = ..()
if (.)
visible_message("<span class='warning'>\the [src] nails \the [A] to \the [T].</span>")
///////////////////////////////////CULT DANCE////////////////////////////////////
//used by the cultdance emote. other cult dances have their own procs
/obj/effect/cult_ritual/dance
var/list/dancers = list()
/obj/effect/cult_ritual/dance/New(var/turf/loc, var/mob/first_dancer)
if (!first_dancer)
qdel(src)
return
dancers += first_dancer
//processing_objects.Add(src)
we_can_dance()
/obj/effect/cult_ritual/dance/Destroy()
//processing_objects.Remove(src)
dancers = list()
..()
/obj/effect/cult_ritual/dance/proc/we_can_dance()
while(TRUE)
for (var/mob/M in dancers)
if (get_dist(src,M) > 1 || M.incapacitated() || M.occult_muted())
dancers -= M
continue
if (dancers.len <= 0)
qdel(src)
return
dance_step()
sleep(3)
dance_step()
sleep(3)
dance_step()
sleep(6)
/obj/effect/cult_ritual/dance/proc/add_dancer(var/mob/dancer)
dancers += dancer
/obj/effect/cult_ritual/dance/proc/dance_step()
var/dance_move = pick("clock","counter","spin")
switch(dance_move)
if ("clock")
for (var/mob/M in dancers)
M.lazy_invoke_event(/lazy_event/on_before_move)
switch (get_dir(src,M))
if (NORTHWEST,NORTH)
step_to(M, get_step(M,EAST))
if (NORTHEAST,EAST)
step_to(M, get_step(M,SOUTH))
if (SOUTHEAST,SOUTH)
step_to(M, get_step(M,WEST))
if (SOUTHWEST,WEST)
step_to(M, get_step(M,NORTH))
M.lazy_invoke_event(/lazy_event/on_after_move)
M.lazy_invoke_event(/lazy_event/on_moved, list("mover" = M))
if ("counter")
for (var/mob/M in dancers)
M.lazy_invoke_event(/lazy_event/on_before_move)
switch (get_dir(src,M))
if (NORTHEAST,NORTH)
step_to(M, get_step(M,WEST))
if (SOUTHEAST,EAST)
step_to(M, get_step(M,NORTH))
if (SOUTHWEST,SOUTH)
step_to(M, get_step(M,EAST))
if (NORTHWEST,WEST)
step_to(M, get_step(M,SOUTH))
M.lazy_invoke_event(/lazy_event/on_after_move)
M.lazy_invoke_event(/lazy_event/on_moved, list("mover" = M))
if ("spin")
for (var/mob/M in dancers)
spawn()
M.dir = SOUTH
M.lazy_invoke_event(/lazy_event/on_face)
sleep(0.75)
M.dir = EAST
M.lazy_invoke_event(/lazy_event/on_face)
sleep(0.75)
M.dir = NORTH
M.lazy_invoke_event(/lazy_event/on_face)
sleep(0.75)
M.dir = WEST
M.lazy_invoke_event(/lazy_event/on_face)
sleep(0.75)
M.dir = SOUTH
M.lazy_invoke_event(/lazy_event/on_face)

View File

@@ -243,7 +243,7 @@
qdel(M.hud_used.cult_Act_display)
qdel(M.hud_used.cult_tattoo_display)
/mob/living/carbon/proc/occult_muted()
/mob/proc/occult_muted()
if (checkTattoo(TATTOO_HOLY))
return 0
if (reagents && reagents.has_reagent(HOLYWATER))

View File

@@ -51,11 +51,25 @@
/datum/dna/gene/basic/stealth/chameleon/New()
block = CHAMELEONBLOCK
/datum/dna/gene/basic/stealth/chameleon/activate(var/mob/M, var/connected, var/flags)
..()
M.lazy_register_event(/lazy_event/on_moved, src, .proc/mob_moved)
return 1
/datum/dna/gene/basic/stealth/chameleon/deactivate(var/mob/M, var/connected, var/flags)
if(!..())
return 0
M.lazy_unregister_event(/lazy_event/on_moved, src, .proc/mob_moved)
return 1
/datum/dna/gene/basic/stealth/chameleon/proc/mob_moved(var/mob/mover)
mover.alphas["chameleon_stealth"] = round(255 * 0.80)
/datum/dna/gene/basic/stealth/chameleon/OnMobLife(var/mob/M)
if((world.time - M.last_movement) >= 30 && !M.isUnconscious() && M.canmove && !M.restrained())
M.alphas["chameleon_stealth"] = max(M.alphas["chameleon_stealth"] - 25, 0)
else
M.alphas["chameleon_stealth"] = round(255 * 0.80)
mob_moved(M)
/////////////////////////////////////////////////////////////////////////////////////////

View File

@@ -104,6 +104,7 @@ var/global/floorIsLava = 0
<A href='?src=\ref[src];addcancer=\ref[M]'>Inflict Cancer</A> |
<A href='?src=\ref[src];makecatbeast=\ref[M]'>Make Catbeast</A> |
<A href='?src=\ref[src];makecluwne=\ref[M]'>Make Cluwne</A> |
<A href='?src=\ref[src];makebox=\ref[M]'>Make Box</A> |
<A href='?src=\ref[src];Assplode=\ref[M]'>Assplode</A> |
<A href='?src=\ref[src];DealBrainDam=\ref[M]'>Deal brain damage</A> |
"}

View File

@@ -2377,6 +2377,21 @@
usr = M //We probably transformed ourselves
show_player_panel(M)
else if(href_list["makebox"])
if(!check_rights(R_SPAWN))
return
var/mob/living/carbon/C = locate(href_list["makebox"])
if(!istype(C))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon")
return
var/mob/M = usr.client.cmd_admin_boxify(C)
if(M)
if(M.client == CLIENT)
usr = M //We probably transformed ourselves
show_player_panel(M)
else if(href_list["makecatbeast"])
if(!check_rights(R_SPAWN))
return

View File

@@ -850,9 +850,7 @@ var/global/blood_virus_spreading_disabled = 0
config.world_style_config = world_style
message_admins("The style sheet has been reset by [src.ckey]")
/client/proc/cmd_admin_cluwneize(var/mob/M in mob_list)
set category = "Fun"
set name = "Make Cluwne"
/client/proc/cmd_admin_cluwneize(var/mob/M)
if(!ticker)
alert("Wait until the game starts")
return
@@ -864,6 +862,18 @@ var/global/blood_virus_spreading_disabled = 0
else
alert("Invalid mob, needs to be a human.")
/client/proc/cmd_admin_boxify(var/mob/living/carbon/M)
if(!ticker)
alert("Wait until the game starts")
return
if(iscarbon(M))
message_admins("<span class='notice'>[key_name_admin(usr)] made [key_name(M)] into a cult coffer.</span>", 1)
feedback_add_details("admin_verb","MKBOX") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(src)] has box-ified [M.key].")
return M.boxify()
else
alert("Invalid mob, needs to be a human.")
client/proc/make_invulnerable(var/mob/M in mob_list)
set name = "Toggle Invulnerability"
set desc = "Make the target atom invulnerable to all form of damage."

View File

@@ -44,6 +44,27 @@
message = "dances around happily."
restraint_check = TRUE
/datum/emote/living/dance/cult
key = "cultdance"
key_third_person = "cultdances"
message = "displays the dance of their people."
restraint_check = TRUE
/datum/emote/living/dance/cult/can_run_emote(var/mob/user, var/status_check)
if (user.occult_muted())
return FALSE
if (iscultist(user) || istype(user, /mob/living/simple_animal/astral_projection))
return TRUE
return FALSE
/datum/emote/living/dance/cult/run_emote(mob/living/user, params)
. = ..()
if (.)
for (var/obj/effect/cult_ritual/dance/dance_center in range(1,get_turf(user)))
dance_center.add_dancer(user)
return
new /obj/effect/cult_ritual/dance(get_step(user,user.dir), user)
/datum/emote/living/deathgasp
key = "deathgasp"
key_third_person = "deathgasps"

View File

@@ -101,6 +101,15 @@
#undef SPEAK_OVER_CHANNEL_INTO_CULT_CHAT
#undef HEAR_CULT_CHAT
/mob/living/simple_animal/construct/occult_muted()
. = ..()
if (.)
return 1
if (purge > 0)
return 1
return 0
/mob/living/simple_animal/construct/gib(var/animation = 0, var/meat = 1)
if(!isUnconscious())
forcesay("-")