Fixes Tajarans and all mutant races spawning with no hair, etc. Partially fixes morph mutation. Fixes mutations.

This commit is contained in:
Erthilo
2012-08-18 18:25:23 +01:00
parent 7da0507c8a
commit 6fed058680
8 changed files with 63 additions and 45 deletions
@@ -134,7 +134,7 @@
if(istype(M) && M.lying) //Pulling lying down people is slower
tally += 3
if(mRun in mutations)
if(MINCREASERUN in mutations)
tally = 0
return tally
+17 -9
View File
@@ -136,6 +136,9 @@
lying_icon = new /icon('human.dmi', "body_[g]_l")
icon = stand_icon
rebuild_appearance()
update_clothing()
update_body()
update_face()
src << "\blue Your icons have been generated!"
@@ -151,9 +154,10 @@
..()
spawn(5) // Failsafe for.. weirdness.
update_clothing()
spawn(33)
update_body()
update_clothing()
update_face()
/*var/known_languages = list()
known_languages.Add("english")*/
@@ -315,7 +319,7 @@
if(istype(M) && M.lying) //Pulling lying down people is slower
tally += 3
if(mRun in mutations)
if(MINCREASERUN in mutations)
tally = 0
return tally
@@ -2692,7 +2696,7 @@ It can still be worn/put on as normal.
/mob/living/carbon/human/proc/morph()
set name = "Morph"
set category = "Superpower"
if(!(mMorph in mutations))
if(!(MMORPH in mutations))
src.verbs -= /mob/living/carbon/human/proc/morph
return
@@ -2772,17 +2776,21 @@ It can still be worn/put on as normal.
gender = MALE
else
gender = FEMALE
rebuild_appearance()
update_body()
check_dna()
for(var/mob/M in view())
visible_message("\blue \The [src] morphs and changes [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] appearance!", "\blue You change your appearance!", "\red Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!")
spawn(10)
rebuild_appearance()
update_body()
update_clothing()
update_face()
/mob/living/carbon/human/proc/remotesay()
set name = "Project mind"
set category = "Superpower"
if(!(mRemotetalk in src.mutations))
if(!(MREMOTETALK in src.mutations))
src.verbs -= /mob/living/carbon/human/proc/remotesay
return
var/list/creatures = list()
@@ -2793,7 +2801,7 @@ It can still be worn/put on as normal.
return
var/say = input ("What do you wish to say")
if(mRemotetalk in target.mutations)
if(MREMOTETALK in target.mutations)
target.show_message("\blue You hear [src.real_name]'s voice: [say]")
else
target.show_message("\blue You hear a voice that seems to echo around the room: [say]")
@@ -2807,7 +2815,7 @@ It can still be worn/put on as normal.
set name = "Remote View"
set category = "Superpower"
if(!(mRemote in src.mutations))
if(!(MREMOTEVIEW in src.mutations))
reset_view(0)
remoteobserve = null
src.verbs -= /mob/living/carbon/human/proc/remoteobserve
+22 -20
View File
@@ -56,19 +56,20 @@
if (stat != 2) //still breathing
if(!(MNOBREATH in mutations)) //No breathing needed
//First, resolve location and get a breath
//First, resolve location and get a breath
if(air_master.current_cycle%4==2)
//Only try to take a breath every 4 seconds, unless suffocating
spawn(0) breathe()
if(air_master.current_cycle%4==2)
//Only try to take a breath every 4 seconds, unless suffocating
spawn(0) breathe()
else //Still give containing object the chance to interact
if(istype(loc, /obj/))
var/obj/location_as_object = loc
location_as_object.handle_internal_lifeform(src, 0)
else //Still give containing object the chance to interact
if(istype(loc, /obj/))
var/obj/location_as_object = loc
location_as_object.handle_internal_lifeform(src, 0)
src.handle_shock()
src.handle_shock()
//Apparently, the person who wrote this code designed it so that
//blinded get reset each cycle and then get activated later in the
@@ -168,7 +169,7 @@
handle_disabilities()
if(mHallucination in mutations)
if(MHALLUCINATION in mutations)
hallucination = 100
halloss = 0
@@ -198,7 +199,7 @@
Paralyse(15)
setHalLoss(99)
if(mSmallsize in mutations)
if(MSMALLSIZE in mutations)
if(!(pass_flags & PASSTABLE))
pass_flags |= PASSTABLE
else
@@ -207,7 +208,7 @@
if (mRegen in mutations)
if (MREGENERATE in mutations)
adjustBruteLoss(-2)
adjustToxLoss(-2)
adjustOxyLoss(-2)
@@ -215,24 +216,24 @@
updatehealth()
if(!(/mob/living/carbon/human/proc/morph in src.verbs))
if(mMorph in mutations)
if(MMORPH in mutations)
src.verbs += /mob/living/carbon/human/proc/morph
else
if(!(mMorph in mutations))
if(!(MMORPH in mutations))
src.verbs -= /mob/living/carbon/human/proc/morph
if(!(/mob/living/carbon/human/proc/remoteobserve in src.verbs))
if(mRemote in mutations)
if(MREMOTEVIEW in mutations)
src.verbs += /mob/living/carbon/human/proc/remoteobserve
else
if(!(mRemote in mutations))
if(!(MREMOTEVIEW in mutations))
src.verbs -= /mob/living/carbon/human/proc/remoteobserve
if(!(/mob/living/carbon/human/proc/remotesay in src.verbs))
if(mRemotetalk in mutations)
if(MREMOTETALK in mutations)
src.verbs += /mob/living/carbon/human/proc/remotesay
else
if(!(mRemotetalk in mutations))
if(!(MREMOTETALK in mutations))
src.verbs -= /mob/living/carbon/human/proc/remotesay
@@ -380,6 +381,7 @@
**/
breathe()
if(MNOBREATH in mutations) return
if(reagents.has_reagent("lexorin")) return
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
@@ -487,7 +489,7 @@
canmove = 1
handle_breath(datum/gas_mixture/breath)
if(nodamage || REBREATHER in augmentations || (mNobreath in mutations))
if(nodamage || REBREATHER in augmentations || MNOBREATH in mutations)
return
if(!breath || (breath.total_moles == 0))
@@ -1456,7 +1458,7 @@
if (machine)
if (!( machine.check_eye(src) ))
reset_view(null)
else if(!(mRemote in mutations) && !client.adminobs)
else if(!(MREMOTEVIEW in mutations) && !client.adminobs)
reset_view(null)
if(remoteobserve)
remoteobserve = null
+1 -1
View File
@@ -17,7 +17,7 @@
//sort of a legacy burn method for /electrocute, /shock, and the e_chair
/mob/living/proc/burn_skin(burn_amount, used_weapon = null)
if(istype(src, /mob/living/carbon/human))
if(mShock in src.mutations)
if(MSHOCK in src.mutations)
return 0
//world << "DEBUG: burn_skin(), mutations=[mutations]"
if (COLD_RESISTANCE in src.mutations) //fireproof
+5 -2
View File
@@ -358,14 +358,17 @@
preferences.randomize_appearance_for(new_character)
else
preferences.copy_to(new_character)
if((preferences.species == "Soghun") && (is_alien_whitelisted(src, "Soghun"))) //This probably shouldn't be here, but I can't think of any other way
if((preferences.species == "Soghun") && ((is_alien_whitelisted(src, "Soghun")) || !config.usealienwhitelist)) //This probably shouldn't be here, but I can't think of any other way
new_character.mutantrace = "lizard"
new_character.soghun_talk_understand = 1
new_character.voice_name = "Soghun"
if((preferences.species == "Skrell") && (is_alien_whitelisted(src, "Skrell")))
if((preferences.species == "Skrell") && ((is_alien_whitelisted(src, "Skrell")) || !config.usealienwhitelist))
new_character.mutantrace = "skrell"
new_character.skrell_talk_understand = 1
new_character.voice_name = "Skrell"
new_character.update_clothing()
new_character.update_body()
new_character.update_face() //Hotfix for non-updating sprites.
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1)
new_character.dna.ready_dna(new_character)