mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-22 03:27:46 +01:00
Merge remote-tracking branch 'upstream/dev-freeze' into dev
Conflicts: code/game/antagonist/outsider/ert.dm
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user