Contact Struct

From OuroDev
typedef struct ContactDef
{
	const char* filename;
	const char* displayname;		// var unless where attached to an PNPC, can be var for call only contacts/tips
	const char* profession;
	const char* description;
	Gender gender;
	ContactSocialStatus status;
	ContactAlliance alliance;
	ContactUniverse universe;
	TipType tipType;			//is this a what type of tip contact is this?  See TipType enumeration for more details.
	const char* tipTypeStr;			//	string that will get translated
	const char* hello;			// generic greeting
	const char* SOLhello;			// Say Out Loud: generic greeting
	const char* dontknow;			// displayed if contact has not been introduced by the player
	const char* SOLdontknow;		// Say Out Loud: displayed if contact has not been introduced by the player
	const char* firstVisit;			// displayed instead of hello if this is the first time the player has visited this contact
	const char* SOLfirstVisit;		// Say Out Loud: displayed instead of hello if this is the first time the player has visited this contact
	const char* noTasksRemaining;		// displayed instead of hello if contact doesn't have any tasks remaining for player
	const char* SOLnoTasksRemaining;	// Say Out Loud: displayed instead of hello if contact doesn't have any tasks remaining for player
	const char* playerBusy;			// displayed instead of hello if player is full up on tasks
	const char* SOLplayerBusy;		// Say Out Loud: displayed instead of hello if player is full up on tasks
	const char* comeBackLater;		// displayed instead of hello if player isn't right level for tasks
	const char* SOLcomeBackLater;		// Say Out Loud: displayed instead of hello if player isn't right level for tasks
	const char* zeroRelPoints;		// Displayed if you have 0 relationship points with contact (for tutorial contacts)
	const char* SOLzeroRelPoints;		// Say Out Loud: Displayed if you have 0 relationship points with contact (for tutorial contacts)
	const char* neverIssuedTask;		// Displayed if you have never taken a task (for tutorial contacts)
	const char* SOLneverIssuedTask;		// Say Out Loud: Displayed if you have never taken a task (for tutorial contacts)
	const char* relToFriend;		// Displayed once when the contact relationship changes to friend.
	const char* relToConfidant;		// Displayed once when the contact relationship changes to confidant.
	const char* introduction;		// allows {Accept} and {ContactName}, used to intro this contact
	const char* introductionAccept;		// Response text for this contact's introduction.
	const char* introductionSendoff;	// Contact's reply after player chose to be introduced.d
	const char* SOLintroductionSendoff;	// Say Out Loud: Contact's reply after player chose to be introduced.d
	const char* introduceOneContact;	// allows {ContactName}, Displayed when I am going to introduce a single contact
	const char* introduceTwoContacts;	// Displayed when I am going to introduce two contacts (give choice)
	const char* failsafeString;		// Displayed when the character is too high a level to talk to me
	const char* SOLfailsafeString;		// Say Out Loud: Displayed when the character is too high a level to talk to me
	const char* locationName;		// The description of a contact's location
	const char* wrongAlliance;		// Displayed if the player is not of the same alliance as the Contact
	const char* wrongUniverse;		// Displayed if the player is not from the same universe as the Contact
	const char* SOLwrongAlliance;		// Say Out Loud: Displayed if the player is not of the same alliance as the Contact
	const char* SOLwrongUniverse;		// Say Out Loud: Displayed if the player is not from the same universe as the Contact

	//UI overrides
	const char *callTextOverride;		// Text that will display in the "investigate" button of the contact UI
	const char *askAboutTextOverride;	// Text that will display in the "Ask about available contacts" button
	const char *leaveTextOverride;		// Text that will display in the "leave" button of the contact UI
	const char *imageOverride;		// "none" or a model name that will be used for the contact image.
	const char *dismissOptionOverride;	// Text that will display in the "Dismiss this contact" option on the front page of the contact dialog.
	const char *dismissConfirmTextOverride;	// Text that will display in the top half of the dismissal confirmation page of the contact dialog.
	const char *dismissConfirmYesOverride;	// Text that will display in the "Yes, really dismiss this contact" option on the dismissal confirmation page.
	const char *dismissConfirmNoOverride;	// Text that will display in the "No thanks" option in the dismissal confirmation page.
	const char *dismissSuccessOverride;	// Text that will display in the top half of the dismissal success page of the contact dialog.
	const char *dismissUnableOverride;	// Text that will display in the top half of the contact dialog if an error occurs during the dismissal process.
	const char *taskDeclineOverride;	// Text that will display in the "Talk about something else" option in the task introduction page of the contact dialog.
	const char *noCellOverride;		// Text that will display when the player attempts to interact with the contact via cell phone when not allowed.

	F32 minutesExpire;			//the number of minutes that a contact is valid before it auto-revokes

	// Subcontacts for MetaContacts
	const char** subContacts;
	const char** subContactsDisplay;

	// Only exists if a script has given a map token to flag this contact as usable
	const char* mapTokenRequired;			// Players cannot have this contact unless the maps have this token

	// Requires Statement Requirements
	const char** interactionRequires;		// You must meet the requires statement before the contact will talk to you
	int interactionRequiresTipIndex;		// If not zero, then this is a tip and it shares the same interactionRequires statement with all other contact defs that have the same index
	const char* interactionRequiresFailString;	// Displayed to let player know this contact doesn't meet the requires statement


	// Badge Requirements
	const char* requiredBadge;			// Badge required before the contact will talk to you
	const char* badgeNeededString;			// Displayed to let player know this contact requires a badge
	const char* SOLbadgeNeededString;		// Say Out Loud: Displayed to let player know this contact requires a badge
	const char* badgeFirstTick;			// 0-25% complete with badge, use this text
	const char* badgeSecondTick;			// 25-50% complete with badge, use this text
	const char* badgeThirdTick;			// 50-75% complete with badge, use this text
	const char* badgeFourthTick;			// 75-100% complete with badge, use this text

	const char* dontHaveToken;			// (task force) player doesn't have required token to start TF
	const char* SOLdontHaveToken;			// (task force) Say Out Loud: player doesn't have required token to start TF
	const char* levelTooLow;			// (task force) player level is too low
	const char* levelTooHigh;			// (task force) player level is too high
	const char* needLargeTeam;			// (task force) player needs to be on team of >= 5
	const char* needTeamLeader;			// (task force) player needs to be team leader 
	const char* needTeamOnMap;			// (task force) player's team needs to be on this map
	const char* badTeamLevel;			// (task force) player's team doesn't meet the level requirements
	const char* taskForceInvite;			// (task force) prompt the player to create a task force
	const char** taskForceRewardRequires;		// (task force) requires expression for final reward of this task force
	const char* taskForceRewardRequiresText;	// (task force) message given to players when there are players who fail the requires expression for final reward of this task force
	const char* taskForceName;			// (task force, var) the name given to the task force created
	int   taskForceLevelAdjust;			// (task force) level to adjust the players task force by (positive or negative)
	const char* requiredToken;			// (task force) this token is required to start TF

	const StoryTask** mytasks;			// tasks actually loaded with this contact
	const StoryTaskInclude** taskIncludes; 		// references to task sets - on load, references copied to tasks array
	const StoryTask** tasks;			// references only -> mytasks + taskIncludes
	const StoryArcRef** storyarcrefs;		// story arc files that belong to this contact
	const DialogDef **dialogDefs;

	int stature;			// Which level is this contact on in the contact tree?
	const char* statureSet;		// Never introduce players to another contact of the same stature + set.
	const char* nextStatureSet;	// Always introduce players to another contact of higher stature in this set.
	const char* nextStatureSet2;	// If present, contact will attempt to give players choice between nextStatureSet and nextStatureSet2
	ContactHandle brokerFriend; 	// Used for brokers, stores the handle of the other broker in the zone
	int contactsAtOnce;		// How many contacts will this contact attempt to introduce at once?
	int friendCP;			// When does a player become a friend of this contact?
	int confidantCP;		// When does a player become a confidant of this contact?
	int completeCP;			// When should a player be introduce to a contact of a higher stature?
	int heistCP;			// When should I start offering heists to a player?
	int completePlayerLevel;
	int failsafePlayerLevel;	// When should the contact refuse to give a player any more tasks?
	int minPlayerLevel;		// What character level range this contact is designed for
	int maxPlayerLevel;		//		(limits villain levels on missions)
	int minTaskForceSize;		// changes BEGIN_TASKFORCE_SIZE (mainly for debugging)
	ContactStore store;		// What kind of specializations does this contact sell?
	MultiStore stores;		// What kind of specializations does this contact sell?

	int accessibleContactValue;

	const char* old_text;			// DEPRECATED

	// flags - all deprecated, should be using new <flags> field
	bool deprecated;			// if non-zero, this contact will not be issued
	bool taskforceContact;			// If non-zero, this contact is a taskforce contact
	bool noFriendIntro;			// if non-zero, this contact will not attempt to introduce a player to a friend
	bool tutorialContact;			// if non-zero, this contact is allowed looser restrictions on language to accomodate starter contacts
	bool teleportOnComplete; 		// if non-zero, this contact will do a new player teleport if player has completed contact and closes the dialog
	bool autoIssue;				// if non-zero, this contact will be issued as soon as the player clicks on them
	bool autoHide;				// if non-zero, this contact doesn't show in the contact list unless the player has a task for them
	bool canTrain;				// If non-zero, the contact can train heroes up in level
	bool canTailor;

	const StoryReward** dismissReward;

	// all the flags are in here now
	U32 flags[CONTACT_DEF_FLAGS_SIZE];	// new flags field

	const VillainGroupEnum * knownVillainGroups;	// for newspaper tasks, IDs of all known villain groups

	SCRIPTVARS_STD_FIELD
} ContactDef;