last of tg tweaks for now.

rune blood dna is runtiming but eh....
This commit is contained in:
Aurorablade
2016-05-15 23:09:48 -04:00
parent ce69938a65
commit c3ee3192ba
11 changed files with 41 additions and 131 deletions
+1 -1
View File
@@ -48,7 +48,7 @@
init_subtypes(/datum/table_recipe, table_recipes)
init_subtypes(/datum/cult_info, all_cults)
all_cults = typesof(/datum/cult_info)
return 1
+6 -11
View File
@@ -12,13 +12,6 @@
/obj/effect/rune/proc/check_icon()
icon = get_uristrune_cult(invocation)
/obj/item/weapon/tome
name = "arcane tome"
icon_state ="tome"
throw_speed = 1
throw_range = 5
w_class = 2.0
/obj/item/weapon/tome
name = "arcane tome"
desc = "An old, dusty tome with frayed edges and a sinister-looking cover."
@@ -26,6 +19,7 @@
throw_speed = 2
throw_range = 5
w_class = 2
var/scribereduct = 0
/obj/item/weapon/tome/examine(mob/user)
..()
@@ -218,11 +212,9 @@
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")
usr << "On second thought, we should prepare further for the final battle..."
to_chat(usr, "On second thought, we should prepare further for the final battle...")
return
var/area/A = get_area(src)
var/locname = initial(A.name)
command_announcement.Announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensionsal Affairs", 'sound/AI/spanomalies.ogg')
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)
@@ -250,4 +242,7 @@
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)
to_chat(user, "<span class='cult'>The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]</span>")
+1 -16
View File
@@ -40,6 +40,7 @@ To draw a rune, use an arcane tome.
..()
if(set_keyword)
keyword = set_keyword
check_icon()
var/image/blood = image(loc = src)
blood.override = 1
for(var/mob/living/silicon/ai/AI in player_list)
@@ -153,7 +154,6 @@ structure_check() searches for nearby cultist structures required for the invoca
/obj/effect/rune/malformed/New()
..()
icon_state = "[rand(1,6)]"
color = rgb(rand(0,255), rand(0,255), rand(0,255))
/obj/effect/rune/malformed/invoke(var/list/invokers)
..()
@@ -175,7 +175,6 @@ structure_check() searches for nearby cultist structures required for the invoca
cultist_desc = "transforms paper into powerful magic talismans."
invocation = "H'drak v'loso, mir'kanas verbot!"
icon_state = "3"
color = rgb(0, 0, 255)
/obj/effect/rune/imbue/invoke(var/list/invokers)
var/mob/living/user = invokers[1] //the first invoker is always the user
@@ -224,7 +223,6 @@ var/list/teleport_runes = list()
cultist_desc = "warps everything above it to another chosen teleport rune."
invocation = "Sas'so c'arta forbici!"
icon_state = "2"
color = "#551A8B"
req_keyword = 1
var/listkey
@@ -301,7 +299,6 @@ var/list/teleport_runes = list()
cultist_desc = "converts a normal crewmember on top of it to the cult. Does not work on loyalty-implanted crew."
invocation = "Mah'weyh pleggh at e'ntrath!"
icon_state = "3"
color = rgb(200, 0, 0)
req_cultists = 2
/obj/effect/rune/convert/invoke(var/list/invokers)
@@ -341,7 +338,6 @@ var/list/teleport_runes = list()
icon_state = "3"
allow_excess_invokers = 1
invocation = "Barhah hra zar'garis!"
color = rgb(255, 255, 255)
rune_in_use = 0
/obj/effect/rune/sacrifice/New()
@@ -510,11 +506,6 @@ var/list/teleport_runes = list()
sleep(40)
new /obj/singularity/narsie/large(T) //Causes Nar-Sie to spawn even if the rune has been removed
cult_mode.eldergod = 0
else
for(var/M in invokers)
to_chat(M, "<span class='warning'>[ticker.mode.cultdat.entity_name] does not respond!</span>")
fail_invoke()
log_game("Summon Nar-Sie rune failed - gametype is not cult")//May need to remove
/obj/effect/rune/narsie/attackby(obj/I, mob/user, params) //Since the narsie rune takes a long time to make, add logging to removal.
if((istype(I, /obj/item/weapon/tome) && iscultist(user)))
@@ -537,7 +528,6 @@ var/list/teleport_runes = list()
cultist_desc = "requires two corpses, one on the rune and one adjacent to the rune. The one on the rune is brought to life, the other is turned to ash."
invocation = null //Depends on the name of the user - see below
icon_state = "1"
color = rgb(200, 0, 0)
/obj/effect/rune/raise_dead/invoke(var/list/invokers)
var/turf/T = get_turf(src)
@@ -621,7 +611,6 @@ var/list/teleport_runes = list()
invocation = "Ta'gh fara'qha fel d'amar det!"
icon_state = "5"
allow_excess_invokers = 1
color = rgb(77, 148, 255)
/obj/effect/rune/emp/invoke(var/list/invokers)
var/turf/E = get_turf(src)
@@ -651,7 +640,6 @@ var/list/teleport_runes = list()
cultist_desc = "severs the link between one's spirit and body. This effect is taxing and one's physical body will take damage while this is active."
invocation = "Fwe'sh mah erl nyag r'ya!"
icon_state = "6"
color = rgb(126, 23, 23)
rune_in_use = 0 //One at a time, please!
var/mob/living/affecting = null
@@ -724,7 +712,6 @@ var/list/teleport_runes = list()
cultist_desc = "when invoked, makes an invisible wall to block passage. Can be invoked again to reverse this."
invocation = "Khari'd! Eske'te tannin!"
icon_state = "1"
color = rgb(255, 0, 0)
/obj/effect/rune/wall/examine(mob/user)
..()
@@ -750,7 +737,6 @@ var/list/teleport_runes = list()
req_cultists = 2
allow_excess_invokers = 1
icon_state = "5"
color = rgb(0, 255, 0)
/obj/effect/rune/summon/invoke(var/list/invokers)
var/mob/living/user = invokers[1]
@@ -790,7 +776,6 @@ var/list/teleport_runes = list()
cultist_desc = "boils the blood of non-believers who can see the rune, dealing extreme amounts of damage. Requires 3 invokers."
invocation = "Dedo ol'btoh!"
icon_state = "4"
color = rgb(200, 0, 0)
req_cultists = 3
/obj/effect/rune/blood_boil/invoke(var/list/invokers)
-10
View File
@@ -108,7 +108,6 @@
/obj/item/weapon/paper/talisman/teleport
cultist_name = "Talisman of Teleportation"
cultist_desc = "A single-use talisman that will teleport a user to a random rune of the same keyword."
color = "#551A8B" // purple
invocation = "Sas'so c'arta forbici!"
health_cost = 5
@@ -150,7 +149,6 @@
/obj/item/weapon/paper/talisman/summon_tome
cultist_name = "Talisman of Tome Summoning"
cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of a cult."
color = "#512727" // red-black
invocation = "N'ath reth sh'yro eth d'raggathnor!"
health_cost = 1
@@ -165,7 +163,6 @@
/obj/item/weapon/paper/talisman/true_sight
cultist_name = "Talisman of Veiling"
cultist_desc = "A multi-use talisman that hides nearby runes. On its second use, will reveal nearby runes."
color = "#9c9c9c" // grey
invocation = "Kla'atu barada nikt'o!"
health_cost = 1
uses = 2
@@ -190,7 +187,6 @@
/obj/item/weapon/paper/talisman/make_runes_fake
cultist_name = "Talisman of Disguising"
cultist_desc = "A talisman that will make nearby runes appear fake."
color = "#ff80d5" // honk
invocation = "By'o nar'nar!"
/obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user, successfuluse = 1)
@@ -205,7 +201,6 @@
/obj/item/weapon/paper/talisman/emp
cultist_name = "Talisman of Electromagnetic Pulse"
cultist_desc = "A talisman that will cause a moderately-sized electromagnetic pulse."
color = "#4d94ff" // light blue
invocation = "Ta'gh fara'qha fel d'amar det!"
health_cost = 5
@@ -220,7 +215,6 @@
/obj/item/weapon/paper/talisman/stun
cultist_name = "Talisman of Stunning"
cultist_desc = "A talisman that will stun and inhibit speech on a single target. To use, attack target directly."
color = "#ff0000" // red
invocation = "Dream sign:Evil sealing talisman!"
health_cost = 10
@@ -265,7 +259,6 @@
/obj/item/weapon/paper/talisman/armor
cultist_name = "Talisman of Arming"
cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to."
color = "#33cc33" // green
invocation = "N'ath reth sh'yro eth draggathnor!"
/obj/item/weapon/paper/talisman/armor/invoke(mob/living/user, successfuluse = 1)
@@ -292,7 +285,6 @@
/obj/item/weapon/paper/talisman/horror
cultist_name = "Talisman of Horrors"
cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations."
color = "#ffb366" // light orange
invocation = "Lo'Nab Na'Dm!"
/obj/item/weapon/paper/talisman/horror/attack(mob/living/target, mob/living/user)
@@ -309,7 +301,6 @@
cultist_name = "Talisman of Construction"
cultist_desc = "Use this talisman on at least twenty-five metal sheets to create an empty construct shell"
invocation = "Ethra p'ni dedol!"
color = "#000000" // black
/obj/item/weapon/paper/talisman/construction/attack_self(mob/living/user)
if(iscultist(user))
@@ -350,7 +341,6 @@
cultist_name = "Talisman of Shackling"
cultist_desc = "Use this talisman on a victim to handcuff them with dark bindings."
invocation = "In'totum Lig'abis!"
color = "#B27300" // burnt-orange
uses = 4
/obj/item/weapon/paper/talisman/shackle/invoke(mob/living/user, successfuluse = 0)
+1 -1
View File
@@ -31,7 +31,7 @@
var/ert_disabled = 0
var/uplink_welcome = "Syndicate Uplink Console:"
var/uplink_uses = 10
var/datum/cult_info/cultdat = null //here instead of cult for adminbus purposes
var/datum/cult_info/cultdat = new /datum/cult_info() //here instead of cult for adminbus purposes
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
+1 -49
View File
@@ -60,26 +60,6 @@
var/boltDown = 'sound/machines/BoltsDown.ogg'
/obj/machinery/door/airlock/narsie_act()
var/turf/T = get_turf(src)
var/runed = prob(20)
if(prob(20))
if(glass)
if(runed)
new /obj/machinery/door/airlock/cult/glass(T)
else
new /obj/machinery/door/airlock/cult/unruned/glass(T)
else
if(runed)
new /obj/machinery/door/airlock/cult(T)
else
new /obj/machinery/door/airlock/cult/unruned(T)
if(runed)
new /obj/effect/overlay/temp/cult/door(T)
else
new /obj/effect/overlay/temp/cult/door/unruned(T)
qdel(src)
/obj/machinery/door/airlock/command
name = "Airlock"
icon = 'icons/obj/doors/Doorcom.dmi'
@@ -1087,32 +1067,4 @@ About the new airlock wires panel:
src.unlock()
src.open()
src.lock()
return
//////////////////////////////////
/*
Cult Airlocks
*/
/obj/machinery/door/airlock/cult
name = "cult airlock"
icon = 'icons/obj/doors/cult_runed.dmi'
assembly_type = /obj/structure/door_assembly/door_assembly_cult
/obj/machinery/door/airlock/cult/narsie_act()
return
/obj/machinery/door/airlock/cult/glass
assembly_type = /obj/structure/door_assembly/door_assembly_cult/glass
glass = 1
opacity = 0
/obj/machinery/door/airlock/cult/unruned
icon = 'icons/obj/doors/cult.dmi'
assembly_type = /obj/structure/door_assembly/door_assembly_cult/unruned
/obj/machinery/door/airlock/cult/unruned/glass
assembly_type = /obj/structure/door_assembly/door_assembly_cult/unruned/glass
glass = 1
opacity = 0
return
+11 -24
View File
@@ -1,34 +1,21 @@
/proc/make_bit_triplet()
var/list/num_sample = list(1, 2, 3, 4, 5, 6, 7, 8, 9)
var/result = 0
for(var/i = 0, i < 3, i++)
var/num = pick(num_sample)
num_sample -= num
result += (1 << num)
return result
var/list/word_to_uristrune_table = null
/proc/word_to_uristrune_bit(word)
if(word_to_uristrune_table == null)
word_to_uristrune_table = list()
var/bit = 1
while(length(word))
var/w = word
word_to_uristrune_table[w] = bit
word -= w
bit <<= 1
return word_to_uristrune_table[word]
/proc/get_uristrune_cult(word1)
/proc/get_uristrune_cult(word)
var/animated
if(word1)
if(word)
animated = 1
else
animated = 0
var/bits = word_to_uristrune_bit(word1)
var/bits = make_bit_triplet()
return get_uristrune(bits, animated)
@@ -209,7 +209,6 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \
*/
var/global/list/datum/stack_recipe/runed_metal_recipes = list ( \
new/datum/stack_recipe("runed door", /obj/machinery/door/airlock/cult, 3, time = 50, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("runed girder", /obj/structure/cultgirder, 1, time = 50, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("pylon", /obj/structure/cult/cultpylon, 3, time = 40, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("forge", /obj/structure/cult/cultforge, 5, time = 40, one_per_turf = 1, on_floor = 1), \
@@ -139,24 +139,6 @@ obj/structure/door_assembly/multi_tile/Move()
bound_width = world.icon_size
bound_height = width * world.icon_size
/obj/structure/door_assembly/door_assembly_cult
name = "cult airlock assembly"
icon = 'icons/obj/doors/cult_runed.dmi'
base_name = "cult"
airlock_type = /obj/machinery/door/airlock/cult
anchored = 1
state = 1
/obj/structure/door_assembly/door_assembly_cult/glass
glass = 1
/obj/structure/door_assembly/door_assembly_cult/unruned
icon = 'icons/obj/doors/cult.dmi'
/obj/structure/door_assembly/door_assembly_cult/unruned/glass
glass = 1
/obj/structure/door_assembly/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/pen))
@@ -12,6 +12,12 @@
handle_rotation()
return
/obj/structure/stool/bed/chair/narsie_act()
if(prob(20))
var/obj/structure/stool/bed/chair/wood/W = new/obj/structure/stool/bed/chair/wood(get_turf(src))
W.dir = dir
qdel(src)
/obj/structure/stool/bed/chair/Move(atom/newloc, direct)
..()
handle_rotation()
@@ -70,6 +76,9 @@
/obj/structure/stool/bed/chair/wood
// TODO: Special ash subtype that looks like charred chair legs
/obj/structure/stool/bed/chair/wood/narsie_act()
return
/obj/structure/stool/bed/chair/wood/normal
icon_state = "wooden_chair"
name = "wooden chair"
@@ -41,6 +41,10 @@
density = 0
qdel(src)
/obj/structure/table/narsie_act()
if(prob(20))
new /obj/structure/table/woodentable(src.loc)
/obj/structure/table/update_icon()
if(smooth && !flipped)
icon_state = ""
@@ -384,6 +388,10 @@
return 1
/obj/structure/table/woodentable/narsie_act()
return
/obj/structure/table/woodentable/poker //No specialties, Just a mapping object.
name = "gambling table"
desc = "A seedy table for seedy dealings in seedy places."
@@ -396,6 +404,9 @@
new /obj/item/stack/tile/grass(loc)
..()
/obj/structure/table/woodentable/poker/narsie_act()
return
/obj/structure/glasstable_frame
name = "glass table frame"
desc = "A metal frame for a glass table."