diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index bee8a188078..44c5e53b31a 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -319,7 +319,6 @@ Recharging stations are available in robotics, the dormitory bathrooms, and the /obj/screen/alert/nymph name = "Gestalt merge" desc = "You have merged with a diona gestalt and are now part of it's biomass. You can still wiggle yourself free though." - icon_state = "nymph" /obj/screen/alert/nymph/Click() if(!usr || !usr.client) diff --git a/code/_onclick/hud/diona_nymph.dm b/code/_onclick/hud/diona_nymph.dm deleted file mode 100644 index fac671bfade..00000000000 --- a/code/_onclick/hud/diona_nymph.dm +++ /dev/null @@ -1,78 +0,0 @@ -/* Diony Nymph HUD */ -/mob/living/simple_animal/diona/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/diona(src) - -/datum/hud/diona/New() - ..() - static_inventory += diona_button(new /obj/screen/diona/blood()) - static_inventory += diona_button(new /obj/screen/diona/merge()) - static_inventory += diona_button(new /obj/screen/diona/evolve()) - toggleable_inventory += new /obj/screen/diona/intent() - -datum/hud/diona/proc/diona_button(var/obj/screen/diona/D) - var/obj/screen/diona/button/B = new /obj/screen/diona/button - B.overlays += D - B.master = D - B.screen_loc = D.screen_loc - return B - -/obj/screen/diona/button - icon = 'icons/mob/actions.dmi' - icon_state = "bg_default" - -/obj/screen/diona/button/Click(location, control, params) - return usr.client.Click(master, location, control, params) - -/obj/screen/diona/intent - name = "Intent" - icon_state = "help" - icon = 'icons/mob/screen_simplemob.dmi' - screen_loc = ui_acti - -/obj/screen/diona/intent/Click() - if(isnymph(usr)) - var/mob/living/simple_animal/diona/N = usr - if(N.a_intent == INTENT_HELP) - N.a_intent = INTENT_HARM - else - N.a_intent = INTENT_HELP - icon_state = N.a_intent - -/obj/screen/diona/blood - icon = 'icons/obj/bloodpack.dmi' //borrowing an icon - icon_state = "full" - name = "Steal blood" - desc = "Take a blood sample from a suitable donor." - screen_loc = ui_rhand - -/obj/screen/diona/blood/Click() - if(isnymph(usr)) - var/mob/living/simple_animal/diona/N = usr - N.steal_blood() - -/obj/screen/diona/merge - icon = 'icons/mob/human_races/r_diona.dmi' //borrowing an icon - icon_state = "preview" - name = "Merge with gestalt" - desc = "Merge with another diona." - screen_loc = ui_lhand - -/obj/screen/diona/merge/Click() - if(isnymph(usr)) - var/mob/living/simple_animal/diona/N = usr - N.merge() - -/obj/screen/diona/evolve - icon = 'icons/obj/cloning.dmi' //borrowing an icon - icon_state = "pod_1" - name = "Evolve" - desc = "Grow to a more complex form." - screen_loc = ui_storage1 - -/obj/screen/diona/evolve/Click() - if(isnymph(usr)) - var/mob/living/simple_animal/diona/N = usr - N.evolve() - - diff --git a/code/modules/mob/living/simple_animal/friendly/diona.dm b/code/modules/mob/living/simple_animal/friendly/diona.dm index 6e0d8f2f1c7..0ca0d287ede 100644 --- a/code/modules/mob/living/simple_animal/friendly/diona.dm +++ b/code/modules/mob/living/simple_animal/friendly/diona.dm @@ -32,30 +32,62 @@ melee_damage_upper = 8 attacktext = "bites" attack_sound = 'sound/weapons/bite.ogg' - var/chirp_sound = 'sound/misc/nymphchirp.ogg' + var/chirp_sound = 'sound/misc/nymphchirp.ogg' //used in emote speed = 0 stop_automated_movement = 0 turns_per_move = 4 var/list/donors = list() - var/ready_evolve = 0 holder_type = /obj/item/holder/diona - can_collar = 1 + can_collar = TRUE a_intent = INTENT_HELP - var/gestalt_alert = "merged with gestalt" - var/evolve_donors = 5 - var/awareness_donors = 3 - var/nutrition_need = 500 + var/gestalt_alert = "merged with gestalt" //used in adding and clearing alert + var/evolve_donors = 5 //amount of blood donors needed before evolving + var/awareness_donors = 3 //amount of blood donors needed for understand language + var/nutrition_need = 500 //amount of nutrition needed before evolving + + var/datum/action/innate/diona/merge/merge_action = new() + var/datum/action/innate/diona/evolve/evolve_action = new() + var/datum/action/innate/diona/steal_blood/steal_blood_action = new() + +/datum/action/innate/diona/merge + name = "Merge with gestalt" + icon_icon = 'icons/mob/human_races/r_diona.dmi' + button_icon_state = "preview" + +/datum/action/innate/diona/merge/Activate() + var/mob/living/simple_animal/diona/user = owner + user.merge() + +/datum/action/innate/diona/evolve + name = "Evolve" + icon_icon = 'icons/obj/cloning.dmi' + button_icon_state = "pod_1" + +/datum/action/innate/diona/evolve/Activate() + var/mob/living/simple_animal/diona/user = owner + user.evolve() + +/datum/action/innate/diona/steal_blood + name = "Steal blood" + icon_icon = 'icons/obj/bloodpack.dmi' + button_icon_state = "full" + +/datum/action/innate/diona/steal_blood/Activate() + var/mob/living/simple_animal/diona/user = owner + user.steal_blood() /mob/living/simple_animal/diona/New() ..() if(name == initial(name)) //To stop Pun-Pun becoming generic. name = "[name] ([rand(1, 1000)])" real_name = name - add_language("Rootspeak") + merge_action.Grant(src) + evolve_action.Grant(src) + steal_blood_action.Grant(src) /mob/living/simple_animal/diona/UnarmedAttack(var/atom/A) if(isdiona(A) && (src in A.contents)) //can't attack your gestalt @@ -78,7 +110,7 @@ else get_scooped(M) -/mob/living/simple_animal/diona/proc/merge() //called by the hud (/obj/screen/diona/merge) +/mob/living/simple_animal/diona/proc/merge() if(stat != CONSCIOUS) return FALSE @@ -107,7 +139,7 @@ else return FALSE -/mob/living/simple_animal/diona/proc/split() //called by the hud (obj/screen/alert/nymph) +/mob/living/simple_animal/diona/proc/split() if((stat != CONSCIOUS) || !isdiona(loc)) return FALSE var/mob/living/carbon/human/D = loc @@ -128,7 +160,7 @@ clear_alert(gestalt_alert) return TRUE -/mob/living/simple_animal/diona/proc/evolve() //called by the hud (/obj/screen/diona/evolve) +/mob/living/simple_animal/diona/proc/evolve() if(stat != CONSCIOUS) return FALSE @@ -168,7 +200,7 @@ qdel(src) return TRUE -/mob/living/simple_animal/diona/proc/steal_blood() //called by the hud (/obj/screen/diona/blood) +/mob/living/simple_animal/diona/proc/steal_blood() if(stat != CONSCIOUS) return FALSE @@ -208,7 +240,6 @@ return FALSE if(donors.len == evolve_donors) - ready_evolve = 1 to_chat(src, "You feel ready to move on to your next stage of growth.") else if(donors.len == awareness_donors) universal_understand = 1 diff --git a/paradise.dme b/paradise.dme index 3fd491a299d..d35fedc2589 100644 --- a/paradise.dme +++ b/paradise.dme @@ -128,7 +128,6 @@ #include "code\_onclick\hud\alien_larva.dm" #include "code\_onclick\hud\bot.dm" #include "code\_onclick\hud\constructs.dm" -#include "code\_onclick\hud\diona_nymph.dm" #include "code\_onclick\hud\fullscreen.dm" #include "code\_onclick\hud\guardian.dm" #include "code\_onclick\hud\hud.dm"