mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 14:00:18 +01:00
Nanako Dev Fixes 15SEP2016 (#926)
Fixes #894 Fixes #896 Fixes #920 Fixes #892 Fixes #922 Fixes #919
This commit is contained in:
@@ -86,16 +86,15 @@
|
||||
//Add the rest of the languages
|
||||
//Because universal speak doesn't work right.
|
||||
bst.add_language("Sinta'unathi")
|
||||
bst.add_language("Siik'Maas")
|
||||
bst.add_language("Siik'maas")
|
||||
bst.add_language("Skrellian")
|
||||
bst.add_language("Vox-pidgin")
|
||||
bst.add_language("Rootspeak")
|
||||
bst.add_language("Rootsong")
|
||||
bst.add_language("Ceti Basic")
|
||||
bst.add_language("Sol Common")
|
||||
bst.add_language("Tradeband")
|
||||
bst.add_language("Gutter")
|
||||
bst.add_language("Sini")
|
||||
bst.add_language("Sign language")
|
||||
bst.add_language("Sign Language")
|
||||
bst.add_language("Xenomorph")
|
||||
bst.add_language("Hivemind")
|
||||
bst.add_language("Changeling")
|
||||
|
||||
@@ -123,7 +123,10 @@
|
||||
|
||||
var/datum/language/new_language = all_languages[language]
|
||||
|
||||
if(!istype(new_language) || (new_language in languages))
|
||||
if (!istype(new_language) || !new_language)
|
||||
CRASH("ERROR: Language [language] not found in list of all languages. The language you're looking for may have been moved, renamed, or removed. Please recheck the spelling of the name.")
|
||||
|
||||
if(new_language in languages)
|
||||
return 0
|
||||
|
||||
languages.Add(new_language)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/language/diona
|
||||
name = "Rootsong"
|
||||
desc = "A creaking, subvocal language spoken instinctively by the Dionaea. Due to the unique makeup of the average Diona, a phrase of Rootspeak can be a combination of anywhere from one to twelve individual voices and notes."
|
||||
desc = "A creaking, subvocal language spoken instinctively by the Dionaea. Due to the unique makeup of the average Diona, a phrase of Rootsong can be a combination of anywhere from one to twelve individual voices and notes."
|
||||
speech_verb = "creaks and rustles"
|
||||
ask_verb = "creaks"
|
||||
exclaim_verb = "rustles"
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
adult_form = /mob/living/carbon/human
|
||||
speak_emote = list("chirrups")
|
||||
icon_state = "nymph"
|
||||
language = "Rootsong"
|
||||
death_msg = "expires with a pitiful chirrup..."
|
||||
universal_understand = 0
|
||||
universal_speak = 0
|
||||
@@ -54,7 +53,18 @@
|
||||
set category = "Abilities"
|
||||
set name = "Check light level"
|
||||
|
||||
usr << "The light level here is [get_lightlevel_diona(DS)]"
|
||||
var/light = get_lightlevel_diona(DS)
|
||||
|
||||
if (light <= -0.75)
|
||||
usr << span("danger", "It is pitch black here! This is extremely dangerous, we must find light, or death will soon follow!")
|
||||
else if (light <= 0)
|
||||
usr << span("danger", "This area is too dim to sustain us for long, we should move closer to the light, or we will shortly be in danger!")
|
||||
else if (light > 0 && light < 1.5)
|
||||
usr << span("warning", "The light here can sustain us, barely. It feels cold and distant.")
|
||||
else if (light <= 3)
|
||||
usr << span("notice", "This light is comfortable and warm, Quite adequate for our needs.")
|
||||
else
|
||||
usr << span("notice", "This warm radiance is bliss. Here we are safe and energised! Stay a while..")
|
||||
|
||||
/mob/living/carbon/alien/diona/start_pulling(var/atom/movable/AM)
|
||||
//TODO: Collapse these checks into one proc (see pai and drone)
|
||||
@@ -103,7 +113,7 @@
|
||||
holder_type = null
|
||||
|
||||
species = all_species[new_species]
|
||||
if(species.language)
|
||||
if(species.default_language)
|
||||
add_language(species.default_language)
|
||||
|
||||
if(species.holder_type)
|
||||
|
||||
@@ -203,6 +203,7 @@
|
||||
if (!donor || donor == "Cancel")//they cancelled
|
||||
return
|
||||
|
||||
face_atom(donor)
|
||||
var/types = donor.find_type()
|
||||
|
||||
if (types & TYPE_SYNTHETIC)
|
||||
|
||||
@@ -119,7 +119,20 @@
|
||||
set category = "Abilities"
|
||||
set name = "Check light level"
|
||||
|
||||
usr << "The light level here is [get_lightlevel_diona(DS)]"
|
||||
var/light = get_lightlevel_diona(DS)
|
||||
|
||||
if (light <= -0.75)
|
||||
usr << span("danger", "It is pitch black here! This is extremely dangerous, we must find light, or death will soon follow!")
|
||||
else if (light <= 0)
|
||||
usr << span("danger", "This area is too dim to sustain us for long, we should move closer to the light, or we will shortly be in danger!")
|
||||
else if (light > 0 && light < 1.5)
|
||||
usr << span("warning", "The light here can sustain us, barely. It feels cold and distant.")
|
||||
else if (light <= 3)
|
||||
usr << span("notice", "This light is comfortable and warm, Quite adequate for our needs.")
|
||||
else
|
||||
usr << span("notice", "This warm radiance is bliss. Here we are safe and energised! Stay a while..")
|
||||
|
||||
|
||||
|
||||
//1.5 is the maximum energy that can be lost per proc
|
||||
//2.1 is the approximate delay between procs
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
name_plural = "Dionaea"
|
||||
icobase = 'icons/mob/human_races/r_diona.dmi'
|
||||
deform = 'icons/mob/human_races/r_def_plant.dmi'
|
||||
language = "Galactic Common"
|
||||
language = "Ceti Basic"
|
||||
default_language = "Rootsong"
|
||||
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/diona)
|
||||
//primitive_form = "Nymph"
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
"brain" = /obj/item/organ/brain/xeno,
|
||||
"plasma vessel" = /obj/item/organ/xenos/plasmavessel,
|
||||
"hive node" = /obj/item/organ/xenos/hivenode,
|
||||
"nutrient vessel" = /obj/item/organ/diona/nutrients
|
||||
"nutrient channel" = /obj/item/organ/diona/nutrients
|
||||
)
|
||||
|
||||
bump_flag = ALIEN
|
||||
@@ -165,7 +165,7 @@
|
||||
"acid gland" = /obj/item/organ/xenos/acidgland,
|
||||
"hive node" = /obj/item/organ/xenos/hivenode,
|
||||
"resin spinner" = /obj/item/organ/xenos/resinspinner,
|
||||
"nutrient vessel" = /obj/item/organ/diona/nutrients
|
||||
"nutrient channel" = /obj/item/organ/diona/nutrients
|
||||
)
|
||||
|
||||
inherent_verbs = list(
|
||||
@@ -202,7 +202,7 @@
|
||||
"brain" = /obj/item/organ/brain/xeno,
|
||||
"plasma vessel" = /obj/item/organ/xenos/plasmavessel/hunter,
|
||||
"hive node" = /obj/item/organ/xenos/hivenode,
|
||||
"nutrient vessel" = /obj/item/organ/diona/nutrients
|
||||
"nutrient channel" = /obj/item/organ/diona/nutrients
|
||||
)
|
||||
|
||||
inherent_verbs = list(
|
||||
@@ -231,7 +231,7 @@
|
||||
"plasma vessel" = /obj/item/organ/xenos/plasmavessel/sentinel,
|
||||
"acid gland" = /obj/item/organ/xenos/acidgland,
|
||||
"hive node" = /obj/item/organ/xenos/hivenode,
|
||||
"nutrient vessel" = /obj/item/organ/diona/nutrients
|
||||
"nutrient channel" = /obj/item/organ/diona/nutrients
|
||||
)
|
||||
|
||||
inherent_verbs = list(
|
||||
@@ -265,7 +265,7 @@
|
||||
"acid gland" = /obj/item/organ/xenos/acidgland,
|
||||
"hive node" = /obj/item/organ/xenos/hivenode,
|
||||
"resin spinner" = /obj/item/organ/xenos/resinspinner,
|
||||
"nutrient vessel" = /obj/item/organ/diona/nutrients
|
||||
"nutrient channel" = /obj/item/organ/diona/nutrients
|
||||
)
|
||||
|
||||
inherent_verbs = list(
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
|
||||
|
||||
/mob/living/proc/attempt_devour(var/mob/living/victim, var/eat_types, var/mouth_size = null)
|
||||
face_atom(victim)
|
||||
|
||||
//This function will attempt to eat the victim,
|
||||
//either by swallowing them if they're small enough, or starting to devour them otherwise
|
||||
//If a mouth_size is passed in, it will be used instead of this mob's size, for determining whether the victim is small enough to swallow
|
||||
@@ -67,18 +69,7 @@
|
||||
|
||||
|
||||
|
||||
//This function checks against a list to see if the mob is in it.
|
||||
//Any specified types are checked against exactly, using ==, not istype
|
||||
//Any types ending in * will be tested with isType
|
||||
/proc/mob_listed(var/mob/living/test, var/list/toCheck, var/specific = 0)
|
||||
for (var/i in toCheck)
|
||||
if (specific)
|
||||
if (test.type == i)
|
||||
return 1
|
||||
else
|
||||
if (istype(test, i))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -217,7 +208,8 @@
|
||||
//Bloodying the attacker, if possible
|
||||
//Bloodying the attacker's tile
|
||||
//After that, we will allocate the remaining blood placements to random tiles around the victim and attacker, until either all are used or victim is dead
|
||||
var/datum/reagent/blood/B = vessel.reagent_list[/datum/reagent/blood]
|
||||
var/datum/reagent/blood/B = vessel.get_master_reagent()
|
||||
|
||||
if (!turf_hasblood(get_turf(victim)))
|
||||
devour_add_blood(victim, get_turf(victim), vessel)
|
||||
return 1
|
||||
|
||||
@@ -145,7 +145,7 @@ var/list/ai_verbs_default = list(
|
||||
add_language("Tradeband", 1)
|
||||
add_language("Gutter", 0)
|
||||
add_language("Hivenet", 0)
|
||||
add_language("Rootspeak", 0)
|
||||
add_language("Rootsong", 0)
|
||||
|
||||
if(!safety)//Only used by AIize() to successfully spawn an AI.
|
||||
if (!B)//If there is no player/brain inside.
|
||||
|
||||
@@ -472,13 +472,13 @@
|
||||
user.add_language("Siik'maas")
|
||||
user.add_language("Skrellian")
|
||||
// user.add_language("Vaurcese")
|
||||
user.add_language("Rootspeak")
|
||||
user.add_language("Rootsong")
|
||||
else
|
||||
user.remove_language("Sinta'unathi")
|
||||
user.remove_language("Siik'maas")
|
||||
user.remove_language("Skrellian")
|
||||
//user.add_language("Hivenet") //I can buy an AI core and its cyborgs having access to the local hivenet for security reasons, but a pAI?
|
||||
user.add_language("Rootspeak")
|
||||
user.add_language("Rootsong")
|
||||
|
||||
is_active(mob/living/silicon/pai/user)
|
||||
return user.translator_on
|
||||
|
||||
@@ -22,7 +22,7 @@ var/global/list/robot_modules = list(
|
||||
flags = CONDUCT
|
||||
var/channels = list()
|
||||
var/networks = list()
|
||||
var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK_MAAS = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_VAURCESE = 0, LANGUAGE_ROOTSPEAK = 0)
|
||||
var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK_MAAS = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_VAURCESE = 0, LANGUAGE_ROOTSONG = 0)
|
||||
var/sprites = list()
|
||||
var/can_be_pushed = 1
|
||||
var/no_slip = 0
|
||||
@@ -491,7 +491,7 @@ var/global/list/robot_modules = list(
|
||||
LANGUAGE_SIIK_MAAS = 1,
|
||||
LANGUAGE_SIIK_TAJR = 0,
|
||||
LANGUAGE_SKRELLIAN = 1,
|
||||
LANGUAGE_ROOTSPEAK = 1,
|
||||
LANGUAGE_ROOTSONG = 1,
|
||||
LANGUAGE_TRADEBAND = 1,
|
||||
LANGUAGE_GUTTER = 1
|
||||
)
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
//returns which type of diona we are, or zero
|
||||
if (istype(src, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/T = src
|
||||
if (istype(T.species, /datum/species/diona))
|
||||
if (istype(T.species, /datum/species/diona) || istype(src, /mob/living/carbon/human/diona))
|
||||
return DIONA_WORKER
|
||||
|
||||
if (istype(src, /mob/living/carbon/alien/diona))
|
||||
@@ -1028,6 +1028,10 @@ proc/is_blind(A)
|
||||
|
||||
|
||||
//Blacklists of mobs that can be excluded from eating by flags in the bitfield
|
||||
|
||||
//All of these specific human subtypes are here for a reason.
|
||||
//Using /mob/living/carbon/human as a generic type would include monkey/stok/farwa/neara.
|
||||
//We do not want those to count as humanoids, only player species
|
||||
var/list/humanoid_mobs_specific = list( /mob/living/carbon/human,
|
||||
/mob/living/carbon/human/bst,
|
||||
/mob/living/carbon/human/skrell,
|
||||
@@ -1037,7 +1041,6 @@ var/list/humanoid_mobs_specific = list( /mob/living/carbon/human,
|
||||
/mob/living/carbon/human/vox,
|
||||
/mob/living/carbon/human/machine,
|
||||
/mob/living/carbon/human/bug
|
||||
|
||||
)
|
||||
|
||||
var/list/humanoid_mobs_inclusive = list(
|
||||
@@ -1079,8 +1082,6 @@ var/list/wierd_mobs_inclusive = list( /mob/living/simple_animal/construct,
|
||||
mobtypes |= TYPE_SYNTHETIC
|
||||
else if (mob_listed(src, synthetic_mobs_inclusive,0))
|
||||
mobtypes |= TYPE_SYNTHETIC
|
||||
else if (ishuman(src))
|
||||
mobtypes |= TYPE_SYNTHETIC
|
||||
|
||||
if (mob_listed(src, wierd_mobs_specific,1))
|
||||
mobtypes |= TYPE_WIERD
|
||||
@@ -1112,6 +1113,7 @@ var/list/wierd_mobs_inclusive = list( /mob/living/simple_animal/construct,
|
||||
var/mob/living/carbon/alien/diona/D = src
|
||||
return D.vessel
|
||||
else if (create)
|
||||
|
||||
//we make a new vessel for whatever creature we're devouring. this allows blood to come from creatures that can't normally bleed
|
||||
//We create an MD5 hash of the mob's reference to use as its DNA string.
|
||||
//This creates unique DNA for each creature in a consistently repeatable process
|
||||
@@ -1123,10 +1125,24 @@ var/list/wierd_mobs_inclusive = list( /mob/living/simple_animal/construct,
|
||||
"resistances"=null,"trace_chem"=null, "virus2" = null, "antibodies" = list())
|
||||
|
||||
B.color = B.data["blood_colour"]
|
||||
|
||||
return vessel
|
||||
|
||||
else return null
|
||||
|
||||
//This function checks against a list to see if the mob is in it.
|
||||
//Any specified types are checked against exactly, using ==, not istype
|
||||
//Any types ending in * will be tested with isType
|
||||
/proc/mob_listed(var/mob/living/test, var/list/toCheck, var/specific = 0)
|
||||
for (var/i in toCheck)
|
||||
if (specific)
|
||||
if (test.type == i)
|
||||
return 1
|
||||
else
|
||||
if (istype(test, i))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
#define POSESSIVE_PRONOUN 0
|
||||
#define POSESSIVE_ADJECTIVE 1
|
||||
|
||||
Reference in New Issue
Block a user