Merge pull request #3454 from Zuhayr/feature

Ghost hearing fix, more species adjustments.
This commit is contained in:
Chinsky
2013-08-06 18:24:56 -07:00
10 changed files with 86 additions and 218 deletions
+8 -9
View File
@@ -550,15 +550,11 @@
var/mob/living/carbon/monkey/O = null
switch(M.dna.mutantrace)
if("tajaran")
O = new /mob/living/carbon/monkey/tajara(src)
if("lizard")
O = new /mob/living/carbon/monkey/unathi(src)
if("skrell")
O = new /mob/living/carbon/monkey/skrell(src)
else
O = new /mob/living/carbon/monkey(src)
if(H.species.primitive)
O = new H.species.primitive(src)
else
H.gib() //Trying to change the species of a creature with no primitive var set is messy.
return
if(M)
if (M.dna)
@@ -626,6 +622,9 @@
del(animation)
var/mob/living/carbon/human/O = new( src )
if(Mo.greaterform)
O.set_species(Mo.greaterform)
if (isblockon(getblock(M.dna.uni_identity, 11,3),11))
O.gender = FEMALE
else
+1 -1
View File
@@ -53,7 +53,7 @@
/obj/item/clothing/mask/breath/vox/mob_can_equip(M as mob, slot)
var/mob/living/carbon/human/V = M
if(V.dna.mutantrace != "vox")
if(V.species.name != "Vox")
V << "<span class='warning'>This clearly isn't designed for your species!</span>"
return 0
+6 -6
View File
@@ -3,14 +3,14 @@
var/up = 0 //So Unathi helmets play nicely with the weldervision check.
mob_can_equip(M as mob, slot)
var/mob/living/carbon/human/U = M
if(U.dna.mutantrace != "lizard")
if(U.species.name != "Unathi")
U << "<span class='warning'>This clearly isn't designed for your species!</span>"
return 0
return ..()
/obj/item/clothing/suit/space/unathi/mob_can_equip(M as mob, slot)
var/mob/living/carbon/human/U = M
if(U.dna.mutantrace != "lizard")
if(U.species.name != "Unathi")
U << "<span class='warning'>This clearly isn't designed for your species!</span>"
return 0
@@ -79,14 +79,14 @@
/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")
if(V.species.name != "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")
if(V.species.name != "Vox")
V << "<span class='warning'>This clearly isn't designed for your species!</span>"
return 0
@@ -117,7 +117,7 @@
/obj/item/clothing/gloves/yellow/vox/mob_can_equip(M as mob, slot)
var/mob/living/carbon/human/U = M
if(U.dna.mutantrace != "vox")
if(U.species.name != "Vox")
U << "<span class='warning'>This clearly isn't designed for your species!</span>"
return 0
return ..()
@@ -149,7 +149,7 @@
/obj/item/clothing/shoes/magboots/vox/mob_can_equip(M as mob, slot)
var/mob/living/carbon/human/U = M
if(U.dna.mutantrace != "vox")
if(U.species.name != "Vox")
U << "<span class='warning'>This clearly isn't designed for your species!</span>"
return 0
return ..()
+6 -11
View File
@@ -835,17 +835,6 @@
return species.name
/mob/living/carbon/get_species()
if(src.dna)
if(src.dna.mutantrace == "lizard")
return "Unathi"
else if(src.dna.mutantrace == "skrell")
return "Skrell"
else if(src.dna.mutantrace == "tajaran")
return "Tajaran"
else if(src.dna.mutantrace == "vox")
return "vox"
/mob/living/carbon/human/proc/play_xylophone()
if(!src.xylophone)
visible_message("\red [src] begins playing his ribcage like a xylophone. It's quite spooky.","\blue You begin to play a spooky refrain on your ribcage.","\red You hear a spooky xylophone melody.")
@@ -1272,6 +1261,12 @@ mob/living/carbon/human/yank_out_object()
species = all_species[new_species]
see_in_dark = species.darksight
if(see_in_dark > 2)
see_invisible = SEE_INVISIBLE_LEVEL_ONE
else
see_invisible = SEE_INVISIBLE_LIVING
spawn(0)
update_icons()
+2 -4
View File
@@ -1146,14 +1146,12 @@
sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS)
if(dna)
switch(dna.mutantrace)
if("lizard","slime")
if("slime")
see_in_dark = 3
see_invisible = SEE_INVISIBLE_LEVEL_ONE
if("shadow","tajaran")
if("shadow")
see_in_dark = 8
see_invisible = SEE_INVISIBLE_LEVEL_ONE
else
see_in_dark = 2
if(XRAY in mutations)
sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
+29 -87
View File
@@ -10,116 +10,39 @@
update_icon = 0 ///no need to call regenerate_icon
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
var/greaterform = "Human" //Used when humanizing a monkey.
var/ico = "monkey" //Used when updating icons.
/mob/living/carbon/monkey/tajara
name = "farwa"
voice_name = "farwa"
voice_message = "mews"
say_message = "mews"
icon_state = "tajkey1"
ico = "tajkey"
/mob/living/carbon/monkey/skrell
name = "neaera"
voice_name = "neaera"
voice_message = "squicks"
say_message = "squicks"
icon_state = "skrellkey1"
ico = "skrellkey"
/mob/living/carbon/monkey/unathi
name = "stok"
voice_name = "stok"
voice_message = "hisses"
say_message = "hisses"
icon_state = "stokkey1"
/mob/living/carbon/monkey/unathi/New()
var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
R.my_atom = src
if(name == "stok")
name = text("stok ([rand(1, 1000)])")
real_name = name
if (!(dna))
if(gender == NEUTER)
gender = pick(MALE, FEMALE)
dna = new /datum/dna( null )
dna.real_name = real_name
dna.uni_identity = "000000000000000000DC0000066000"
dna.struc_enzymes = "43359156756131E13763334D1C369012032164D4FE4CD61544B6C03F251B6C60A42821D26BA3B0FD6"
dna.unique_enzymes = md5(name)
dna.mutantrace = "lizard"
//////////blah
var/gendervar
if (gender == MALE)
gendervar = add_zero2(num2hex((rand(1,2049)),1), 3)
else
gendervar = add_zero2(num2hex((rand(2051,4094)),1), 3)
dna.uni_identity += gendervar
dna.uni_identity += "044"
dna.uni_identity += "C5D"
..()
/mob/living/carbon/monkey/skrell/New()
var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
R.my_atom = src
if(name == "neaera")
name = text("neaera ([rand(1, 1000)])")
real_name = name
if (!(dna))
if(gender == NEUTER)
gender = pick(MALE, FEMALE)
dna = new /datum/dna( null )
dna.real_name = real_name
dna.uni_identity = "000000000000000000DC0000066000"
dna.struc_enzymes = "43359156756131E13763334D1C369012032164D4FE4CD61544B6C03F251B6C60A42821D26BA3B0FD6"
dna.unique_enzymes = md5(name)
dna.mutantrace = "skrell"
//////////blah
var/gendervar
if (gender == MALE)
gendervar = add_zero2(num2hex((rand(1,2049)),1), 3)
else
gendervar = add_zero2(num2hex((rand(2051,4094)),1), 3)
dna.uni_identity += gendervar
dna.uni_identity += "01C"
dna.uni_identity += "C92"
..()
/mob/living/carbon/monkey/tajara/New()
var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
R.my_atom = src
if(name == "farwa")
name = text("farwa ([rand(1, 1000)])")
real_name = name
if (!(dna))
if(gender == NEUTER)
gender = pick(MALE, FEMALE)
dna = new /datum/dna( null )
dna.real_name = real_name
dna.uni_identity = "000000000000000000DC0000066000"
dna.struc_enzymes = "43359156756131E13763334D1C369012032164D4FE4CD61544B6C03F251B6C60A42821D26BA3B0FD6"
dna.unique_enzymes = md5(name)
dna.mutantrace = "tajaran"
//////////blah
var/gendervar
if (gender == MALE)
gendervar = add_zero2(num2hex((rand(1,2049)),1), 3)
else
gendervar = add_zero2(num2hex((rand(2051,4094)),1), 3)
dna.uni_identity += gendervar
dna.uni_identity += "0A0"
dna.uni_identity += "E00"
..()
ico = "stokkey"
/mob/living/carbon/monkey/New()
var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
R.my_atom = src
if(name == "monkey")
name = text("monkey ([rand(1, 1000)])")
real_name = name
if(name == "monkey" || name == "farwa" || name == "stok" || name == "neara") //Hideous but necessary to stop Pun-Pun becoming generic.
name = "[name] ([rand(1, 1000)])"
real_name = name
if (!(dna))
if(gender == NEUTER)
gender = pick(MALE, FEMALE)
@@ -138,8 +61,27 @@
dna.uni_identity += "12C"
dna.uni_identity += "4E2"
..()
update_icons()
return
/mob/living/carbon/monkey/unathi/New()
..()
dna.mutantrace = "lizard"
greaterform = "Unathi"
/mob/living/carbon/monkey/skrell/New()
..()
dna.mutantrace = "skrell"
greaterform = "Skrell"
/mob/living/carbon/monkey/tajara/New()
..()
dna.mutantrace = "tajaran"
greaterform = "Tajaran"
/mob/living/carbon/monkey/movement_delay()
var/tally = 0
if(reagents)
@@ -28,14 +28,7 @@
update_hud()
lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again
overlays.Cut()
var/ico = "monkey"
switch(src.dna.mutantrace) //On monkey spawn, check the DNA of the mob. If alien, change to appropriate alien monkey sprite
if("tajaran")
ico = "tajkey"
if("lizard")
ico = "stokkey"
if("skrell")
ico = "skrellkey"
if(lying)
icon_state = ico + "0"
for(var/image/I in overlays_lying)
+11 -1
View File
@@ -9,10 +9,11 @@
var/deform = 'icons/mob/human_races/r_def_human.dmi' // Mutated icon set.
var/eyes = "eyes_s" // Icon for eyes.
var/tail // Name of tail image in species effects icon file.
var/primitive // Lesser form, if any (ie. monkey for humans)
var/tail // Name of tail image in species effects icon file.
var/language // Default racial language, if any.
var/attack_verb = "punch" // Empty hand hurt intent verb.
var/mutantrace // Safeguard due to old code.
var/breath_type // Non-oxygen gas breathed, if any.
@@ -24,6 +25,7 @@
var/heat_level_2 = 400 // Heat damage level 2 above this point.
var/heat_level_3 = 1000 // Heat damage level 2 above this point.
var/darksight = 2
var/hazard_high_pressure = HAZARD_HIGH_PRESSURE // Dangerously high pressure.
var/warning_high_pressure = WARNING_HIGH_PRESSURE // High pressure warning.
var/warning_low_pressure = WARNING_LOW_PRESSURE // Low pressure warning.
@@ -36,6 +38,8 @@
/datum/species/human
name = "Human"
primitive = /mob/living/carbon/monkey
flags = HAS_LIPS | HAS_UNDERWEAR
/datum/species/unathi
@@ -45,6 +49,8 @@
language = "Sinta'unathi"
tail = "sogtail"
attack_verb = "scratch"
primitive = /mob/living/carbon/monkey/unathi
darksight = 3
flags = WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL
@@ -55,6 +61,9 @@
language = "Siik'mas"
tail = "tajtail"
attack_verb = "scratch"
darksight = 8
primitive = /mob/living/carbon/monkey/tajara
flags = WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_TAIL
@@ -63,6 +72,7 @@
icobase = 'icons/mob/human_races/r_skrell.dmi'
deform = 'icons/mob/human_races/r_def_skrell.dmi'
language = "Skrellian"
primitive = /mob/living/carbon/monkey/skrell
flags = WHITELISTED | HAS_LIPS | HAS_UNDERWEAR
+2 -2
View File
@@ -367,7 +367,7 @@ var/list/department_radio_keys = list(
for (var/M in listening)
if(hascall(M,"say_understands"))
if ((M:say_understands(src) && !speaking) || M.universal_speak)
if ((M:say_understands(src) && !speaking))
//world << "[M] understood [src] (0)."
heard_a += M
else if(ismob(M))
@@ -381,7 +381,7 @@ var/list/department_radio_keys = list(
for(var/datum/language/L in P.languages)
if(speaking.name == L.name)
understood = 1
if(understood)
if(understood || P.universal_speak)
//world << "[M] understood [src] (1)."
heard_a += M
else
+20 -89
View File
@@ -21,102 +21,33 @@
sleep(48)
//animation = null
if(!species.primitive) //If the creature in question has no primitive set, this is going to be messy.
gib()
return
var/mob/living/carbon/monkey/O = null
switch(dna.mutantrace)
if("tajara")
O = new /mob/living/carbon/monkey/tajara( loc )
O.name = "farwa"
O.dna = dna
dna = null
O.dna.uni_identity = "000000000000000000DC00000660004DA0A0E00"
//O.dna.struc_enzymes = "0983E840344C39F4B059D5145FC5785DC6406A4BB8"
O.dna.struc_enzymes = "[copytext(O.dna.struc_enzymes,1,1+3*(STRUCDNASIZE-1))]BB8"
O.loc = loc
O.viruses = viruses
viruses = list()
for(var/datum/disease/D in O.viruses)
D.affected_mob = O
O = new species.primitive(loc)
if (client)
client.mob = O
if(mind)
mind.transfer_to(O)
O << "<B>You are now a farwa. </B>"
O.a_intent = "hurt"
spawn(0)//To prevent the proc from returning null.
del(src)
del(animation)
if("lizard")
O = new /mob/living/carbon/monkey/unathi( loc )
O.name = "stok"
O.dna = dna
dna = null
O.dna.uni_identity = "000000000000000000DC00000660002A8044C5D"
//O.dna.struc_enzymes = "0983E840344C39F4B059D5145FC5785DC6406A4BB8"
O.dna.struc_enzymes = "[copytext(O.dna.struc_enzymes,1,1+3*(STRUCDNASIZE-1))]BB8"
O.loc = loc
O.viruses = viruses
viruses = list()
for(var/datum/disease/D in O.viruses)
D.affected_mob = O
O.dna = dna
O.dna.uni_identity = "000000000000000000DC00000660004DA0A0E00"
O.dna.struc_enzymes = "[copytext(O.dna.struc_enzymes,1,1+3*(STRUCDNASIZE-1))]BB8"
O.viruses = viruses
O.a_intent = "hurt"
if (client)
client.mob = O
if(mind)
mind.transfer_to(O)
O << "<B>You are now a stok. </B>"
O.a_intent = "hurt"
spawn(0)//To prevent the proc from returning null.
del(src)
del(animation)
if("skrell")
O = new /mob/living/carbon/monkey/unathi( loc )
O.name = "neaera"
O.dna = dna
dna = null
O.dna.uni_identity = "000000000000000000DC00000660002A8044C5D"
//O.dna.struc_enzymes = "0983E840344C39F4B059D5145FC5785DC6406A4BB8"
O.dna.struc_enzymes = "[copytext(O.dna.struc_enzymes,1,1+3*(STRUCDNASIZE-1))]BB8"
O.loc = loc
O.viruses = viruses
viruses = list()
for(var/datum/disease/D in O.viruses)
D.affected_mob = O
for(var/datum/disease/D in O.viruses)
D.affected_mob = O
if (client)
client.mob = O
if(mind)
mind.transfer_to(O)
O << "<B>You are now a neaera. </B>"
O.a_intent = "hurt"
spawn(0)//To prevent the proc from returning null.
del(src)
del(animation)
else
O = new /mob/living/carbon/monkey( loc )
O.name = "monkey"
O.dna = dna
dna = null
O.dna.uni_identity = "00600200A00E0110148FC01300B009"
//O.dna.struc_enzymes = "0983E840344C39F4B059D5145FC5785DC6406A4BB8"
O.dna.struc_enzymes = "[copytext(O.dna.struc_enzymes,1,1+3*(STRUCDNASIZE-1))]BB8"
O.loc = loc
O.viruses = viruses
viruses = list()
for(var/datum/disease/D in O.viruses)
D.affected_mob = O
if (client)
client.mob = O
if(mind)
mind.transfer_to(O)
if (client)
client.mob = O
if(mind)
mind.transfer_to(O)
O << "<B>You are now a monkey.</B>"
O.a_intent = "hurt"
spawn(0)//To prevent the proc from returning null.
del(src)
del(animation)
O << "<B>You are now [O]. </B>"
spawn(0)//To prevent the proc from returning null.
del(src)
del(animation)
return O