text:
/*************************************************************************/
/*  node.h                                                               */
/*************************************************************************/
/*                       This file is part of:                           */
/*                           GODOT ENGINE                                */
/*                      https://godotengine.org                          */
/*************************************************************************/
/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.                 */
/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).   */
/*                                                                       */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the       */
/* "Software"), to deal in the Software without restriction, including   */
/* without limitation the rights to use, copy, modify, merge, publish,   */
/* distribute, sublicense, and/or sell copies of the Software, and to    */
/* permit persons to whom the Software is furnished to do so, subject to */
/* the following conditions:                                             */
/*                                                                       */
/* The above copyright notice and this permission notice shall be        */
/* included in all copies or substantial portions of the Software.       */
/*                                                                       */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
/*************************************************************************/

#ifndef NODE_H
#define NODE_H

#include "core/config/project_settings.h"
#include "core/object/class_db.h"
#include "core/object/script_language.h"
#include "core/string/node_path.h"
#include "core/templates/map.h"
#include "core/variant/typed_array.h"
#include "scene/main/scene_tree.h"

class Viewport;
class SceneState;
class Node : public Object {
	GDCLASS(Node, Object);
	OBJ_CATEGORY("Nodes");

public:
	enum ProcessMode {
		PROCESS_MODE_INHERIT, // same as parent node
		PROCESS_MODE_PAUSABLE, // process only if not paused
		PROCESS_MODE_WHEN_PAUSED, // process only if paused
		PROCESS_MODE_ALWAYS, // process always
		PROCESS_MODE_DISABLED, // never process
	};

	enum DuplicateFlags {
		DUPLICATE_SIGNALS = 1,
		DUPLICATE_GROUPS = 2,
		DUPLICATE_SCRIPTS = 4,
		DUPLICATE_USE_INSTANCING = 8,
#ifdef TOOLS_ENABLED
		DUPLICATE_FROM_EDITOR = 16,
#endif
	};

	struct Comparator {
		bool operator()(const Node *p_a, const Node *p_b) const { return p_b->is_greater_than(p_a); }
	};

	struct ComparatorWithPriority {
		bool operator()(const Node *p_a, const Node *p_b) const { return p_b->data.process_priority == p_a->data.process_priority ? p_b->is_greater_than(p_a) : p_b->data.process_priority > p_a->data.process_priority; }
	};

	static int orphan_node_count;

private:
	struct GroupData {
		bool persistent = false;
		SceneTree::Group *group = nullptr;
	};

	struct NetData {
		StringName name;
		MultiplayerAPI::RPCMode mode = MultiplayerAPI::RPCMode::RPC_MODE_DISABLED;
	};

	struct Data {
		String filename;
		Ref<SceneState> instance_state;
		Ref<SceneState> inherited_state;

		Node *parent = nullptr;
		Node *owner = nullptr;
		Vector<Node *> children;
		int pos = -1;
		int depth = -1;
		int blocked = 0; // Safeguard that throws an error when attempting to modify the tree in a harmful way while being traversed.
		StringName name;
		SceneTree *tree = nullptr;
		bool inside_tree = false;
		bool ready_notified = false; // This is a small hack, so if a node is added during _ready() to the tree, it correctly gets the _ready() notification.
		bool ready_first = true;
#ifdef TOOLS_ENABLED
		NodePath import_path; // Path used when imported, used by scene editors to keep tracking.
#endif
		String editor_description;

		Viewport *viewport = nullptr;

		Map<StringName, GroupData> grouped;
		List<Node *>::Element *OW = nullptr; // Owned element.
		List<Node *> owned;

		ProcessMode process_mode = PROCESS_MODE_INHERIT;
		Node *process_owner = nullptr;

		int network_master = 1; // Server by default.
		Vector<NetData> rpc_methods;
		Vector<NetData> rpc_properties;

		// Variables used to properly sort the node when processing, ignored otherwise.
		// TODO: Should move all the stuff below to bits.
		bool physics_process = false;
		bool process = false;
		int process_priority = 0;

		bool physics_process_internal = false;
		bool process_internal = false;

		bool input = false;
		bool unhandled_input = false;
		bool unhandled_key_input = false;

		bool parent_owned = false;
		bool in_constructor = true;
		bool use_placeholder = false;

		bool display_folded = false;
		bool editable_instance = false;

