mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-21 12:02:31 +01:00
Space Chaplains: Now Sensical (#7323)
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
// Nullrod, Aspergillum, Burial Urn
|
||||
|
||||
/obj/item/nullrod
|
||||
name = "null rod"
|
||||
desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae."
|
||||
icon_state = "nullrod"
|
||||
item_state = "nullrod"
|
||||
slot_flags = SLOT_BELT
|
||||
force = 15
|
||||
throw_speed = 1
|
||||
throw_range = 4
|
||||
throwforce = 10
|
||||
w_class = 2
|
||||
var/cooldown = 0 // floor tap cooldown
|
||||
var/static/list/nullchoices = list("Null Rod" = /obj/item/nullrod/, "Null Staff" = /obj/item/nullrod/staff, "Null Orb" = /obj/item/nullrod/orb, "Null Athame" = /obj/item/nullrod/athame)
|
||||
|
||||
/obj/item/nullrod/staff
|
||||
name = "null staff"
|
||||
desc = "A staff of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae."
|
||||
icon_state = "nullstaff"
|
||||
item_state = "nullstaff"
|
||||
slot_flags = SLOT_BELT | SLOT_BACK
|
||||
w_class = 4
|
||||
|
||||
/obj/item/nullrod/orb
|
||||
name = "null sphere"
|
||||
desc = "An orb of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae."
|
||||
icon_state = "nullorb"
|
||||
item_state = "nullorb"
|
||||
|
||||
/obj/item/nullrod/athame
|
||||
name = "null athame"
|
||||
desc = "An athame of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae."
|
||||
icon_state = "nullathame"
|
||||
item_state = "nullathame"
|
||||
|
||||
/obj/item/nullrod/obsidianshards
|
||||
name = "obsidian shards"
|
||||
desc = "A loose pile of obsidian shards, waiting to be assembled into a religious focus."
|
||||
icon_state = "nullshards"
|
||||
item_state = "nullshards"
|
||||
|
||||
/obj/item/nullrod/verb/change(mob/user)
|
||||
set name = "Reassemble Null Item"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(use_check_and_message(user, USE_FORCE_SRC_IN_USER))
|
||||
return
|
||||
|
||||
var/picked = input("What form would you like your obsidian relic to take?", "Reassembling your obsidian relic") as null|anything in nullchoices
|
||||
|
||||
if(use_check_and_message(user, USE_FORCE_SRC_IN_USER))
|
||||
return
|
||||
if(!ispath(nullchoices[picked]))
|
||||
return
|
||||
|
||||
to_chat(user, span("notice", "You start reassembling your obsidian relic."))
|
||||
if(!do_after(user, 2 SECONDS))
|
||||
return
|
||||
|
||||
var/obj/item/nullrod/chosenitem = nullchoices[picked]
|
||||
new chosenitem(get_turf(user))
|
||||
qdel(src)
|
||||
user.put_in_hands(chosenitem)
|
||||
|
||||
/obj/item/nullrod/attack(mob/M as mob, mob/living/user as mob)
|
||||
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.do_attack_animation(M)
|
||||
|
||||
if(LAZYLEN(user.spell_list))
|
||||
user.silence_spells(300) //30 seconds
|
||||
to_chat(user, span("danger", "You've been silenced!"))
|
||||
return
|
||||
|
||||
if(!user.IsAdvancedToolUser())
|
||||
to_chat(user, span("danger", "You don't have the dexterity to use this!"))
|
||||
return
|
||||
|
||||
if((user.is_clumsy()) && prob(50))
|
||||
to_chat(user, span("danger", "The [src] slips out of your hand and you hit yourself!"))
|
||||
visible_message(span("danger", "[user] fumbles with the [src] and hits themselves in the process!"))
|
||||
user.take_organ_damage(10)
|
||||
user.Paralyse(20)
|
||||
return
|
||||
|
||||
if(M.stat != DEAD && ishuman(M) && user.a_intent != I_HURT)
|
||||
var/mob/living/K = M
|
||||
if(cult && (K.mind in cult.current_antagonists) && prob(75))
|
||||
if(do_after(user, 15))
|
||||
K.visible_message(span("danger", "[user] waves \the [src] over \the [K]'s head, [K] looks captivated by it."), span("warning", "[user] waves the [src] over your head. <b>You see a foreign light, asking you to follow it. Its presence burns and blinds.</b>"))
|
||||
var/choice = alert(K,"Do you want to give up your goal?","Become cleansed","Resist","Give in")
|
||||
switch(choice)
|
||||
if("Resist")
|
||||
K.visible_message(span("warning", "The gaze in [K]'s eyes remains determined."), span("notice", "You turn away from the light, remaining true to the Geometer!"))
|
||||
K.say("*scream")
|
||||
K.take_overall_damage(5, 15)
|
||||
admin_attack_log(user, M, "attempted to deconvert", "was unsuccessfully deconverted by", "attempted to deconvert")
|
||||
if("Give in")
|
||||
K.visible_message(span("notice", "[K]'s eyes become clearer, the evil gone, but not without leaving scars."))
|
||||
K.take_overall_damage(10, 20)
|
||||
cult.remove_antagonist(K.mind)
|
||||
admin_attack_log(user, M, "successfully deconverted", "was successfully deconverted by", "successfully deconverted")
|
||||
else
|
||||
user.visible_message(span("warning", "[user]'s concentration is broken!"), span("warning", "Your concentration is broken! You and your target need to stay uninterrupted for longer!"))
|
||||
return
|
||||
else
|
||||
to_chat(user, span("danger", "The [src] appears to do nothing."))
|
||||
M.visible_message(span("danger", "\The [user] waves \the [src] over \the [M]'s head."))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(prob(25))
|
||||
H.cure_all_traumas(cure_type = CURE_SOLITUDE)
|
||||
else if(prob(20))
|
||||
H.cure_all_traumas(cure_type = CURE_CRYSTAL)
|
||||
return
|
||||
else if(user.a_intent != I_HURT) // to prevent the chaplain from hurting peoples accidentally
|
||||
to_chat(user, span("notice", "The [src] appears to do nothing."))
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/nullrod/afterattack(atom/A, mob/user as mob, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if (istype(A, /turf/simulated/floor) && (cooldown + 5 SECONDS < world.time))
|
||||
cooldown = world.time
|
||||
user.visible_message(span("notice", "[user] loudly taps their [src.name] against the floor."))
|
||||
playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
|
||||
call(/obj/effect/rune/proc/revealrunes)(src)
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/spray/aspergillum
|
||||
name = "aspergillum"
|
||||
desc = "A ceremonial item for sprinkling holy water, or other liquids, on a subject."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "aspergillum"
|
||||
item_state = "aspergillum"
|
||||
amount_per_transfer_from_this = 5
|
||||
possible_transfer_amounts = null
|
||||
spray_size = 1
|
||||
volume = 10
|
||||
spray_sound = 'sound/effects/jingle.ogg'
|
||||
|
||||
/obj/item/material/urn
|
||||
name = "urn"
|
||||
desc = "A vase used to store the ashes of the deceased."
|
||||
icon = 'icons/obj/urn.dmi'
|
||||
icon_state = "urn"
|
||||
applies_material_colour = TRUE
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
/obj/item/material/urn/attack(var/obj/A, var/mob/user, var/proximity)
|
||||
if(!istype(A, /obj/effect/decal/cleanable/ash))
|
||||
return ..()
|
||||
else if(proximity)
|
||||
if(contents.len)
|
||||
to_chat(user, span("warning", "\The [src] is already full!"))
|
||||
return
|
||||
user.visible_message("[user] scoops \the [A] into \the [src], securing the lid.", "You scoop \the [A] into \the [src], securing the lid.")
|
||||
desc = "A vase used to store the ashes of the deceased. It contains some ashes."
|
||||
A.forceMove(src)
|
||||
|
||||
/obj/item/material/urn/attack_self(mob/user)
|
||||
if(!contents.len)
|
||||
to_chat(user, span("warning", "\The [src] is empty!"))
|
||||
return
|
||||
else
|
||||
for(var/obj/effect/decal/cleanable/ash/A in contents)
|
||||
A.dropInto(loc)
|
||||
user.visible_message("[user] pours \the [A] out from \the [src].", "You pour \the [A] out from \the [src].")
|
||||
desc = "A vase used to store the ashes of the deceased."
|
||||
@@ -1,18 +1,18 @@
|
||||
/obj/item/storage/bible
|
||||
name = "bible"
|
||||
desc = "Apply to head repeatedly."
|
||||
icon_state ="bible"
|
||||
desc = "A holy item, containing the written words of a religion."
|
||||
icon_state = "bible"
|
||||
icon = 'icons/obj/library.dmi'
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 3.0
|
||||
w_class = ITEMSIZE_SMALL // POKKET - geeves
|
||||
var/mob/affecting = null
|
||||
use_sound = 'sound/bureaucracy/bookopen.ogg'
|
||||
drop_sound = 'sound/bureaucracy/bookclose.ogg'
|
||||
|
||||
/obj/item/storage/bible/booze
|
||||
name = "bible"
|
||||
desc = "To be applied to the head repeatedly."
|
||||
desc = "A holy item, containing the written words of a religion."
|
||||
icon_state = "bible"
|
||||
starts_with = list(
|
||||
/obj/item/reagent_containers/food/drinks/bottle/small/beer = 2,
|
||||
@@ -20,81 +20,100 @@
|
||||
)
|
||||
|
||||
/obj/item/storage/bible/afterattack(atom/A, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
if(!proximity)
|
||||
return
|
||||
if(user.mind && (user.mind.assigned_role == "Chaplain"))
|
||||
if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder
|
||||
to_chat(user, "<span class='notice'>You bless [A].</span>")
|
||||
var/water2holy = A.reagents.get_reagent_amount("water")
|
||||
A.reagents.del_reagent("water")
|
||||
A.reagents.add_reagent("holywater",water2holy)
|
||||
if(A.reagents.get_reagent_amount("water") > 60)
|
||||
to_chat(user, span("notice", "There's too much water for you to bless at once!"))
|
||||
else
|
||||
to_chat(user, span("notice", "You bless the water in [A], turning it into holy water."))
|
||||
var/water2holy = A.reagents.get_reagent_amount("water")
|
||||
A.reagents.del_reagent("water")
|
||||
A.reagents.add_reagent("holywater", water2holy)
|
||||
|
||||
/obj/item/storage/bible/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if (src.use_sound)
|
||||
if(src.use_sound)
|
||||
playsound(src.loc, src.use_sound, 50, 1, -5)
|
||||
..()
|
||||
|
||||
/obj/item/storage/bible/proc/Set_Religion(mob/user)
|
||||
if(use_check(user))
|
||||
return
|
||||
|
||||
if(!ishuman(user))
|
||||
return
|
||||
|
||||
var/religion_name = "Christianity"
|
||||
var/new_religion = sanitize(input(user, "You are the crew services officer. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name), MAX_NAME_LEN)
|
||||
|
||||
if (!new_religion)
|
||||
if(!new_religion)
|
||||
new_religion = religion_name
|
||||
|
||||
var/book_name = sanitize(input(user, "Would you like the change your bible name? Default is holy bible.", "Book name change", name), MAX_NAME_LEN)
|
||||
|
||||
if (book_name)
|
||||
if(book_name)
|
||||
name = book_name
|
||||
SSticker.Bible_name = book_name
|
||||
|
||||
var/new_book_style = input(user,"Which bible style would you like?") in list("Bible", "Quran", "Scrapbook", "Creeper", "White Bible", "Holy Light", "Atheist", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon")
|
||||
var/new_book_style = input(user,"Which bible style would you like?") in list("Generic", "Bible", "White Bible", "Melted Bible", "Quran", "Torah", "Holy Light", "Tome", "Scroll", "The King in Yellow", "Ithaqua", "Trinary", "Stars", "Scrapbook", "Atheist", "Necronomicon")
|
||||
switch(new_book_style)
|
||||
if("Quran")
|
||||
icon_state = "quran"
|
||||
item_state = "quran"
|
||||
if("Scrapbook")
|
||||
icon_state = "scrapbook"
|
||||
item_state = "scrapbook"
|
||||
if("Creeper")
|
||||
icon_state = "creeper"
|
||||
item_state = "creeper"
|
||||
if("Bible")
|
||||
icon_state = "bible"
|
||||
item_state = "bible"
|
||||
new /obj/item/clothing/accessory/rosary(src)
|
||||
if("White Bible")
|
||||
icon_state = "white"
|
||||
item_state = "white"
|
||||
new /obj/item/clothing/accessory/rosary(src)
|
||||
if("Melted Bible")
|
||||
icon_state = "melted"
|
||||
item_state = "melted"
|
||||
new /obj/item/clothing/accessory/rosary(src)
|
||||
if("Quran")
|
||||
icon_state = "quran"
|
||||
item_state = "quran"
|
||||
if("Torah")
|
||||
icon_state = "torah"
|
||||
item_state = "torah"
|
||||
if("Kojiki")
|
||||
icon_state = "kojiki"
|
||||
item_state = "kojiki"
|
||||
if("Holy Light")
|
||||
icon_state = "holylight"
|
||||
item_state = "holylight"
|
||||
if("Atheist")
|
||||
icon_state = "atheist"
|
||||
item_state = "atheist"
|
||||
if("Tome")
|
||||
icon_state = "tome"
|
||||
item_state = "tome"
|
||||
if("Scroll")
|
||||
icon_state = "scroll"
|
||||
item_state = "scroll"
|
||||
if("The King in Yellow")
|
||||
icon_state = "kingyellow"
|
||||
item_state = "kingyellow"
|
||||
if("Ithaqua")
|
||||
icon_state = "ithaqua"
|
||||
item_state = "ithaqua"
|
||||
if("Scientology")
|
||||
icon_state = "scientology"
|
||||
item_state = "scientology"
|
||||
if("the bible melts")
|
||||
icon_state = "melted"
|
||||
item_state = "melted"
|
||||
if("Trinary")
|
||||
icon_state = "trinary"
|
||||
item_state = "trinary"
|
||||
if("Stars")
|
||||
icon_state = "skrellbible"
|
||||
item_state = "skrellbible"
|
||||
if("Scrapbook")
|
||||
icon_state = "scrapbook"
|
||||
item_state = "scrapbook"
|
||||
if("Atheist")
|
||||
icon_state = "atheist"
|
||||
item_state = "atheist"
|
||||
if("Necronomicon")
|
||||
icon_state = "necronomicon"
|
||||
item_state = "necronomicon"
|
||||
else
|
||||
icon_state = "bible"
|
||||
item_state = "bible"
|
||||
var/randbook = "book" + pick("1", "2", "3", "4", "5", "6" , "7")
|
||||
icon_state = randbook
|
||||
item_state = randbook
|
||||
|
||||
SSticker.Bible_icon_state = icon_state
|
||||
SSticker.Bible_item_state = item_state
|
||||
|
||||
verbs -= /obj/item/storage/bible/proc/Set_Religion
|
||||
verbs -= /obj/item/storage/bible/proc/Set_Religion
|
||||
|
||||
@@ -1,155 +1,3 @@
|
||||
|
||||
/obj/item/nullrod
|
||||
name = "null rod"
|
||||
desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae."
|
||||
icon_state = "nullrod"
|
||||
item_state = "nullrod"
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
hitsound = "swing_hit"
|
||||
slot_flags = SLOT_BELT
|
||||
force = 15
|
||||
throw_speed = 1
|
||||
throw_range = 4
|
||||
throwforce = 10
|
||||
w_class = 2
|
||||
var/static/list/nullchoices
|
||||
|
||||
/obj/item/nullrod/nullstaff
|
||||
name = "null staff"
|
||||
desc = "A staff of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae."
|
||||
icon_state = "nullstaff"
|
||||
item_state = "nullstaff"
|
||||
slot_flags = SLOT_BACK
|
||||
w_class = 4
|
||||
|
||||
/obj/item/nullrod/nullorb
|
||||
name = "null sphere"
|
||||
desc = "An orb of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae."
|
||||
icon_state = "nullorb"
|
||||
item_state = "nullorb"
|
||||
|
||||
/obj/item/nullrod/nullathame
|
||||
name = "null athame"
|
||||
desc = "An athame of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae."
|
||||
icon_state = "nullathame"
|
||||
item_state = "nullathame"
|
||||
|
||||
/obj/item/nullrod/obsidianshards
|
||||
name = "Obsidian Shards"
|
||||
desc = "A loose pile of obsidian shards, waiting to be assembled into a religious focus."
|
||||
icon_state = "nullshards"
|
||||
item_state = "nullshards"
|
||||
|
||||
/obj/item/nullrod/Initialize()
|
||||
. = ..()
|
||||
if(!nullchoices)
|
||||
var/blocked = list(src.type, /obj/item/nullrod/nullorb) + typesof(/obj/item/nullrod/fluff)
|
||||
nullchoices = generate_chameleon_choices(/obj/item/nullrod, blocked)
|
||||
|
||||
/obj/item/nullrod/verb/change()
|
||||
set name = "Reassemble"
|
||||
set category = "Obsidian Relics"
|
||||
set src in usr
|
||||
|
||||
if (use_check_and_message(usr, USE_FORCE_SRC_IN_USER))
|
||||
return
|
||||
|
||||
var/picked = input("What form would you like your obsidian relic to take?", "Reassembling your obsidian relic") as null|anything in nullchoices
|
||||
|
||||
if (use_check_and_message(usr, USE_FORCE_SRC_IN_USER))
|
||||
return
|
||||
|
||||
if(!ispath(nullchoices[picked]))
|
||||
return
|
||||
|
||||
disguise(nullchoices[picked])
|
||||
|
||||
if (ismob(src.loc))
|
||||
var/mob/M = src.loc
|
||||
M.update_inv_r_hand(FALSE)
|
||||
M.update_inv_l_hand()
|
||||
|
||||
/obj/item/nullrod/attack(mob/M as mob, mob/living/user as mob) //Paste from old-code to decult with a null rod.
|
||||
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.do_attack_animation(M)
|
||||
|
||||
if(LAZYLEN(user.spell_list))
|
||||
user.silence_spells(300) //30 seconds
|
||||
to_chat(user, "<span class='danger'>You've been silenced!</span>")
|
||||
return
|
||||
|
||||
if (!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='danger'>You don't have the dexterity to do this!</span>")
|
||||
return
|
||||
|
||||
if ((user.is_clumsy()) && prob(50))
|
||||
to_chat(user, "<span class='danger'>The rod slips out of your hand and hits your head.</span>")
|
||||
user.take_organ_damage(10)
|
||||
user.Paralyse(20)
|
||||
return
|
||||
|
||||
if (M.stat !=2 && ishuman(M) && user.a_intent != I_HURT)
|
||||
var/mob/living/K = M
|
||||
if(cult && (K.mind in cult.current_antagonists) && prob(33))
|
||||
if(do_after(user, 15))
|
||||
K.visible_message("<span class='danger'>\The [user] waves \the [src] over \the [K]'s head, [K] looks captivated by it.</span>", "<span class='warning'>[user] wave's the [src] over your head. <b>You see a foreign light, asking you to follow it. Its presence burns and blinds.</b></span>")
|
||||
var/choice = alert(K,"Do you want to give up your goal?","Become cleansed","Resist","Give in")
|
||||
switch(choice)
|
||||
if("Resist")
|
||||
K.visible_message("<span class='warning'>The gaze in [K]'s eyes remains determined.</span>", "<span class='notice'>You turn away from the light, remaining true to the Geometer!</span>")
|
||||
K.say("*scream")
|
||||
K.take_overall_damage(5, 15)
|
||||
if("Give in")
|
||||
K.visible_message("<span class='notice'>[K]'s eyes become clearer, the evil gone, but not without leaving scars.</span>")
|
||||
K.take_overall_damage(15, 30)
|
||||
cult.remove_antagonist(K.mind)
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user]'s concentration is broken!</span>", "<span class='warning'>Your concentration is broken! You and your target need to stay uninterrupted for longer!</span>")
|
||||
return
|
||||
else if(prob(10))
|
||||
to_chat(user, "<span class='danger'>The rod slips in your hand.</span>")
|
||||
..()
|
||||
else
|
||||
to_chat(user, "<span class='danger'>The rod appears to do nothing.</span>")
|
||||
M.visible_message("<span class='danger'>\The [user] waves \the [src] over \the [M]'s head.</span>")
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(prob(15))
|
||||
H.cure_all_traumas(cure_type = CURE_SOLITUDE)
|
||||
else if(prob(10))
|
||||
H.cure_all_traumas(cure_type = CURE_CRYSTAL)
|
||||
return
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Is being deconverted with the [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attempt to deconvert [M.name] ([M.ckey])</font>")
|
||||
|
||||
msg_admin_attack("[key_name_admin(user)] attempted to deconvert [key_name_admin(M)] with [src.name] (INTENT: [uppertext(user.a_intent)]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)",ckey=key_name(user),ckey_target=key_name(M))
|
||||
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/nullrod/afterattack(atom/A, mob/user as mob, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if (istype(A, /turf/simulated/floor))
|
||||
to_chat(user, "<span class='notice'>You hit the floor with the [src].</span>")
|
||||
call(/obj/effect/rune/proc/revealrunes)(src)
|
||||
|
||||
/obj/item/reagent_containers/spray/aspergillum/AltClick()
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/spray/aspergillum
|
||||
name = "aspergillum"
|
||||
desc = "A ceremonial item for sprinkling holy water, or other liquids, on a subject."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "aspergillum"
|
||||
item_state = "aspergillum"
|
||||
amount_per_transfer_from_this = 5
|
||||
possible_transfer_amounts = null
|
||||
spray_size = 1
|
||||
volume = 10
|
||||
spray_sound = 'sound/effects/jingle.ogg'
|
||||
|
||||
/obj/item/energy_net
|
||||
name = "energy net"
|
||||
desc = "It's a net made of green energy."
|
||||
|
||||
Reference in New Issue
Block a user