// ********************************************************************************************
// (Neu)
// ============
// (Beschreibung)


/*################################################################################################
##										 														##
##										 														##
##		Klasse							 														##
##										 														##
##										 														##
################################################################################################*/
INSTANCE Mis_New(C_Mission)
{
   name			= "";
   global		= 0;												// 0=kann nur an einen SC vergeben werden; 1=kann an mehrere SCs gleichzeitig vergeben werden
   duration		= 1;												// = 1 Tageszeit (8 Tageszeiten sind ein kompletter Tag)

   conditions 	= Mis_New_Conditions;								// Hier wird die Funktion angegeben, in welcher überprüft wird, ob der NSC den Spieler überhaupt fragt.
   criteria   	= Mis_New_Criteria;									// Diese Routine wird aufgerufen, um zu überprüfen, ob der SC den Auftrag schon erfüllt hat
   offer		= Mis_New_Offer;									// Mit dem Inhalt dieser Routine wird das Aiuftragsangebot des NSCs ausgesprochen. 
   acknowledge 	= Mis_New_Acknowledge;								// Hier wird hingesprungen, wenn der Spieler den Auftrag angenommen...
   refuse		= Mis_New_Refuse;									// ... bzw. abgeleht hat.
   abort		= Mis_New_Abort;									// Diese Funktion wird aufgerufen, wenn der SC den Auftrag abbricht.
   done			= Mis_New_Done;										// Sind alle Bedingungen in der Routine 'criteria' (siehe oben) erfüllt, so gilt der Auftrag als erfüllt und diese Funktion hier enthält die Reaktion des NSCs darauf (normalerweise eine Belohnung)
   running		= Mis_New_Running;									// Spricht der Spieler den NSC während eines laufenden Auftrags (bei diesem NSC) an, so wird der NSC keinen Dialog beginnen, sondern mit dem Inhalt der Funktion antworten ("...beeil dich...")
};

/*################################################################################################
##										 														##
##										 														##
##		Funktionen						 														##
##										 														##
##										 														##
################################################################################################*/

/************************************************************************************************
*	conditions()																				*
*	============																				*
*	Diese Funktion wird vom Game immer dann angesprungen, wenn der Spieler diesen NSC			*
*	Da Auftragsvergabe hohe Priorität hat, wird noch vor 'intro_...' durch diese Funktion		*
*	überprüft, ob der NSC dem Spieler den Auftrag auch anbieten will.							*
*	Globale Variablen:	'self' ist der NSC selbst												*
*						'other' ist der SC														*
*	Rückgabewert:		0 = keine Auftragsvergabe												*
*						1 = Auftragsvergabe														*
************************************************************************************************/
FUNC INT Mis_New_Conditions()
{
	RETURN 1;
};

/************************************************************************************************
*	offer()																						*
*	=======																						*
*	Diese Funktion wird vom Game immer dann angesprungen, wenn der Spieler diesen NSC			*
*	Da Auftragsvergabe hohe Priorität hat, wird noch vor 'intro_...' durch diese Funktion		*
*	überprüft, ob der NSC dem Spieler den Auftrag auch anbieten will.							*
*	Globale Variablen:	'self' ist der NSC selbst												*
*						'other' ist der SC														*
************************************************************************************************/
FUNC VOID Mis_New_Offer()
{
};

/************************************************************************************************
*	acknowledge()																				*
*	=============																				*
*	Hat der Spieler den Auftrag des NSCs angenommen, so wird anschließend diese Funktion 		*
*	durchlaufen. Normalerweise folgen hier nähere Instruktionen zum Auftrag.					*
*	Globale Variablen:	'self' ist der NSC selbst												*
*						'other' ist der SC														*
************************************************************************************************/
FUNC VOID Mis_New_Acknowledge()
{
};

/************************************************************************************************
*	refuse()																					*
*	========																					*
*	Hat der Spieler den Auftrag des NSCs abgelehnt, so wird anschließend diese Funktion 		*
*	durchlaufen. Normalerweise wird hier eine unflätige Bemerkung des NSCs folgen.				*
*	Globale Variablen:	'self' ist der NSC selbst												*
*						'other' ist der SC														*
************************************************************************************************/
FUNC VOID Mis_New_Refuse()
{
};

/************************************************************************************************
*	criteria()																					*
*	==========																					*
*	Hat der Spieler den Auftrag erst einmal angenommen und spricht den NSC-Auftraggeber später	*
*	wieder an, so wird anstelle der 'intro_...'-Funktionen diese Funktion aufgerufen. Hier 		*
*	wird entschieden, ob der SC das Kriterium für die Erfüllung des Auftrages zutrifft oder		*
*	nicht. Normalerweise wird in dieser Funktion überprüft, ob z.B. der SC einen bestimmten		*
*	Gegenstand mit sich trägt, der Inhalt des Auftrages war, oder ob eine Zielperson tot ist,	*
*	oder, oder, oder... .														  				*
*	Globale Variablen:	'self' ist der NSC selbst												*
*						'other' ist der SC														*
*	Rückgabewert:		0 = Auftrag NICHT erfüllt												*
*						1 = Auftrag ERFÜLLT														*
************************************************************************************************/
FUNC INT Mis_New_Criteria()
{
	RETURN 1;
};

/************************************************************************************************
*	running()																					*
*	=========																					*
*	Spricht der SC seinen Auftraggeber an, und 'criteria()' hat entschieden, daß der Auftrag	*
*	noch nicht erfüllt ist, wird diese Funktion aufgerufen. Normalerweise wird der NSC hier		*
*	den Spieler nochmal daran erinnern, daß er gefälligst den Auftrag erledigen soll .			*
*	Globale Variablen:	'self' ist der NSC selbst												*
*						'other' ist der SC														*
*	Lokale Variablen:	'ontime' ist TRUE, wenn der SC noch in der Zeit liegt und FALSE, wenn	*
*						das Zeitlimit des Auftraggebers bereits abgelaufen ist.					*
************************************************************************************************/
FUNC VOID Mis_New_Running(VAR INT ontime)
{
};

/************************************************************************************************
*	abort()																						*
*	=======																						*
*	Diese Funktion zur Zeit nicht benutzt.														*
*	Globale Variablen:	'self' ist der NSC selbst												*
*						'other' ist der SC														*
************************************************************************************************/
FUNC VOID Mis_New_Abort()
{
};

/************************************************************************************************
*	done()																						*
*	======																						*
*	Hat der Spieler einen laufenden Auftrag gemäß der Funktion 'criteria' erfüllt, so wird 		*
*	diese Funktion angesprungen. Normalerweise wird der NSC hier die Belohnung an den SC geben.	*
*	Globale Variablen:	'self' ist der NSC selbst												*
*						'other' ist der SC														*
*	Lokale Variablen:	'ontime' ist TRUE, wenn der SC noch in der Zeit liegt und FALSE, wenn	*
*						das Zeitlimit des Auftraggebers bereits abgelaufen ist.					*
************************************************************************************************/
FUNC VOID Mis_New_Done(VAR INT ontime)
{
};

