From fb795d2d310c00c1ee33f54daf82e662e4f97bcf Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 17 Oct 2014 18:22:16 +1030 Subject: [PATCH 01/11] Fixes the missing right hand on the Xeno hunter. --- .../mob/human_races/xenos/r_xenos_hunter.dmi | Bin 1895 -> 1895 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/human_races/xenos/r_xenos_hunter.dmi b/icons/mob/human_races/xenos/r_xenos_hunter.dmi index ef1b3a6f4d87a6330453765f30d8046bacbcf6c7..a6ce545f3ae7b4ecb6f38a0f02eb3319aa7e15d3 100644 GIT binary patch delta 72 zcmV-O0Js0=4(AS#yaL1pk-kSZ{VvLA9D%X`xr#-SEK+3(>pi3NYSDxO6dBTFP+lsk exAc#6{|C3CpSth=eE?psxPc-TIiIsT0W1d3vLP-2 delta 72 zcmV-O0Js0=4(AS#yaFx=k-kSZy%%LPjzC#}T*V?u7HKk+UM-qnBVi~N)~`nFgz{5S ey`_Jo`#-o9{nULQ@B=FoxZ(|+eqggZ0W1biRvx4P From 9eb2809afb7dfc27c6d3b317cc2a7fc5e2653bea Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 18 Oct 2014 07:34:46 +1030 Subject: [PATCH 02/11] Fixes #6765 --- code/modules/mob/living/silicon/robot/drone/drone.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index cdca3b18ef..2aaa75fae1 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -28,13 +28,12 @@ var/mail_destination = "" holder_type = /obj/item/weapon/holder/drone + /mob/living/silicon/robot/drone/New() ..() - verbs += /mob/living/proc/ventcrawl verbs += /mob/living/proc/hide - remove_language("Robot Talk") add_language("Robot Talk", 0) add_language("Drone Talk", 1) From 08ca8e192a062e5dc5ae8898f2b4dba19ba197f3 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 18 Oct 2014 07:38:33 +1030 Subject: [PATCH 03/11] Fixes #6764 --- code/modules/mob/living/carbon/human/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index c871ff4453..18ccba8c0a 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -283,7 +283,7 @@ if (radiation) var/datum/organ/internal/diona/nutrients/rad_organ = locate() in internal_organs - if(!rad_organ || rad_organ.is_broken()) + if(rad_organ && !rad_organ.is_broken()) var/rads = radiation/25 radiation -= rads nutrition += rads From dcca5ccb6e46b9af9f97773d365bc80d4692804a Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 18 Oct 2014 07:52:27 +1030 Subject: [PATCH 04/11] Fixes #6763 --- code/modules/organs/blood.dm | 19 ++++++++++++------- code/modules/organs/organ_internal.dm | 7 ++----- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 9af498eea3..8d4144a550 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -232,7 +232,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 if (!injected || !our) return - if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"]) ) + if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"],injected.data["species"],our.data["species"]) ) reagents.add_reagent("toxin",amount * 0.5) reagents.update_total() else @@ -250,13 +250,18 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 return D return res -proc/blood_incompatible(donor,receiver) +proc/blood_incompatible(donor,receiver,donor_species,receiver_species) if(!donor || !receiver) return 0 - var - donor_antigen = copytext(donor,1,lentext(donor)) - receiver_antigen = copytext(receiver,1,lentext(receiver)) - donor_rh = (findtext(donor,"+")>0) - receiver_rh = (findtext(receiver,"+")>0) + + if(donor_species && receiver_species) + if(donor_species != receiver_species) + return 1 + + var/donor_antigen = copytext(donor,1,lentext(donor)) + var/receiver_antigen = copytext(receiver,1,lentext(receiver)) + var/donor_rh = (findtext(donor,"+")>0) + var/receiver_rh = (findtext(receiver,"+")>0) + if(donor_rh && !receiver_rh) return 1 switch(receiver_antigen) if("A") diff --git a/code/modules/organs/organ_internal.dm b/code/modules/organs/organ_internal.dm index 907d5fa122..183197dfbb 100644 --- a/code/modules/organs/organ_internal.dm +++ b/code/modules/organs/organ_internal.dm @@ -73,11 +73,8 @@ // Process unsuitable transplants. TODO: consider some kind of // immunosuppressant that changes transplant data to make it match. if(transplant_data) - if(!rejecting) //Should this transplant reject? - if(owner.species != transplant_data["species"]) //Nope. - rejecting = 1 - else if(prob(20) && owner.dna && blood_incompatible(transplant_data["blood_type"],owner.dna.b_type)) - rejecting = 1 + if(!rejecting && prob(20) && owner.dna && blood_incompatible(transplant_data["blood_type"],owner.dna.b_type,owner.species,transplant_data["species"])) + rejecting = 1 else rejecting++ //Rejection severity increases over time. if(rejecting % 10 == 0) //Only fire every ten rejection ticks. From b7bdb3ce062bf2e525b919f5b9854791945a7e2b Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 18 Oct 2014 07:56:11 +1030 Subject: [PATCH 05/11] Fixes #6759 --- code/game/gamemodes/changeling/changeling_powers.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index d08679bbc1..0309eccee0 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -3,7 +3,9 @@ if(!mind) return if(!mind.changeling) mind.changeling = new /datum/changeling(gender) + verbs += /datum/changeling/proc/EvolutionMenu + add_language("Changeling") var/lesser_form = !ishuman(src) @@ -30,8 +32,7 @@ mind.changeling.absorbed_species += H.species.name for(var/language in languages) - if(!(language in mind.changeling.absorbed_languages)) - mind.changeling.absorbed_languages += language + mind.changeling.absorbed_languages |= language return 1 @@ -80,6 +81,9 @@ for(var/language in updated_languages) languages += language + //This isn't strictly necessary but just to be safe... + add_language("Changeling") + return //Used to switch species based on the changeling datum. From e7e50e9f5141a2f39fa22c00a820defa0ed8e401 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 18 Oct 2014 07:57:18 +1030 Subject: [PATCH 06/11] Fixes #6745 --- code/modules/client/preferences_gear.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index 5f2a5880cb..6c52dd9329 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -635,17 +635,17 @@ var/global/list/gear_datums = list() /datum/gear/blipstick display_name = "lipstick, black" - path = /obj/item/weapon/lipstick + path = /obj/item/weapon/lipstick/black cost = 1 /datum/gear/jlipstick display_name = "lipstick, jade" - path = /obj/item/weapon/lipstick + path = /obj/item/weapon/lipstick/jade cost = 1 /datum/gear/plipstick display_name = "lipstick, purple" - path = /obj/item/weapon/lipstick + path = /obj/item/weapon/lipstick/purple cost = 1 /datum/gear/rlipstick From 96be5634349b6359e8fb7a8ad011ce11cd144faa Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 18 Oct 2014 08:03:46 +1030 Subject: [PATCH 07/11] Fixes #6740 --- .../modules/mob/living/carbon/human/alien/alien_powers.dm | 7 ++++++- code/modules/mob/living/carbon/human/human_powers.dm | 8 ++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/carbon/human/alien/alien_powers.dm b/code/modules/mob/living/carbon/human/alien/alien_powers.dm index 4b522c3552..e23bdfbd8f 100644 --- a/code/modules/mob/living/carbon/human/alien/alien_powers.dm +++ b/code/modules/mob/living/carbon/human/alien/alien_powers.dm @@ -172,9 +172,14 @@ if(!check_alien_ability(50,0,"acid gland")) return + if(stat || paralysis || stunned || weakened || lying || restrained() || buckled) + src << "You cannot spit neurotoxin in your current state." + return + src << "\green You spit neurotoxin at [target]." + for(var/mob/O in oviewers()) - if ((O.client && !( O.blinded ))) + if ((O.client && !(O.blinded ))) O << "\red [src] spits neurotoxin at [target]!" //I'm not motivated enough to revise this. Prjectile code in general needs update. diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 1837380855..d6b6ceaf1c 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -14,8 +14,8 @@ return var/list/choices = list() - for(var/mob/living/M in view(6,src)) - if(!istype(M,/mob/living/silicon)) + for(var/mob/living/M in view(1,src)) + if(!istype(M,/mob/living/silicon) || !Adjacent(M)) choices += M choices -= src @@ -23,13 +23,13 @@ if(!T || !src || src.stat) return - if(get_dist(get_turf(T), get_turf(src)) > 6) return + if(!Adjacent(T)) return if(last_special > world.time) return if(stat || paralysis || stunned || weakened || lying || restrained() || buckled) - src << "You cannot leap in your current state." + src << "You cannot tackle in your current state." return last_special = world.time + 50 From f31ffb11c24c822d9f164ce9e592c2eef831ef4f Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 18 Oct 2014 08:09:50 +1030 Subject: [PATCH 08/11] Fixes #6752 --- code/game/gamemodes/gameticker.dm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 484cf4052c..77a48f2693 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -393,7 +393,12 @@ var/global/datum/controller/gameticker/ticker else Player << "You missed the crew transfer after the events on [station_name()] as [Player.real_name]." else - Player << "You did not survive the events on [station_name()]..." + if(istype(Player,/mob/dead/observer)) + var/mob/dead/observer/O = Player + if(!O.started_as_observer) + Player << "You did not survive the events on [station_name()]..." + else + Player << "You did not survive the events on [station_name()]..." world << "
" for (var/mob/living/silicon/ai/aiPlayer in mob_list) @@ -427,7 +432,7 @@ var/global/datum/controller/gameticker/ticker robo.laws.show_laws(world) if(dronecount) - world << "There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] this round." + world << "There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] at the end of this round." mode.declare_completion()//To declare normal completion. From bce2059422f8c6b568435550aed972457db78422 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 18 Oct 2014 08:37:23 +1030 Subject: [PATCH 09/11] Fixes #6689 --- code/modules/mob/language.dm | 30 ++++++++++++++++++++- code/modules/mob/living/carbon/human/say.dm | 17 ++++++------ 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 820bcbe7e9..c94ab17b1a 100755 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -47,6 +47,8 @@ name = "Sinta'unathi" desc = "The common language of Moghes, composed of sibilant hisses and rattles. Spoken natively by Unathi." speech_verb = "hisses" + ask_verb = "hisses" + exclaim_verb = "roars" colour = "soghun" key = "o" flags = WHITELISTED @@ -55,6 +57,8 @@ name = "Siik'tajr" desc = "The traditionally employed tongue of Ahdomai, composed of expressive yowls and chirps. Native to the Tajaran." speech_verb = "mrowls" + ask_verb = "mrowls" + exclaim_verb = "yowls" colour = "tajaran" key = "j" flags = WHITELISTED @@ -63,6 +67,8 @@ name = "Skrellian" desc = "A melodic and complex language spoken by the Skrell of Qerrbalak. Some of the notes are inaudible to humans." speech_verb = "warbles" + ask_verb = "warbles" + exclaim_verb = "warbles" colour = "skrell" key = "k" flags = WHITELISTED @@ -71,6 +77,8 @@ name = "Vox-pidgin" desc = "The common tongue of the various Vox ships making up the Shoal. It sounds like chaotic shrieking to everyone else." speech_verb = "shrieks" + ask_verb = "creels" + exclaim_verb = "SHRIEKS" colour = "vox" key = "v" flags = RESTRICTED @@ -79,6 +87,8 @@ name = "Rootspeak" 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." speech_verb = "creaks and rustles" + ask_verb = "creaks" + exclaim_verb = "rustles" colour = "soghun" key = "q" flags = RESTRICTED @@ -90,6 +100,14 @@ key = "0" flags = RESTRICTED +/datum/language/common/get_spoken_verb(var/msg_end) + switch(msg_end) + if("!") + return pick("exclaims","shouts","yells") //TODO: make the basic proc handle lists of verbs. + if("?") + return ask_verb + return speech_verb + /datum/language/human name = "Sol Common" desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system." @@ -117,6 +135,8 @@ colour = "alien" desc = "The common tongue of the xenomorphs." speech_verb = "hisses" + ask_verb = "hisses" + exclaim_verb = "hisses" key = "4" flags = RESTRICTED @@ -124,6 +144,8 @@ name = "Hivemind" desc = "Xenomorphs have the strange ability to commune over a psychic hivemind." speech_verb = "hisses" + ask_verb = "hisses" + exclaim_verb = "hisses" colour = "alien" key = "a" flags = RESTRICTED | HIVEMIND @@ -157,6 +179,8 @@ name = "Cortical Link" desc = "Cortical borers possess a strange link between their tiny minds." speech_verb = "sings" + ask_verb = "sings" + exclaim_verb = "sings" colour = "alien" key = "x" flags = RESTRICTED | HIVEMIND @@ -178,8 +202,10 @@ /datum/language/binary name = "Robot Talk" desc = "Most human stations support free-use communications protocols and routing hubs for synthetic use." - speech_verb = "transmits" colour = "say_quote" + speech_verb = "states" + ask_verb = "queries" + exclaim_verb = "declares" key = "b" flags = RESTRICTED | HIVEMIND var/drone_only @@ -222,6 +248,8 @@ name = "Drone Talk" desc = "A heavily encoded damage control coordination stream." speech_verb = "transmits" + ask_verb = "transmits" + exclaim_verb = "transmits" colour = "say_quote" key = "d" flags = RESTRICTED | HIVEMIND diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 6a252b1c9c..d0c9e4dadd 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -37,14 +37,20 @@ else if(species.default_language) speaking = all_languages[species.default_language] + var/ending = copytext(message, length(message)) if (speaking) - verb = speaking.speech_verb - // This is broadcast to all mobs with the language, // irrespective of distance or anything else. if(speaking.flags & HIVEMIND) speaking.broadcast(src,trim(message)) return + //If we've gotten this far, keep going! + verb = speaking.get_spoken_verb(ending) + else + if(ending=="!") + verb=pick("exclaims","shouts","yells") + if(ending=="?") + verb="asks" if (istype(wear_mask, /obj/item/clothing/mask/muzzle)) return @@ -60,13 +66,6 @@ if(!message || stat) return - if (!speaking) - var/ending = copytext(message, length(message)) - if(ending=="!") - verb=pick("exclaims","shouts","yells") - if(ending=="?") - verb="asks" - var/list/obj/item/used_radios = new switch (message_mode) From 678b278b12055622fe3d65afe49a00579b748f1a Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 18 Oct 2014 08:40:24 +1030 Subject: [PATCH 10/11] Fixes #6683 --- code/modules/mob/living/silicon/silicon.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 8d69a1d0a2..f3cc857b17 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -172,6 +172,7 @@ /mob/living/silicon/add_language(var/language, var/can_speak=1) if (..(language) && can_speak) speech_synthesizer_langs.Add(all_languages[language]) + return 1 /mob/living/silicon/remove_language(var/rem_language) ..(rem_language) From bb0aa868f7fae1f34482a5b51823a09231e372aa Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 18 Oct 2014 08:42:28 +1030 Subject: [PATCH 11/11] Amends a previous commit. --- code/modules/mob/living/carbon/human/human_powers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index d6b6ceaf1c..30ac38248f 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -15,7 +15,7 @@ var/list/choices = list() for(var/mob/living/M in view(1,src)) - if(!istype(M,/mob/living/silicon) || !Adjacent(M)) + if(!istype(M,/mob/living/silicon) && Adjacent(M)) choices += M choices -= src