From a440b228c9d75e1604845ab49cb86f73324e2b4c Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Tue, 21 Apr 2015 01:40:38 +0100 Subject: [PATCH] Diona 'split' command, plus bugfix --- .../mob/living/carbon/human/human_damage.dm | 2 +- .../mob/living/carbon/human/human_powers.dm | 39 ++++++++++++++++++- .../carbon/human/species/station/station.dm | 4 ++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index e96e526077f..04ca8922257 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -319,7 +319,7 @@ In most cases it makes more sense to use apply_damage() instead! And make sure t This function restores the subjects blood to max. */ /mob/living/carbon/human/proc/restore_blood() - if(!species.flags & NO_BLOOD) + if(!(species.flags & NO_BLOOD)) var/blood_volume = vessel.get_reagent_amount("blood") vessel.add_reagent("blood",560.0-blood_volume) diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 10988afb921..0357d4ee09b 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -218,4 +218,41 @@ log_say("PsychicWhisper: [key_name(src)]->[M.key] : [msg]") M << "\green You hear a strange, alien voice in your head... \italic [msg]" src << "\green You said: \"[msg]\" to [M]" - return \ No newline at end of file + return + +/mob/living/carbon/human/proc/diona_split_nymph() + set name = "Split" + set desc = "Split your humanoid form into its constituent nymphs." + set category = "Abilities" + + var/turf/T = get_turf(src) + + var/mob/living/carbon/alien/diona/S = new(T) + S.set_dir(dir) + if(mind) + mind.transfer_to(S) + + message_admins("\The [src] has split into nymphs; player now controls [key_name_admin(S)]") + log_admin("\The [src] has split into nymphs; player now controls [key_name(S)]") + + var/nymphs = 1 + + for(var/mob/living/carbon/alien/diona/D in src) + nymphs++ + D.loc = T + D.set_dir(pick(NORTH, SOUTH, EAST, WEST)) + + if(nymphs < 5) + for(var/i in nymphs to 4) + var/mob/M = new /mob/living/carbon/alien/diona(T) + M.set_dir(pick(NORTH, SOUTH, EAST, WEST)) + + + for(var/obj/item/W in src) + drop_from_inventory(W) + + visible_message("\The [src] quivers slightly, then splits apart with a wet slithering noise.") + + del(src) + + diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 62907752aaa..b2665632f66 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -168,6 +168,10 @@ "r_foot" = list("path" = /obj/item/organ/external/diona/foot/right) ) + inherent_verbs = list( + /mob/living/carbon/human/proc/diona_split_nymph + ) + warning_low_pressure = 50 hazard_low_pressure = -1