further conversion

This commit is contained in:
Fox McCloud
2018-07-18 01:13:24 -04:00
parent d512b362ed
commit 7440dad57e
58 changed files with 177 additions and 176 deletions
+2 -1
View File
@@ -142,4 +142,5 @@
#define VIRUSIMMUNE 14
#define NOCRITDAMAGE 15
#define RESISTHOT 16
#define RESISTCOLD 17
#define RESISTCOLD 17
#define NO_EXAMINE 18
+25 -1
View File
@@ -130,7 +130,31 @@
#define EYE_SHINE_THRESHOLD 6 //dark_view threshold past which a humanoid's eyes will 'shine' in the dark.
//Human sub-species
#define isabductor(A) (is_species(A, "Abductor"))
#define isshadowling(A) (is_species(A, /datum/species/shadow/ling))
#define isshadowlinglesser(A) (is_species(A, /datum/species/shadow/ling/lesser))
#define isabductor(A) (is_species(A, /datum/species/abductor))
#define isgolem(A) (is_species(A, /datum/species/golem))
#define ismonkeybasic(A) (is_species(A, /datum/species/monkey))
#define isfarwa(A) (is_species(A, /datum/species/monkey/tajaran))
#define iswolpain(A) (is_species(A, /datum/species/monkey/vulpkanin))
#define isneara(A) (is_species(A, /datum/species/monkey/skrell))
#define isttok(A) (is_species(A, /datum/species/monkey/unathi))
#define isplasmaman(A) (is_species(A, /datum/species/plasmaman))
#define isshadowperson(A) (is_species(A, /datum/species/shadow))
#define isskeleton(A) (is_species(A, /datum/species/skeleton))
#define ishumanbasic(A) (is_species(A, /datum/species/human))
#define isunathi(A) (is_species(A, /datum/species/unathi))
#define istajaran(A) (is_species(A, /datum/species/tajaran))
#define isvulpkanin(A) (is_species(A, /datum/species/vulpkanin))
#define isskrell(A) (is_species(A, /datum/species/skrell))
#define isvox(A) (is_species(A, /datum/species/vox))
#define isvoxarmalis(A) (is_species(A, /datum/species/vox/armalis))
#define iskidan(A) (is_species(A, /datum/species/kidan))
#define isslimeperson(A) (is_species(A, /datum/species/slime))
#define isgrey(A) (is_species(A, /datum/species/grey))
#define isdiona(A) (is_species(A, /datum/species/diona))
#define ismachine(A) (is_species(A, /datum/species/machine))
#define isdrask(A) (is_species(A, /datum/species/drask))
#define isanimal(A) (istype((A), /mob/living/simple_animal))
#define iscorgi(A) (istype((A), /mob/living/simple_animal/pet/corgi))
+2 -2
View File
@@ -373,11 +373,11 @@ This is always put in the attack log.
if(progress)
qdel(progbar)
/proc/is_species(A, species_name)
/proc/is_species(A, species_datum)
. = FALSE
if(ishuman(A))
var/mob/living/carbon/human/H = A
if(H.get_species() == species_name)
if(H.dna && istype(H.dna.species, species_datum))
. = TRUE
/proc/spawn_atom_to_turf(spawn_type, target, amount, admin_spawn=FALSE, list/extra_args)
+1 -1
View File
@@ -43,7 +43,7 @@
else
return 1
if(isscrewdriver(src) && M.get_species() == "Machine")
if(isscrewdriver(src) && ismachine(M))
if(!attempt_initiate_surgery(src, M, user))
return 0
else
+1 -1
View File
@@ -280,7 +280,7 @@ var/record_id_num = 1001
G.fields["p_stat"] = "Active"
G.fields["m_stat"] = "Stable"
G.fields["sex"] = capitalize(H.gender)
G.fields["species"] = H.get_species()
G.fields["species"] = H.dna.species.name
G.fields["photo"] = get_id_photo(H)
G.fields["photo-south"] = "'data:image/png;base64,[icon2base64(icon(G.fields["photo"], dir = SOUTH))]'"
G.fields["photo-west"] = "'data:image/png;base64,[icon2base64(icon(G.fields["photo"], dir = WEST))]'"
+28 -27
View File
@@ -16,26 +16,26 @@
switch(stage)
if(1)
if(prob(10))
if(affected_mob.get_species() == "Tajaran")
if(istajaran(affected_mob))
to_chat(affected_mob, "<span class='notice'>You feel good.</span>")
else
to_chat(affected_mob, "<span class='notice'>You feel like playing with string.</span>")
if(2)
if(prob(10))
if(affected_mob.get_species() == "Tajaran")
if(istajaran(affected_mob))
to_chat(affected_mob, "<span class='danger'>Something in your throat itches.</span>")
else
to_chat(affected_mob, "<span class='danger'>You NEED to find a mouse.</span>")
if(3)
if(prob(10))
if(affected_mob.get_species() == "Tajaran")
if(istajaran(affected_mob))
to_chat(affected_mob, "<span class='danger'>You feel something in your throat!</span>")
affected_mob.emote("cough")
else
affected_mob.say(pick(list("Mew", "Meow!", "Nya!~")))
if(4)
if(prob(5))
if(affected_mob.get_species() == "Tajaran")
if(istajaran(affected_mob))
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up a hairball!</span>", \
"<span class='userdanger'>You cough up a hairball!</span>")
affected_mob.Stun(5)
@@ -59,7 +59,7 @@
severity = BIOHAZARD
var/list/virspecies = list(/datum/species/human, /datum/species/tajaran, /datum/species/unathi,/datum/species/skrell, /datum/species/vulpkanin) //no karma races sorrys.
var/list/virsuffix = list("pox", "rot", "flu", "cough", "-gitis", "cold", "rash", "itch", "decay")
var/chosentype
var/datum/species/chosentype
var/chosensuff
/datum/disease/kingstons/advanced/New()
@@ -70,26 +70,27 @@
/datum/disease/kingstons/advanced/stage_act()
..()
switch(stage)
if(1)
if(prob(10))
to_chat(affected_mob, "<span class='notice'>You feel awkward.</span>")
if(2)
if(prob(10))
to_chat(affected_mob, "<span class='danger'>You itch.</span>")
if(3)
if(prob(10))
to_chat(affected_mob, "<span class='danger'>Your skin starts to flake!</span>")
if(ishuman(affected_mob))
var/mob/living/carbon/human/twisted = affected_mob
switch(stage)
if(1)
if(prob(10))
to_chat(twisted, "<span class='notice'>You feel awkward.</span>")
if(2)
if(prob(10))
to_chat(twisted, "<span class='danger'>You itch.</span>")
if(3)
if(prob(10))
to_chat(twisted, "<span class='danger'>Your skin starts to flake!</span>")
if(4)
if(prob(5))
if(affected_mob.get_species() != chosentype)
affected_mob.visible_message("<span class='danger'>[affected_mob]'s skin splits and form contorts!</span>", \
"<span class='userdanger'>Your body mutates into a [chosentype]!</span>")
var/mob/living/carbon/human/twisted = affected_mob
twisted.set_species(chosentype)
else
affected_mob.visible_message("<span class='danger'>[affected_mob] scratches at thier skin!</span>", \
"<span class='userdanger'>You scratch your skin to try not to itch!</span>")
affected_mob.adjustBruteLoss(-5)
affected_mob.adjustStaminaLoss(5)
if(4)
if(prob(5))
if(!istype(twisted.dna.species, chosentype))
twisted.visible_message("<span class='danger'>[twisted]'s skin splits and form contorts!</span>", \
"<span class='userdanger'>Your body mutates into a [initial(chosentype.name)]!</span>")
twisted.set_species(chosentype)
else
twisted.visible_message("<span class='danger'>[twisted] scratches at thier skin!</span>", \
"<span class='userdanger'>You scratch your skin to try not to itch!</span>")
twisted.adjustBruteLoss(-5)
twisted.adjustStaminaLoss(5)
+2 -2
View File
@@ -194,12 +194,12 @@
if(1)
if(ishuman(affected_mob))
var/mob/living/carbon/human/H = affected_mob
if(H.dna.species.name == "Slime People")
if(isslimeperson(H))
stage = 5
if(3)
if(ishuman(affected_mob))
var/mob/living/carbon/human/human = affected_mob
if(human.dna.species.name != "Slime People")
if(!isslimeperson(human))
human.set_species(/datum/species/slime)
/datum/disease/transformation/corgi
+1 -1
View File
@@ -371,7 +371,7 @@
)
/datum/outfit/admin/vox/equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(H.get_species() == "Vox Armalis")
if(isvoxarmalis(H))
. = ..()
else
H.equip_vox_raider()
+1 -5
View File
@@ -435,8 +435,4 @@ var/global/list/bad_blocks[0]
UpdateSE()
species = new data["species"]
b_type = data["b_type"]
real_name = data["real_name"]
// a nice hook for if/when we refactor species on dna
/datum/dna/proc/get_species_name()
return species.name
real_name = data["real_name"]
+1 -1
View File
@@ -279,7 +279,7 @@
var/mob/living/carbon/human/H = user
user.visible_message("<span class='warning'>Otherworldly armor suddenly appears on [user]!</span>", \
"<span class='cultitalic'>You speak the words of the talisman, arming yourself!</span>")
if(H.get_species() == "Plasmaman")
if(isplasmaman(H))
H.equip_to_slot(new /obj/item/clothing/suit/space/eva/plasmaman/cultist(H), slot_wear_suit)
H.equip_to_slot(new /obj/item/clothing/head/helmet/space/eva/plasmaman/cultist(H), slot_head)
else
+1 -1
View File
@@ -116,7 +116,7 @@
if((man.mind.assigned_role in ticker.mode.protected_jobs) || (man.mind.assigned_role in ticker.mode.restricted_jobs))
return
//don't include suspects who can't possibly be the antag based on their species (no suspecting the machines of being sneaky changelings)
if(man.get_species() in ticker.mode.protected_species)
if(man.dna.species.name in ticker.mode.protected_species)
return
dudes += man
for(var/i = 0, i < max(player_list.len/10,2), i++)
@@ -338,7 +338,7 @@
if(!owner.current || !ishuman(owner.current))
return 0
var/mob/living/carbon/human/H = owner.current
if(H.get_species() != "Abductor")
if(!isabductor(H))
return 0
ab_team = H.mind.abductor.team
for(var/obj/machinery/abductor/experiment/E in abductor_equipment)
@@ -248,7 +248,7 @@
name = "alien pistol"
desc = "A complicated gun that fires bursts of high-intensity radiation."
ammo_type = list(/obj/item/ammo_casing/energy/declone)
restricted_species = list("Abductor")
restricted_species = list(/datum/species/abductor)
icon_state = "alienpistol"
item_state = "alienpistol"
origin_tech = "combat=4;magnets=7;powerstorage=3;abductor=3"
@@ -15,7 +15,7 @@
return FALSE
var/mob/living/carbon/human/H = user
// You must either: Be of the abductor species, or contain an abductor implant
if((H.get_species() == "Abductor" || (locate(/obj/item/implant/abductor) in H)))
if((isabductor(H) || (locate(/obj/item/implant/abductor) in H)))
return TRUE
return FALSE
@@ -93,7 +93,7 @@
return FALSE
var/mob/living/carbon/human/H = user
// You must either: Be of the abductor species, or contain an abductor implant
if((H.get_species() == "Abductor" || (locate(/obj/item/implant/abductor) in H)))
if((isabductor(H) || (locate(/obj/item/implant/abductor) in H)))
return TRUE
return FALSE
+2 -2
View File
@@ -209,7 +209,7 @@ Made by Xhuis
if(shadow.special_role == SPECIAL_ROLE_SHADOWLING && config.shadowling_max_age)
if(ishuman(shadow.current))
var/mob/living/carbon/human/H = shadow.current
if(H.get_species() != "Shadow")
if(!isshadowling(H))
for(var/obj/effect/proc_holder/spell/targeted/shadowling_hatch/hatch_ability in shadow.spell_list)
hatch_ability.cycles_unused++
if(!H.stunned && prob(20) && hatch_ability.cycles_unused > config.shadowling_max_age)
@@ -317,7 +317,7 @@ Made by Xhuis
blood_color = "#555555"
flesh_color = "#222222"
species_traits = list(NO_BLOOD, NO_BREATHE, RADIMMUNE, NOGUNS) //Can't use guns due to muzzle flash
species_traits = list(NO_BLOOD, NO_BREATHE, RADIMMUNE, NOGUNS, NO_EXAMINE) //Can't use guns due to muzzle flash
burn_mod = 1.5 //1.5x burn damage, 2x is excessive
oxy_mod = 0
heatmod = 1.5
@@ -2,8 +2,10 @@
/obj/effect/proc_holder/spell/proc/shadowling_check(var/mob/living/carbon/human/H)
if(!H || !istype(H)) return
if(H.get_species() == "Shadowling" && is_shadow(H)) return 1
if(H.get_species() == "Lesser Shadowling" && is_thrall(H)) return 1
if(isshadowling(H) && is_shadow(H))
return 1
if(isshadowlinglesser(H) && is_thrall(H))
return 1
if(!is_shadow_or_thrall(usr))
to_chat(usr, "<span class='warning'>You can't wrap your head around how to do this.</span>")
else if(is_thrall(usr))
@@ -267,7 +269,7 @@
listclearnulls(ticker.mode.shadowling_thralls)
if(!(ling.mind in ticker.mode.shadows))
return
if(ling.get_species() != "Shadowling")
if(!isshadowling(ling))
if(ticker.mode.shadowling_thralls.len >= 5)
charge_counter = charge_max
return
@@ -610,7 +612,7 @@
to_chat(user, "<span class='warning'>[thrallToRevive] must be conscious to become empowered.</span>")
charge_counter = charge_max
return
if(thrallToRevive.get_species() == "Lesser Shadowling")
if(isshadowlinglesser(thrallToRevive))
to_chat(user, "<span class='warning'>[thrallToRevive] is already empowered.</span>")
charge_counter = charge_max
return
@@ -619,7 +621,7 @@
if(!ishuman(M.current))
return
var/mob/living/carbon/human/H = M.current
if(H.get_species() == "Lesser Shadowling")
if(isshadowlinglesser(H))
empowered_thralls++
if(empowered_thralls >= EMPOWERED_THRALL_LIMIT)
to_chat(user, "<span class='warning'>You cannot spare this much energy. There are too many empowered thralls.</span>")
+5 -5
View File
@@ -429,7 +429,7 @@ var/global/list/multiverse = list()
M.equip_to_slot_or_del(sword, slot_r_hand) //Don't duplicate what's equipped to hands, or else duplicate swords could be generated...or weird cases of factionless swords.
else
if(M.get_species() == "Tajaran" || M.get_species() == "Unathi")
if(istajaran(M) || isunathi(M))
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes) //If they can't wear shoes, give them a pair of sandals.
var/randomize = pick("mobster","roman","wizard","cyborg","syndicate","assistant", "animu", "cultist", "highlander", "clown", "killer", "pirate", "soviet", "officer", "gladiator")
@@ -461,7 +461,7 @@ var/global/list/multiverse = list()
M.equip_to_slot_or_del(sword, slot_r_hand)
if("cyborg")
if(M.get_species() != "Machine")
if(!ismachine(M))
for(var/obj/item/organ/O in M.bodyparts)
O.robotize(make_tough = 1)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
@@ -584,9 +584,9 @@ var/global/list/multiverse = list()
W.SetOwnerInfo(M)
M.equip_to_slot_or_del(W, slot_wear_id)
if(M.get_species() == "Vox")
M.dna.species.after_equip_job(null, M) //Voxygen(tm)
if(M.get_species() == "Plasmaman")
if(isvox(M))
M.dna.species.after_equip_job(null, M) //Nitrogen tanks
if(isplasmaman(M))
M.dna.species.after_equip_job(null, M) //No fireballs from other dimensions.
M.update_icons()
+1 -1
View File
@@ -141,7 +141,7 @@
wizard_mob.equip_to_slot_or_del(new /obj/item/radio/headset(wizard_mob), slot_l_ear)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(wizard_mob), slot_w_uniform)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(wizard_mob), slot_shoes)
if(wizard_mob.get_species() != "Plasmaman") //handled in the species file for plasmen on the afterjob equip proc for now
if(!isplasmaman(wizard_mob)) //handled in the species file for plasmen on the afterjob equip proc for now
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(wizard_mob), slot_head)
wizard_mob.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(wizard_mob), slot_back)
+1 -1
View File
@@ -244,7 +244,7 @@
if(visualsOnly)
return
if(H.get_species() == "Machine")
if(ismachine(H))
var/obj/item/organ/internal/cyberimp/brain/clown_voice/implant = new
implant.insert(H)
+1 -1
View File
@@ -98,7 +98,7 @@
var/mob/living/carbon/human/H = M
var/dye_list = list("hair", "alt. hair theme")
if(H.gender == MALE || H.get_species() == "Vulpkanin")
if(H.gender == MALE || isvulpkanin(H))
dye_list += "facial hair"
dye_list += "alt. facial hair theme"
+1 -1
View File
@@ -562,7 +562,7 @@ Class Procs:
if(istype(perp.belt, /obj/item/gun) || istype(perp.belt, /obj/item/melee))
threatcount += 2
if(perp.dna.species.name != "Human") //beepsky so racist.
if(!ishumanbasic(perp)) //beepsky so racist.
threatcount += 2
if(check_records || check_arrest)
+1 -1
View File
@@ -92,7 +92,7 @@
return //Has internals, no drowning
if((NO_BREATHE in drownee.dna.species.species_traits) || (BREATHLESS in drownee.mutations))
return //doesn't breathe, no drowning
if(drownee.get_species() == "Skrell" || drownee.get_species() == "Neara")
if(isskrell(drownee) || isneara(drownee))
return //fish things don't drown
if(drownee.stat == DEAD) //Dead spacemen don't drown more
+1 -1
View File
@@ -136,7 +136,7 @@
if(C.h_style == "Bald" || C.h_style == "Balding Hair" || C.h_style == "Skinhead")
to_chat(user, "<span class='notice'>There is not enough hair left to shave...</span>")
return
if(M.get_species() == "Skrell")
if(isskrell(M))
to_chat(user, "<span class='warning'>Your razor isn't going to cut through tentacles.</span>")
return
if(H == user) //shaving yourself
@@ -28,7 +28,7 @@
var/obj/machinery/abductor/console/console
if(ishuman(source))
var/mob/living/carbon/human/H = source
if(H.get_species() == "Abductor")
if(isabductor(H))
console = get_team_console(H.mind.abductor.team)
home = console.pad
+1 -1
View File
@@ -33,7 +33,7 @@
var/list/species_facial_hair = list()
var/obj/item/organ/external/head/C = H.get_organ("head")
var/datum/robolimb/robohead = all_robolimbs[C.model]
if(H.gender == MALE || H.get_species() == "Vulpkanin")
if(H.gender == MALE || isvulpkanin(H))
if(C.dna.species)
for(var/i in facial_hair_styles_list)
var/datum/sprite_accessory/facial_hair/tmp_facial = facial_hair_styles_list[i]
+1 -1
View File
@@ -26,7 +26,7 @@
to_chat(user, "<span class='notice'>You need to take that [target.name] off before cleaning it.</span>")
else if(target == user && user.a_intent == INTENT_GRAB && ishuman(target))
var/mob/living/carbon/human/muncher = user
if(muncher && muncher.get_species() == "Drask")
if(muncher && isdrask(muncher))
to_chat(user, "You take a bite of the [name]. Delicious!")
playsound(user.loc, 'sound/items/eatfood.ogg', 50, 0)
user.nutrition += 2
+2 -2
View File
@@ -3,13 +3,13 @@
alert("The game hasn't started yet!")
return
var/list/incompatible_species = list("Plasmaman", "Vox")
var/list/incompatible_species = list(/datum/species/plasmaman, /datum/species/vox)
for(var/mob/living/carbon/human/H in player_list)
if(H.stat == DEAD || !(H.client))
continue
if(is_special_character(H))
continue
if(H.dna.species.name in incompatible_species)
if(is_type_in_list(H.dna.species, incompatible_species))
H.set_species(/datum/species/human)
var/datum/preferences/A = new() // Randomize appearance
A.copy_to(H)
+2 -2
View File
@@ -3,14 +3,14 @@
alert("The game hasn't started yet!")
return
var/list/incompatible_species = list("Plasmaman", "Vox")
var/list/incompatible_species = list(/datum/species/plasmaman, /datum/species/vox)
var/team_toggle = 0
for(var/mob/living/carbon/human/H in player_list)
if(H.stat == DEAD || !(H.client))
continue
if(is_special_character(H))
continue
if(H.dna.species.name in incompatible_species)
if(is_type_in_list(H.dna.species, incompatible_species))
H.set_species(/datum/species/human)
var/datum/preferences/A = new() // Randomize appearance
A.copy_to(H)
@@ -82,7 +82,7 @@
user.mutations.Add(XRAY)
if(ishuman(user))
var/mob/living/carbon/human/human = user
if(human.dna.species.name != "Shadow")
if(!isshadowperson(human))
to_chat(user, "<span class='warning'>Your flesh rapidly mutates!</span>")
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
to_chat(user, "<span class='warning'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
@@ -95,7 +95,7 @@
new /obj/structure/closet/syndicate/resources/everything(loc)
if(ishuman(user))
var/mob/living/carbon/human/human = user
if(human.dna.species.name != "Shadow")
if(!isshadowperson(human))
to_chat(user, "<span class='warning'>Your flesh rapidly mutates!</span>")
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
to_chat(user, "<span class='warning'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
@@ -108,7 +108,7 @@
user.verbs += /mob/living/carbon/proc/immortality
if(ishuman(user))
var/mob/living/carbon/human/human = user
if(human.dna.species.name != "Shadow")
if(!isshadowperson(human))
to_chat(user, "<span class='warning'>Your flesh rapidly mutates!</span>")
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
to_chat(user, "<span class='warning'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
@@ -130,7 +130,7 @@
obj_count++
if(ishuman(user))
var/mob/living/carbon/human/human = user
if(human.dna.species.name != "Shadow")
if(!isshadowperson(human))
to_chat(user, "<span class='warning'>Your flesh rapidly mutates!</span>")
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
to_chat(user, "<span class='warning'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
@@ -16,7 +16,7 @@
/obj/item/clothing/head/helmet/space/capspace/equipped(mob/living/carbon/human/user, slot)
if(ishuman(user) && slot == slot_head)
if(user.dna.species.name == "Vox")
if(isvox(user))
if(flags & BLOCKHAIR)
flags &= ~BLOCKHAIR
else
+2 -2
View File
@@ -609,8 +609,8 @@
var/species_icon = 'icons/mob/rig_back.dmi'
// Since setting mob_icon will override the species checks in
// update_inv_wear_suit(), handle species checks here.
if(wearer && sprite_sheets && sprite_sheets[wearer.get_species()])
species_icon = sprite_sheets[wearer.get_species()]
if(wearer && sprite_sheets && sprite_sheets[wearer.dna.species.name])
species_icon = sprite_sheets[wearer.dna.species.name]
mob_icon = image("icon" = species_icon, "icon_state" = "[icon_state]")
if(installed_modules.len)
+2 -2
View File
@@ -268,7 +268,7 @@
return
var/mob/living/carbon/human/target = user
if(!istype(target) || target.get_species() != "Tajaran") // Only catbeasts, kthnx.
if(!istype(target) || !istajaran(target)) // Only catbeasts, kthnx.
return
if(target.change_body_accessory("Jay Wingler Tail"))
@@ -1276,7 +1276,7 @@
/obj/item/fluff/zekemirror/attack_self(mob/user)
var/mob/living/carbon/human/target = user
if(!istype(target) || target.get_species() != "Skrell") // It'd be strange to see other races with head tendrils.
if(!istype(target) || !isskrell(target)) // It'd be strange to see other races with head tendrils.
return
if(target.change_hair("Zekes Tentacles", 1))
@@ -255,7 +255,7 @@
if(occupant.reagents)
occupant.reagents.trans_to(new_meat, round(occupant.reagents.total_volume/slab_count,1))
if(occupant.get_species() == "Human")
if(ishumanbasic(occupant))
new /obj/item/stack/sheet/animalhide/human(src)
new /obj/effect/decal/cleanable/blood/gibs(src)
@@ -23,7 +23,7 @@
return 1
/mob/living/carbon/human/bee_friendly()
if(get_species() == "Diona") //bees pollinate plants, duh.
if(isdiona(src)) //bees pollinate plants, duh.
return 1
if((wear_suit && (wear_suit.flags & THICKMATERIAL)) && (head && (head.flags & THICKMATERIAL)))
return 1
@@ -105,7 +105,7 @@
to_chat(M, "<span class='warning'>This item is currently non-functional.</span>")
/*if(ishuman(M) && M.stat != DEAD)
var/mob/living/carbon/human/H = M
if(H.species.name != "Human" || reac_volume < 5) // implying xenohumans are holy
if(!ishumanbasic(H) || reac_volume < 5) // implying xenohumans are holy
if(method == INGEST && show_message)
to_chat(H, "<span class='notice'><i>You feel nothing but a terrible aftertaste.</i></span>")
return ..()
@@ -84,12 +84,12 @@ I'm using this for Stat to give it a more nifty interface to work with
if(container)
var/obj/item/mmi/M = container
if(istype(M) && M.held_brain)
return M.held_brain.dna.get_species_name()
return M.held_brain.dna.species.name
else
return "Artificial Life"
if(istype(loc, /obj/item/organ/internal/brain))
var/obj/item/organ/internal/brain/B = loc
return B.dna.get_species_name()
return B.dna.species.name
/mob/living/carbon/brain/Stat()
..()
+27 -15
View File
@@ -29,29 +29,36 @@
switch(act)
//Cooldown-inducing emotes
if("ping", "pings", "buzz", "buzzes", "beep", "beeps", "yes", "no", "buzz2")
if(dna.species.name == "Machine") //Only Machines can beep, ping, and buzz, yes, no, and make a silly sad trombone noise.
var/found_machine_head = FALSE
if(ismachine(src)) //Only Machines can beep, ping, and buzz, yes, no, and make a silly sad trombone noise.
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm
else //Everyone else fails, skip the emote attempt
return
else
var/obj/item/organ/external/head/H = get_organ("head") // If you have a robotic head, you can make beep-boop noises
if(H && H.is_robotic())
on_CD = handle_emote_CD()
found_machine_head = TRUE
if(!found_machine_head) //Everyone else fails, skip the emote attempt
return //Everyone else fails, skip the emote attempt
if("drone","drones","hum","hums","rumble","rumbles")
if(get_species() == "Drask") //Only Drask can make whale noises
if(isdrask(src)) //Only Drask can make whale noises
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm
else
return
if("howl", "howls")
if(get_species() == "Vulpkanin") //Only Vulpkanin can howl
if(isvulpkanin(src)) //Only Vulpkanin can howl
on_CD = handle_emote_CD(100)
else
return
if("growl", "growls")
if(get_species() == "Vulpkanin") //Only Vulpkanin can growl
if(isvulpkanin(src)) //Only Vulpkanin can growl
on_CD = handle_emote_CD()
else
return
if("squish", "squishes")
var/found_slime_bodypart = 0
if(get_species() == "Slime People") //Only Slime People can squish
if(isslimeperson(src)) //Only Slime People can squish
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm'
found_slime_bodypart = 1
else
@@ -65,31 +72,31 @@
return
if("clack", "clacks")
if(get_species() == "Kidan") //Only Kidan can clack and rightfully so.
if(iskidan(src)) //Only Kidan can clack and rightfully so.
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm'
else //Everyone else fails, skip the emote attempt
return
if("click", "clicks")
if(get_species() == "Kidan") //Only Kidan can click and rightfully so.
if(iskidan(src)) //Only Kidan can click and rightfully so.
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm'
else //Everyone else fails, skip the emote attempt
return
if("creaks", "creak")
if(get_species() == "Diona") //Only Dionas can Creaks.
if(isdiona(src)) //Only Dionas can Creaks.
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm'
else //Everyone else fails, skip the emote attempt
return
if("hiss", "hisses")
if(get_species() == "Unathi") //Only Unathi can hiss.
if(isunathi(src)) //Only Unathi can hiss.
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm'
else //Everyone else fails, skip the emote attempt
return
if("quill", "quills")
if(get_species() == "Vox") //Only Vox can rustle their quills.
if(isvox(src)) //Only Vox can rustle their quills.
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm'
else //Everyone else fails, skip the emote attempt
return
@@ -891,8 +898,6 @@
+ " wag(s), wave(s), whimper(s), wink(s), yawn(s), quill(s)"
switch(dna.species.name)
if("Machine")
emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob, buzz2-(none)/mob"
if("Drask")
emotelist += "\nDrask specific emotes :- drone(s)-(none)/mob, hum(s)-(none)/mob, rumble(s)-(none)/mob"
if("Kidan")
@@ -906,7 +911,14 @@
if("Diona")
emotelist += "\nDiona specific emotes :- creak(s)"
if (dna.species.name == "Slime People")
if(dna.species.name == "Machine")
emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob, buzz2-(none)/mob"
else
var/obj/item/organ/external/head/H = get_organ("head") // If you have a robotic head, you can make beep-boop noises
if(H && H.is_robotic())
emotelist += "\nRobotic head specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob, buzz2-(none)/mob"
if(dna.species.name == "Slime People")
emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob"
else
for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too!
@@ -29,14 +29,12 @@
msg += "[bicon(icon(icon, dir=SOUTH))] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
msg += "<EM>[name]</EM>"
var/list/nospecies = list("Abductor", "Shadowling", "Neara", "Monkey", "Stok", "Farwa", "Wolpin") //species that won't show their race no matter what
var/displayed_species = get_species()
var/displayed_species = dna.species.name
for(var/obj/item/clothing/C in src) //Disguise checks
if(C == src.head || C == src.wear_suit || C == src.wear_mask || C == src.w_uniform || C == src.belt || C == src.back)
if(C.species_disguise)
displayed_species = C.species_disguise
if(skipjumpsuit && skipface || (displayed_species in nospecies)) //either obscured or on the nospecies list
if(skipjumpsuit && skipface || (NO_EXAMINE in dna.species.species_traits)) //either obscured or on the nospecies list
msg += "!\n" //omit the species when examining
else if(displayed_species == "Slime People") //snowflakey because Slime People are defined as a plural
msg += ", a slime person!\n"
@@ -1035,10 +1035,6 @@
/mob/living/carbon/human/proc/check_dna()
dna.check_integrity(src)
return
/mob/living/carbon/human/get_species()
return dna.species.name
/mob/living/carbon/human/proc/play_xylophone()
if(!src.xylophone)
@@ -1172,7 +1168,7 @@
surgeries.Cut() //End all surgeries.
update_revive()
if(dna.species.name != "Skeleton" && (SKELETON in mutations))
if(!isskeleton(src) && (SKELETON in mutations))
mutations.Remove(SKELETON)
if(NOCLONE in mutations)
mutations.Remove(NOCLONE)
@@ -1821,14 +1817,14 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
/mob/living/carbon/human/forceFed(var/obj/item/reagent_containers/food/toEat, mob/user, fullness)
if(!check_has_mouth())
if(!((istype(toEat, /obj/item/reagent_containers/food/drinks) && (get_species() == "Machine"))))
if(!((istype(toEat, /obj/item/reagent_containers/food/drinks) && (ismachine(src)))))
to_chat(user, "Where do you intend to put \the [toEat]? \The [src] doesn't have a mouth!")
return 0
return ..()
/mob/living/carbon/human/selfDrink(var/obj/item/reagent_containers/food/drinks/toDrink)
if(!check_has_mouth())
if(!get_species() == "Machine")
if(!ismachine(src))
to_chat(src, "Where do you intend to put \the [src]? You don't have a mouth!")
return 0
else
@@ -16,7 +16,7 @@
"eyes" = /obj/item/organ/internal/eyes/abductor //3 darksight.
)
species_traits = list(NO_BLOOD, NO_BREATHE, VIRUSIMMUNE, NOGUNS)
species_traits = list(NO_BLOOD, NO_BREATHE, VIRUSIMMUNE, NOGUNS, NO_EXAMINE)
oxy_mod = 0
@@ -11,6 +11,7 @@
path = /mob/living/carbon/human/monkey
language = null
default_language = "Chimpanzee"
species_traits = list(NO_EXAMINE)
greater_form = /datum/species/human
is_small = 1
has_fine_manipulation = 0
@@ -627,13 +627,13 @@
#undef SLIMEPERSON_ICON_UPDATE_PERIOD
#undef SLIMEPERSON_BLOOD_SCALING_FACTOR
/mob/living/carbon/human/proc/toggle_recolor(var/silent = 0)
var/datum/species/slime/S = all_species[get_species()]
if(!istype(S))
/mob/living/carbon/human/proc/toggle_recolor(silent = FALSE)
if(!isslimeperson(src))
if(!silent)
to_chat(src, "You're not a slime person!")
return
var/datum/species/slime/S = dna.species
if(src in S.recolor_list)
S.recolor_list -= src
if(!silent)
@@ -448,7 +448,7 @@ var/global/list/damage_icon_parts = list()
if(head_organ.h_style && !(head && (head.flags & BLOCKHEADHAIR) && !(isSynthetic())))
var/datum/sprite_accessory/hair/hair_style = hair_styles_full_list[head_organ.h_style]
//if(!src.get_int_organ(/obj/item/organ/internal/brain) && src.get_species() != "Machine" )//make it obvious we have NO BRAIN
//if(!src.get_int_organ(/obj/item/organ/internal/brain) && !ismachine(src))//make it obvious we have NO BRAIN
// hair_standing.Blend(debrained_s, ICON_OVERLAY)
if(hair_style && hair_style.species_allowed)
if((head_organ.dna.species.name in hair_style.species_allowed) || (head_organ.dna.species.bodyflags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics...
+1 -1
View File
@@ -337,7 +337,7 @@
if(istype(L, /mob/living/carbon/human)) //Ignore slime(wo)men
var/mob/living/carbon/human/H = L
if(H.dna.species.name == "Slime People")
if(isslimeperson(H))
continue
if(!L.canmove) // Only one slime can latch on at a time.
@@ -54,7 +54,7 @@
/mob/living/simple_animal/diona/attack_hand(mob/living/carbon/human/M)
//Let people pick the little buggers up.
if(M.a_intent == INTENT_HELP)
if(M.dna.species && M.dna.species.name == "Diona")
if(isdiona(M))
to_chat(M, "You feel your being twine with that of [src] as it merges with your biomass.")
to_chat(src, "You feel your being twine with that of [M] as you merge with its biomass.")
verbs += /mob/living/simple_animal/diona/proc/split
@@ -82,7 +82,7 @@
if(ishuman(C))
var/mob/living/carbon/human/D = C
if(D.dna.species && D.dna.species.name == "Diona")
if(isdiona(D))
choices += C
var/mob/living/M = input(src,"Who do you wish to merge with?") in null|choices
-3
View File
@@ -1080,9 +1080,6 @@ var/list/slot_equipment_priority = list( \
/mob/proc/activate_hand(selhand)
return
/mob/proc/get_species()
return ""
/mob/dead/observer/verb/respawn()
set name = "Respawn as NPC"
set category = "Ghost"
+3 -3
View File
@@ -16,9 +16,9 @@
return 0
/mob/living/carbon/human/isSynthetic()
if(get_species() == "Machine")
return 1
return 0
if(ismachine(src))
return TRUE
return FALSE
/mob/proc/get_screen_colour()
-13
View File
@@ -591,19 +591,6 @@
if(!S) return 1
return is_alien_whitelisted(src, S.name) || !config.usealienwhitelist || !(IS_WHITELISTED in S.species_traits)
/mob/new_player/get_species()
var/datum/species/chosen_species
if(client.prefs.species)
chosen_species = all_species[client.prefs.species]
if(!chosen_species)
return "Human"
if(is_species_whitelisted(chosen_species) || has_admin_rights())
return chosen_species.name
return "Human"
/mob/new_player/get_gender()
if(!client || !client.prefs) ..()
return client.prefs.gender
+2 -2
View File
@@ -153,10 +153,10 @@
process_fire(target,user,1,params)
/obj/item/gun/proc/can_trigger_gun(var/mob/living/user)
/obj/item/gun/proc/can_trigger_gun(mob/living/user)
if(!user.can_use_guns(src))
return 0
if(restricted_species && restricted_species.len && !(user.get_species() in restricted_species))
if(restricted_species && restricted_species.len && !is_type_in_list(user.dna.species, restricted_species))
to_chat(user, "<span class='danger'>[src] is incompatible with your biology!</span>")
return 0
return 1
+2 -2
View File
@@ -11,7 +11,7 @@
can_suppress = 0
var/charge_tick = 0
var/charge_delay = 15
restricted_species = list("Vox", "Vox Armalis")
restricted_species = list(/datum/species/vox)
/obj/item/gun/projectile/automatic/spikethrower/New()
..()
@@ -79,7 +79,7 @@
force = 10
ammo_type = list(/obj/item/ammo_casing/energy/sonic)
cell_type = /obj/item/stock_parts/cell/super
restricted_species = list("Vox Armalis")
restricted_species = list(/datum/species/vox/armalis)
/obj/item/gun/energy/noisecannon/update_icon()
return
+6 -6
View File
@@ -24,15 +24,15 @@
var/exp_flash = 3
var/exp_fire = 2
/obj/item/projectile/magic/death/on_hit(var/mob/living/carbon/G)
/obj/item/projectile/magic/death/on_hit(mob/living/carbon/C)
. = ..()
if(isliving(G))
if(G.get_species() == "Machine") //speshul snowfleks deserv speshul treetment
G.adjustFireLoss(6969) //remember - slimes love fire
if(isliving(C))
if(ismachine(C)) //speshul snowfleks deserv speshul treetment
C.adjustFireLoss(6969) //remember - slimes love fire
else
G.death()
C.death()
visible_message("<span class='danger'>[G] topples backwards as the death bolt impacts [G.p_them()]!</span>")
visible_message("<span class='danger'>[C] topples backwards as the death bolt impacts [C.p_them()]!</span>")
/obj/item/projectile/magic/fireball/Range()
var/turf/T1 = get_step(src,turn(dir, -45))
@@ -61,7 +61,7 @@
/datum/reagent/slimetoxin/on_mob_life(mob/living/M)
if(ishuman(M))
var/mob/living/carbon/human/human = M
if(human.dna.species.name != "Shadow")
if(!isshadowperson(human))
to_chat(M, "<span class='danger'>Your flesh rapidly mutates!</span>")
to_chat(M, "<span class='danger'>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</span>")
to_chat(M, "<span class='danger'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
@@ -217,7 +217,7 @@
if(method == TOUCH)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.get_species() == "Grey")
if(isgrey(H))
return
if(volume > 25)
@@ -246,7 +246,7 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.get_species() == "Grey")
if(isgrey(H))
return
if(volume >=10 && volume <=25)
@@ -995,7 +995,7 @@
C.adjustToxLoss(2)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.get_species() == "Kidan") //RIP
if(iskidan(H)) //RIP
H.adjustToxLoss(20)
/datum/reagent/capulettium
@@ -29,7 +29,7 @@
var/mob/living/carbon/human/H = M
if(H.get_species() != "Grey") //God this is so gross I hate it.
if(!isgrey(H)) //God this is so gross I hate it.
return
if(volume > 25)
@@ -58,7 +58,7 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.get_species() != "Grey")
if(!isgrey(H))
return
if(volume < 10)
+1 -1
View File
@@ -32,7 +32,7 @@
if(ishuman(target))
var/mob/living/carbon/human/H = target
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
if(target.get_species() == "Machine")
if(ismachine(target))
// RIP bi-centennial man
return 0
if(!affected)
@@ -279,7 +279,8 @@ This function completely restores a damaged organ to perfect condition.
for(var/obj/item/organ/external/EO in contents)
EO.rejuvenate()
owner.updatehealth()
if(owner)
owner.updatehealth()
update_icon()
if(!owner)
processing_objects |= src
+1 -1
View File
@@ -303,7 +303,7 @@
..()
/datum/surgery_step/internal/dethrall/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(target.get_species() == "Lesser Shadowling") //Empowered thralls cannot be deconverted
if(isshadowlinglesser(target)) //Empowered thralls cannot be deconverted
to_chat(target, "<span class='shadowling'><b><i>NOT LIKE THIS!</i></b></span>")
user.visible_message("<span class='warning'>[target] suddenly slams upward and knocks down [user]!</span>", \
"<span class='userdanger'>[target] suddenly bolts up and slams you with tremendous force!</span>")
+1 -1
View File
@@ -24,7 +24,7 @@
/datum/surgery_step/reshape_face/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/obj/item/organ/external/head/head = target.get_organ(target_zone)
var/species_names = target.get_species()
var/species_names = target.dna.species.name
if(head.disfigured)
head.disfigured = FALSE
user.visible_message("[user] successfully restores [target]'s appearance!", "<span class='notice'>You successfully restore [target]'s appearance.</span>")
+2 -17
View File
@@ -67,10 +67,6 @@
//How much blood this step can get on surgeon. 1 - hands, 2 - full body.
var/blood_level = 0
var/list/allowed_mob = list()
var/list/disallowed_mob = list()
/datum/surgery_step/proc/try_op(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/success = 0
if(accept_hand)
@@ -146,19 +142,8 @@
// Checks if this step applies to the user mob at all
/datum/surgery_step/proc/is_valid_target(mob/living/carbon/human/target)
if(!hasorgans(target))
return 0
if(allowed_mob)//can i just remove this and/or change it?
for(var/species in allowed_mob)
if(target.get_species() == species)
return 1
if(disallowed_mob)
for(var/species in disallowed_mob)
if(target.get_species() == species)
return 0
return 1
return FALSE
return TRUE
// checks whether this step can be applied with the given user and target
/datum/surgery_step/proc/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)