Merge remote-tracking branch 'upstream/dev-freeze' into dev

Conflicts:
	code/game/antagonist/outsider/ert.dm
This commit is contained in:
PsiOmegaDelta
2015-11-06 17:50:34 +01:00
11 changed files with 45 additions and 42 deletions
+6
View File
@@ -212,4 +212,10 @@
else
return ..()
/proc/transfer_languages(var/mob/source, var/mob/target, var/except_flags)
for(var/datum/language/L in source.languages)
if(L.flags & except_flags)
continue
target.add_language(L.name)
#undef SCRAMBLE_CACHE_LEN
@@ -8,34 +8,34 @@
equipment_tint_total += C.tint;
/mob/living/carbon/human/can_eat(var/food, var/feedback = 1)
var/status = can_eat_status()
if(status == HUMAN_EATING_NO_ISSUE)
var/list/status = can_eat_status()
if(status[0] == HUMAN_EATING_NO_ISSUE)
return 1
if(feedback)
if(status == HUMAN_EATING_NO_MOUTH)
if(status[0] == HUMAN_EATING_NO_MOUTH)
src << "Where do you intend to put \the [food]? You don't have a mouth!"
else if(status == HUMAN_EATING_BLOCKED_MOUTH)
src << "<span class='warning'>\The [blocked] is in the way!</span>"
else if(status[0] == HUMAN_EATING_BLOCKED_MOUTH)
src << "<span class='warning'>\The [status[1]] is in the way!</span>"
return 0
/mob/living/carbon/human/can_force_feed(var/feeder, var/food, var/feedback = 1)
var/status = can_eat_status()
if(status == HUMAN_EATING_NO_ISSUE)
var/list/status = can_eat_status()
if(status[0] == HUMAN_EATING_NO_ISSUE)
return 1
if(feedback)
if(status == HUMAN_EATING_NO_MOUTH)
if(status[0] == HUMAN_EATING_NO_MOUTH)
feeder << "Where do you intend to put \the [food]? \The [src] doesn't have a mouth!"
else if(status == HUMAN_EATING_BLOCKED_MOUTH)
feeder << "<span class='warning'>\The [blocked] is in the way!</span>"
else if(status[0] == HUMAN_EATING_BLOCKED_MOUTH)
feeder << "<span class='warning'>\The [status[1]] is in the way!</span>"
return 0
/mob/living/carbon/human/proc/can_eat_status()
if(!check_has_mouth())
return HUMAN_EATING_NO_MOUTH
return list(HUMAN_EATING_NO_MOUTH)
var/obj/item/blocked = check_mouth_coverage()
if(blocked)
return HUMAN_EATING_BLOCKED_MOUTH
return HUMAN_EATING_NO_ISSUE
return list(HUMAN_EATING_BLOCKED_MOUTH, blocked)
return list(HUMAN_EATING_NO_ISSUE)
#undef HUMAN_EATING_NO_ISSUE
#undef HUMAN_EATING_NO_MOUTH
@@ -224,11 +224,14 @@
set name = "Split"
set desc = "Split your humanoid form into its constituent nymphs."
set category = "Abilities"
diona_split_into_nymphs(5) // Separate proc to void argments being supplied when used as a verb
/mob/living/carbon/human/proc/diona_split_into_nymphs(var/number_of_resulting_nymphs)
var/turf/T = get_turf(src)
var/mob/living/carbon/alien/diona/S = new(T)
S.set_dir(dir)
transfer_languages(src, S)
if(mind)
mind.transfer_to(S)
@@ -239,20 +242,18 @@
for(var/mob/living/carbon/alien/diona/D in src)
nymphs++
D.loc = T
D.forceMove(T)
transfer_languages(src, D, WHITELISTED|RESTRICTED)
D.set_dir(pick(NORTH, SOUTH, EAST, WEST))
if(nymphs < 5)
for(var/i in nymphs to 4)
if(nymphs < number_of_resulting_nymphs)
for(var/i in nymphs to (number_of_resulting_nymphs - 1))
var/mob/M = new /mob/living/carbon/alien/diona(T)
transfer_languages(src, M, WHITELISTED|RESTRICTED)
M.set_dir(pick(NORTH, SOUTH, EAST, WEST))
for(var/obj/item/W in src)
drop_from_inventory(W)
visible_message("<span class='warning'>\The [src] quivers slightly, then splits apart with a wet slithering noise.</span>")
qdel(src)
@@ -242,19 +242,7 @@
return ..()
/datum/species/diona/handle_death(var/mob/living/carbon/human/H)
var/mob/living/carbon/alien/diona/S = new(get_turf(H))
if(H.mind)
H.mind.transfer_to(S)
for(var/mob/living/carbon/alien/diona/D in H.contents)
if(D.client)
D.loc = H.loc
else
qdel(D)
H.visible_message("<span class='danger'>[H] splits apart with a wet slithering noise!</span>")
H.diona_split_into_nymphs(0)
/datum/species/machine
name = "Machine"