Revenant Gameplay Enhancement (#11049)

This commit is contained in:
Geeves
2021-01-28 19:46:06 +01:00
committed by GitHub
parent 917c860af7
commit 141ea2ce1d
21 changed files with 398 additions and 33 deletions
+1
View File
@@ -22,6 +22,7 @@
var/list/partial_understanding // List of languages that can /somehwat/ understand it, format is: name = chance of understanding a word
var/machine_understands = TRUE // Whether machines can parse and understand this language
var/allow_accents = FALSE
var/always_parse_language = FALSE // forces the language to parse for language keys even when a default is set
/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4, syllable_divisor=2)
if(!syllables || !syllables.len)
+8 -1
View File
@@ -104,4 +104,11 @@
key = "c"
syllables = list("grhhg", "ghrohg", "grgugh", "grrhh", "hghh", "rghghh", "gghhh", "ggrh", "aghrh")
flags = RESTRICTED
partial_understanding = list(LANGUAGE_TCB = 80)
partial_understanding = list(LANGUAGE_TCB = 80)
always_parse_language = TRUE
/datum/language/revenant/hivemind
name = LANGUAGE_REVENANT_RIFTSPEAK
desc = "A manner of speaking that allows revenants to talk to eachother no matter the distance."
key = "rs"
flags = RESTRICTED | HIVEMIND
@@ -101,6 +101,7 @@
if(player_is_antag(H.mind))
var/datum/ghostspawner/revenant/R = SSghostroles.get_spawner(MODE_REVENANT)
R.count = max(R.count - 1, 0)
revenants.kill_count++
INVOKE_ASYNC(src, .proc/spawn_gore, get_turf(H))
H.set_death_time(ANIMAL, world.time)
for(var/obj/item/I in H)
@@ -108,6 +109,8 @@
qdel(H)
/datum/species/revenant/proc/spawn_gore(var/turf/T)
var/portal_type = pick(/obj/effect/portal/spawner/silver, /obj/effect/portal/spawner/gold, /obj/effect/portal/spawner/phoron)
new portal_type(T)
var/obj/effect/decal/cleanable/blood/gibs/G = new /obj/effect/decal/cleanable/blood/gibs(T)
G.basecolor = blood_color
G.fleshcolor = flesh_color
@@ -119,6 +122,7 @@
..()
H.gender = NEUTER
H.universal_understand = TRUE
H.add_language(LANGUAGE_REVENANT_RIFTSPEAK)
/datum/species/revenant/get_random_name()
return "Revenant"
+1 -1
View File
@@ -184,7 +184,7 @@ proc/get_radio_key_from_channel(var/channel)
message = formalize_text(message)
//parse the language code and consume it
if(!speaking)
if(!speaking || speaking.always_parse_language)
speaking = parse_language(message)
if(speaking)
message = copytext(message,2+length(speaking.key))
+8
View File
@@ -140,6 +140,14 @@
return TRUE
return FALSE
/proc/isrevenant(A)
if(ishuman(A))
var/mob/living/carbon/human/H = A
switch(H.get_species())
if(SPECIES_REVENANT)
return TRUE
return FALSE
/proc/islesserform(A)
if(istype(A, /mob/living/carbon/human))
switch(A:get_species())
+5 -2
View File
@@ -159,9 +159,12 @@
return all_languages["Noise"]
if(length(message) >= 2 && is_language_prefix(prefix))
var/language_prefix = lowertext(copytext(message, 2 ,3))
var/language_prefix = lowertext(copytext(message, 2, 4))
var/datum/language/L = language_keys[language_prefix]
if (can_speak(L))
if(!L)
language_prefix = lowertext(copytext(message, 2, 3))
L = language_keys[language_prefix]
if(can_speak(L))
return L
return null