Nanako Dev Fixes 15SEP2016 (#926)

Fixes #894 
Fixes #896 
Fixes #920 
Fixes #892 
Fixes #922 
Fixes #919
This commit is contained in:
NanakoAC
2016-09-15 12:21:09 +03:00
committed by skull132
parent 11e30e99c4
commit 958d95af06
16 changed files with 100 additions and 69 deletions
+3 -4
View File
@@ -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")
+4 -1
View File
@@ -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 -1
View File
@@ -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(
+5 -13
View File
@@ -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
+1 -1
View File
@@ -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
)
+20 -4
View File
@@ -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