From 06ee04e839a29c26df65682554c96263550efc1e Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 5 Mar 2015 15:53:15 -0500 Subject: [PATCH] Superhero update --- code/game/machinery/wishgranter.dm | 74 +++++++++++++++++----------- code/modules/events/event_manager.dm | 2 +- 2 files changed, 45 insertions(+), 31 deletions(-) diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm index 22e89cfe000..1f14f105557 100644 --- a/code/game/machinery/wishgranter.dm +++ b/code/game/machinery/wishgranter.dm @@ -7,46 +7,33 @@ use_power = 0 anchored = 1 density = 1 - - var/charges = 1 - var/insisting = 0 - + var/datum/mind/target + var/list/types = list("Owlman", "The Griffin") /obj/machinery/wish_granter/attack_hand(var/mob/user as mob) usr.set_machine(src) - if(charges <= 0) - user << "The Wish Granter lies silent." - return - - else if(!istype(user, /mob/living/carbon/human)) + if(!istype(user, /mob/living/carbon/human)) user << "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's." return else if(is_special_character(user)) user << "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away." - else if (!insisting) - user << "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?" - insisting++ - else user << "The power of the Wish Granter have turned you into the superhero the station deserves. You are a masked vigilante, and answer to no man. Will you use your newfound strength to protect the innocent, or will you hunt the guilty?" - ticker.mode.traitors += user.mind - user.mind.special_role = "The Hero The Station Deserves" - + var/wish + if(types.len == 1) + wish = pick(types) + else + wish = input("You want to become...","Wish") as null|anything in types var/mob/living/carbon/human/M = user - - var/wish = input("You want to...","Wish") as anything in list("Protect the innocent","Hunt the guilty") switch(wish) - if("Protect the innocent") + if("Owlman") + types -= "Owlman" M.fully_replace_character_name(M.real_name, "Owlman") - var/datum/objective/protect/protect = new - protect.owner = user.mind - user.mind.objectives += protect - for(var/obj/item/W in M) M.unEquip(W) @@ -64,12 +51,18 @@ M.regenerate_icons() - if("Hunt the guilty") - M.fully_replace_character_name(M.real_name, "The Griffin") + var/datum/objective/protect/protect = new + protect.owner = user.mind + if(target) + protect.target = target + else + protect.find_target() + target = protect.target + user.mind.objectives += protect - var/datum/objective/assassinate/assasinate = new - assasinate.owner = user.mind - user.mind.objectives += assasinate + if("The Griffin") + types -= "The Griffin" + M.fully_replace_character_name(M.real_name, "The Griffin") for(var/obj/item/W in M) M.unEquip(W) @@ -88,14 +81,25 @@ M.regenerate_icons() + var/datum/objective/assassinate/assasinate = new + assasinate.owner = user.mind + if(target) + assasinate.target = target + else + assasinate.find_target() + target = assasinate.target + user.mind.objectives += assasinate + + ticker.mode.traitors += user.mind + user.mind.special_role = wish + var/obj_count = 1 for(var/datum/objective/OBJ in user.mind.objectives) user << "Objective #[obj_count]: [OBJ.explanation_text]" obj_count++ - charges-- - insisting = 0 + //Time to hand out the powers, since they are currently generic if (!(HULK in user.mutations)) user.dna.SetSEState(HULKBLOCK,1) @@ -122,4 +126,14 @@ user.update_mutations() + //Remove the wishgranter or teleport it randomly on the station + if(!types.len) + user << "The wishgranter slowly fades into mist..." + qdel(src) + return + else + var/impact_area = findEventArea() + var/turf/T = pick(get_area_turfs(impact_area)) + if(T) + src.loc = T return \ No newline at end of file diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 08614d68c9c..cdb1dc9a4b4 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -299,7 +299,7 @@ feedback_add_details("admin_verb","EMP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return -/datum/event/proc/findEventArea() //Here's a nice proc to use to find an area for your event to land in! +/proc/findEventArea() //Here's a nice proc to use to find an area for your event to land in! var/area/candidate = null var/list/safe_areas = list(