		mutable NodePath *path_cache = nullptr;

	} data;

	enum NameCasing {
		NAME_CASING_PASCAL_CASE,
		NAME_CASING_CAMEL_CASE,
		NAME_CASING_SNAKE_CASE
	};

	Ref<MultiplayerAPI> multiplayer;

	void _print_tree_pretty(const String &prefix, const bool last);
	void _print_tree(const Node *p_node);

	Node *_get_child_by_name(const StringName &p_name) const;

	void _replace_connections_target(Node *p_new_target);

	void _validate_child_name(Node *p_child, bool p_force_human_readable = false);
	void _generate_serial_child_name(const Node *p_child, StringName &name) const;

	void _propagate_reverse_notification(int p_notification);
	void _propagate_deferred_notification(int p_notification, bool p_reverse);
	void _propagate_enter_tree();
	void _propagate_ready();
	void _propagate_exit_tree();
	void _propagate_after_exit_tree();
	void _propagate_validate_owner();
	void _print_stray_nodes();
	void _propagate_process_owner(Node *p_owner, int p_notification);
	Array _get_node_and_resource(const NodePath &p_path);

	void _duplicate_signals(const Node *p_original, Node *p_copy) const;
	Node *_duplicate(int p_flags, Map<const Node *, Node *> *r_duplimap = nullptr) const;

	TypedArray<Node> _get_children() const;
	Array _get_groups() const;

	Variant _rpc_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
	Variant _rpc_unreliable_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
	Variant _rpc_id_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
	Variant _rpc_unreliable_id_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);

	friend class SceneTree;

	void _set_tree(SceneTree *p_tree);
	void _propagate_pause_notification(bool p_enable);

	_FORCE_INLINE_ bool _can_process(bool p_paused) const;

protected:
	void _block() { data.blocked++; }
	void _unblock() { data.blocked--; }

	void _notification(int p_notification);

	virtual void add_child_notify(Node *p_child);
	virtual void remove_child_notify(Node *p_child);
	virtual void move_child_notify(Node *p_child);

	void _propagate_replace_owner(Node *p_owner, Node *p_by_owner);

	static void _bind_methods();
	static String _get_name_num_separator();

	friend class SceneState;

	void _add_child_nocheck(Node *p_child, const StringName &p_name);
	void _set_owner_nocheck(Node *p_owner);
	void _set_name_nocheck(const StringName &p_name);

