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;