Vox mutantrace, vox clothing, minor surgery mod for mutantrace specific surgery steps. Fixed captain's jacket sprite.

This commit is contained in:
Zuhayr
2013-06-05 17:35:38 +09:30
parent 114e04ee9f
commit 06f04e6374
19 changed files with 163 additions and 15 deletions

View File

@@ -53,9 +53,6 @@
#define FILE_DIR "sound/voice" #define FILE_DIR "sound/voice"
#define FILE_DIR "sound/voice/Serithi" #define FILE_DIR "sound/voice/Serithi"
#define FILE_DIR "sound/weapons" #define FILE_DIR "sound/weapons"
#define FILE_DIR "tools"
#define FILE_DIR "tools/AddToChangelog"
#define FILE_DIR "tools/AddToChangelog/AddToChangelog"
// END_FILE_DIR // END_FILE_DIR
// BEGIN_PREFERENCES // BEGIN_PREFERENCES
#define DEBUG #define DEBUG

View File

@@ -122,6 +122,8 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
icobase = 'icons/mob/human_races/r_lizard.dmi' icobase = 'icons/mob/human_races/r_lizard.dmi'
if("Skrell") if("Skrell")
icobase = 'icons/mob/human_races/r_skrell.dmi' icobase = 'icons/mob/human_races/r_skrell.dmi'
if("Vox")
icobase = 'icons/mob/human_races/r_vox.dmi'
else else
icobase = 'icons/mob/human_races/r_human.dmi' icobase = 'icons/mob/human_races/r_human.dmi'
@@ -147,6 +149,9 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
preview_icon.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT) preview_icon.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT)
var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "eyes_s") var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "eyes_s")
if(H.get_species()=="Vox")
eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "vox_eyes_s")
eyes_s.Blend(rgb(H.r_eyes, H.g_eyes, H.b_eyes), ICON_ADD) eyes_s.Blend(rgb(H.r_eyes, H.g_eyes, H.b_eyes), ICON_ADD)
var/datum/sprite_accessory/hair_style = hair_styles_list[H.h_style] var/datum/sprite_accessory/hair_style = hair_styles_list[H.h_style]

View File

@@ -730,7 +730,7 @@ client
usr << "This can only be done to instances of type /mob/living/carbon/human" usr << "This can only be done to instances of type /mob/living/carbon/human"
return return
var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","slime","plant","shadow","tajaran","skrell") var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","slime","plant","shadow","tajaran","skrell","vox")
switch(new_mutantrace) switch(new_mutantrace)
if(null) if(null)
return return

View File

@@ -646,7 +646,7 @@ var/list/admin_verbs_mod = list(
if(!istype(M, /mob/living/carbon/human)) if(!istype(M, /mob/living/carbon/human))
usr << "\red You can only do this to humans!" usr << "\red You can only do this to humans!"
return return
switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi and Tajaran can result in unintended consequences.",,"Yes","No")) switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Vox and Tajaran can result in unintended consequences.",,"Yes","No"))
if("No") if("No")
return return
var/new_facial = input("Please select facial hair color.", "Character Generation") as color var/new_facial = input("Please select facial hair color.", "Character Generation") as color

View File

@@ -792,6 +792,10 @@ datum/preferences
if(is_alien_whitelisted(user, "Skrell")) //Check for Skrell and admins if(is_alien_whitelisted(user, "Skrell")) //Check for Skrell and admins
new_species += "Skrell" new_species += "Skrell"
whitelisted = 1 whitelisted = 1
if(is_alien_whitelisted(user, "Vox")) //Check for Skrell and admins
new_species += "Vox"
whitelisted = 1
if(!whitelisted) if(!whitelisted)
alert(user, "You cannot change your species as you need to be whitelisted. If you wish to be whitelisted contact an admin in-game, on the forums, or on IRC.") alert(user, "You cannot change your species as you need to be whitelisted. If you wish to be whitelisted contact an admin in-game, on the forums, or on IRC.")
@@ -799,6 +803,7 @@ datum/preferences
new_species += "Tajaran" new_species += "Tajaran"
new_species += "Unathi" new_species += "Unathi"
new_species += "Skrell" new_species += "Skrell"
new_species += "Vox"
species = input("Please select a species", "Character Generation", null) in new_species species = input("Please select a species", "Character Generation", null) in new_species
if(prev_species != species) if(prev_species != species)

View File