public:
	enum {
		// you can make your own, but don't use the same numbers as other notifications in other nodes
		NOTIFICATION_ENTER_TREE = 10,
		NOTIFICATION_EXIT_TREE = 11,
		NOTIFICATION_MOVED_IN_PARENT = 12,
		NOTIFICATION_READY = 13,
		NOTIFICATION_PAUSED = 14,
		NOTIFICATION_UNPAUSED = 15,
		NOTIFICATION_PHYSICS_PROCESS = 16,
		NOTIFICATION_PROCESS = 17,
		NOTIFICATION_PARENTED = 18,
		NOTIFICATION_UNPARENTED = 19,
		NOTIFICATION_INSTANCED = 20,
		NOTIFICATION_DRAG_BEGIN = 21,
		NOTIFICATION_DRAG_END = 22,
		NOTIFICATION_PATH_CHANGED = 23,
		//NOTIFICATION_TRANSLATION_CHANGED = 24, moved below
		NOTIFICATION_INTERNAL_PROCESS = 25,
		NOTIFICATION_INTERNAL_PHYSICS_PROCESS = 26,
		NOTIFICATION_POST_ENTER_TREE = 27,
		//keep these linked to node

		NOTIFICATION_WM_MOUSE_ENTER = 1002,
		NOTIFICATION_WM_MOUSE_EXIT = 1003,
		NOTIFICATION_WM_WINDOW_FOCUS_IN = 1004,
		NOTIFICATION_WM_WINDOW_FOCUS_OUT = 1005,
		NOTIFICATION_WM_CLOSE_REQUEST = 1006,
		NOTIFICATION_WM_GO_BACK_REQUEST = 1007,
		NOTIFICATION_WM_SIZE_CHANGED = 1008,
		NOTIFICATION_WM_DPI_CHANGE = 1009,

		NOTIFICATION_OS_MEMORY_WARNING = MainLoop::NOTIFICATION_OS_MEMORY_WARNING,
		NOTIFICATION_TRANSLATION_CHANGED = MainLoop::NOTIFICATION_TRANSLATION_CHANGED,
		NOTIFICATION_WM_ABOUT = MainLoop::NOTIFICATION_WM_ABOUT,
		NOTIFICATION_CRASH = MainLoop::NOTIFICATION_CRASH,
		NOTIFICATION_OS_IME_UPDATE = MainLoop::NOTIFICATION_OS_IME_UPDATE,
		NOTIFICATION_APPLICATION_RESUMED = MainLoop::NOTIFICATION_APPLICATION_RESUMED,
		NOTIFICATION_APPLICATION_PAUSED = MainLoop::NOTIFICATION_APPLICATION_PAUSED,
		NOTIFICATION_APPLICATION_FOCUS_IN = MainLoop::NOTIFICATION_APPLICATION_FOCUS_IN,
		NOTIFICATION_APPLICATION_FOCUS_OUT = MainLoop::NOTIFICATION_APPLICATION_FOCUS_OUT,
		NOTIFICATION_TEXT_SERVER_CHANGED = MainLoop::NOTIFICATION_TEXT_SERVER_CHANGED,
	};

	/* NODE/TREE */

	StringName get_name() const;
	void set_name(const String &p_name);

	void add_child(Node *p_child, bool p_legible_unique_name = false);
	void add_sibling(Node *p_sibling, bool p_legible_unique_name = false);
	void remove_child(Node *p_child);

	int get_child_count() const;
	Node *get_child(int p_index) const;
	bool has_node(const NodePath &p_path) const;
	Node *get_node(const NodePath &p_path) const;
	Node *get_node_or_null(const NodePath &p_path) const;
	Node *find_node(const String &p_mask, bool p_recursive = true, bool p_owned = true) const;
	bool has_node_and_resource(const NodePath &p_path) const;
	Node *get_node_and_resource(const NodePath &p_path, RES &r_res, Vector<StringName> &r_leftover_subpath, bool p_last_is_property = true) const;

	Node *get_parent() const;
	Node *find_parent(const String &p_mask) const;

	_FORCE_INLINE_ SceneTree *get_tree() const {
		ERR_FAIL_COND_V(!data.tree, nullptr);
		return data.tree;
	}

	_FORCE_INLINE_ bool is_inside_tree() const { return data.inside_tree; }

	bool is_a_parent_of(const Node *p_node) const;
	bool is_greater_than(const Node *p_node) const;

	NodePath get_path() const;
	NodePath get_path_to(const Node *p_node) const;
	Node *find_common_parent_with(const Node *p_node) const;

	void add_to_group(const StringName &p_identifier, bool p_persistent = false);
	void remove_from_group(const StringName &p_identifier);
	bool is_in_group(const StringName &p_identifier) const;

	struct GroupInfo {
		StringName name;
		bool persistent = false;
	};

	void get_groups(List<GroupInfo> *p_groups) const;
	int get_persistent_group_count() const;

	void move_child(Node *p_child, int p_pos);
	void raise();

	void set_owner(Node *p_owner);
	Node *get_owner() const;
	void get_owned_by(Node *p_by, List<Node *> *p_owned);

	void remove_and_skip();
	int get_index() const;

	void print_tree();
	void print_tree_pretty();

	void set_filename(const String &p_filename);
	String get_filename() const;

	void set_editor_description(const String &p_editor_description);
	String get_editor_description() const;

	void set_editable_instance(Node *p_node, bool p_editable);
	bool is_editable_instance(const Node *p_node) const;
	Node *get_deepest_editable_node(Node *p_start_node) const;

	/* NOTIFICATIONS */

	void propagate_notification(int p_notification);

	void propagate_call(const StringName &p_method, const Array &p_args = Array(), const bool p_parent_first = false);

	/* PROCESSING */
	void set_physics_process(bool p_process);
	float get_physics_process_delta_time() const;
	bool is_physics_processing() const;

	void set_process(bool p_process);
	float get_process_delta_time() const;
	bool is_processing() const;

	void set_physics_process_internal(bool p_process_internal);
	bool is_physics_processing_internal() const;

	void set_process_internal(bool p_process_internal);
	bool is_processing_internal() const;

	void set_process_priority(int p_priority);
	int get_process_priority() const;

	void set_process_input(bool p_enable);
	bool is_processing_input() const;

	void set_process_unhandled_input(bool p_enable);
	bool is_processing_unhandled_input() const;

	void set_process_unhandled_key_input(bool p_enable);
	bool is_processing_unhandled_key_input() const;

	Node *duplicate(int p_flags = DUPLICATE_GROUPS | DUPLICATE_SIGNALS | DUPLICATE_SCRIPTS) const;
