mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 06:29:23 +01:00
[MIRROR] Invisibility refactor [MDB IGNORE] (#24405)
* Invisibility refactor (#78908) This adds a tracker for sources of invisibility and a priority system. I needed this for another thing so I'm doing this first since it touches a lot of code. As for the bugs fixed in the changelog, it's only what I noticed while going through everything and there's likely a few more things fixed with this. This should be testmerged for a while, I'll bring this out of draft when it feels safe. 🆑 admin: Invisimin can now be used on mobs that are already invisible, whether through temporary or permanent effects. fix: Monkeyize/Humanize mob transformations no longer permanently reveal invisible mobs if they had effects making them invisible otherwise. fix: Objects with the undertile element that have been made invisible through other means are no longer revealed by being uncovered. /🆑 * Invisibility refactor --------- Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
This commit is contained in:
co-authored by
Emmett Gaines
parent
2aafba9975
commit
6e677a2bbd
@@ -391,16 +391,16 @@ GLOBAL_PROTECT(admin_verbs_poll)
|
||||
set name = "Invisimin"
|
||||
set category = "Admin.Game"
|
||||
set desc = "Toggles ghost-like invisibility (Don't abuse this)"
|
||||
if(holder && mob)
|
||||
if(initial(mob.invisibility) == INVISIBILITY_OBSERVER)
|
||||
to_chat(mob, span_boldannounce("Invisimin toggle failed. You are already an invisible mob like a ghost."), confidential = TRUE)
|
||||
return
|
||||
if(mob.invisibility == INVISIBILITY_OBSERVER)
|
||||
mob.invisibility = initial(mob.invisibility)
|
||||
to_chat(mob, span_boldannounce("Invisimin off. Invisibility reset."), confidential = TRUE)
|
||||
else
|
||||
mob.invisibility = INVISIBILITY_OBSERVER
|
||||
to_chat(mob, span_adminnotice("<b>Invisimin on. You are now as invisible as a ghost.</b>"), confidential = TRUE)
|
||||
if(isnull(holder) || isnull(mob))
|
||||
return
|
||||
if(mob.invisimin)
|
||||
mob.invisimin = FALSE
|
||||
mob.RemoveInvisibility(INVISIBILITY_SOURCE_INVISIMIN)
|
||||
to_chat(mob, span_boldannounce("Invisimin off. Invisibility reset."), confidential = TRUE)
|
||||
else
|
||||
mob.invisimin = TRUE
|
||||
mob.SetInvisibility(INVISIBILITY_OBSERVER, INVISIBILITY_SOURCE_INVISIMIN, INVISIBILITY_PRIORITY_ADMIN)
|
||||
to_chat(mob, span_adminnotice("<b>Invisimin on. You are now as invisible as a ghost.</b>"), confidential = TRUE)
|
||||
|
||||
/client/proc/check_antagonists()
|
||||
set name = "Check Antagonists"
|
||||
@@ -546,7 +546,7 @@ GLOBAL_PROTECT(admin_verbs_poll)
|
||||
holder.fakekey = new_key
|
||||
createStealthKey()
|
||||
if(isobserver(mob))
|
||||
mob.invisibility = INVISIBILITY_MAXIMUM //JUST IN CASE
|
||||
mob.SetInvisibility(INVISIBILITY_ABSTRACT, INVISIBILITY_SOURCE_STEALTHMODE, INVISIBILITY_PRIORITY_ADMIN)
|
||||
mob.alpha = 0 //JUUUUST IN CASE
|
||||
mob.name = " "
|
||||
mob.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
@@ -560,7 +560,7 @@ GLOBAL_PROTECT(admin_verbs_poll)
|
||||
/client/proc/disable_stealth_mode()
|
||||
holder.fakekey = null
|
||||
if(isobserver(mob))
|
||||
mob.invisibility = initial(mob.invisibility)
|
||||
mob.RemoveInvisibility(INVISIBILITY_SOURCE_STEALTHMODE)
|
||||
mob.alpha = initial(mob.alpha)
|
||||
if(mob.mind)
|
||||
if(mob.mind.ghostname)
|
||||
|
||||
Reference in New Issue
Block a user