@@ -21,4 +21,70 @@
armor = list(melee = 40, bullet = 30, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 50) armor = list(melee = 40, bullet = 30, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 50)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECITON_TEMPERATURE max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECITON_TEMPERATURE
// Vox space gear (vaccuum suit, low pressure armour)
// Can't be equipped by any other species due to bone structure and vox cybernetics.
/obj/item/clothing/head/helmet/space/vox/pressure
name = "alien helmet"
icon_state = "vox-pressure"
item_state = "vox-pressure"
desc = "Hey, wasn't this a prop in \'The Abyss\'?"
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
/obj/item/clothing/suit/space/vox/pressure
name = "alien pressure suit"
icon_state = "vox-pressure"
item_state = "vox-pressure"
desc = "A huge, armoured, pressurized suit, designed for distinctly nonhuman proportions."
w_class = 3
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
slowdown = 2
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
/obj/item/clothing/head/helmet/space/vox/carapace
name = "alien visor"
icon_state = "vox-carapace"
item_state = "vox-carapace"
desc = "A glowing visor, perhaps stolen from a depressed Cylon."
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
/obj/item/clothing/suit/space/vox/carapace
name = "alien carapace armour"
icon_state = "vox-carapace"
item_state = "vox-carapace"
desc = "An armoured, segmented carapace with glowing purple lights. It looks pretty run-down."
w_class = 3
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
slowdown = 1
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
/obj/item/clothing/head/helmet/space/vox/mob_can_equip(M as mob, slot)
var/mob/living/carbon/human/V = M
if(V.dna.mutantrace != "vox")
V << "<span class='warning'>This clearly isn't designed for your species!</span>"
return 0
return ..()
/obj/item/clothing/suit/space/vox/mob_can_equip(M as mob, slot)
var/mob/living/carbon/human/V = M
if(V.dna.mutantrace != "vox")
V << "<span class='warning'>This clearly isn't designed for your species!</span>"
return 0
return ..()
/obj/item/clothing/under/vox/vox_casual
name = "alien clothing"
desc = "This doesn't look very comfortable."
icon_state = "vox-casual-1"
color = "vox-casual-1"
item_state = "vox-casual-1"
/obj/item/clothing/under/vox/vox_robes
name = "alien robes"
desc = "Weird and flowing!"
icon_state = "vox-casual-2"
color = "vox-casual-2"
item_state = "vox-casual-2"

View File

@@ -811,6 +811,8 @@
return "Tajaran" return "Tajaran"
if("skrell") if("skrell")
return "Skrell" return "Skrell"
if("vox")
return "Vox"
if("plant") if("plant")
return "Mobile vegetation" return "Mobile vegetation"
if("golem") if("golem")
@@ -826,6 +828,8 @@
return "Skrell" return "Skrell"
else if(src.dna.mutantrace == "tajaran") else if(src.dna.mutantrace == "tajaran")
return "Tajaran" return "Tajaran"
else if(src.dna.mutantrace == "vox")
return "vox"
/mob/living/carbon/proc/update_mutantrace_languages() /mob/living/carbon/proc/update_mutantrace_languages()
if(src.dna) if(src.dna)
@@ -835,6 +839,8 @@
src.skrell_talk_understand = 1 src.skrell_talk_understand = 1
else if(src.dna.mutantrace == "tajaran") else if(src.dna.mutantrace == "tajaran")
src.tajaran_talk_understand = 1 src.tajaran_talk_understand = 1
else if(src.dna.mutantrace == "vox")
src.vox_talk_understand = 1
/mob/living/carbon/human/proc/play_xylophone() /mob/living/carbon/human/proc/play_xylophone()
if(!src.xylophone) if(!src.xylophone)
@@ -1105,4 +1111,4 @@
.=..() .=..()
if(istype(feet_blood_DNA, /list) && feet_blood_DNA.len) if(istype(feet_blood_DNA, /list) && feet_blood_DNA.len)
del(feet_blood_DNA) del(feet_blood_DNA)
return 1 return 1

View File