#ifdef TOOLS_ENABLED
	Node *duplicate_from_editor(Map<const Node *, Node *> &r_duplimap) const;
	Node *duplicate_from_editor(Map<const Node *, Node *> &r_duplimap, const Map<RES, RES> &p_resource_remap) const;
	void remap_node_resources(Node *p_node, const Map<RES, RES> &p_resource_remap) const;
	void remap_nested_resources(RES p_resource, const Map<RES, RES> &p_resource_remap) const;
#endif

	// used by editors, to save what has changed only
	void set_scene_instance_state(const Ref<SceneState> &p_state);
	Ref<SceneState> get_scene_instance_state() const;

	void set_scene_inherited_state(const Ref<SceneState> &p_state);
	Ref<SceneState> get_scene_inherited_state() const;

	void set_scene_instance_load_placeholder(bool p_enable);
	bool get_scene_instance_load_placeholder() const;

	static Vector<Variant> make_binds(VARIANT_ARG_LIST);

	void replace_by(Node *p_node, bool p_keep_data = false);

	void set_process_mode(ProcessMode p_mode);
	ProcessMode get_process_mode() const;
	bool can_process() const;
	bool can_process_notification(int p_what) const;

	void request_ready();

	static void print_stray_nodes();

#ifdef TOOLS_ENABLED
	String validate_child_name(Node *p_child);
#endif

	void queue_delete();

	//hacks for speed
	static void set_human_readable_collision_renaming(bool p_enabled);
	static void init_node_hrcr();

	void force_parent_owned() { data.parent_owned = true; } //hack to avoid duplicate nodes

	void set_import_path(const NodePath &p_import_path); //path used when imported, used by scene editors to keep tracking
	NodePath get_import_path() const;

	bool is_owned_by_parent() const;

	void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const override;

	void clear_internal_tree_resource_paths();

	_FORCE_INLINE_ Viewport *get_viewport() const { return data.viewport; }

	virtual TypedArray<String> get_configuration_warnings() const;
	String get_configuration_warnings_as_string() const;

	void update_configuration_warnings();

	void set_display_folded(bool p_folded);
	bool is_displayed_folded() const;
	/* NETWORK */

	void set_network_master(int p_peer_id, bool p_recursive = true);
	int get_network_master() const;
	bool is_network_master() const;

	uint16_t rpc_config(const StringName &p_method, MultiplayerAPI::RPCMode p_mode); // config a local method for RPC
	uint16_t rset_config(const StringName &p_property, MultiplayerAPI::RPCMode p_mode); // config a local property for RPC

	void rpc(const StringName &p_method, VARIANT_ARG_LIST); //rpc call, honors RPCMode
	void rpc_unreliable(const StringName &p_method, VARIANT_ARG_LIST); //rpc call, honors RPCMode
	void rpc_id(int p_peer_id, const StringName &p_method, VARIANT_ARG_LIST); //rpc call, honors RPCMode
	void rpc_unreliable_id(int p_peer_id, const StringName &p_method, VARIANT_ARG_LIST); //rpc call, honors RPCMode

	void rset(const StringName &p_property, const Variant &p_value); //remote set call, honors RPCMode
	void rset_unreliable(const StringName &p_property, const Variant &p_value); //remote set call, honors RPCMode
	void rset_id(int p_peer_id, const StringName &p_property, const Variant &p_value); //remote set call, honors RPCMode
	void rset_unreliable_id(int p_peer_id, const StringName &p_property, const Variant &p_value); //remote set call, honors RPCMode

	void rpcp(int p_peer_id, bool p_unreliable, const StringName &p_method, const Variant **p_arg, int p_argcount);
	void rsetp(int p_peer_id, bool p_unreliable, const StringName &p_property, const Variant &p_value);

	Ref<MultiplayerAPI> get_multiplayer() const;
	Ref<MultiplayerAPI> get_custom_multiplayer() const;
	void set_custom_multiplayer(Ref<MultiplayerAPI> p_multiplayer);

	/// Returns the rpc method ID, otherwise UINT32_MAX
	uint16_t get_node_rpc_method_id(const StringName &p_method) const;
	StringName get_node_rpc_method(const uint16_t p_rpc_method_id) const;
	MultiplayerAPI::RPCMode get_node_rpc_mode_by_id(const uint16_t p_rpc_method_id) const;
	MultiplayerAPI::RPCMode get_node_rpc_mode(const StringName &p_method) const;

	/// Returns the rpc property ID, otherwise UINT32_MAX
	uint16_t get_node_rset_property_id(const StringName &p_property) const;
	StringName get_node_rset_property(const uint16_t p_rset_property_id) const;
	MultiplayerAPI::RPCMode get_node_rset_mode_by_id(const uint16_t p_rpc_method_id) const;
	MultiplayerAPI::RPCMode get_node_rset_mode(const StringName &p_property) const;

	/// Can be used to check if the rpc methods and the rset properties are the
	/// same across the peers.
	String get_rpc_md5() const;

	Node();
	~Node();
};

