Space Chaplains: Now Sensical (#7323)

This commit is contained in:
Geeves
2019-11-17 20:16:26 +01:00
committed by Werner
parent 8fadcf426b
commit ca5550c5d7
11 changed files with 262 additions and 189 deletions
@@ -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
-152
View File
@@ -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."