// ********************* // Constants // Phoenix V0.67 // ********************* // ************************************************************* // PrintScreen Fonts // ************************************************************* const string FONT_Screen = "FONT_OLD_20_WHITE.TGA"; const string FONT_ScreenSmall = "FONT_OLD_10_WHITE.TGA"; const string FONT_Book = "FONT_10_BOOK.TGA"; const string FONT_BookHeadline = "FONT_20_BOOK.TGA"; // **************************** // Spellkosten für ALLE SCrolls // **************************** const int SPL_Cost_Scroll = 5; // MH: 19.11.01 Gildennamen geändert --> Änderungen in Text.d (Character-Screen Gildenbezeichnungen) und Species.d (Gildenanhängige Bewegungswerte wie z.B Kletterhöhe) // MH: 19.11.01 Talente hinzugefügt // MH: 15.12.01 Neue Spells hinzugefügt // MH: 15.12.01 Neue Player Talente hinzugefügt // // NPC ATTRIBUTES // const int ATR_HITPOINTS = 0; // Lebenspunkte const int ATR_HITPOINTS_MAX = 1; // Max. Lebenspunkte const int ATR_MANA = 2; // Mana Mana const int ATR_MANA_MAX = 3; // Mana Max const int ATR_STRENGTH = 4; // Stärke const int ATR_DEXTERITY = 5; // Geschick const int ATR_REGENERATEHP = 6; // Regenerierung von HP alle x sekunden const int ATR_REGENERATEMANA = 7; // Regenerierung von Mana alle x sekunden const int ATR_INDEX_MAX = 8; // // NPC FLAGS // CONST INT NPC_FLAG_FRIEND = 1 << 0 ; // wird nicht benutzt (wird über aivar geregelt) CONST INT NPC_FLAG_IMMORTAL = 1 << 1 ; // Unverwundbar CONST INT NPC_FLAG_GHOST = 1 << 2 ; // Halb-Transparenter NPC (Gothic.ini [INTERNAL] 'GhostAlpha') // // FIGHT MODES // CONST INT FMODE_NONE = 0 ; CONST INT FMODE_FIST = 1 ; CONST INT FMODE_MELEE = 2 ; CONST INT FMODE_FAR = 5 ; CONST INT FMODE_MAGIC = 7 ; // // WALK MODES // CONST INT NPC_RUN = 0 ; CONST INT NPC_WALK = 1 ; CONST INT NPC_SNEAK = 2 ; CONST INT NPC_RUN_WEAPON = 0 + 128 ; CONST INT NPC_WALK_WEAPON = 1 + 128 ; CONST INT NPC_SNEAK_WEAPON = 2 + 128 ; // // ARMOR FLAGS // CONST INT WEAR_TORSO = 1 ; // Oberkoerper ( Brustpanzer ) CONST INT WEAR_HEAD = 2 ; // Kopf ( Helm ) CONST INT WEAR_EFFECT = 16 ; // // INVENTORY CATEGORIES // CONST INT INV_WEAPON = 1 ; CONST INT INV_ARMOR = 2 ; CONST INT INV_RUNE = 3 ; CONST INT INV_MAGIC = 4 ; CONST INT INV_FOOD = 5 ; CONST INT INV_POTION = 6 ; CONST INT INV_DOC = 7 ; CONST INT INV_MISC = 8 ; CONST INT INV_CAT_MAX = 9 ; // // INVENTORY CAPACITIES // --- werden vom Programm ignoriert - INV ist unendlich groß! --- // CONST INT INV_MAX_WEAPONS = 6 ; CONST INT INV_MAX_ARMORS = 2 ; CONST INT INV_MAX_RUNES = 1000 ; // virtually infinite CONST INT INV_MAX_FOOD = 15 ; CONST INT INV_MAX_DOCS = 1000 ; // virtually infinite CONST INT INV_MAX_POTIONS = 1000 ; // virtually infinite CONST INT INV_MAX_MAGIC = 1000 ; // virtually infinite CONST INT INV_MAX_MISC = 1000 ; // // ITEM TEXTS // CONST INT ITM_TEXT_MAX = 6 ; //////////////////////////////////////////////////////////////////////////////// // // ITEM FLAGS // // categories (mainflag) const int ITEM_KAT_NONE = 1 << 0; // Sonstiges const int ITEM_KAT_NF = 1 << 1; // Nahkampfwaffen const int ITEM_KAT_FF = 1 << 2; // Fernkampfwaffen const int ITEM_KAT_MUN = 1 << 3; // Munition (MULTI) const int ITEM_KAT_ARMOR = 1 << 4; // Ruestungen const int ITEM_KAT_FOOD = 1 << 5; // Nahrungsmittel (MULTI) const int ITEM_KAT_DOCS = 1 << 6; // Dokumente const int ITEM_KAT_POTIONS = 1 << 7; // Traenke const int ITEM_KAT_LIGHT = 1 << 8; // Lichtquellen const int ITEM_KAT_RUNE = 1 << 9; // Runen/Scrolls const int ITEM_KAT_MAGIC = 1 << 31; // Ringe/Amulette/Guertel const int ITEM_KAT_KEYS = ITEM_KAT_NONE; // weapon type (flags) const int ITEM_DAG = 1 << 13; // (OBSOLETE!) const int ITEM_SWD = 1 << 14; // Schwert const int ITEM_AXE = 1 << 15; // Axt const int ITEM_2HD_SWD = 1 << 16; // Zweihaender const int ITEM_2HD_AXE = 1 << 17; // Streitaxt const int ITEM_SHIELD = 1 << 18; // (OBSOLETE!) const int ITEM_BOW = 1 << 19; // Bogen const int ITEM_CROSSBOW = 1 << 20; // Armbrust // magic type (flags) const int ITEM_RING = 1 << 11; // Ring const int ITEM_AMULET = 1 << 22; // Amulett const int ITEM_BELT = 1 << 24; // Guertel // attributes (flags) const int ITEM_DROPPED = 1 << 10; // (INTERNAL!) const int ITEM_MISSION = 1 << 12; // Missionsgegenstand const int ITEM_MULTI = 1 << 21; // Stapelbar const int ITEM_NFOCUS = 1 << 23; // (INTERNAL!) const int ITEM_CREATEAMMO = 1 << 25; // Erzeugt Munition selbst (magisch) const int ITEM_NSPLIT = 1 << 26; // Kein Split-Item (Waffe als Interact-Item!) const int ITEM_DRINK = 1 << 27; // (OBSOLETE!) const int ITEM_TORCH = 1 << 28; // Fackel const int ITEM_THROW = 1 << 29; // (OBSOLETE!) const int ITEM_ACTIVE = 1 << 30; // (INTERNAL!) // // DAMAGE TYPES v2.0 // CONST INT DAM_INVALID = 0 ; // 0 - 0x00 - nur der Vollstandigkeit und Transparenz wegen hier definiert ( _NICHT_ verwenden ) CONST INT DAM_BARRIER = 1 ; // 1 - 0x01 - nur der Vollstandigkeit und Transparenz wegen hier definiert ( _NICHT_ verwenden ) CONST INT DAM_BLUNT = DAM_BARRIER << 1 ; // 2 - 0x02 - blunt ist das bit links von barrier CONST INT DAM_EDGE = DAM_BLUNT << 1 ; // 4 - 0x04 - edge ist das bit links von blunt CONST INT DAM_FIRE = DAM_EDGE << 1 ; // 8 - 0x08 - fire ist das bit links von edge CONST INT DAM_FLY = DAM_FIRE << 1 ; // 16 - 0x10 - fly ist das bit links von fire CONST INT DAM_MAGIC = DAM_FLY << 1 ; // 32 - 0x20 - magic ist das bit links von fly CONST INT DAM_POINT = DAM_MAGIC << 1 ; // 64 - 0x40 - point ist das bit links von magic CONST INT DAM_FALL = DAM_POINT << 1 ; // 128 - 0x80 - nur der Vollstandigkeit und Transparenz wegen hier definiert ( _NICHT_ verwenden ) // // DAMAGE TYPE ARRAY INDICES ( !!! DAM_XXX = 1 << DAM_INDEX_XXX !!! ) // CONST INT DAM_INDEX_BARRIER = 0 ; // nur der Vollstandigkeit und Transparenz wegen hier definiert ( _NICHT_ verwenden ) CONST INT DAM_INDEX_BLUNT = DAM_INDEX_BARRIER + 1 ; CONST INT DAM_INDEX_EDGE = DAM_INDEX_BLUNT + 1 ; CONST INT DAM_INDEX_FIRE = DAM_INDEX_EDGE + 1 ; CONST INT DAM_INDEX_FLY = DAM_INDEX_FIRE + 1 ; CONST INT DAM_INDEX_MAGIC = DAM_INDEX_FLY + 1 ; CONST INT DAM_INDEX_POINT = DAM_INDEX_MAGIC + 1 ; CONST INT DAM_INDEX_FALL = DAM_INDEX_POINT + 1 ; // nur der Vollstandigkeit und Transparenz wegen hier definiert ( _NICHT_ verwenden ) CONST INT DAM_INDEX_MAX = DAM_INDEX_FALL + 1 ; // // OTHER DAMAGE CONSTANTS // CONST INT NPC_ATTACK_FINISH_DISTANCE = 180 ; CONST INT NPC_BURN_TICKS_PER_DAMAGE_POINT = 1000 ; //Default 1000 CONST INT NPC_BURN_DAMAGE_POINTS_PER_INTERVALL = 50 ; //Default 10 CONST INT DAM_CRITICAL_MULTIPLIER = 2 ; //Obsolet, da Treffer-%-CHance CriticalHit ersetzt hat CONST INT BLOOD_SIZE_DIVISOR = 1000 ; CONST INT BLOOD_DAMAGE_MAX = 200 ; CONST INT DAMAGE_FLY_CM_MAX = 2000 ; CONST INT DAMAGE_FLY_CM_MIN = 300 ; const INT DAMAGE_FLY_CM_PER_POINT = 5 ; const int NPC_DAM_DIVE_TIME = 100 ; const int IMMUNE = -1 ; // ------ Wie weit werden Npcs im Kampf voneinander weggeschoben ------- // ------ Faktor zu W-Distanz (BASE + Waffe, bzw. BASE + FIST) ------ const float NPC_COLLISION_CORRECTION_SCALER = 0.75; //Default = 0.75 // // PROTECTION TYPES v2.0 // CONST INT PROT_BARRIER = DAM_INDEX_BARRIER ; CONST INT PROT_BLUNT = DAM_INDEX_BLUNT ; CONST INT PROT_EDGE = DAM_INDEX_EDGE ; CONST INT PROT_FIRE = DAM_INDEX_FIRE ; CONST INT PROT_FLY = DAM_INDEX_FLY ; CONST INT PROT_MAGIC = DAM_INDEX_MAGIC ; CONST INT PROT_POINT = DAM_INDEX_POINT ; CONST INT PROT_FALL = DAM_INDEX_FALL ; CONST INT PROT_INDEX_MAX = DAM_INDEX_MAX ; // // PERCEPTIONS ( ACTIVE ) // CONST INT PERC_ASSESSPLAYER = 1 ; CONST INT PERC_ASSESSENEMY = 2 ; CONST INT PERC_ASSESSFIGHTER = 3 ; CONST INT PERC_ASSESSBODY = 4 ; CONST INT PERC_ASSESSITEM = 5 ; // // SENSES // CONST INT SENSE_SEE = 1 << 0 ; CONST INT SENSE_HEAR = 1 << 1 ; CONST INT SENSE_SMELL = 1 << 2 ; // // PERCEPTIONS ( PASSIVE ) // CONST INT PERC_ASSESSMURDER = 6 ; CONST INT PERC_ASSESSDEFEAT = 7 ; CONST INT PERC_ASSESSDAMAGE = 8 ; CONST INT PERC_ASSESSOTHERSDAMAGE = 9 ; CONST INT PERC_ASSESSTHREAT = 10 ; CONST INT PERC_ASSESSREMOVEWEAPON = 11 ; CONST INT PERC_OBSERVEINTRUDER = 12 ; CONST INT PERC_ASSESSFIGHTSOUND = 13 ; CONST INT PERC_ASSESSQUIETSOUND = 14 ; CONST INT PERC_ASSESSWARN = 15 ; CONST INT PERC_CATCHTHIEF = 16 ; CONST INT PERC_ASSESSTHEFT = 17 ; CONST INT PERC_ASSESSCALL = 18 ; CONST INT PERC_ASSESSTALK = 19 ; CONST INT PERC_ASSESSGIVENITEM = 20 ; CONST INT PERC_ASSESSFAKEGUILD = 21 ; //wird gesendet, sobald der SC sich verwandelt CONST INT PERC_MOVEMOB = 22 ; CONST INT PERC_MOVENPC = 23 ; CONST INT PERC_DRAWWEAPON = 24 ; CONST INT PERC_OBSERVESUSPECT = 25 ; CONST INT PERC_NPCCOMMAND = 26 ; CONST INT PERC_ASSESSMAGIC = 27 ; CONST INT PERC_ASSESSSTOPMAGIC = 28 ; CONST INT PERC_ASSESSCASTER = 29 ; //wird beim 1. investierten Manapunkt gesendet CONST INT PERC_ASSESSSURPRISE = 30 ; //wird beim Zurückverwandeln gesendet CONST INT PERC_ASSESSENTERROOM = 31 ; CONST INT PERC_ASSESSUSEMOB = 32 ; // // NEWS SPREAD MODE // CONST INT NEWS_DONT_SPREAD = 0 ; const INT NEWS_SPREAD_NPC_FRIENDLY_TOWARDS_VICTIM = 1 ; CONST INT NEWS_SPREAD_NPC_FRIENDLY_TOWARDS_WITNESS = 2 ; CONST INT NEWS_SPREAD_NPC_FRIENDLY_TOWARDS_OFFENDER = 3 ; CONST INT NEWS_SPREAD_NPC_SAME_GUILD_VICTIM = 4 ; // // NEWS CONSTANTS // CONST INT IMPORTANT = 1 ; // // INFO STATUS // CONST INT INF_TELL = 0 ; CONST INT INF_UNKNOWN = 2 ; // // MISSION STATUS // const INT LOG_RUNNING = 1 ; // Mission läuft gerade CONST INT LOG_SUCCESS = 2 ; // Mission erfolgreich beendet CONST INT LOG_FAILED = 3 ; // Mission wurde abgebrochen CONST INT LOG_OBSOLETE = 4 ; // Mission ist hinfaellig // // ATTITUDES // CONST INT ATT_FRIENDLY = 3 ; CONST INT ATT_NEUTRAL = 2 ; CONST INT ATT_ANGRY = 1 ; CONST INT ATT_HOSTILE = 0 ; // ****************** // Gilden // ****************** const int GIL_NONE = 0 ; // (keine) const int GIL_HUMAN = 1 ; // Special Guild -> To set Constants for ALL Human Guilds --> wird verwendet in Species.d const int GIL_PAL = 1 ; // Paladin const int GIL_MIL = 2 ; // Miliz const int GIL_VLK = 3 ; // Bürger const int GIL_KDF = 4 ; // Magier const int GIL_NOV = 5 ; // Magier Novize const int GIL_DJG = 6 ; // Drachenjäger const int GIL_SLD = 7 ; // Söldner const int GIL_BAU = 8 ; // Bauer const int GIL_BDT = 9 ; // Bandit const int GIL_STRF = 10 ; // Prisoner, Sträfling const int GIL_DMT = 11 ; // Dementoren const int GIL_OUT = 12 ; // Outlander (z.B. kleine Bauernhöfe) const int GIL_PIR = 13 ; //Pirat const int GIL_KDW = 14 ; //Schwarzmagier! const int GIL_EMPTY_D = 15 ; // NICHT VERWENDEN! //----------------------------------------------- const int GIL_PUBLIC = 15 ; // für öffentliche Portalräume //----------------------------------------------- const int GIL_SEPERATOR_HUM = 16 ; const int GIL_MEATBUG = 17 ; const int GIL_SHEEP = 18 ; const int GIL_GOBBO = 19 ; // Green Goblin / Black Goblin const int GIL_GOBBO_SKELETON = 20 ; const int GIL_SUMMONED_GOBBO_SKELETON = 21 ; const int GIL_SCAVENGER = 22 ; // (bei Bedarf) Scavenger / Evil Scavenger /OrcBiter const int GIL_GIANT_RAT = 23 ; const int GIL_GIANT_BUG = 24 ; const int GIL_BLOODFLY = 25 ; const int GIL_WARAN = 26 ; // Waren / Feuerwaran const int GIL_WOLF = 27 ; // Wolf / Warg const int GIL_SUMMONED_WOLF = 28 ; const int GIL_MINECRAWLER = 29 ; // Minecrawler / Minecrawler Warrior const int GIL_LURKER = 30 ; const int GIL_SKELETON = 31 ; const int GIL_SUMMONED_SKELETON = 32 ; const int GIL_SKELETON_MAGE = 33 ; const int GIL_ZOMBIE = 34 ; const int GIL_SNAPPER = 35 ; // Snapper / Dragon Snapper /Razor const int GIL_SHADOWBEAST = 36 ; //Shadowbeast / Bloodhound const int GIL_SHADOWBEAST_SKELETON = 37 ; const int GIL_HARPY = 38 ; const int GIL_STONEGOLEM = 39 ; const int GIL_FIREGOLEM = 40 ; const int GIL_ICEGOLEM = 41 ; const int GIL_SUMMONED_GOLEM = 42 ; const int GIL_DEMON = 43 ; const int GIL_SUMMONED_DEMON = 44 ; const int GIL_TROLL = 45 ; // Troll / Schwarzer Troll const int GIL_SWAMPSHARK = 46 ; // (bei Bedarf) const int GIL_DRAGON = 47 ; // Feuerdrache / Eisdrache / Felsdrache / Sumpfdrache / Untoter Drache const int GIL_MOLERAT = 48 ; // Molerat const int GIL_ALLIGATOR = 49 ; const int GIL_SWAMPGOLEM = 50 ; const int GIL_Stoneguardian = 51 ; const int GIL_Gargoyle = 52 ; const int GIL_Empty_A = 53 ; const int GIL_SummonedGuardian = 54 ; const int GIL_SummonedZombie = 55 ; const int GIL_EMPTY_B = 56 ; const int GIL_EMPTY_C = 57 ; const int GIL_SEPERATOR_ORC = 58 ; // (ehem. 37) const int GIL_ORC = 59 ; // Ork-Krieger / Ork-Shamane / Ork-Elite const int GIL_FRIENDLY_ORC = 60 ; // Ork-Sklave / Ur-Shak const int GIL_UNDEADORC = 61 ; const int GIL_DRACONIAN = 62 ; const int GIL_EMPTY_X = 63 ; const int GIL_EMPTY_Y = 64 ; const int GIL_EMPTY_Z = 65 ; const int GIL_MAX = 66 ; // (ehem. 42) // // GUILDS DESCRIPTION // CLASS C_GILVALUES { VAR INT WATER_DEPTH_KNEE [GIL_MAX] ; VAR INT WATER_DEPTH_CHEST [GIL_MAX] ; VAR INT JUMPUP_HEIGHT [GIL_MAX] ; // DEFAULT = 200; // VAR INT JUMPUP_FORCE [GIL_MAX] ; VAR INT SWIM_TIME [GIL_MAX] ; VAR INT DIVE_TIME [GIL_MAX] ; VAR INT STEP_HEIGHT [GIL_MAX] ; VAR INT JUMPLOW_HEIGHT [GIL_MAX] ; VAR INT JUMPMID_HEIGHT [GIL_MAX] ; VAR INT SLIDE_ANGLE [GIL_MAX] ; VAR INT SLIDE_ANGLE2 [GIL_MAX] ; VAR INT DISABLE_AUTOROLL [GIL_MAX] ; // DEFAULT = 0 ; 0 = Autoroll enabled / 1 = Autoroll disabled VAR INT SURFACE_ALIGN [GIL_MAX] ; // DEFAULT = 0 ; 0 = Alignment disabled / 1 = Alignment enabled VAR INT CLIMB_HEADING_ANGLE [GIL_MAX] ; VAR INT CLIMB_HORIZ_ANGLE [GIL_MAX] ; VAR INT CLIMB_GROUND_ANGLE [GIL_MAX] ; VAR INT FIGHT_RANGE_BASE [GIL_MAX] ; VAR INT FIGHT_RANGE_FIST [GIL_MAX] ; var int FIGHT_RANGE_G [GIL_MAX] ; VAR INT FIGHT_RANGE_1HS [GIL_MAX] ; VAR INT FIGHT_RANGE_1HA [GIL_MAX] ; VAR INT FIGHT_RANGE_2HS [GIL_MAX] ; VAR INT FIGHT_RANGE_2HA [GIL_MAX] ; VAR INT FALLDOWN_HEIGHT [GIL_MAX] ; // Wie tief Fallen ohne Schaden ? VAR INT FALLDOWN_DAMAGE [GIL_MAX] ; // Schaden für jeden weiteren angefangenen Meter. VAR INT BLOOD_DISABLED [GIL_MAX] ; // DEFAULT = 0 ; Blut ganz ausschalten (z.B. bei Sekletten) ? VAR INT BLOOD_MAX_DISTANCE [GIL_MAX] ; // DEFAULT = 1000 ; Wie weit spritzt das Blut (in cm) ? VAR INT BLOOD_AMOUNT [GIL_MAX] ; // DEFAULT = 10 ; Wie viel Blut ? VAR INT BLOOD_FLOW [GIL_MAX] ; // DEFAULT = 0 ; Soll es sich langsam ausbreiten ? VAR STRING BLOOD_EMITTER [GIL_MAX] ; // DEFAULT = "PFX_BLOOD" ; Welcher Partikel-Emitter ? VAR STRING BLOOD_TEXTURE [GIL_MAX] ; // DEFAULT = "ZBLOODSPLAT2.TGA"; Welche Textur ? VAR INT TURN_SPEED [GIL_MAX] ; // DEFAULT = 150 ; }; // // SOUND TYPES // CONST INT NPC_SOUND_DROPTAKE = 1 ; CONST INT NPC_SOUND_SPEAK = 3 ; CONST INT NPC_SOUND_STEPS = 4 ; CONST INT NPC_SOUND_THROWCOLL = 5 ; CONST INT NPC_SOUND_DRAWWEAPON = 6 ; CONST INT NPC_SOUND_SCREAM = 7 ; CONST INT NPC_SOUND_FIGHT = 8 ; // // MATERIAL TYPES // CONST INT MAT_WOOD = 0 ; CONST INT MAT_STONE = 1 ; CONST INT MAT_METAL = 2 ; CONST INT MAT_LEATHER = 3 ; CONST INT MAT_CLAY = 4 ; CONST INT MAT_GLAS = 5 ; // ?? // // LOG // CONST INT LOG_MISSION = 0 ; CONST INT LOG_NOTE = 1 ; // // OTHER CONSTANTS // const int TIME_INFINITE = -1000000 / 1000 ; const int NPC_VOICE_VARIATION_MAX = 10 ; const float TRADE_VALUE_MULTIPLIER = 0.15; // DEFAULT = 0.3 Faktor auf den Wert eines Items, den ein Haendler bezahlt const string TRADE_CURRENCY_INSTANCE = "ITMI_GOLD"; // DEFAULT = "ITMI_GOLD" Name der Instanz des Waehrungs-Items //////////////////////////////////////////////////////////////////////////////// // // Spells: Kategorie-Konstanten // const int SPELL_GOOD = 0; const int SPELL_NEUTRAL = 1; const int SPELL_BAD = 2; //////////////////////////////////////////////////////////////////////////////// // // Spells: Steuerungs-Konstanten // const int SPL_DONTINVEST = 0; // Es können keine weiteren Manapunkte investiert werden. Erst durch CTRL loslassen geht der Spell ab const int SPL_RECEIVEINVEST = 1; // Wirkung durchgeführt, es können weitere Invest kommen, zB.bei Heal nach jedem Pöppel const int SPL_SENDCAST = 2; // Starte den Zauber-Effekt (wie CTRL loslassen), automatischer Abbruch const int SPL_SENDSTOP = 3; // Beende Zauber ohne Effekt const int SPL_NEXTLEVEL = 4; // setze den Spruch auf den nächsten Level const int SPL_STATUS_CANINVEST_NO_MANADEC=8; const int SPL_FORCEINVEST = 1 << 16; // zieht auf jeden Fall einen Manapunkt ab, egal ob timePerMana abgelaufen ist, oder nicht (sinnvoll für Investierzauber, die zumindest einen Manapunkt abziehen sollen, obwohl timePerMana noch nicht abgelaufen ist. //////////////////////////////////////////////////////////////////////////////// // // Spells: Target-Konstanten // const int TARGET_COLLECT_NONE = 0; // target will be set by effect (range, azi, elev) const int TARGET_COLLECT_CASTER = 1; // target is the caster const int TARGET_COLLECT_FOCUS = 2; // target is the focus vob const int TARGET_COLLECT_ALL = 3; // all targets in range will be assembled const int TARGET_COLLECT_FOCUS_FALLBACK_NONE = 4; // target is the focus vob, if the focus vob is not valid, the trajectory will be set by the effect const int TARGET_COLLECT_FOCUS_FALLBACK_CASTER = 5; // target is the focus vob, if the focus vob is not valid, the target is the caster const int TARGET_COLLECT_ALL_FALLBACK_NONE = 6; // all targets in range will be assembled, if there are no valid targets, the trajectory will be set by the effect const int TARGET_COLLECT_ALL_FALLBACK_CASTER = 7; // all targets in range will be assembled, if there are no valid targets, the target is the caster const int TARGET_TYPE_ALL = 1; const int TARGET_TYPE_ITEMS = 2; const int TARGET_TYPE_NPCS = 4; const int TARGET_TYPE_ORCS = 8; const int TARGET_TYPE_HUMANS = 16; const int TARGET_TYPE_UNDEAD = 32; //////////////////////////////////////////////////////////////////////////////// // // Spells: ID-Konstanten // // Paladin-Runen const int SPL_PalLight = 0; const int SPL_PalLightHeal = 1; const int SPL_PalHolyBolt = 2; const int SPL_PalMediumHeal = 3; const int SPL_PalRepelEvil = 4; const int SPL_PalFullHeal = 5; const int SPL_PalDestroyEvil = 6; // Teleport-Runen const int SPL_PalTeleportSecret = 7; const int SPL_TeleportSeaport = 8; const int SPL_TeleportMonastery = 9; const int SPL_TeleportFarm = 10; const int SPL_TeleportXardas = 11; const int SPL_TeleportPassNW = 12; const int SPL_TeleportPassOW = 13; const int SPL_TeleportOC = 14; const int SPL_TeleportOWDemonTower = 15; const int SPL_TeleportTaverne = 16; const int SPL_Teleport_3 = 17; // Kreis 1 const int SPL_Light = 18; const int SPL_Firebolt = 19; // Kreis 2 const int SPL_Icebolt = 20; // Kreis 1 const int SPL_LightHeal = 21; // SPL_Heal Instant! const int SPL_SummonGoblinSkeleton = 22; // Kreis 2 const int SPL_InstantFireball = 23; // Kreis 1 const int SPL_Zap = 24; // ###UNCONSCIOUS### // Kreis 2 const int SPL_SummonWolf = 25; const int SPL_WindFist = 26; // ###UNCONSCIOUS### const int SPL_Sleep = 27; // Kreis 3 const int SPL_MediumHeal = 28; const int SPL_LightningFlash = 29; const int SPL_ChargeFireball = 30; const int SPL_SummonSkeleton = 31; const int SPL_Fear = 32; const int SPL_IceCube = 33; // Kreis 4 const int SPL_ChargeZap = 34; const int SPL_SummonGolem = 35; const int SPL_DestroyUndead = 36; const int SPL_Pyrokinesis = 37; // Kreis 5 const int SPL_Firestorm = 38; const int SPL_IceWave = 39; const int SPL_SummonDemon = 40; const int SPL_FullHeal = 41; // Kreis 6 const int SPL_Firerain = 42; const int SPL_BreathOfDeath = 43; const int SPL_MassDeath = 44; const int SPL_ArmyOfDarkness = 45; const int SPL_Shrink = 46; // Scrolls const int SPL_TrfSheep = 47; const int SPL_TrfScavenger = 48; const int SPL_TrfGiantRat = 49; const int SPL_TrfGiantBug = 50; const int SPL_TrfWolf = 51; const int SPL_TrfWaran = 52; const int SPL_TrfSnapper = 53; const int SPL_TrfWarg = 54; const int SPL_TrfFireWaran = 55; const int SPL_TrfLurker = 56; const int SPL_TrfShadowbeast = 57; const int SPL_TrfDragonSnapper = 58; const int SPL_Charm = 59; // MAX_SPELL (Gothic) // Kreis 5 const int SPL_MasterOfDisaster = 60; // ??? const int SPL_Deathbolt = 61; const int SPL_Deathball = 62; const int SPL_ConcussionBolt = 63; const int SPL_Reserved_64 = 64; // SPL_E const int SPL_Reserved_65 = 65; // SPL_F const int SPL_Reserved_66 = 66; // SPL_G const int SPL_Reserved_67 = 67; // SPL_H const int SPL_Reserved_68 = 68; // MAX_SPELL (Gothic2) const int SPL_Reserved_69 = 69; // Magick (Wasser) const int SPL_Thunderstorm = 70; const int SPL_Whirlwind = 71; const int SPL_WaterFist = 72; const int SPL_IceLance = 73; const int SPL_Inflate = 74; const int SPL_Geyser = 75; const int SPL_Waterwall = 76; const int SPL_Reserved_77 = 77; const int SPL_Reserved_78 = 78; const int SPL_Reserved_79 = 79; // Magick (Maya) const int SPL_Plague = 80; const int SPL_Swarm = 81; const int SPL_GreenTentacle = 82; const int SPL_Earthquake = 83; const int SPL_SummonGuardian = 84; const int SPL_Energyball = 85; const int SPL_SuckEnergy = 86; const int SPL_Skull = 87; const int SPL_SummonZombie = 88; const int SPL_SummonMud = 89; // ... const int SPL_Reserved_90 = 90; const int SPL_Reserved_91 = 91; const int SPL_Reserved_92 = 92; const int SPL_Reserved_93 = 93; const int SPL_Reserved_94 = 94; const int SPL_Reserved_95 = 95; const int SPL_Reserved_96 = 96; const int SPL_Reserved_97 = 97; const int SPL_Reserved_98 = 98; const int SPL_Reserved_99 = 99; const int MAX_SPELL = 100; // 59 (Gothic), 68 (Gothic2), 100 (G2Addon) //////////////////////////////////////////////////////////////////////////////// // // Spells: Fx-/Spell-Klassennamen (Array) // const string spellFxInstanceNames[MAX_SPELL] = { // Paladin-Runen "PalLight", // 0 SPL_PalLight "PalHeal", // 1 SPL_PalLightHeal "PalHolyBolt", // 2 SPL_PalHolyBolt "PalHeal", // 3 SPL_PalMediumHeal "PalRepelEvil", // 4 SPL_PalRepelEvil "PalHeal", // 5 SPL_PalFullHeal "PalDestroyEvil", // 6 SPL_PalDestroyEvil // Teleport-Runen "Teleport", // 7 SPL_PalTeleportSecret "Teleport", // 8 SPL_TeleportSeaport "Teleport", // 9 SPL_TeleportMonastery "Teleport", // 10 SPL_TeleportFarm "Teleport", // 11 SPL_TeleportXardas "Teleport", // 12 SPL_TeleportPassNW "Teleport", // 13 SPL_TeleportPassOW "Teleport", // 14 SPL_TeleportOC "Teleport", // 15 SPL_TeleportOWDemonTower "Teleport", // 16 SPL_TeleportTaverne "Teleport", // 17 SPL_Teleport_3 // Kreis 1 "Light", // 18 SPL_Light "Firebolt", // 19 SPL_Firebolt // Kreis 2 "Icebolt", // 20 SPL_Icebolt // Kreis 1 "Heal", // 21 SPL_LightHeal "SummonGoblinSkeleton", // 22 SPL_SummonGoblinSkeleton // Kreis 2 "InstantFireball", // 23 SPL_InstantFireball // Kreis 1 "Zap", // 24 SPL_Zap // Kreis 2 "SummonWolf", // 25 SPL_SummonWolf "WindFist", // 26 SPL_WindFist "Sleep", // 27 SPL_Sleep // Kreis 3 "Heal", // 28 SPL_MediumHeal "LightningFlash", // 29 SPL_LightningFlash "ChargeFireball", // 30 SPL_ChargeFireball "SummonSkeleton", // 31 SPL_SummonSkeleton "Fear", // 32 SPL_Fear "Icecube", // 33 SPL_IceCube // Kreis 4 "ChargeZap", // 34 SPL_ChargeZap "SummonGolem", // 53 SPL_SummonGolem "DestroyUndead", // 36 SPL_DestroyUndead "Pyrokinesis", // 37 SPL_Pyrokinesis // Kreis 5 "Firestorm", // 38 SPL_Firestorm "Icewave", // 39 SPL_IceWave "SummonDemon", // 40 SPL_SummonDemon "Heal", // 41 SPL_FullHeal // Kreis 6 "Firerain", // 42 SPL_Firerain "BreathOfDeath", // 43 SPL_BreathOfDeath "MassDeath", // 44 SPL_MassDeath "ArmyOfDarkness", // 45 SPL_ArmyOfDarkness "Shrink", // 46 SPL_Shrink // Scrolls "Transform", // 47 SPL_TrfSheep "Transform", // 48 SPL_TrfScavenger "Transform", // 49 SPL_TrfGiantRat "Transform", // 50 SPL_TrfGiantBug "Transform", // 51 SPL_TrfWolf "Transform", // 52 SPL_TrfWaran "Transform", // 53 SPL_TrfSnapper "Transform", // 54 SPL_TrfWarg "Transform", // 55 SPL_TrfFireWaran "Transform", // 56 SPL_TrfLurker "Transform", // 57 SPL_TrfShadowbeast "Transform", // 58 SPL_TrfDragonSnapper "Charm", // 59 SPL_Charm // Kreis 5 "MasterOfDisaster", // 60 SPL_MasterOfDisaster // ??? "Deathbolt", // 61 SPL_Deathbolt "Deathball", // 62 SPL_Deathball "Concussionbolt", // 63 SPL_Concussionbolt "Light", // 64 SPL_Reserved_64 "Light", // 65 SPL_Reserved_65 "Light", // 66 SPL_Reserved_66 "Light", // 67 SPL_Reserved_67 "Light", // 68 SPL_Reserved_68 "Light", // 69 SPL_Reserved_69 // Magick (Wasser) "Thunderstorm", // 70 SPL_Thunderstorm "Whirlwind", // 71 SPL_Whirlwind "Waterfist", // 72 SPL_WaterFist "IceLance", // 73 SPL_IceLance "Sleep", // 74 SPL_Inflate "Geyser", // 75 SPL_Geyser "Firerain", // 76 SPL_Waterwall "Light", // 77 SPL_Reserved_77 "Light", // 78 SPL_Reserved_78 "Light", // 79 SPL_Reserved_79 // Magick (Maya) "Fear", // 80 SPL_Plague "Swarm", // 81 SPL_Swarm "Greententacle", // 82 SPL_GreenTentacle "Firerain", // 83 SPL_Earthquake "SummonGuardian", // 84 SPL_SummonGuardian "Energyball", // 85 SPL_Energyball "SuckEnergy", // 86 SPL_SuckEnergy "Skull", // 87 SPL_Skull "SummonZombie", // 88 SPL_SummonZombie "SummonMud", // 89 SPL_SummonMud // ... "Light", // 90 SPL_Reserved_90 "Light", // 91 SPL_Reserved_91 "Light", // 92 SPL_Reserved_92 "Light", // 93 SPL_Reserved_93 "Light", // 94 SPL_Reserved_94 "Light", // 95 SPL_Reserved_95 "Light", // 96 SPL_Reserved_96 "Light", // 97 SPL_Reserved_97 "Light", // 98 SPL_Reserved_98 "Light" // 99 SPL_Reserved_99 }; //////////////////////////////////////////////////////////////////////////////// // // Spells: Animationskürzel (Array) // const string spellFxAniLetters[MAX_SPELL] = { // Paladin-Runen "SLE", // 0 SPL_PalLight "HEA", // 1 SPL_PalLightHeal "FBT", // 2 SPL_PalHolyBolt "HEA", // 3 SPL_PalMediumHeal "FBT", // 4 SPL_PalRepelEvil "HEA", // 5 SPL_PalFullHeal "FIB", // 6 SPL_PalDestroyEvil // Teleport-Runen "HEA", // 7 SPL_PalTeleportSecret "HEA", // 8 SPL_TeleportSeaport "HEA", // 9 SPL_TeleportMonastery "HEA", // 10 SPL_TeleportFarm "HEA", // 11 SPL_TeleportXardas "HEA", // 12 SPL_TeleportPassNW "HEA", // 13 SPL_TeleportPassOW "HEA", // 14 SPL_TeleportOC "HEA", // 15 SPL_TeleportOWDemonTower "HEA", // 16 SPL_TeleportTaverne "HEA", // 17 SPL_Teleport_3 // Kreis 1 "SLE", // 18 SPL_Light "FBT", // 19 SPL_Firebolt // Kreis 2 "FBT", // 20 SPL_Icebolt // Kreis 1 "HEA", // 21 SPL_LightHeal "SUM", // 22 SPL_SummonGoblinSkeleton // Kreis 2 "FBT", // 23 SPL_InstantFireball // Kreis 1 "FBT", // 24 SPL_Zap // Kreis 2 "SUM", // 25 SPL_SummonWolf "WND", // 26 SPL_WindFist "SLE", // 27 SPL_Sleep // Kreis 3 "HEA", // 28 SPL_MediumHeal "WND", // 29 SPL_LightningFlash "FIB", // 30 SPL_ChargeFireball "SUM", // 31 SPL_SummonSkeleton "FEA", // 32 SPL_Fear "FRZ", // 33 SPL_IceCube "FIB", // 34 SPL_ChargeZap // Kreis 4 "SUM", // 35 SPL_SummonGolem "FIB", // 36 SPL_DestroyUndead "FIB", // 37 SPL_Pyrokinesis // Kreis 5 "FIB", // 38 SPL_Firestorm "FEA", // 39 SPL_IceWave "SUM", // 40 SPL_SummonDemon "HEA", // 41 SPL_FullHeal // Kreis 6 "FEA", // 42 SPL_Firerain "FIB", // 43 SPL_BreathOfDeath "MSD", // 44 SPL_MassDeath "SUM", // 45 SPL_ArmyOfDarkness "SLE", // 46 SPL_Shrink // Scrolls "TRF", // 47 SPL_TrfSheep "TRF", // 48 SPL_TrfScavenger "TRF", // 49 SPL_TrfGiantRat "TRF", // 50 SPL_TrfGiantBug "TRF", // 51 SPL_TrfWolf "TRF", // 52 SPL_TrfWaran "TRF", // 53 SPL_TrfSnapper "TRF", // 54 SPL_TrfWarg "TRF", // 55 SPL_TrfFireWaran "TRF", // 56 SPL_TrfLurker "TRF", // 57 SPL_TrfShadowbeast "TRF", // 58 SPL_TrfDragonSnapper "FIB", // 59 SPL_Charm // Kreis 5 "FIB", // 60 SPL_MasterOfDisaster // ??? "FBT", // 61 SPL_Deathbolt "FBT", // 62 SPL_Deathball "FBT", // 63 SPL_Concussionbolt "XXX", // 64 SPL_Reserved_64 "XXX", // 65 SPL_Reserved_65 "XXX", // 66 SPL_Reserved_66 "XXX", // 67 SPL_Reserved_67 "XXX", // 68 SPL_Reserved_68 "XXX", // 69 SPL_Reserved_69 // Magick (Wasser) "STM", // 70 SPL_Thunderstorm "WHI", // 71 SPL_Whirlwind "WND", // 72 SPL_WaterFist "FBT", // 73 SPL_IceLance "SLE", // 74 SPL_Inflate "WND", // 75 SPL_Geyser "FEA", // 76 SPL_Waterwall "XXX", // 77 SPL_Reserved_77 "XXX", // 78 SPL_Reserved_78 "XXX", // 79 SPL_Reserved_79 // Magick (Maya) "FBT", // 80 SPL_Plague "FBT", // 81 SPL_Swarm "FRZ", // 82 SPL_GreenTentacle "FEA", // 83 SPL_Earthquake "SUM", // 84 SPL_SummonGuardian "WND", // 85 SPL_Energyball "WND", // 86 SPL_SuckEnergy "WND", // 87 SPL_Skull "SUM", // 88 SPL_SummonZombie "SUM", // 89 SPL_SummonMud // ... "XXX", // 90 SPL_Reserved_90 "XXX", // 91 SPL_Reserved_91 "XXX", // 92 SPL_Reserved_92 "XXX", // 93 SPL_Reserved_93 "XXX", // 94 SPL_Reserved_94 "XXX", // 95 SPL_Reserved_95 "XXX", // 96 SPL_Reserved_96 "XXX", // 97 SPL_Reserved_97 "XXX", // 98 SPL_Reserved_98 "XXX" // 99 SPL_Reserved_99 }; // ******* // Talente // ******* const int NPC_TALENT_UNKNOWN = 0; // Skilled Talents const int NPC_TALENT_1H = 1; const int NPC_TALENT_2H = 2; const int NPC_TALENT_BOW = 3; const int NPC_TALENT_CROSSBOW = 4; const int NPC_TALENT_PICKLOCK = 5; //wird jetzt per DEX geregelt //const int NPC_TALENT_PICKPOCKET = 6; //altes Pickpocket aus Gothic 1 - NICHT benutzen! Bleibt als Relikt im Code // Magiekreis const int NPC_TALENT_MAGE = 7; // Special-Talents const int NPC_TALENT_SNEAK = 8; const int NPC_TALENT_REGENERATE = 9; //??? was ist davon drin? const int NPC_TALENT_FIREMASTER = 10; //??? was ist davon drin? const int NPC_TALENT_ACROBAT = 11; //--> Anis ändern! // NEW Talents //werden komplett auf Scriptebene umgesetzt - Programm braucht sie nur für Ausgabe im Characterscreen const int NPC_TALENT_PICKPOCKET = 12; const int NPC_TALENT_SMITH = 13; const int NPC_TALENT_RUNES = 14; const int NPC_TALENT_ALCHEMY = 15; const int NPC_TALENT_TAKEANIMALTROPHY = 16; const int NPC_TALENT_FOREIGNLANGUAGE = 17; const int NPC_TALENT_WISPDETECTOR = 18; const int NPC_TALENT_C = 19; const int NPC_TALENT_D = 20; const int NPC_TALENT_E = 21; const int NPC_TALENT_MAX = 22; //ehem. 12 // ************* // Runen-Talente // ************* var int PLAYER_TALENT_RUNES[MAX_SPELL]; //Die SPL_ Konstanten werden hierfür als Kennung verwendet // ************* // ForeignLanguage-TalentStufen // ************* const int LANGUAGE_1 = 0; const int LANGUAGE_2 = 1; const int LANGUAGE_3 = 2; const int MAX_LANGUAGE = 3; var int PLAYER_TALENT_FOREIGNLANGUAGE[MAX_LANGUAGE]; // ************* // WispDetector-Talente // ************* const int WISPSKILL_NF = 0; const int WISPSKILL_FF = 1; const int WISPSKILL_NONE = 2; const int WISPSKILL_RUNE = 3; const int WISPSKILL_MAGIC = 4; const int WISPSKILL_FOOD = 5; const int WISPSKILL_POTIONS = 6; const int MAX_WISPSKILL = 7; var int PLAYER_TALENT_WISPDETECTOR [MAX_WISPSKILL]; VAR int WispSearching; const int WispSearch_Follow = 1; const int WispSearch_ALL = 2; const int WispSearch_POTIONS = 3; const int WispSearch_MAGIC = 4; const int WispSearch_FOOD = 5; const int WispSearch_NF = 6; const int WispSearch_FF = 7; const int WispSearch_NONE = 8; const int WispSearch_RUNE = 9; // **************** // Alchemie-Talente // **************** const int POTION_Health_01 = 0; const int POTION_Health_02 = 1; const int POTION_Health_03 = 2; const int POTION_Mana_01 = 3; const int POTION_Mana_02 = 4; const int POTION_Mana_03 = 5; const int POTION_Speed = 6; const int POTION_Perm_STR = 7; const int POTION_Perm_DEX = 8; const int POTION_Perm_Mana = 9; const int POTION_Perm_Health = 10; const int POTION_MegaDrink = 11; const int CHARGE_Innoseye = 12; const int POTION_Mana_04 = 13; const int POTION_Health_04 = 14; const int MAX_POTION = 15; var int PLAYER_TALENT_ALCHEMY[MAX_POTION]; // *************** // Schmied-Talente // *************** const int WEAPON_Common = 0; const int WEAPON_1H_Special_01 = 1; const int WEAPON_2H_Special_01 = 2; const int WEAPON_1H_Special_02 = 3; const int WEAPON_2H_Special_02 = 4; const int WEAPON_1H_Special_03 = 5; const int WEAPON_2H_Special_03 = 6; const int WEAPON_1H_Special_04 = 7; const int WEAPON_2H_Special_04 = 8; const int WEAPON_1H_Harad_01 = 9; const int WEAPON_1H_Harad_02 = 10; const int WEAPON_1H_Harad_03 = 11; const int WEAPON_1H_Harad_04 = 12; const int MAX_WEAPONS = 13; var int PLAYER_TALENT_SMITH[MAX_WEAPONS]; // ******************** // AnimalTrophy-Talente // ******************** const int TROPHY_Teeth = 0; const int TROPHY_Claws = 1; const int TROPHY_Fur = 2; const int TROPHY_Heart = 3; const int TROPHY_ShadowHorn = 4; const int TROPHY_FireTongue = 5; const int TROPHY_BFWing = 6; const int TROPHY_BFSting = 7; const int TROPHY_Mandibles = 8; const int TROPHY_CrawlerPlate = 9; const int TROPHY_DrgSnapperHorn = 10; const int TROPHY_DragonScale = 11; const int TROPHY_DragonBlood = 12; const int TROPHY_ReptileSkin = 13; const int MAX_TROPHIES = 14; var int PLAYER_TALENT_TAKEANIMALTROPHY[MAX_TROPHIES]; // **************************************** // Font-Konstanten der Engine (ausgelagert) // **************************************** const string TEXT_FONT_20 = "Font_old_20_white.tga"; const string TEXT_FONT_10 = "Font_old_10_white.tga"; const string TEXT_FONT_DEFAULT = "Font_old_10_white.tga"; const string TEXT_FONT_Inventory = "Font_old_10_white.tga"; // **************************************** // wie lange bklleibt ein TExt (OU) stehen, // wenn kein wav da ist (msec/character) // **************************************** const float VIEW_TIME_PER_CHAR = 550; // **************************************** // LevelZen-Abfrage im B_Kapitelwechsel // **************************************** const int MAHLENDUR = 1; const int OLDWORLD_ZEN = 2; const int DRAGONISLAND_ZEN = 3; const int ADDONWORLD_ZEN = 4; // **************************************** // Kamera für Inventory-Items // **************************************** const int INVCAM_ENTF_RING_STANDARD = 400; const int INVCAM_ENTF_AMULETTE_STANDARD = 150; const int INVCAM_ENTF_MISC_STANDARD = 200; const int INVCAM_ENTF_MISC2_STANDARD = 250; const int INVCAM_ENTF_MISC3_STANDARD = 500; const int INVCAM_ENTF_MISC4_STANDARD = 650; const int INVCAM_ENTF_MISC5_STANDARD = 850; const int INVCAM_X_RING_STANDARD = 25; const int INVCAM_Z_RING_STANDARD = 45; /* const int INVCAM_ENTF_MISC_STANDARD = 150; const int INVCAM_X_MISC_STANDARD = 0; const int INVCAM_Y_MISC_STANDARD = 0; const int INVCAM_Z_MISC_STANDARD = 0; */