@@ -392,6 +392,7 @@
var/SA_para_min = 1 var/SA_para_min = 1
var/SA_sleep_min = 5 var/SA_sleep_min = 5
var/oxygen_used = 0 var/oxygen_used = 0
var/nitrogen_used = 0
var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.temperature)/BREATH_VOLUME var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.temperature)/BREATH_VOLUME
//Partial pressure of the O2 in our breath //Partial pressure of the O2 in our breath
@@ -401,8 +402,10 @@
// And CO2, lets say a PP of more than 10 will be bad (It's a little less really, but eh, being passed out all round aint no fun) // And CO2, lets say a PP of more than 10 will be bad (It's a little less really, but eh, being passed out all round aint no fun)
var/CO2_pp = (breath.carbon_dioxide/breath.total_moles())*breath_pressure // Tweaking to fit the hacky bullshit I've done with atmo -- TLE var/CO2_pp = (breath.carbon_dioxide/breath.total_moles())*breath_pressure // Tweaking to fit the hacky bullshit I've done with atmo -- TLE
//var/CO2_pp = (breath.carbon_dioxide/breath.total_moles())*0.5 // The default pressure value //var/CO2_pp = (breath.carbon_dioxide/breath.total_moles())*0.5 // The default pressure value
// Nitrogen, for Vox.
var/Nitrogen_pp = (breath.nitrogen/breath.total_moles())*breath_pressure
if(O2_pp < safe_oxygen_min) // Too little oxygen if(O2_pp < safe_oxygen_min && src.dna.mutantrace!="vox") // Too little oxygen
if(prob(20)) if(prob(20))
spawn(0) emote("gasp") spawn(0) emote("gasp")
if(O2_pp > 0) if(O2_pp > 0)
@@ -420,6 +423,19 @@
oxyloss += 5*ratio oxyloss += 5*ratio
oxygen_used = breath.oxygen*ratio/6 oxygen_used = breath.oxygen*ratio/6
oxygen_alert = max(oxygen_alert, 1)*/ oxygen_alert = max(oxygen_alert, 1)*/
else if(Nitrogen_pp < safe_oxygen_min && src.dna.mutantrace=="vox") //Vox breathe nitrogen, not oxygen.
if(prob(20))
spawn(0) emote("gasp")
if(Nitrogen_pp > 0)
var/ratio = safe_oxygen_min/Nitrogen_pp
adjustOxyLoss(min(5*ratio, HUMAN_MAX_OXYLOSS))
failed_last_breath = 1
nitrogen_used = breath.nitrogen*ratio/6
else
adjustOxyLoss(HUMAN_MAX_OXYLOSS)
failed_last_breath = 1
oxygen_alert = max(oxygen_alert, 1)
else // We're in safe limits else // We're in safe limits
failed_last_breath = 0 failed_last_breath = 0
adjustOxyLoss(-5) adjustOxyLoss(-5)
@@ -427,6 +443,7 @@
oxygen_alert = 0 oxygen_alert = 0
breath.oxygen -= oxygen_used breath.oxygen -= oxygen_used
breath.nitrogen -= nitrogen_used
breath.carbon_dioxide += oxygen_used breath.carbon_dioxide += oxygen_used
//CO2 does not affect failed_last_breath. So if there was enough oxygen in the air but too much co2, this will hurt you, but only once per 4 ticks, instead of once per tick. //CO2 does not affect failed_last_breath. So if there was enough oxygen in the air but too much co2, this will hurt you, but only once per 4 ticks, instead of once per tick.

View File

@@ -313,6 +313,8 @@ proc/get_damage_icon_part(damage_state, body_part)
//Eyes //Eyes
if(!skeleton) if(!skeleton)
var/icon/eyes_s = new/icon('icons/mob/human_face.dmi', "eyes_s") var/icon/eyes_s = new/icon('icons/mob/human_face.dmi', "eyes_s")
if(src.get_species()=="Vox")
eyes_s = new/icon('icons/mob/human_face.dmi', "vox_eyes_s")
eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
stand_icon.Blend(eyes_s, ICON_OVERLAY) stand_icon.Blend(eyes_s, ICON_OVERLAY)
@@ -442,6 +444,9 @@ proc/get_damage_icon_part(damage_state, body_part)
if("skrell") if("skrell")
race_icon = 'icons/mob/human_races/r_skrell.dmi' race_icon = 'icons/mob/human_races/r_skrell.dmi'
deform_icon = 'icons/mob/human_races/r_def_skrell.dmi' deform_icon = 'icons/mob/human_races/r_def_skrell.dmi'
if("vox")
race_icon = 'icons/mob/human_races/r_vox.dmi'
deform_icon = 'icons/mob/human_races/r_def_vox.dmi'
else else
race_icon = 'icons/mob/human_races/r_human.dmi' race_icon = 'icons/mob/human_races/r_human.dmi'
deform_icon = 'icons/mob/human_races/r_def_human.dmi' deform_icon = 'icons/mob/human_races/r_def_human.dmi'

