Cult Overhaul

Cult is awful, so let's try to improve it. Idea by KorPhaeron. I also
took some inspiration from adrix89's sacrifice cult, so credits to him.
Also thanks a lot specially to MrPerson and Iamgoofball for helping
me brainstorm this, and Joan for the sprites for the summoning orb,
the large nar-sie shell, and the new cult antag hud.

Basically, we remove conversion, and turn cult into a magic version of
nuke, with a small team of stealth elite cultists that have to build a
base in the station and sacrifice people in order to build an army of
constructs and get materials to eventually summon Nar-Sie.

Stun talismans and conversion are gone. Nar-Sie is now the only
objective. Sacrifice runes now provide summoning orbs, which you can use
to drop a large shell. Insert enough orbs in the shell and you trigger a
Delta. Defend the shell for 3 minutes and Nar-sie will arise. This shell
is bombproof and singularityproof. It may be summoned up to three times
if destroyed, but you will have to start from the beginning sac-wise.

Runes are now RNG. Each cultist only gets 50% of the runes. Inspiration
is basically The Binding of Isaac here (thank you MrPerson for this!).
Furthermore, many old runes were merged/removed and other new ones were
added. Almost all were massively rebalanced. Cult now also has a
stealthy ritual dagger with high bleeding and throw effects.
This commit is contained in:
Tkdrg
2015-12-15 04:59:31 -03:00
parent b0da7b3a64
commit 8ead3e8628
22 changed files with 474 additions and 826 deletions
-91
View File
@@ -310,97 +310,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
else
alert("Invalid mob")
/*
/client/proc/cmd_admin_monkeyize(var/mob/M in world)
set category = "Fun"
set name = "Make Monkey"
if(!ticker)
alert("Wait until the game starts")
return
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/target = M
log_admin("[key_name(src)] is attempting to monkeyize [M.key].")
spawn(10)
target.monkeyize()
else
alert("Invalid mob")
/client/proc/cmd_admin_changelinginize(var/mob/M in world)
set category = "Fun"
set name = "Make Changeling"
if(!ticker)
alert("Wait until the game starts")
return
if(istype(M, /mob/living/carbon/human))
log_admin("[key_name(src)] has made [M.key] a changeling.")
spawn(10)
M.absorbed_dna[M.real_name] = M.dna
M.make_changeling()
if(M.mind)
M.mind.special_role = "Changeling"
else
alert("Invalid mob")
*/
/*
/client/proc/cmd_admin_abominize(var/mob/M in world)
set category = null
set name = "Make Abomination"
usr << "Ruby Mode disabled. Command aborted."
return
if(!ticker)
alert("Wait until the game starts.")
return
if(istype(M, /mob/living/carbon/human))
log_admin("[key_name(src)] has made [M.key] an abomination.")
// spawn(10)
// M.make_abomination()
*/
/*
/client/proc/make_cultist(var/mob/M in world)
set category = "Fun"
set name = "Make Cultist"
set desc = "Makes target a cultist"
if(!wordtravel)
runerandom()
if(M)
if(M.mind in ticker.mode.cult)
return
else
if(alert("Spawn that person a tome?",,"Yes","No")=="Yes")
M << "\red You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie. A tome, a message from your new master, appears on the ground."
new /obj/item/weapon/tome(M.loc)
else
M << "\red You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie."
var/glimpse=pick("1","2","3","4","5","6","7","8")
switch(glimpse)
if("1")
M << "\red You remembered one thing from the glimpse... [wordtravel] is travel..."
if("2")
M << "\red You remembered one thing from the glimpse... [wordblood] is blood..."
if("3")
M << "\red You remembered one thing from the glimpse... [wordjoin] is join..."
if("4")
M << "\red You remembered one thing from the glimpse... [wordhell] is Hell..."
if("5")
M << "\red You remembered one thing from the glimpse... [worddestr] is destroy..."
if("6")
M << "\red You remembered one thing from the glimpse... [wordtech] is technology..."
if("7")
M << "\red You remembered one thing from the glimpse... [wordself] is self..."
if("8")
M << "\red You remembered one thing from the glimpse... [wordsee] is see..."
if(M.mind)
M.mind.special_role = "Cultist"
ticker.mode.cult += M.mind
src << "Made [M] a cultist."
*/
var/list/TYPES_SHORTCUTS = list(
/obj/effect/decal/cleanable = "CLEANABLE",
/obj/item/device/radio/headset = "HEADSET",
+1 -2
View File
@@ -194,7 +194,6 @@
/datum/admins/proc/makeCult()
var/datum/game_mode/cult/temp = new
if(config.protect_roles_from_antagonist)
temp.restricted_jobs += temp.protected_jobs
@@ -216,7 +215,7 @@
candidates += applicant
if(candidates.len)
var/numCultists = min(candidates.len, 4)
var/numCultists = min(candidates.len, 5)
for(var/i = 0, i<numCultists, i++)
H = pick(candidates)
+3 -3
View File
@@ -18,12 +18,12 @@ obj/effect/dummy/slaughter/relaymove(mob/user, direction)
spawn(1)
src.canmove = 1
/obj/effect/dummy/slaughter/ex_act(blah)
/obj/effect/dummy/slaughter/ex_act()
return
/obj/effect/dummy/slaughter/bullet_act(blah)
/obj/effect/dummy/slaughter/bullet_act()
return
/obj/effect/dummy/slaughter/singularity_act(blah)
/obj/effect/dummy/slaughter/singularity_act()
return
/obj/effect/dummy/slaughter/Destroy()
@@ -684,9 +684,6 @@
var/see_temp = H.see_invisible
H.see_invisible = invis_sight
if(H.seer)
H.see_invisible = SEE_INVISIBLE_OBSERVER
if(H.glasses)
if(istype(H.glasses, /obj/item/clothing/glasses))
var/obj/item/clothing/glasses/G = H.glasses
-1
View File
@@ -87,7 +87,6 @@
var/obj/item/r_hand = null//Living
var/obj/item/weapon/storage/s_active = null//Carbon
var/seer = 0 //for cult//Carbon, probably Human
var/see_override = 0 //0 for no override, sets see_invisible = see_override in mob life process
var/datum/hud/hud_used = null
-4
View File
@@ -54,10 +54,6 @@
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/paper)
assets.send(user)
if(istype(src, /obj/item/weapon/paper/talisman)) //Talismans cannot be read
if(!iscultist(user) && !user.stat)
user << "<span class='danger'>There are indecipherable images scrawled on the paper in what looks to be... <i>blood?</i></span>"
return
if(in_range(user, src) || isobserver(user))
if( !(ishuman(user) || isobserver(user) || issilicon(user)) )
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)]<HR>[stamps]</BODY></HTML>", "window=[name]")
+1 -1
View File
@@ -61,7 +61,7 @@
return
/obj/singularity/narsie/proc/godsmack(atom/A)
if(istype(A,/obj/))
if(isobj(A))
var/obj/O = A
O.ex_act(1)
if(O) qdel(O)
@@ -246,7 +246,7 @@
/obj/singularity/proc/consume(atom/A)
var/gain = A.singularity_act(current_size)
var/gain = A.singularity_act(current_size, src)
src.energy += gain
if(istype(A, /obj/machinery/power/supermatter_shard) && !consumedSupermatter)
desc = "[initial(desc)] It glows fiercely with inner fire."
@@ -183,13 +183,10 @@
if (!M.stuttering) M.stuttering = 1
M.stuttering += 4
M.Dizzy(5)
if(iscultist(M) && prob(5))
M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","Egkau'haom'nai en Chaous","Ho Diak'nos tou Ap'iron","R'ge Na'sie","Diabo us Vo'iscum","Si gn'um Co'nu"))
if(data >= 75 && prob(33)) // 30 units, 135 seconds
if (!M.confused) M.confused = 1
M.confused += 3
if(iscultist(M) || (is_handofgod_cultist(M) && !is_handofgod_prophet(M)))
ticker.mode.remove_cultist(M.mind)
if((is_handofgod_cultist(M) && !is_handofgod_prophet(M)))
ticker.mode.remove_hog_follower(M.mind)
holder.remove_reagent(src.id, src.volume) // maybe this is a little too perfect and a max() cap on the statuses would be better??
M.jitteriness = 0