Cleaned up the mess, at this time, only viable data get synced (_work directory for Gothic-data, miranda for mdc-scripts. Need to symlink files to a working directory.
236 lines
7.3 KiB
D
236 lines
7.3 KiB
D
|
|
//////////////////////////////////////
|
|
// Class - Definitions
|
|
// Global Instances
|
|
// Phoenix V0.76
|
|
//////////////////////////////////////
|
|
|
|
CONST INT MAX_CHAPTER = 5;
|
|
CONST INT MAX_MISSIONS = 5;
|
|
const int MAX_HITCHANCE = 5;
|
|
|
|
CLASS C_NPC
|
|
{
|
|
VAR INT id ; // absolute ID des NPCs
|
|
VAR STRING name [5] ; // Namen des NPC
|
|
VAR STRING slot ;
|
|
VAR STRING effect;
|
|
VAR INT npcType ;
|
|
VAR INT flags ;
|
|
VAR INT attribute [ATR_INDEX_MAX] ;
|
|
var int HitChance [MAX_HITCHANCE] ;
|
|
VAR INT protection [PROT_INDEX_MAX];
|
|
VAR INT damage [DAM_INDEX_MAX] ;
|
|
VAR INT damagetype ;
|
|
VAR INT guild,level ;
|
|
|
|
VAR FUNC mission [MAX_MISSIONS] ;
|
|
var INT fight_tactic ;
|
|
VAR INT weapon ;
|
|
|
|
VAR INT voice ;
|
|
VAR INT voicePitch ;
|
|
VAR INT bodymass ;
|
|
|
|
VAR FUNC daily_routine ; // Tagesablauf
|
|
VAR FUNC start_aistate ; // Zustandsgesteuert
|
|
|
|
// **********************
|
|
// Spawn
|
|
// **********************
|
|
VAR STRING spawnPoint ; // Beim Tod, wo respawnen ?
|
|
VAR INT spawnDelay ; // Mit Delay in (Echtzeit)-Sekunden
|
|
|
|
// **********************
|
|
// SENSES
|
|
// **********************
|
|
VAR INT senses ; // Sinne
|
|
VAR INT senses_range ; // Reichweite der Sinne in cm
|
|
|
|
// **********************
|
|
// Feel free to use
|
|
// **********************
|
|
// FIXME: TODO: bei goldmaster auf das benötigte minimum reduzieren
|
|
VAR INT aivar [100] ;
|
|
VAR STRING wp ;
|
|
|
|
// **********************
|
|
// Experience dependant
|
|
// **********************
|
|
VAR INT exp ; // EXerience Points
|
|
VAR INT exp_next ; // EXerience Points needed to advance to next level
|
|
VAR INT lp ; // Learn Points
|
|
|
|
// If this is set to TRUE, the Npc can't be interrupted in any action (e.g. BS_FLAG_INTERRUPTABLE for anis is being ignored)
|
|
VAR INT bodyStateInterruptableOverride ;
|
|
// if "noFocus" is set to TRUE, the focus name and health bar will not be drawn of this nsc (hi, stefan!)
|
|
var int noFocus;
|
|
};
|
|
|
|
CLASS C_Mission
|
|
{
|
|
VAR STRING name ; // Name des Auftrages
|
|
VAR STRING description ;
|
|
VAR INT duration ; // Max. Dauer in Tageszeiten
|
|
VAR INT important ;
|
|
|
|
VAR FUNC offerConditions ;
|
|
VAR FUNC offer ;
|
|
VAR FUNC successConditions ;
|
|
VAR FUNC success ;
|
|
VAR FUNC failureConditions ;
|
|
VAR FUNC failure ;
|
|
VAR FUNC obsoleteConditions ;
|
|
VAR FUNC obsolete ;
|
|
VAR FUNC running ;
|
|
};
|
|
|
|
CLASS C_Item
|
|
{
|
|
// Für alle Items
|
|
VAR INT id ;
|
|
VAR STRING name,nameID ;
|
|
VAR INT hp,hp_max ;
|
|
|
|
VAR INT mainflag,flags ; // Hauptflag und weitere Flags
|
|
VAR INT weight,value ;
|
|
|
|
// Für Waffen
|
|
VAR INT damageType ; // Welche Schadensarten
|
|
VAR INT damageTotal ;
|
|
VAR INT damage [DAM_INDEX_MAX] ;
|
|
|
|
// Für Rüstungen
|
|
VAR INT wear ;
|
|
VAR INT protection [PROT_INDEX_MAX];
|
|
|
|
// Für Nahrung
|
|
VAR INT nutrition ; // HP-Steigerung bei Nahrung
|
|
|
|
// Benötigte Attribute zum Benutzen des Items
|
|
VAR INT cond_atr [3] ;
|
|
VAR INT cond_value [3] ;
|
|
|
|
// Attribute, die bei anlegen des Items verändert werden
|
|
VAR INT change_atr [3] ;
|
|
VAR INT change_value [3] ;
|
|
|
|
// Parserfunktionen
|
|
VAR FUNC magic ; // Parserfunktion zum "Magie Header"
|
|
VAR FUNC on_equip ; // Parserfunktion, wenn Item equipped wird.
|
|
VAR FUNC on_unequip ; // Parserfunktion, wenn Item unequipped wird.
|
|
VAR FUNC on_state [4] ;
|
|
|
|
// Besitzer
|
|
VAR FUNC owner ; // Besitzer : Instanz-Name
|
|
VAR INT ownerGuild ; // Besitzer : Gilde
|
|
VAR INT disguiseGuild ; // Zur Schau getragene Gilde durch Verkleidung
|
|
|
|
// Die 3DS-Datei
|
|
VAR STRING visual ;
|
|
|
|
// Veränderung des NSC-Meshes beim Anlegen dieses Gegenstandes
|
|
VAR STRING visual_change ; // ASC - File
|
|
VAR STRING effect; // Effekt Instanz
|
|
|
|
VAR INT visual_skin ;
|
|
|
|
VAR STRING scemeName ;
|
|
VAR INT material ;
|
|
// VAR STRING pfx ; // Magic Weapon PFX
|
|
VAR INT munition ; // Instance of Munition
|
|
|
|
var int spell ;
|
|
var int range ;
|
|
|
|
var int mag_circle ;
|
|
|
|
VAR STRING description ;
|
|
VAR STRING text [ITM_TEXT_MAX] ;
|
|
VAR INT count [ITM_TEXT_MAX] ;
|
|
|
|
// inventory darstellungs geschichten, wird nur benutzt, falls von 0 abweichend
|
|
var int inv_zbias; // wie weit ist das item im inventory richtung far plane verschoben (integer scale 100=1)
|
|
var int inv_rotx; // wieviel grad um die x achse ist das item im inv gedreht
|
|
var int inv_roty; // wieviel grad um die y achse ist das item im inv gedreht
|
|
var int inv_rotz; // wieviel grad um die z achse ist das item im inv gedreht
|
|
var int inv_animate; // soll das item in inv rotiert werden
|
|
};
|
|
|
|
CLASS C_Focus
|
|
{
|
|
/// für NSCs
|
|
VAR FLOAT npc_longrange ; // Zurufweite ( 20 m )
|
|
VAR FLOAT npc_range1, npc_range2 ; // Reichweite
|
|
VAR FLOAT npc_azi ; // Azimuth ( Seitenwinkel )
|
|
VAR FLOAT npc_elevdo, npc_elevup ; // Elevation ( Höhenwinkel )
|
|
VAR INT npc_prio ; // Priorität
|
|
|
|
/// für ITEMs
|
|
VAR FLOAT item_range1, item_range2 ; // Reichweite
|
|
VAR FLOAT item_azi ; // Azimuth ( Seitenwinkel )
|
|
VAR FLOAT item_elevdo, item_elevup ; // Elevation ( Höhenwinkel )
|
|
VAR INT item_prio ; // Priorität
|
|
|
|
/// für MOBs
|
|
VAR FLOAT mob_range1, mob_range2 ; // Reichweite
|
|
VAR FLOAT mob_azi ; // Azimuth ( Seitenwinkel )
|
|
VAR FLOAT mob_elevdo, mob_elevup ; // Elevation ( Höhenwinkel )
|
|
VAR INT mob_prio ; // Priorität
|
|
};
|
|
|
|
CLASS C_INFO
|
|
{
|
|
VAR INT npc ;
|
|
VAR INT nr ;
|
|
VAR INT important ; // Wichtig Flag -> ansprechen
|
|
VAR FUNC condition ;
|
|
VAR FUNC information ;
|
|
VAR STRING description ;
|
|
VAR INT trade ;
|
|
VAR INT permanent ;
|
|
};
|
|
|
|
CLASS C_ITEMREACT
|
|
{
|
|
VAR INT npc;
|
|
VAR INT trade_item;
|
|
VAR INT trade_amount;
|
|
VAR INT requested_cat;
|
|
VAR INT requested_item;
|
|
VAR INT requested_amount;
|
|
VAR FUNC reaction;
|
|
};
|
|
|
|
CLASS C_Spell
|
|
{
|
|
VAR FLOAT time_per_mana; // Zeit pro investierten Manapunkt (ms)
|
|
VAR INT damage_per_level; // Schaden pro Level
|
|
VAR INT damageType; // CAN BE ONLY ONE DAMAGE TYPE
|
|
VAR INT spellType; // Good, Neutral or Bad
|
|
VAR INT canTurnDuringInvest;
|
|
VAR INT canChangeTargetDuringInvest;
|
|
VAR INT isMultiEffect; // Effect Class is oCVisFX_MultiTarget if set to 1 (e.g. the effect can have multiple trajectorys (massdeath)
|
|
VAR INT targetCollectAlgo;
|
|
VAR INT targetCollectType;
|
|
VAR INT targetCollectRange;
|
|
VAR INT targetCollectAzi;
|
|
VAR INT targetCollectElev;
|
|
};
|
|
|
|
|
|
// ************************************************************
|
|
// Globale Klasseninstanzen
|
|
// ************************************************************
|
|
|
|
// Aktueller Npc und der SC
|
|
INSTANCE self,other (C_NPC);
|
|
|
|
// Opfer bei "witness"-Aktionen
|
|
INSTANCE victim(C_NPC);
|
|
|
|
// aktuelles Item
|
|
INSTANCE item(C_Item);
|
|
|
|
// Und der Player immer als globale Instanz
|
|
INSTANCE hero(C_NPC);
|