View File

@@ -18,6 +18,7 @@ var/list/department_radio_keys = list(
":k" = "skrell", "#k" = "skrell", ".k" = "skrell", ":k" = "skrell", "#k" = "skrell", ".k" = "skrell",
":j" = "tajaran", "#j" = "tajaran", ".j" = "tajaran", ":j" = "tajaran", "#j" = "tajaran", ".j" = "tajaran",
":o" = "soghun", "#o" = "soghun", ".o" = "soghun", ":o" = "soghun", "#o" = "soghun", ".o" = "soghun",
":v" = "vox", "#v" = "vox", ".v" = "vox",
":R" = "right hand", "#R" = "right hand", ".R" = "right hand", ":R" = "right hand", "#R" = "right hand", ".R" = "right hand",
":L" = "left hand", "#L" = "left hand", ".L" = "left hand", ":L" = "left hand", "#L" = "left hand", ".L" = "left hand",
@@ -37,6 +38,7 @@ var/list/department_radio_keys = list(
":K" = "skrell", "#K" = "skrell", ".K" = "skrell", ":K" = "skrell", "#K" = "skrell", ".K" = "skrell",
":J" = "tajaran", "#J" = "tajaran", ".J" = "tajaran", ":J" = "tajaran", "#J" = "tajaran", ".J" = "tajaran",
":O" = "soghun", "#O" = "soghun", ".O" = "soghun", ":O" = "soghun", "#O" = "soghun", ".O" = "soghun",
":V" = "vox", "#V" = "vox", ".V" = "vox",
//kinda localization -- rastaf0 //kinda localization -- rastaf0
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding. //same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
@@ -185,6 +187,7 @@ var/list/department_radio_keys = list(
var/is_speaking_skrell = 0 var/is_speaking_skrell = 0
var/is_speaking_soghun = 0 var/is_speaking_soghun = 0
var/is_speaking_taj = 0 var/is_speaking_taj = 0
var/is_speaking_vox = 0
var/is_speaking_radio = 0 var/is_speaking_radio = 0
switch (message_mode) switch (message_mode)
@@ -283,6 +286,10 @@ var/list/department_radio_keys = list(
if(skrell_talk_understand || universal_speak) if(skrell_talk_understand || universal_speak)
is_speaking_skrell = 1 is_speaking_skrell = 1
if ("vox")
if(vox_talk_understand || universal_speak)
is_speaking_vox = 1
if("changeling") if("changeling")
if(mind && mind.changeling) if(mind && mind.changeling)
for(var/mob/Changeling in mob_list) for(var/mob/Changeling in mob_list)
@@ -370,7 +377,7 @@ var/list/department_radio_keys = list(
for (var/M in listening) for (var/M in listening)
if(hascall(M,"say_understands")) if(hascall(M,"say_understands"))
if (M:say_understands(src) && !is_speaking_skrell && !is_speaking_soghun && !is_speaking_taj) if (M:say_understands(src) && !is_speaking_skrell && !is_speaking_soghun && !is_speaking_vox && !is_speaking_taj)
heard_a += M heard_a += M
else if(ismob(M)) else if(ismob(M))
if(is_speaking_skrell && (M:skrell_talk_understand || M:universal_speak)) if(is_speaking_skrell && (M:skrell_talk_understand || M:universal_speak))
@@ -379,6 +386,8 @@ var/list/department_radio_keys = list(
heard_a += M heard_a += M
else if(is_speaking_taj && (M:tajaran_talk_understand || M:universal_speak)) else if(is_speaking_taj && (M:tajaran_talk_understand || M:universal_speak))
heard_a += M heard_a += M
else if(is_speaking_vox && (M:vox_talk_understand || M:universal_speak))
heard_a += M
else else
heard_b += M heard_b += M
else else
@@ -394,7 +403,7 @@ var/list/department_radio_keys = list(
var/rendered = null var/rendered = null
if (length(heard_a)) if (length(heard_a))
var/message_a = say_quote(message,is_speaking_soghun,is_speaking_skrell,is_speaking_taj) var/message_a = say_quote(message,is_speaking_soghun,is_speaking_skrell,is_speaking_taj,is_speaking_vox)
if (italics) if (italics)
message_a = "<i>[message_a]</i>" message_a = "<i>[message_a]</i>"
@@ -419,7 +428,7 @@ var/list/department_radio_keys = list(
message_b = voice_message message_b = voice_message
else else
message_b = stars(message) message_b = stars(message)
message_b = say_quote(message_b,is_speaking_soghun,is_speaking_skrell,is_speaking_taj) message_b = say_quote(message_b,is_speaking_soghun,is_speaking_skrell,is_speaking_taj,is_speaking_vox)
if (italics) if (italics)
message_b = "<i>[message_b]</i>" message_b = "<i>[message_b]</i>"

View File

@@ -211,6 +211,7 @@
var/tajaran_talk_understand = 0 var/tajaran_talk_understand = 0
var/soghun_talk_understand = 0 var/soghun_talk_understand = 0
var/skrell_talk_understand = 0 var/skrell_talk_understand = 0
var/vox_talk_understand = 0
var/has_limbs = 1 //Whether this mob have any limbs he can move with var/has_limbs = 1 //Whether this mob have any limbs he can move with
var/can_stand = 1 //Whether this mob have ability to stand var/can_stand = 1 //Whether this mob have ability to stand

View File

@@ -349,6 +349,10 @@
if(is_alien_whitelisted(src, "Skrell"|| !config.usealienwhitelist)) if(is_alien_whitelisted(src, "Skrell"|| !config.usealienwhitelist))
new_character.dna.mutantrace = "skrell" new_character.dna.mutantrace = "skrell"
new_character.skrell_talk_understand = 1 new_character.skrell_talk_understand = 1
if(client.prefs.species == "Vox")
if(is_alien_whitelisted(src, "Vox"|| !config.usealienwhitelist))
new_character.dna.mutantrace = "vox"
new_character.vox_talk_understand = 1
if(ticker.random_players) if(ticker.random_players)
new_character.gender = pick(MALE, FEMALE) new_character.gender = pick(MALE, FEMALE)

View File

@@ -144,6 +144,8 @@ datum/preferences
icobase = 'icons/mob/human_races/r_lizard.dmi' icobase = 'icons/mob/human_races/r_lizard.dmi'
if("Skrell") if("Skrell")
icobase = 'icons/mob/human_races/r_skrell.dmi' icobase = 'icons/mob/human_races/r_skrell.dmi'
if("Vox")
icobase = 'icons/mob/human_races/r_vox.dmi'
else else
icobase = 'icons/mob/human_races/r_human.dmi' icobase = 'icons/mob/human_races/r_human.dmi'
preview_icon = new /icon(icobase, "torso_[g]") preview_icon = new /icon(icobase, "torso_[g]")
@@ -172,6 +174,9 @@ datum/preferences
preview_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT) preview_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "eyes_s") var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "eyes_s")
if(species=="Vox")
eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "vox_eyes_s")
eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
var/datum/sprite_accessory/hair_style = hair_styles_list[h_style] var/datum/sprite_accessory/hair_style = hair_styles_list[h_style]

View File

@@ -306,7 +306,7 @@
name = "Shaved" name = "Shaved"
icon_state = "bald" icon_state = "bald"
gender = NEUTER gender = NEUTER
species_allowed = list("Human","Unathi","Tajaran","Skrell") species_allowed = list("Human","Unathi","Tajaran","Skrell","Vox")
watson watson
name = "Watson Mustache" name = "Watson Mustache"
@@ -493,6 +493,11 @@
icon_state = "hair_messy" icon_state = "hair_messy"
species_allowed = list("Tajaran") species_allowed = list("Tajaran")
vox_quills_short
name = "Short Vox Quills"
icon_state = "vox_shortquills"
species_allowed = list("Vox")
/datum/sprite_accessory/facial_hair /datum/sprite_accessory/facial_hair
taj_sideburns taj_sideburns

View File

@@ -69,7 +69,7 @@
return 1 return 1
return 0 return 0
/mob/proc/say_quote(var/text,var/is_speaking_soghun,var/is_speaking_skrell,var/is_speaking_tajaran) /mob/proc/say_quote(var/text,var/is_speaking_soghun,var/is_speaking_skrell,var/is_speaking_tajaran,var/is_speaking_vox)
if(!text) if(!text)
return "says, \"...\""; //not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code return "says, \"...\""; //not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code
//tcomms code is still runtiming somewhere here //tcomms code is still runtiming somewhere here
@@ -80,6 +80,8 @@
return "<span class='say_quote'>warbles</span>, \"<span class='skrell'>[text]</span>\""; return "<span class='say_quote'>warbles</span>, \"<span class='skrell'>[text]</span>\"";
if (is_speaking_tajaran) if (is_speaking_tajaran)
return "<span class='say_quote'>mrowls</span>, \"<span class='tajaran'>[text]</span>\""; return "<span class='say_quote'>mrowls</span>, \"<span class='tajaran'>[text]</span>\"";
if (is_speaking_vox)
return "<span class='say_quote'>chirps</span>, \"<span class='vox'>[text]</span>\"";
//Needs Virus2 //Needs Virus2
// if (src.disease_symptoms & DISEASE_HOARSE) // if (src.disease_symptoms & DISEASE_HOARSE)
// return "rasps, \"[text]\""; // return "rasps, \"[text]\"";

View File

@@ -740,6 +740,8 @@ obj/item/weapon/organ/New(loc, mob/living/carbon/human/H)
base = new('icons/mob/human_races/r_lizard.dmi') base = new('icons/mob/human_races/r_lizard.dmi')
if("skrell") if("skrell")
base = new('icons/mob/human_races/r_skrell.dmi') base = new('icons/mob/human_races/r_skrell.dmi')
if("vox")
base = new('icons/mob/human_races/r_vox.dmi')
else else
base = new('icons/mob/human_races/r_human.dmi') base = new('icons/mob/human_races/r_human.dmi')
if(base) if(base)

View File

@@ -74,7 +74,7 @@
var/mob/living/carbon/human/H = new_mob var/mob/living/carbon/human/H = new_mob
if(H.dna) if(H.dna)
H.dna.mutantrace = pick("lizard","tajaran","skrell","golem","slime","plant",4;"") H.dna.mutantrace = pick("lizard","tajaran","skrell","golem","slime","plant","vox",4;"")
else else
return return

View File

@@ -5,6 +5,9 @@
// type path referencing tools that can be used for this step, and how well are they suited for it // type path referencing tools that can be used for this step, and how well are they suited for it
var/list/allowed_tools = null var/list/allowed_tools = null
// type paths referencing mutantraces that this step applies to.
var/list/allowed_species = null
var/list/disallowed_species = null
// duration of the step // duration of the step
var/min_duration = 0 var/min_duration = 0
@@ -22,6 +25,21 @@
return allowed_tools[T] return allowed_tools[T]
return 0 return 0
// Checks if this step applies to the mutantrace of the user.
proc/is_valid_mutantrace(mob/living/carbon/human/target)
if(allowed_species)
for(var/species in allowed_species)
if(target.dna.mutantrace == species)
return 1
if(disallowed_species)
for(var/species in disallowed_species)
if (target.dna.mutantrace == species)
return 0
return 1
// checks whether this step can be applied with the given user and target // checks whether this step can be applied with the given user and target
proc/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) proc/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
return 0 return 0
@@ -63,7 +81,7 @@ proc/do_surgery(mob/living/M, mob/living/user, obj/item/tool)
return 0 return 0
for(var/datum/surgery_step/S in surgery_steps) for(var/datum/surgery_step/S in surgery_steps)
//check if tool is right or close enough and if this step is possible //check if tool is right or close enough and if this step is possible
if( S.tool_quality(tool) && S.can_use(user, M, user.zone_sel.selecting, tool)) if( S.tool_quality(tool) && S.can_use(user, M, user.zone_sel.selecting, tool) && S.is_valid_mutantrace(M))
S.begin_step(user, M, user.zone_sel.selecting, tool) //start on it S.begin_step(user, M, user.zone_sel.selecting, tool) //start on it
//We had proper tools! (or RNG smiled.) and User did not move or change hands. //We had proper tools! (or RNG smiled.) and User did not move or change hands.
if( prob(S.tool_quality(tool)) && do_mob(user, M, rand(S.min_duration, S.max_duration))) if( prob(S.tool_quality(tool)) && do_mob(user, M, rand(S.min_duration, S.max_duration)))

View File

@@ -55,6 +55,7 @@ h1.alert, h2.alert {color: #000000;}
.tajaran {color: #803B56;} .tajaran {color: #803B56;}
.skrell {color: #00CED1;} .skrell {color: #00CED1;}
.soghun {color: #228B22;} .soghun {color: #228B22;}
.vox {color: #AA00AA;}
.say_quote {font-family: Georgia, Verdana, sans-serif;} .say_quote {font-family: Georgia, Verdana, sans-serif;}
.interface {color: #330033;} .interface {color: #330033;}