VARIANT_ENUM_CAST(Node::DuplicateFlags);

typedef Set<Node *, Node::Comparator> NodeSet;

#endif

redpajama_set_name: RedPajamaGithub


text:
Posts tagged "Fred Armisen"
BFI London Film Festival: Phantom Boy
Events, Features, Film, Review | by Loose Lips — October 15, 2016
Tags: 60th BFI London Film Festival, 60th London Film Festival, Alain Gagnol, BFI LFF, BFI London Film Festival, Fred Armisen, Jared Padalecki, Jean-Loup Felicioli, LFF, London Film Festival, Phantom Boy, Vincent D'Onofrio
Phantom Boy Directed by Jean-Loup Felicioli and Alain Gagnol Starring Jared Padalecki, Vincent D'Onofrio and Fred Armisen LFF Screening October 15th, 2016 by Joanna Orland With a simplistic animation style, Jean-Loup Felicioli and Alain Gagnol fail to bring depth and excitement to their second feature film collaboration Phantom Boy. A follow up to their 2010 […]
23rd Raindance Film Festival
Events, Features, Film, Review | by Loose Lips — October 4, 2015
Tags: 23rd Raindance Film Festival, Amy Berg, An Open Secret, And It Was Good, Chadd Harbold, Charlie Tyrell, Charlyne Yi, Fred Armisen, George and the Vacuum, Graham Chychele Waterston, I Thought I Told You To Shut Up!!, Raindance, Raindance Film Festival, RDFF, Sam Waterston
by Joanna Orland The 2015 Raindance Film Festival took place September 23rd to October 4th in central London. Screening over 100 feature films as well as more than 150 shorts, the festival was truly a success in its 23rd year of showcasing emerging filmmakers. The festival's ethos is to uncover the latest filmmaking talent, aiming […]
Addicted to Fresno
Features, Film, Review | by Loose Lips — October 2, 2015
Tags: Addicted to Fresno, Allison Tolman, Aubrey Plaza, Clea Duvall, Fred Armisen, Jamie Babbit, Jessica St. Clair, Judy Greer, Kumail Nanjiani, Malcolm Barrett, Michael Hitchcock, Molly Shannon, Natasha Lyonne, Ron Livingston
Directed by Jamie Babbit Starring Judy Greer, Natasha Lyonne, Aubrey Plaza, Fred Armisen, Jessica St. Clair, Molly Shannon, Michael Hitchcock, Ron Livingston, Malcolm Barrett, Allison Tolman, Kumail Nanjiani and Clea DuVall In UK Cinemas October 9th, 2015 by Joanna Orland Judy Greer and Natasha Lyonne play sisters who find themselves in a bit of a bind after […]
Chadd Harbold
Film, Interviews | by Loose Lips — September 27, 2015
Tags: 23rd Raindance Film Festival, Chadd Harbold, Charlyne Yi, Fred Armisen, George and the Vacuum, Raindance, Raindance Film Festival, Sophia Takal
by Joanna Orland Director Chadd Harbold's latest short film George and the Vacuum is a sweet and sentimental story of letting love go. Written by Charlyne Yi and starring Fred Armisen and Sophia Takal, the film makes its London debut at this year's Raindance Film Festival. Chadd was kind enough to answer a few of […]
Raindance Film Festival: George and the Vacuum
Directed by Chadd Harbold Written by Charlyne Yi Starring Fred Armisen and Sophia Takal by Joanna Orland To tell an engaging story in five and a half minutes is no easy feat, but director Chadd Harbold has pulled it off with George and the Vacuum, a sweet and sentimental story of letting love go. The […]

