more things

This commit is contained in:
Aurorablade
2016-05-25 02:32:26 -04:00
parent 6ccb139696
commit ef5b2d7c8e
11 changed files with 142 additions and 75 deletions
+17 -8
View File
@@ -2,11 +2,14 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser
charge_max = 1800
action_icon_state = "lesserconstruct"
action_background_icon_state = "bg_cult"
/obj/effect/proc_holder/spell/aoe_turf/conjure/floor
name = "Floor Construction"
desc = "This spell constructs a cult floor"
action_icon_state = "floorconstruct"
action_background_icon_state = "bg_cult"
school = "conjuration"
charge_max = 20
clothes_req = 0
@@ -19,7 +22,8 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/wall
name = "Lesser Construction"
desc = "This spell constructs a cult wall"
action_icon_state = "lesserconstruct"
action_background_icon_state = "bg_cult"
school = "conjuration"
charge_max = 100
clothes_req = 0
@@ -47,7 +51,8 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone
name = "Summon Soulstone"
desc = "This spell reaches into Nar-Sie's realm, summoning one of the legendary fragments across time and space"
action_icon_state = "summonsoulstone"
action_background_icon_state = "bg_cult"
school = "conjuration"
charge_max = 3000
clothes_req = 0
@@ -60,7 +65,8 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/pylon
name = "Cult Pylon"
desc = "This spell conjures a fragile crystal from Nar-Sie's realm. Makes for a convenient light source."
action_icon_state = "summonsoulstone"
action_background_icon_state = "bg_cult"
school = "conjuration"
charge_max = 200
clothes_req = 0
@@ -74,7 +80,8 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall
name = "Shield"
desc = "This spell creates a temporary forcefield to shield yourself and allies from incoming fire"
action_icon_state = "cultforcewall"
action_background_icon_state = "bg_cult"
school = "transmutation"
charge_max = 300
clothes_req = 0
@@ -94,7 +101,8 @@
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift
name = "Phase Shift"
desc = "This spell allows you to pass through walls"
action_icon_state = "phaseshift"
action_background_icon_state = "bg_cult"
school = "transmutation"
charge_max = 200
clothes_req = 0
@@ -110,7 +118,7 @@
/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser
name = "Lesser Magic Missile"
desc = "This spell fires several, slow moving, magic projectiles at nearby targets."
action_background_icon_state = "bg_cult"
school = "evocation"
charge_max = 400
clothes_req = 0
@@ -122,7 +130,8 @@
/obj/effect/proc_holder/spell/targeted/smoke/disable
name = "Paralysing Smoke"
desc = "This spell spawns a cloud of paralysing smoke."
action_icon_state = "parasmoke"
action_background_icon_state = "bg_cult"
school = "conjuration"
charge_max = 200
clothes_req = 0
+6
View File
@@ -21,6 +21,12 @@ var/global/list/all_cults = list()
var/mob/living/carbon/human/H = mind.current
if(isloyal(H))
return 0
if(issilicon(mind.current))
return 0 //can't convert machines, that's ratvar's thing
if(isguardian(mind.current))
var/mob/living/simple_animal/hostile/guardian/G = mind.current
if(!iscultist(G.summoner))
return 0 //can't convert it unless the owner is converted
return 1
/proc/is_sacrifice_target(datum/mind/mind)
+6 -2
View File
@@ -6,6 +6,7 @@
w_class = 4
force = 30
throwforce = 10
sharp = 1
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
@@ -51,6 +52,7 @@
name = "runed bola"
desc = "A strong bola, bound with dark magic. Throw it to trip and slow your victim."
icon_state = "bola_cult"
item_state = "bola_cult"
breakouttime = 45
/obj/item/clothing/head/culthood
@@ -140,6 +142,8 @@
/obj/item/weapon/whetstone/cult
name = "eldritch whetstone"
desc = "A block, empowered by dark magic. Sharp weapons will be enhanced when used on the stone."
icon = 'icons/obj/cult.dmi'
icon_state = "cultstone"
used = 0
increment = 5
max = 40
@@ -247,14 +251,14 @@
if(uses <= 0)
icon_state ="shifter_drained"
playsound(mobloc, "sparks", 50, 1)
new /obj/effect/overlay/temp/cult/phase/out(list(mobloc, C.dir))
new /obj/effect/overlay/temp/cult/phase/out(mobloc)
var/atom/movable/pulled = handle_teleport_grab(destination, C)
C.forceMove(destination)
if(pulled)
C.start_pulling(pulled) //forcemove resets pulls, so we need to re-pull
new /obj/effect/overlay/temp/cult/phase(list(destination, C.dir))
new /obj/effect/overlay/temp/cult/phase(destination)
playsound(destination, 'sound/effects/phasein.ogg', 25, 1)
playsound(destination, "sparks", 50, 1)
+52 -25
View File
@@ -55,6 +55,18 @@
..()
if(iscultist(user) && cooldowntime > world.time)
to_chat(user, "<span class='cultitalic'>The magic in [src] is weak, it will be ready to use again in [getETA()].</span>")
to_chat(user, "<span class='notice'>\The [src] is [anchored ? "":"not "]secured to the floor.</span>")
/obj/structure/cult/attackby(obj/I, mob/user, params)
if(istype(I, /obj/item/weapon/tome) && iscultist(user))
anchored = !anchored
to_chat(user, "<span class='notice'>You [anchored ? "":"un"]secure \the [src] [anchored ? "to":"from"] the floor.</span>")
if(!anchored)
icon_state = "[initial(icon_state)]_off"
else
icon_state = initial(icon_state)
else
return ..()
/obj/structure/cult/proc/getETA()
var/time = (cooldowntime - world.time)/600
@@ -76,6 +88,9 @@
if(!iscultist(user))
to_chat(user, "<span class='warning'>You're pretty sure you know exactly what this is used for and you can't seem to touch it.</span>")
return
if(!anchored)
to_chat(user, "<span class='cultitalic'>You need to anchor [src] to the floor with a tome first.</span>")
return
if(cooldowntime > world.time)
to_chat(user, "<span class='cultitalic'>The magic in [src] is weak, it will be ready to use again in [getETA()].</span>")
return
@@ -125,6 +140,9 @@
if(!iscultist(user))
to_chat(user, "<span class='warning'>The heat radiating from [src] pushes you back.</span>")
return
if(!anchored)
to_chat(user, "<span class='cultitalic'>You need to anchor [src] to the floor with a tome first.</span>")
return
if(cooldowntime > world.time)
to_chat(user, "<span class='cultitalic'>The magic in [src] is weak, it will be ready to use again in [getETA()].</span>")
return
@@ -152,20 +170,16 @@
icon_state = "pylon"
light_range = 5
light_color = "#3e0000"
var/heal_delay = 50
var/last_shot = 0
var/list/corruption = list()
health = 50 //Very fragile
death_message = "<span class='warning'>The pylon's crystal vibrates and glows fiercely before violently shattering!</span>"
death_sound = 'sound/effects/pylon_shatter.ogg'
var/heal_delay = 25
var/last_heal = 0
var/corrupt_delay = 50
var/last_corrupt = 0
/obj/structure/cult/cultpylon/New()
processing_objects |= src
corruption += get_turf(src)
for(var/i in 1 to 5)
for(var/t in corruption)
var/turf/T = t
corruption |= T.GetAtmosAdjacentTurfs()
..()
/obj/structure/cult/cultpylon/Destroy()
@@ -173,25 +187,35 @@
return ..()
/obj/structure/cult/cultpylon/process()
if((last_shot + heal_delay) <= world.time)
last_shot = world.time
if(!anchored)
return
if(last_heal <= world.time)
last_heal = world.time + heal_delay
for(var/mob/living/L in range(5, src))
if(iscultist(L))
var/mob/living/carbon/human/H = L
if(istype(H))
L.adjustBruteLoss(-1, 0)
L.adjustFireLoss(-1, 0)
L.updatehealth()
if(istype(L, /mob/living/simple_animal/shade) || istype(L, /mob/living/simple_animal/hostile/construct))
var/mob/living/simple_animal/M = L
if(M.health < M.maxHealth)
M.adjustBruteLoss(-2)//WAS adjust health...runtimes..
if(corruption.len)
var/turf/T = pick_n_take(corruption)
corruption -= T
if(istype(T, /turf/simulated/floor/engine/cult) || istype(T, /turf/space))
return
if(iscultist(L) || istype(L, /mob/living/simple_animal/shade) || istype(L, /mob/living/simple_animal/hostile/construct))
if(L.health != L.maxHealth)
new /obj/effect/overlay/temp/heal(get_turf(src), "#960000")
if(ishuman(L))
L.adjustBruteLoss(-1, 0)
L.adjustFireLoss(-1, 0)
L.updatehealth()
if(istype(L, /mob/living/simple_animal/shade) || istype(L, /mob/living/simple_animal/hostile/construct))
var/mob/living/simple_animal/M = L
if(M.health < M.maxHealth)
M.adjustHealth(-1)
//CHECK_TICK
if(last_corrupt <= world.time)
var/list/validturfs = list()
for(var/T in circleviewturfs(src, 5))
if(istype(T, /turf/simulated/floor/engine/cult) || istype(T, /turf/space) || istype(T, /turf/simulated/wall))
continue
validturfs |= T
var/turf/T = safepick(validturfs)
if(T)
T.ChangeTurf(/turf/simulated/floor/engine/cult)
last_corrupt = world.time + corrupt_delay
else
last_corrupt = world.time + corrupt_delay*2
/obj/structure/cult/culttome
@@ -206,6 +230,9 @@
if(!iscultist(user))
to_chat(user, "<span class='warning'>All of these books seem to be gibberish.</span>")
return
if(!anchored)
to_chat(user, "<span class='cultitalic'>You need to anchor [src] to the floor with a tome first.</span>")
return
if(cooldowntime > world.time)
to_chat(user, "<span class='cultitalic'>The magic in [src] is weak, it will be ready to use again in [getETA()].</span>")
return
+40 -21
View File
@@ -20,6 +20,7 @@
throw_range = 5
w_class = 2
var/scribereduct = 0
var/canbypass = 0 //ADMINBUS
/obj/item/weapon/tome/accursed
name = "accursed tome"
@@ -30,6 +31,7 @@
name = "imbued arcane tome"
desc = "An arcane tome granted by the Geometer itself."
scribereduct = 50
canbypass = 1
/obj/item/weapon/tome/examine(mob/user)
..()
@@ -219,23 +221,39 @@
return
if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated())
return
if(ispath(rune_to_scribe, /obj/effect/rune/narsie))//may need to change this - Fethas
var/confirm_final = alert(usr, "This is the FINAL step to summon [ticker.mode.cultdat.entity_name], it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for [ticker.mode.cultdat.entity_name]!", "No")
if(confirm_final == "No")
to_chat(usr, "On second thought, we should prepare further for the final battle...")
return
command_announcement.Announce("Figments from an eldritch god are being summoned somwhere on the station from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensionsal Affairs", 'sound/AI/spanomalies.ogg')
for(var/B in spiral_range_turfs(1, user, 1))
var/turf/T = B
var/obj/machinery/shield/N = new(T)
N.name = "Rune-Scriber's Shield"
N.desc = "A potent shield summoned by cultists to protect them while they prepare the final ritual"
N.icon_state = "shield-red"
N.health = 60
shields |= N
user.visible_message("<span class='warning'>[user] cuts open their arm and begins writing in their own blood!</span>", \
"<span class='cult'>You slice open your arm and begin drawing a sigil of [ticker.mode.cultdat.entity_title3].</span>")
user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, pick("l_arm", "r_arm"))
if(ispath(rune_to_scribe, /obj/effect/rune/narsie) || ispath(rune_to_scribe, /obj/effect/rune/slaughter))//may need to change this - Fethas
if(ticker.mode.name == "cult")
var/datum/game_mode/cult/cult_mode = ticker.mode
if(!("eldergod" in cult_mode.objectives))
to_chat(user, "<span class='warning'>[cult_mode.cultdat.entity_name]'s power does not wish to be unleashed!</span>")
return
else if(!cult_mode.narsie_condition_cleared)
to_chat(user, "<span class='warning'>There is still more to do before unleashing [cult_mode.cultdat.entity_name] power!</span>")
return
else if(!cult_mode.eldergod)
to_chat(user, "<span class='cultlarge'>\"I am already here. There is no need to try to summon me now.\"</span>")
return
else if(cult_mode.demons_summoned)
to_chat(user, "<span class='cultlarge'>\"We am already here. There is no need to try to summon us now.\"</span>")
return
var/confirm_final = alert(user, "This is the FINAL step to summon Nar-Sie, it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for Nar-Sie!", "No")
if(confirm_final == "No")
user << "<span class='cult'>You decide to prepare further before scribing the rune.</span>"
return
command_announcement.Announce("Figments from an eldritch god are being summoned somwhere on the station from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensionsal Affairs", 'sound/AI/spanomalies.ogg')
for(var/B in spiral_range_turfs(1, user, 1))
var/turf/T = B
var/obj/machinery/shield/N = new(T)
N.name = "Rune-Scriber's Shield"
N.desc = "A potent shield summoned by cultists to protect them while they prepare the final ritual"
N.icon_state = "shield-red"
N.health = 60
shields |= N
var/dam_zone = pick("head", "chest", "groin", "l_arm", "l_hand", "r_arm", "r_hand", "l_leg", "l_foot", "r_leg", "r_foot")
user.visible_message("<span class='warning'>[user] cuts open their [dam_zone] and begins writing in their own blood!</span>", \
"<span class='cult'>You slice open your [dam_zone] and begin drawing a sigil of [ticker.mode.cultdat.entity_title3].</span>")
user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, dam_zone)
if(!do_after(user, initial(rune_to_scribe.scribe_delay)-scribereduct, target = get_turf(user)))
for(var/V in shields)
var/obj/machinery/shield/S = V
@@ -251,8 +269,9 @@
var/obj/machinery/shield/S = V
if(S && !qdeleted(S))
qdel(S)
new rune_to_scribe(Turf, chosen_keyword)
rune_to_scribe.blood_DNA = list()
rune_to_scribe.blood_DNA[user.dna.unique_enzymes] = user.dna.b_type
rune_to_scribe.add_hiddenprint(user)
var/obj/effect/rune/R = new rune_to_scribe(Turf, chosen_keyword)
var/mob/living/carbon/human/H = user
R.blood_DNA = list()
R.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
R.add_hiddenprint(H)
to_chat(user, "<span class='cult'>The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]</span>")
+8 -18
View File
@@ -463,19 +463,7 @@ var/list/teleport_runes = list()
var/mob/living/user = invokers[1]
if(ticker.mode.name == "cult")
var/datum/game_mode/cult/cult_mode = ticker.mode
if(!("eldergod" in cult_mode.objectives))
message_admins("[user.real_name]([user.ckey]) tried to summon Nar-Sie when the objective was wrong")
for(var/M in invokers)
var/mob/living/L = M
to_chat(L, "<span class='cultlarge'><i>\"YOUR SOUL BURNS WITH YOUR ARROGANCE!!!\"</i></span>")
if(L.reagents)
L.reagents.add_reagent("hell_water", 10)
L.Weaken(7)
L.Stun(7)
fail_invoke()
log_game("Summon Nar-Sie rune failed - improper objective")
return
else if(user.z != ZLEVEL_STATION)
if(user.z != ZLEVEL_STATION)
message_admins("[user.real_name]([user.ckey]) tried to summon Nar-Sie off station")
for(var/M in invokers)
var/mob/living/L = M
@@ -528,6 +516,7 @@ var/list/teleport_runes = list()
req_cultists = 9
color = rgb(125,23,23)
scribe_delay = 450
scribe_damage = 40.1 //how much damage you take doing it
icon = 'icons/effects/96x96.dmi'
icon_state = "rune_large"
pixel_x = -32
@@ -572,7 +561,7 @@ var/list/teleport_runes = list()
fail_invoke()
log_game("Summon Demons rune failed - improper objective")
return
else if(user.z != ZLEVEL_STATION)
if(user.z != ZLEVEL_STATION)
message_admins("[user.real_name]([user.ckey]) tried to summon demons off station")
for(var/M in invokers)
var/mob/living/L = M
@@ -626,7 +615,7 @@ var/list/teleport_runes = list()
if(rune_in_use)
return
for(var/mob/living/M in orange(1,src))
if(M.stat == DEAD)
if(M.stat == DEAD && !iscultist(M))
potential_sacrifice_mobs.Add(M)
if(!potential_sacrifice_mobs.len)
to_chat(user, "<span class='cultitalic'>There are no eligible sacrifices nearby!</span>")
@@ -829,7 +818,7 @@ var/list/teleport_runes = list()
var/mob/living/user = invokers[1]
var/list/cultists = list()
for(var/datum/mind/M in ticker.mode.cult)
if(!(M.current in invokers))
if(!(M.current in invokers) && M.current.stat != DEAD)
cultists |= M.current
var/mob/living/cultist_to_summon = input(user, "Who do you wish to call to [src]?", "Followers of [ticker.mode.cultdat.entity_title3]") as null|anything in cultists
if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated())
@@ -867,8 +856,9 @@ var/list/teleport_runes = list()
/obj/effect/rune/blood_boil/invoke(var/list/invokers)
..()
var/turf/T = get_turf(src)
visible_message("<span class='warning'>[src] briefly bubbles before exploding!</span>")
for(var/mob/living/carbon/C in viewers(src))
for(var/mob/living/carbon/C in viewers(T))
if(!iscultist(C))
var/obj/item/weapon/nullrod/N = C.null_rod_check()
if(N)
@@ -881,8 +871,8 @@ var/list/teleport_runes = list()
var/mob/living/L = M
L.apply_damage(15, BRUTE, pick("l_arm", "r_arm"))
to_chat(L,"<span class='cultitalic'>[src] saps your strength!</span>")
explosion(get_turf(src), -1, 0, 1, 5)
qdel(src)
explosion(T, -1, 0, 1, 5)
//Rite of Spectral Manifestation: Summons a ghost on top of the rune as a cultist human with no items. User must stand on the rune at all times, and takes damage for each summoned ghost.
+1 -1
View File
@@ -299,7 +299,7 @@
//Talisman of Fabrication: Creates a construct shell out of 25 metal sheets.
/obj/item/weapon/paper/talisman/construction
cultist_name = "Talisman of Construction"
cultist_desc = "Use this talisman on at least twenty-five metal sheets to create an empty construct shell"
cultist_desc = "Use this talisman on at least twenty-five metal sheets to create an empty construct shell or on plasteel to make runed metal"
invocation = "Ethra p'ni dedol!"
/obj/item/weapon/paper/talisman/construction/attack_self(mob/living/user)
+12
View File
@@ -115,6 +115,18 @@
/obj/effect/overlay/temp/cult/phase/out
icon_state = "cultout"
/obj/effect/overlay/temp/heal //color is white by default, set to whatever is needed
name = "healing glow"
icon_state = "heal"
duration = 15
/obj/effect/overlay/temp/heal/New(loc, colour)
..()
pixel_x = rand(-12, 12)
pixel_y = rand(-9, 0)
if(colour)
color = colour
/obj/effect/overlay/temp/cult/sac
name = "maw of Nar-Sie"
icon_state = "sacconsume"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 KiB

After

Width:  |  Height:  |  Size: 369 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB