From 45d6d6a610ce9d80580ea3b34f5ef310114eacbb Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 13 Oct 2014 16:45:58 +1030 Subject: [PATCH 1/5] Added Galactic Common to the AI. --- code/modules/mob/living/silicon/ai/ai.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 928ba4130a5..d7a2be57df0 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -128,6 +128,7 @@ var/list/ai_verbs_default = list( add_ai_verbs(src) //Languages + add_language("Galactic Common", 0) add_language("Sol Common", 0) add_language("Sinta'unathi", 0) add_language("Siik'tajr", 0) From 06ad91f417ff6843046e2aef7f2c5e32a433ad6d Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 13 Oct 2014 17:00:26 +1030 Subject: [PATCH 2/5] Fixes #6695 --- code/modules/mob/living/simple_animal/friendly/mouse.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 4f5eda2af94..f6200a3e7eb 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -114,5 +114,5 @@ response_disarm = "gently pushes aside" response_harm = "splats" -/mob/living/carbon/alien/can_use_vents() +/mob/living/simple_animal/mouse/can_use_vents() return \ No newline at end of file From c5e2fa74e6d1c661a147c68a04966a5555faada6 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 13 Oct 2014 17:16:23 +1030 Subject: [PATCH 3/5] Fixes #6689 --- code/modules/mob/language.dm | 10 ++++++++++ code/modules/mob/living/carbon/human/say.dm | 15 ++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 14c134dc083..820bcbe7e9d 100755 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -6,6 +6,8 @@ var/name = "an unknown language" // Fluff name of language if any. var/desc = "A language." // Short description for 'Check Languages'. var/speech_verb = "says" // 'says', 'hisses', 'farts'. + var/ask_verb = "asks" // Used when sentence ends in a ? + var/exclaim_verb = "exclaims" // Used when sentence ends in a ! var/signlang_verb = list() // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags var/colour = "body" // CSS style to use for strings in this language. var/key = "x" // Character used to speak in language eg. :o for Unathi. @@ -33,6 +35,14 @@ /datum/language/proc/check_special_condition(var/mob/other) return 1 +/datum/language/proc/get_spoken_verb(var/msg_end) + switch(msg_end) + if("!") + return exclaim_verb + if("?") + return ask_verb + return speech_verb + /datum/language/unathi name = "Sinta'unathi" desc = "The common language of Moghes, composed of sibilant hisses and rattles. Spoken natively by Unathi." diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 0b7d601ca95..766dd94c256 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -232,16 +232,17 @@ /mob/living/carbon/human/say_quote(var/message, var/datum/language/speaking = null) var/verb = "says" var/ending = copytext(message, length(message)) - if(ending=="!") - verb=pick("exclaims","shouts","yells") - else if(ending=="?") - verb="asks" + + if(speaking) + verb = speaking.get_spoken_verb(ending) + else + if(ending == "!") + verb=pick("exclaims","shouts","yells") + else if(ending == "?") + verb="asks" return verb - - - /mob/living/carbon/human/proc/handle_speech_problems(var/message) var/list/returns[3] var/verb = "says" From 4c070bad02956dcf483c7992d54b417325214ae4 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 13 Oct 2014 17:32:13 +1030 Subject: [PATCH 4/5] Bunch of xeno fixes, details in PR. --- code/datums/datacore.dm | 2 +- code/datums/datumvars.dm | 4 ---- code/game/objects/effects/aliens.dm | 11 +++++++++++ code/game/objects/items.dm | 15 +++++++++------ code/modules/mob/living/carbon/carbon.dm | 3 +++ .../carbon/human/alien/alien_species.dm | 4 ++++ code/modules/mob/living/carbon/human/human.dm | 8 ++++++-- .../mob/living/carbon/human/species.dm | 6 +++--- .../mob/living/carbon/human/update_icons.dm | 2 +- code/modules/mob/living/living.dm | 2 +- .../mob/new_player/preferences_setup.dm | 2 +- code/setup.dm | 8 +++----- icons/effects/species.dmi | Bin 21711 -> 21706 bytes 13 files changed, 43 insertions(+), 24 deletions(-) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index da72abcdd5e..9e76a6af56a 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -164,7 +164,7 @@ proc/get_id_photo(var/mob/living/carbon/human/H) preview_icon.Blend(temp, ICON_OVERLAY) //Tail - if(H.species.tail && H.species.flags & HAS_TAIL) + if(H.species.tail) temp = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[H.species.tail]_s") preview_icon.Blend(temp, ICON_OVERLAY) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 1e6d9790eb2..a51ac42ee25 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -779,12 +779,8 @@ client usr << "Mob doesn't exist anymore" return - // Clear out their species abilities. - H.species.remove_inherent_verbs(H) - if(H.set_species(new_species)) usr << "Set species of [H] to [H.species]." - H.regenerate_icons() else usr << "Failed! Something went wrong." diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 9983eff1ac0..0ee04f0230c 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -109,6 +109,17 @@ O.show_message("\red [usr] destroys the [name]!", 1) health = 0 else + + // Aliens can get straight through these. + if(istype(usr,/mob/living/carbon)) + var/mob/living/carbon/M = usr + if(locate(/datum/organ/internal/xenos/hivenode) in M.internal_organs) + for(var/mob/O in oviewers(src)) + O.show_message("\red [usr] strokes the [name] and it melts away!", 1) + health = 0 + healthcheck() + return + usr << "\blue You claw at the [name]." for(var/mob/O in oviewers(src)) O.show_message("\red [usr] claws at the [name]!", 1) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 80f1fcb8e51..5b41ba88b7b 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -260,8 +260,11 @@ if(ishuman(M)) //START HUMAN var/mob/living/carbon/human/H = M + var/list/mob_equip = list() + if(H.species.hud && H.species.hud.equip_slots) + mob_equip = H.species.hud.equip_slots - if(H.species && !(slot in H.species.hud.equip_slots)) + if(H.species && !(slot in mob_equip)) return 0 switch(slot) @@ -306,7 +309,7 @@ if(slot_belt) if(H.belt) return 0 - if(!H.w_uniform) + if(!H.w_uniform && (slot_w_uniform in mob_equip)) if(!disable_warning) H << "\red You need a jumpsuit before you can attach this [name]." return 0 @@ -354,7 +357,7 @@ if(slot_wear_id) if(H.wear_id) return 0 - if(!H.w_uniform) + if(!H.w_uniform && (slot_w_uniform in mob_equip)) if(!disable_warning) H << "\red You need a jumpsuit before you can attach this [name]." return 0 @@ -364,7 +367,7 @@ if(slot_l_store) if(H.l_store) return 0 - if(!H.w_uniform) + if(!H.w_uniform && (slot_w_uniform in mob_equip)) if(!disable_warning) H << "\red You need a jumpsuit before you can attach this [name]." return 0 @@ -375,7 +378,7 @@ if(slot_r_store) if(H.r_store) return 0 - if(!H.w_uniform) + if(!H.w_uniform && (slot_w_uniform in mob_equip)) if(!disable_warning) H << "\red You need a jumpsuit before you can attach this [name]." return 0 @@ -387,7 +390,7 @@ if(slot_s_store) if(H.s_store) return 0 - if(!H.wear_suit) + if(!H.wear_suit && (slot_wear_suit in mob_equip)) if(!disable_warning) H << "\red You need a suit before you can attach this [name]." return 0 diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 699dfe301fe..c529cc9154d 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -522,4 +522,7 @@ step(AM, t) now_pushing = 0 return + return + +/mob/living/carbon/can_use_vents() return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/alien/alien_species.dm b/code/modules/mob/living/carbon/human/alien/alien_species.dm index b592c6292b7..908abe85e31 100644 --- a/code/modules/mob/living/carbon/human/alien/alien_species.dm +++ b/code/modules/mob/living/carbon/human/alien/alien_species.dm @@ -126,6 +126,7 @@ ) inherent_verbs = list( + /mob/living/proc/ventcrawl, /mob/living/carbon/human/proc/regurgitate, /mob/living/carbon/human/proc/plant, /mob/living/carbon/human/proc/transfer_plasma, @@ -162,6 +163,7 @@ ) inherent_verbs = list( + /mob/living/proc/ventcrawl, /mob/living/carbon/human/proc/tackle, /mob/living/carbon/human/proc/gut, /mob/living/carbon/human/proc/leap, @@ -190,6 +192,7 @@ ) inherent_verbs = list( + /mob/living/proc/ventcrawl, /mob/living/carbon/human/proc/tackle, /mob/living/carbon/human/proc/regurgitate, /mob/living/carbon/human/proc/transfer_plasma, @@ -222,6 +225,7 @@ ) inherent_verbs = list( + /mob/living/proc/ventcrawl, /mob/living/carbon/human/proc/psychic_whisper, /mob/living/carbon/human/proc/regurgitate, /mob/living/carbon/human/proc/lay_egg, diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3156e1fe7c4..275790fe5e6 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1171,6 +1171,7 @@ dna.species = new_species if(species) + if(species.name && species.name == new_species) return if(species.language) @@ -1179,6 +1180,9 @@ if(species.default_language) remove_language(species.default_language) + // Clear out their species abilities. + species.remove_inherent_verbs(src) + species = all_species[new_species] species.create_organs(src) @@ -1202,7 +1206,7 @@ species.handle_post_spawn(src) spawn(0) - update_icons() + regenerate_icons() vessel.add_reagent("blood",560-vessel.total_volume) fixblood() @@ -1345,4 +1349,4 @@ var/datum/organ/internal/eyes = internal_organs_by_name["eyes"] if(eyes && istype(eyes) && !eyes.status & ORGAN_CUT_AWAY) return 1 - return 0 + return 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 963a969658a..0ffe4645a1a 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -234,7 +234,7 @@ heat_level_2 = 480 //Default 400 heat_level_3 = 1100 //Default 1000 - flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL | HAS_SKIN_COLOR + flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR flesh_color = "#34AF10" @@ -261,7 +261,7 @@ primitive = /mob/living/carbon/monkey/tajara - flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL | HAS_SKIN_COLOR + flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR flesh_color = "#AFA59E" base_color = "#333333" @@ -353,7 +353,7 @@ breath_type = "nitrogen" poison_type = "oxygen" - flags = NO_SCAN | NO_BLOOD | HAS_TAIL | NO_PAIN + flags = NO_SCAN | NO_BLOOD | NO_PAIN blood_color = "#2299FC" flesh_color = "#808D11" diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index f3a13b60355..e4ce980456f 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -897,7 +897,7 @@ proc/get_damage_icon_part(damage_state, body_part) /mob/living/carbon/human/proc/update_tail_showing(var/update_icons=1) overlays_standing[TAIL_LAYER] = null - if(species.tail && species.flags & HAS_TAIL) + if(species.tail) if(!wear_suit || !(wear_suit.flags_inv & HIDETAIL) && !istype(wear_suit, /obj/item/clothing/suit/space)) var/icon/tail_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s") tail_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 5c5805bfaf3..c1adb74feee 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -806,10 +806,10 @@ var/area/new_area = get_area(loc) if(new_area) new_area.Entered(src) + /mob/living/proc/can_use_vents() return "You can't fit into that vent." - /mob/living/proc/has_brain() return 1 diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 110c505b317..48ba98ac291 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -208,7 +208,7 @@ datum/preferences preview_icon.Blend(temp, ICON_OVERLAY) //Tail - if(current_species && (current_species.flags & HAS_TAIL)) + if(current_species && (current_species.tail)) var/icon/temp = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[current_species.tail]_s") preview_icon.Blend(temp, ICON_OVERLAY) diff --git a/code/setup.dm b/code/setup.dm index f0530653527..4b64a0821ef 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -748,11 +748,9 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse #define HAS_SKIN_COLOR 128 #define HAS_LIPS 256 #define HAS_UNDERWEAR 512 -#define HAS_TAIL 1024 - -#define IS_PLANT 2048 -#define IS_WHITELISTED 4096 -#define IS_SYNTHETIC 8192 +#define IS_PLANT 1024 +#define IS_WHITELISTED 2048 +#define IS_SYNTHETIC 4096 //Language flags. #define WHITELISTED 1 // Language is available if the speaker is whitelisted. diff --git a/icons/effects/species.dmi b/icons/effects/species.dmi index 4c1516b8581ee0302520bec61f488d4a493c30fe..defb526a7f83180842be6118c155477e5c193ec2 100644 GIT binary patch delta 289 zcmV++0p9-4sR7EV0gxnr2zpdlbVOxyV{&P5bZKvH004NLm6E|u!!Qhn&&^X<+Z{33 zH5b$g^{~A{WU0;?a8nVxfOvWi6-6LKonxfWpJV&q!^7#ZyFh#H+$$AHQw9&mn_Jhs zrCtZ{aDV5Tfzox*ry}6t=$cq?Bmob9hrd|4lLTYaX%9=89 nUDYsWrBYY(G85$!jgmc_E-kd@&V2%t^tr}#8JK;uIsuhaAM%j1 delta 294 zcmV+>0one_sR7Ta0gxnr4SG~qbVOxyV{&P5bZKvH004NLm6A509p~ zgkA=)@cd+&fx>x^`N4uhU|}Qph6R%w9dAt2hr(cCZyH~4BnAtAyZ_ku!|v|0zQXHu zUc$mUQZPhaeZdeF&KPc3deyQPRBhF)YC+enoX^Vnze$Djy-n59RL6T From 01ddc9af6da194299cd8fe93075e6b66247df56b Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 13 Oct 2014 17:39:00 +1030 Subject: [PATCH 5/5] Added binary to the AI. --- code/modules/mob/living/silicon/ai/ai.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index d7a2be57df0..b24e995aecc 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -128,6 +128,7 @@ var/list/ai_verbs_default = list( add_ai_verbs(src) //Languages + add_language("Robot Talk", 1) add_language("Galactic Common", 0) add_language("Sol Common", 0) add_language("Sinta'unathi", 0)