redpajama_set_name: RedPajamaCommonCrawl


A set of telephone headphones, typically with a microphone attached, used especially in telephony and radio communication.The telephone Headsets can deliver highly effective solutions to organizations, as they bring number of benefits that helps to improve the productivity within your office or workplace. The productivity in the real terms has more value as far the business is concerned: For example, the employees can concentrate more on the task while keeping your hands free and the wireless option means the users can move around on the calls with pbx headsets.
Advantage of headsets:- Improved ergonomic comfort and safety, reducing shoulder and neck strain, for mobile workers who spend a good part of their time on the phone. Noise reduction so you don't bombard the person you call with the noise around you. Automatic volume gain, so you can hear the party calling, no matter how loud it is around you. Much better acoustic quality, especially if you're attempting a VoIP call. Use a headset rather than the ropey built-in speakers and microphone of your laptop. A good degree of insulation from the hustle and bustle of casual workplaces, effectively creating your personal acoustic environment, particularly through listening to music.


A woman tries to set out on The Hero's Journey only to find that Joseph Campbell didn't believe that women take The Hero's Journey. She must instead embark on The Lady Hero's Journey.
The Lady lives in a Crazy World. Why would she even want to go on The Hero's Journey in the first place? She already has a lot to deal with at home. Slaying the Great Dragon of the North does not really seem like her thing. She's more a Run a Homestead, Raise Her Younger Siblings, and Care for Her Ailing Father kind of Lady. There is already so much she needs to tackle before she has the luxury of answering The Call to Adventure.
The Lady's Call to Adventure is not really the one she wanted. Can she even manage to slay the dragon ravaging the countryside? She is pretty Crazy. She knows that if she doesn't choose to slay this dragon, then they are going to give This Call to some Hero who is only twenty-two, went to a very fancy dragon-slaying school, and whose dad was a famous dragon slayer.
She's sorry for complaining about her Adventure in the first place. She knows that a lot of Ladies not only deserve The Call, but would love to go on an Adventure. In fact, has Susan been called to slay the dragon? She'd be great at dragon-slaying.
The Lady is very thankful for her Adventure. She's very lucky. She can't wait to slay this dragon. Thank you, thank you so much!
The Lady is finding it challenging to be a woman with an Adventure, so she seeks out a Mentor. She finds a wizard who knows quite a bit about dragon-slaying, but he insists that he has his own dragons to slay. He can't help her with her Adventure. He's pretty surprised she even has The Call to Adventure and suspects it might be some type of Diversity Thing.
She meets other Ladies with The Call to Adventure. Some try to help her where they can, but some are threatened by her Adventure. Her Adventure might diminish their own Adventures. Are there even enough dragons for all the Ladies to slay?
The Lady has made an Ally from among The Heroes. He is very nice and helpful, but he still gets a lot wrong, so she's doing her best to educate him and be patient. Also, her Ally will not shut up about his ex and he does not seem to understand the basic time management of an Adventure. The Lady Bears this Emotional Labor, while still trying to figure out how she is going to put a lance through a magical creature that spews fire and flies.
This is actually really hard, and The Lady just needs to cry right now, OK?
The Lady finally makes it to The Inmost Cave, but notices there's several Inmost Caves. The one Inmost Cave should be enough for her, but the others are all equally important. There's two different dragons in two separate Caves. They are right next to each other, so she could probably find a way to manage both dragons. Plus, the dragons have been ravaging a nearby town and there are a lot of orphaned children running about. Someone should do something about all these orphans!
She must Multitask while she defeats her dragon and completes her Ordeal. She feels great about the choices she made, the dragons she managed to slay, and the select orphans she saved. Seriously, she's fine, everything is fine. It's good. She's sorry, she meant to say, "it's good." Very good. Great, even.
She will Return Home at some point but first, she is going to have a little "me" time. She did slay two dragons after all.
She Returns Home and everyone is pretty pissed that she left. Who does she think she is? A Hero?