mahlendur/_work/Data/Scripts/Content/_intern/Classes.d
Daniel Heße 892a40ff0f Initial commit with Subversion-codebase from 13/05/2022.
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.
2022-05-13 17:38:52 +02:00

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);