mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
(cult music stops) (#29664)
* safety cult dance * cult dance emote * more fix also box * durp
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -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> |
|
||||
"}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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("-")
|
||||
|
||||
Reference in New Issue
Block a user