Benutzer-Werkzeuge

Webseiten-Werkzeuge


Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
daedalus:nuetzliches [2016/02/06 13:54]
milgo
daedalus:nuetzliches [2016/02/06 13:59]
milgo
Zeile 1: Zeile 1:
-===  Taschendiebstahl-Dialoge für alle ===+===== Taschendiebstahl-Dialoge für alle =====
  
 <code C> <code C>
Zeile 127: Zeile 127:
 </​code>​ </​code>​
  
-===  Mehr Gilden einfügen ===+===== Mehr Gilden einfügen ​=====
  
 Constans.d-Auszug Constans.d-Auszug
Zeile 206: Zeile 206:
  
 const int GIL_SEPERATOR_HUM ​               = 16    ; const int GIL_SEPERATOR_HUM ​               = 16    ;
 +</​code>​
  
 Dann... Text.d Auszug Dann... Text.d Auszug
 +
 +<code C>
 // **************************************************************************************** // ****************************************************************************************
 // Gildennamen // Gildennamen
Zeile 272: Zeile 275:
  
  
-==  Zufallsfunktion mit passenderer statistischer Verteilung ==+===== Zufallsfunktion mit passenderer statistischer Verteilung ​=====
  
 <code C> <code C>
Zeile 324: Zeile 327:
 </​code>​ </​code>​
  
-==  [für Fortgeschritene] Zufällige Attribute für Npcs =+=====  Automatische Übertragung von Gegenständen von Opfer nach Hero =====
- +
-<code C> +
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
-// +
-//​ B_SetAttributesRandom +
-// - - - - - - - - - - - - - - - - - - - - - - - - +
-// +
-// Setzt die Attribute mit Hilfe eines Zufalls. +
-// Nötig ist dafür die Stärkeklasse des Npc für Nah, Fern & Magie Kampf. +
-// +
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
- +
-/*  +
- Zur Erinnerung - Auszug AI_Constants.d:​ +
- +
- Stärkeklassen für die Zufalls-Attribute +
- - - - - - - - - - - - - - - - - - - - +
- +
- const int COWARD = 0; //Lars, NK & FK der Magier +
- const int NORMAL = 1;​ //​leichte Axt & Schwertkämpfer,​ Arbeiter und leichte NK Späher +
- const int STRONG = 2;​ //​schwere Axt & Schwertkämpfer,​ Schwere Späher +
- const int RAISED = 3;​ //​Wächter,​ Krieger, FK der Späher, Magier +
- const int MASTER = 4; //alle Anführer. +
- +
-*/ +
- +
-func void B_SetAttributesRandom (var int nahKampf, var int fernKampf, var int magieKampf) +
-+
- // - - - - - Resett for Random - - - - - -  +
- Hlp_Rand_Resett();​ +
-  +
- var int rnd; +
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
- //​ Allgemeine Attribute +
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
- +
- if nahKampf == MASTER +
- || fernKampf == MASTER +
- || magieKampf == MASTER +
-+
- self.fight_tactic = FAI_HUMAN_MASTER;​  +
-  +
- // 40 - 60 +
- rnd = Hlp_Rand(20);​ +
- self.level = 40 + rnd;​ //​nicht 0 wegen XP (10 * Level) +
-+
- else if nahKampf == RAISED +
- || fernKampf == RAISED +
- || magieKampf == RAISED +
-+
- self.fight_tactic = FAI_HUMAN_MASTER;​  +
-  +
- // 30 - 50 +
- rnd = Hlp_Rand(20);​ +
- self.level = 30 + rnd;​ //​nicht 0 wegen XP (10 * Level) +
-+
- else if nahKampf == STRONG +
- || fernKampf == STRONG +
- || magieKampf == STRONG +
-+
- self.fight_tactic = FAI_HUMAN_COWARD;​  +
-  +
- // 20 - 40 +
- rnd = Hlp_Rand(20);​ +
- self.level = 20 + rnd;​ //​nicht 0 wegen XP (10 * Level) +
-+
- else if nahKampf == NORMAL +
- || fernKampf == NORMAL +
- || magieKampf == NORMAL +
-+
- self.fight_tactic = FAI_HUMAN_NORMAL;​  +
- // 10 - 30 +
- rnd = Hlp_Rand(20);​ +
- self.level = 10 + rnd;​ //​nicht 0 wegen XP (10 * Level) +
-+
- else //Alles COWARD +
-+
- self.fight_tactic = FAI_HUMAN_COWARD;​  +
- // 1 - 10 +
- rnd = Hlp_Rand(9);​ +
- self.level = 1 + rnd;​ //​nicht 0 wegen XP (10 * Level) +
-  +
- }; +
-  +
- //- - - - - - Nach Level  - - - - - - - - - +
- self.attribute[ATR_HITPOINTS_MAX] = (self.level + 1) * 10; +
- self.attribute[ATR_HITPOINTS] = self.attribute[ATR_HITPOINTS_MAX];​ +
-  +
- //  - - - - - - XP für NSCs - - - - - - +
- self.exp = (500*[[self.level+1):​2)*(self.level+1]];​ +
- self.exp_next = (500*[[self.level+2):​2)*(self.level+2]];​ +
-  +
-  +
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
- //​ Nahkampf Attribute +
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
- +
- if nahKampf == NORMAL +
-+
- // 10 - 60 +
- rnd = Hlp_Rand(50);​ +
- self.attribute[ATR_STRENGTH] = 10 + rnd; +
- self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH];​ +
-  +
- // 10 - 29 --> NICHTMAL 30 +
- rnd = Hlp_Rand(19);​ +
- B_RaiseFightTalent (self, NPC_TALENT_1H,​ 10 + rnd); +
- B_RaiseFightTalent (self, NPC_TALENT_2H,​ 10 + rnd); +
-+
- else if nahKampf == STRONG +
-+
- // 50 - 130 +
- rnd = Hlp_Rand(80);​ +
- self.attribute[ATR_STRENGTH] = 50 + rnd; +
- self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH];​ +
-  +
- // mind. 30 - max 59  +
- rnd = Hlp_Rand(29);​ +
- B_RaiseFightTalent (self, NPC_TALENT_1H,​ 30 + rnd); +
- B_RaiseFightTalent (self, NPC_TALENT_2H,​ 30 + rnd); +
-+
- else if nahKampf == RAISED +
-+
- // 120 - 180  +
- rnd = Hlp_Rand(60);​ +
- self.attribute[ATR_STRENGTH] = 120 + rnd; +
- self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH];​ +
-  +
- // 60 - 80 +
- rnd = Hlp_Rand(20);​ +
- B_RaiseFightTalent (self, NPC_TALENT_1H,​ 60 + rnd); +
- B_RaiseFightTalent (self, NPC_TALENT_2H,​ 60 + rnd); +
-+
- else if nahKampf == MASTER +
-+
- // 160 - 200  +
- rnd = Hlp_Rand(40);​ +
- self.attribute[ATR_STRENGTH] = 160 + rnd; +
- self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH];​ +
-  +
- // 80 - 100 +
- rnd = Hlp_Rand(20);​ +
- B_RaiseFightTalent (self, NPC_TALENT_1H,​ 80 + rnd); +
- B_RaiseFightTalent (self, NPC_TALENT_2H,​ 80 + rnd); +
-+
- else +
-+
- // max 10 +
- rnd = Hlp_Rand(9);​ +
- self.attribute[ATR_STRENGTH] = 1 + rnd; +
- self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH];​ +
- B_RaiseFightTalent (self, NPC_TALENT_1H,​ 1 + rnd); +
- B_RaiseFightTalent (self, NPC_TALENT_2H,​ 1 + rnd); +
- }; +
-  +
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
- //​ Fernkampf-Attribute +
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
- if fernKampf == NORMAL +
-+
- // 10 - 60 +
- rnd = Hlp_Rand(50);​ +
- self.attribute[ATR_DEXTERITY] = 10 + rnd; +
- self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY];​ +
-  +
- // 10 - 29 --> NICHTMAL 30 +
- rnd = Hlp_Rand(19);​ +
- B_RaiseFightTalent (self, NPC_TALENT_BOW,​    10 + rnd); +
- B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW,​ 10 + rnd); +
-+
- else if fernKampf == STRONG +
-+
- // 50 - 130 +
- rnd = Hlp_Rand(80);​ +
- self.attribute[ATR_DEXTERITY] = 50 + rnd; +
- self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY];​ +
-  +
- // mind. 30 - max 59  +
- rnd = Hlp_Rand(29);​ +
- B_RaiseFightTalent (self, NPC_TALENT_BOW,​ 30 + rnd); +
- B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, ​ 30 + rnd); +
-+
- else if fernKampf == RAISED +
-+
- // 120 - 180  +
- rnd = Hlp_Rand(60);​ +
- self.attribute[ATR_DEXTERITY] = 120 + rnd; +
- self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY];​ +
-  +
- // 60 - 80 +
- rnd = Hlp_Rand(20);​ +
- B_RaiseFightTalent (self, NPC_TALENT_BOW,​ 60 + rnd); +
- B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, ​ 60 + rnd); +
-+
- else if fernKampf == MASTER +
-+
- // 160 - 200  +
- rnd = Hlp_Rand(40);​ +
- self.attribute[ATR_DEXTERITY] = 160 + rnd; +
- self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY];​ +
-  +
- // 80 - 100 +
- rnd = Hlp_Rand(20);​ +
- B_RaiseFightTalent (self, NPC_TALENT_BOW,​ 80 + rnd); +
- B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, ​ 80 + rnd); +
-+
- else +
-+
- // max 10 +
- rnd = Hlp_Rand(9);​ +
- self.attribute[ATR_DEXTERITY] = 1 + rnd; +
- self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY];​ +
- B_RaiseFightTalent (self, NPC_TALENT_BOW,​ 1 + rnd); +
- B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, ​ 1 + rnd); +
- }; +
-  +
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
- //​ Magie-Attribute +
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
- // Vorsicht: Dieser Abschnitt setzt voraus, dass die AI an unterschiedliche Magiebenutzung angepasst ist. (zu betrachten: B_SelectSpell.d) +
-  +
- // Gilt für Manchmal-Magier,​ zb Wächter +
- if magieKampf == NORMAL +
-+
- self.aivar[AIV_MagicUser] = MAGIC_SOMETIMES;​ +
-  +
- // 50 - 100 +
- rnd = Hlp_Rand(50);​ +
- self.attribute[ATR_MANA_MAX] = 50 + rnd; +
- self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX];​ +
- self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX];​ +
-  +
- Npc_SetTalentSkill (self,​ NPC_TALENT_MAGE,​ 2); +
-+
- // Gilt nur für Magier: +
- else if magieKampf == STRONG +
-+
- self.aivar[AIV_MagicUser] = MAGIC_ALWAYS;​ +
-  +
- // 90 - 180 +
- rnd = Hlp_Rand(90);​ +
- self.attribute[ATR_MANA_MAX] = 90 + rnd; +
- self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX];​ +
- self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX];​ +
-  +
- Npc_SetTalentSkill (self,​ NPC_TALENT_MAGE,​ 3); +
-+
- else if magieKampf == RAISED +
-+
- self.aivar[AIV_MagicUser] = MAGIC_ALWAYS;​ +
-  +
- // 170 - 260  +
- rnd = Hlp_Rand(90);​ +
- self.attribute[ATR_MANA_MAX] = 170 + rnd; +
- self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX];​ +
- self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX];​ +
-  +
- Npc_SetTalentSkill (self,​ NPC_TALENT_MAGE,​ 4); +
-+
- else if magieKampf == MASTER +
-+
- self.aivar[AIV_MagicUser] = MAGIC_ALWAYS;​ +
-  +
- // 250 - 300  +
- rnd = Hlp_Rand(50);​ +
- self.attribute[ATR_MANA_MAX] = 250 + rnd; +
- self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX];​ +
- self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX];​ +
-  +
- Npc_SetTalentSkill (self,​ NPC_TALENT_MAGE,​ 6); +
-+
- else // Alle NICHT-Magier +
-+
- self.aivar[AIV_MagicUser] = MAGIC_NEVER;​ +
-  +
- // max 10 +
- rnd = Hlp_Rand(9);​ +
- self.attribute[ATR_MANA_MAX] = 1 + rnd; +
- self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX];​ +
- self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX];​ +
-  +
- Npc_SetTalentSkill (self,​ NPC_TALENT_MAGE,​ 0); +
- }; +
-  +
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
- //​ Sonstige Talente +
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
- if fernKampf >= STRONG +
-+
- Npc_SetTalentSkill (self,​ NPC_TALENT_PICKLOCK,​ TRUE);  +
- Npc_SetTalentSkill (self,​ NPC_TALENT_SNEAK,​ TRUE); +
- Npc_SetTalentSkill (self,​ NPC_TALENT_ACROBAT,​ TRUE); +
- Npc_SetTalentSkill (self,​ NPC_TALENT_PICKPOCKET,​ TRUE);  +
- }; +
-  +
- if nahKampf >= STRONG +
-+
- Npc_SetTalentSkill (self,​ NPC_TALENT_SMITH,​ TRUE); +
- }; +
-  +
- if nahKampf >= STRONG || fernKampf >= STRONG +
-+
- Npc_SetTalentSkill (self,​ NPC_TALENT_TAKEANIMALTROPHY,​ TRUE);​ +
- }; +
-  +
- if magieKampf >= STRONG +
-+
- Npc_SetTalentSkill (self,​ NPC_TALENT_RUNES,​ TRUE); +
- Npc_SetTalentSkill (self,​ NPC_TALENT_ALCHEMY,​ TRUE); +
- }; +
-}; +
- +
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
-// +
-//​ B_SetAttributForWeapons +
-// - - - - - - - - - - - - - - - - - - - - - - +
-// +
-// Das Zufällige Austeilen von Attributen macht es nötig die Werte im Nachhinein an die Waffen anzupassen. +
-// Diese Methode schreibt die Werte neu, wenn sie nicht ausreichen die gewollten Waffen zu tragen. +
-// Dazu wird die Nebenmethode B_SetAttributForWeapon(waffe) benötigt. Die Methode setzt alle 3 Attribute und equipt die Waffe. +
-// +
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////​ +
-/* Zur Erinnerung die in der Waffe beschriebenen benötigten Attribute: (Classes.d) +
-  +
- // Benötigte Attribute zum Benutzen des Items +
- VAR INT cond_atr [3] ;​ +
- VAR INT cond_value [3] ;​ +
- +
-(constants.d) +
- +
-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 +
- +
-*/ +
- +
-func void B_SetAttributForWeapon(var int waffenInstanz) +
-+
- //- - - - - Resett for Random - - - - - - +
- Hlp_Rand_Resett();​ +
-  +
- var int rnd; rnd = Hlp_Rand(10);​ +
-  +
- //​Notausstieg:​ +
- if waffenInstanz == nothing //NO_ARMOR ist Ersatz für nil oder nothing +
-+
- return;​  +
-+
- else +
-+
- CreateInvItems (self,​ waffenInstanz,​ 1);​ +
- }; +
-  +
- if item.cond_atr[0] == ATR_HITPOINTS { if self.attribute[ATR_HITPOINTS] < item.cond_value[0] {self.attribute[ATR_HITPOINTS] = item.cond_value[0] + rnd; }; } +
- else if item.cond_atr[0] == ATR_HITPOINTS_MAX { if self.attribute[ATR_HITPOINTS_MAX] < item.cond_value[0] {self.attribute[ATR_HITPOINTS_MAX] = item.cond_value[0] + rnd; }; } +
- else if item.cond_atr[0] == ATR_MANA { if self.attribute[ATR_MANA] < item.cond_value[0] {self.attribute[ATR_MANA] = item.cond_value[0] + rnd; }; } +
- else if item.cond_atr[0] == ATR_MANA_MAX { if self.attribute[ATR_MANA_MAX] < item.cond_value[0] {self.attribute[ATR_MANA_MAX] = item.cond_value[0] + rnd; }; } +
- else if item.cond_atr[0] == ATR_STRENGTH { if self.attribute[ATR_STRENGTH] < item.cond_value[0] {self.attribute[ATR_STRENGTH] = item.cond_value[0] + rnd; }; } +
- else if item.cond_atr[0] == ATR_DEXTERITY { if self.attribute[ATR_DEXTERITY] < item.cond_value[0] {self.attribute[ATR_DEXTERITY] = item.cond_value[0] + rnd; }; } +
- else if item.cond_atr[0] == ATR_REGENERATEHP { if self.attribute[ATR_REGENERATEHP] < item.cond_value[0] {self.attribute[ATR_REGENERATEHP] = item.cond_value[0] + rnd; }; } +
- else if item.cond_atr[0] == ATR_REGENERATEMANA { if self.attribute[ATR_REGENERATEMANA] < item.cond_value[0] {self.attribute[ATR_REGENERATEMANA] = item.cond_value[0] + rnd; }; }; +
-  +
- if item.cond_atr[1] == ATR_HITPOINTS { if self.attribute[ATR_HITPOINTS] < item.cond_value[1] {self.attribute[ATR_HITPOINTS] = item.cond_value[1] + rnd; }; } +
- else if item.cond_atr[1] == ATR_HITPOINTS_MAX { if self.attribute[ATR_HITPOINTS_MAX] < item.cond_value[1] {self.attribute[ATR_HITPOINTS_MAX] = item.cond_value[1] + rnd; }; } +
- else if item.cond_atr[1] == ATR_MANA { if self.attribute[ATR_MANA] < item.cond_value[1] {self.attribute[ATR_MANA] = item.cond_value[1] + rnd; }; } +
- else if item.cond_atr[1] == ATR_MANA_MAX { if self.attribute[ATR_MANA_MAX] < item.cond_value[1] {self.attribute[ATR_MANA_MAX] = item.cond_value[1] + rnd; }; } +
- else if item.cond_atr[1] == ATR_STRENGTH { if self.attribute[ATR_STRENGTH] < item.cond_value[1] {self.attribute[ATR_STRENGTH] = item.cond_value[1] + rnd; }; } +
- else if item.cond_atr[1] == ATR_DEXTERITY { if self.attribute[ATR_DEXTERITY] < item.cond_value[1] {self.attribute[ATR_DEXTERITY] = item.cond_value[1] + rnd; }; } +
- else if item.cond_atr[1] == ATR_REGENERATEHP { if self.attribute[ATR_REGENERATEHP] < item.cond_value[1] {self.attribute[ATR_REGENERATEHP] = item.cond_value[1] + rnd; }; } +
- else if item.cond_atr[1] == ATR_REGENERATEMANA { if self.attribute[ATR_REGENERATEMANA] < item.cond_value[1] {self.attribute[ATR_REGENERATEMANA] = item.cond_value[1] + rnd; }; }; +
-  +
- if item.cond_atr[2] == ATR_HITPOINTS { if self.attribute[ATR_HITPOINTS] < item.cond_value[2] {self.attribute[ATR_HITPOINTS] = item.cond_value[2] + rnd; }; } +
- else if item.cond_atr[2] == ATR_HITPOINTS_MAX { if self.attribute[ATR_HITPOINTS_MAX] < item.cond_value[2] {self.attribute[ATR_HITPOINTS_MAX] = item.cond_value[2] + rnd; }; } +
- else if item.cond_atr[2] == ATR_MANA { if self.attribute[ATR_MANA] < item.cond_value[2] {self.attribute[ATR_MANA] = item.cond_value[2] + rnd; }; } +
- else if item.cond_atr[2] == ATR_MANA_MAX { if self.attribute[ATR_MANA_MAX] < item.cond_value[2] {self.attribute[ATR_MANA_MAX] = item.cond_value[2] + rnd; }; } +
- else if item.cond_atr[2] == ATR_STRENGTH { if self.attribute[ATR_STRENGTH] < item.cond_value[2] {self.attribute[ATR_STRENGTH] = item.cond_value[2] + rnd; }; } +
- else if item.cond_atr[2] == ATR_DEXTERITY { if self.attribute[ATR_DEXTERITY] < item.cond_value[2] {self.attribute[ATR_DEXTERITY] = item.cond_value[2] + rnd; }; } +
- else if item.cond_atr[2] == ATR_REGENERATEHP { if self.attribute[ATR_REGENERATEHP] < item.cond_value[2] {self.attribute[ATR_REGENERATEHP] = item.cond_value[2] + rnd; }; } +
- else if item.cond_atr[2] == ATR_REGENERATEMANA { if self.attribute[ATR_REGENERATEMANA] < item.cond_value[2] {self.attribute[ATR_REGENERATEMANA] = item.cond_value[2] + rnd; }; }; +
- +
- EquipItem(self,​waffenInstanz);​ +
-}; +
- +
-func void B_SetAttributForWeapons(var int nahKampfWaffe,​ var int ferKampfWaffe) +
-+
- if nahKampfWaffe != nothing +
-+
- B_SetAttributForWeapon(nahKampfWaffe);​ +
- }; +
- if ferKampfWaffe != nothing +
-+
- B_SetAttributForWeapon(ferKampfWaffe);​ +
- }; +
-}; +
-</​code>​ +
- +
-==  Automatische Übertragung von Gegenständen von Opfer nach Hero ==+
  
 Das folgende Script ist zu ersetzten. Dann werden in eurem Mod zukünftig alle Items, außer Rüstungen, vom Opfer-Inventar in das Helden-Inventar transferiet. Das folgende Script ist zu ersetzten. Dann werden in eurem Mod zukünftig alle Items, außer Rüstungen, vom Opfer-Inventar in das Helden-Inventar transferiet.
Zeile 1118: Zeile 718:
 </​code>​ </​code>​
  
-==  Kill-Counter erstellen ==+===== Kill-Counter erstellen ​=====
  
 So, da das auch nicht so einfach ist, gebe ich hier mal ein Beispiel für einen Kill-Counter mit folgender Attributssteigerung. So, da das auch nicht so einfach ist, gebe ich hier mal ein Beispiel für einen Kill-Counter mit folgender Attributssteigerung.
Zeile 1135: Zeile 735:
 </​code>​ </​code>​
  
-Wir tragen nach der B_GivePlayerXP noch ''​B_Counter();''​ ein. Das ruft dann unseren Counter auf, den wir im folgenden erstellen. +Wir tragen nach der ''​B_GivePlayerXP'' ​noch ''​B_Counter();''​ ein. Das ruft dann unseren Counter auf, den wir im folgenden erstellen. 
-Hierzu erstellen wir eine Datei mit dem Namen "B_Counter.d" ​im Verzeichnis ​"[GOTHIC 2]\work\data\Scripts\Content\Story\B_Story".+Hierzu erstellen wir eine Datei mit dem Namen ''​B_Counter.d'' ​im Verzeichnis ​''​[GOTHIC 2]\work\data\Scripts\Content\Story\B_Story''​.
  
 <code C> <code C>
Zeile 1151: Zeile 751:
 </​code>​ </​code>​
  
-Diese Funktion zählt jetzt eine Variable +1, da man einen NPC getötet hat. Nun müssen wir die Variable in die Story_Globals.d eintragen. Das kann ganz oben sein, ganz unten oder in der Mitte, ganz egal. Wir erstellen jetzt einfach einen neuen Abschnitt ganz oben in der Story_Globals.d:​+Diese Funktion zählt jetzt eine Variable +1, da man einen NPC getötet hat. Nun müssen wir die Variable in die ''​Story_Globals.d'' ​eintragen. Das kann ganz oben sein, ganz unten oder in der Mitte, ganz egal. Wir erstellen jetzt einfach einen neuen Abschnitt ganz oben in der ''​Story_Globals.d''​:
  
 <code C> <code C>
Zeile 1163: Zeile 763:
 Danach folgt wieder der normale Rest der Datei. Danach folgt wieder der normale Rest der Datei.
  
-Nun müssen wir im Weiteren noch die B_Counter.d in der Gothic.src eintragen, die wir mit dem normalen Text-Editor öffnen können, so wie die Skripte (Verzeichnis der Gothic.src: ​"[GOTHIC 2]\_work\data\Scripts\Content"):+Nun müssen wir im Weiteren noch die ''​B_Counter.d'' ​in der ''​Gothic.src'' ​eintragen, die wir mit dem normalen Text-Editor öffnen können, so wie die Skripte (Verzeichnis der ''​Gothic.src''​''​[GOTHIC 2]\_work\data\Scripts\Content\Gothic.src''​):
  
-<​code ​C>+<​code>​
 STORY\Log_Entries\Log_Constants_*.d STORY\Log_Entries\Log_Constants_*.d
 STORY\XP_Constants.d STORY\XP_Constants.d
Zeile 1175: Zeile 775:
 </​code>​ </​code>​
  
-Das ist jetzt nur der wichtigste Ausschnitt aus der Gothic.src. Die B_Counter darf NICHT über der Story_Globals .d stehen, da dann die Variable in der B_Counter nicht erkannt wird.+Das ist jetzt nur der wichtigste Ausschnitt aus der ''​Gothic.src''​. Die ''​B_Counter'' ​darf NICHT über der Story_Globals .d stehen, da dann die Variable in der B_Counter nicht erkannt wird.
  
  
Zeile 1204: Zeile 804:
  
 Das war's, nun noch Skripte parsen und fertig ist euer Kill-Counter mit Learning by Doing-System. Das war's, nun noch Skripte parsen und fertig ist euer Kill-Counter mit Learning by Doing-System.
 +
 +===== [für Fortgeschritene] Zufällige Attribute für Npcs =====
 +
 +<code C>
 +///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 +//
 +//​ B_SetAttributesRandom
 +// - - - - - - - - - - - - - - - - - - - - - - - -
 +//
 +// Setzt die Attribute mit Hilfe eines Zufalls.
 +// Nötig ist dafür die Stärkeklasse des Npc für Nah, Fern & Magie Kampf.
 +//
 +///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 +
 +/* 
 + Zur Erinnerung - Auszug AI_Constants.d:​
 +
 + Stärkeklassen für die Zufalls-Attribute
 + - - - - - - - - - - - - - - - - - - -
 +
 + const int COWARD = 0; //Lars, NK & FK der Magier
 + const int NORMAL = 1;​ //​leichte Axt & Schwertkämpfer,​ Arbeiter und leichte NK Späher
 + const int STRONG = 2;​ //​schwere Axt & Schwertkämpfer,​ Schwere Späher
 + const int RAISED = 3;​ //​Wächter,​ Krieger, FK der Späher, Magier
 + const int MASTER = 4; //alle Anführer.
 +
 +*/
 +
 +func void B_SetAttributesRandom (var int nahKampf, var int fernKampf, var int magieKampf)
 +{
 + // - - - - - Resett for Random - - - - - - 
 + Hlp_Rand_Resett();​
 +
 + var int rnd;
 + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 + //​ Allgemeine Attribute
 + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 +
 + if nahKampf == MASTER
 + || fernKampf == MASTER
 + || magieKampf == MASTER
 + {
 + self.fight_tactic = FAI_HUMAN_MASTER;​
 +
 + // 40 - 60
 + rnd = Hlp_Rand(20);​
 + self.level = 40 + rnd;​ //​nicht 0 wegen XP (10 * Level)
 + }
 + else if nahKampf == RAISED
 + || fernKampf == RAISED
 + || magieKampf == RAISED
 + {
 + self.fight_tactic = FAI_HUMAN_MASTER;​
 +
 + // 30 - 50
 + rnd = Hlp_Rand(20);​
 + self.level = 30 + rnd;​ //​nicht 0 wegen XP (10 * Level)
 + }
 + else if nahKampf == STRONG
 + || fernKampf == STRONG
 + || magieKampf == STRONG
 + {
 + self.fight_tactic = FAI_HUMAN_COWARD;​
 +
 + // 20 - 40
 + rnd = Hlp_Rand(20);​
 + self.level = 20 + rnd;​ //​nicht 0 wegen XP (10 * Level)
 + }
 + else if nahKampf == NORMAL
 + || fernKampf == NORMAL
 + || magieKampf == NORMAL
 + {
 + self.fight_tactic = FAI_HUMAN_NORMAL;​
 + // 10 - 30
 + rnd = Hlp_Rand(20);​
 + self.level = 10 + rnd;​ //​nicht 0 wegen XP (10 * Level)
 + }
 + else //Alles COWARD
 + {
 + self.fight_tactic = FAI_HUMAN_COWARD;​
 + // 1 - 10
 + rnd = Hlp_Rand(9);​
 + self.level = 1 + rnd;​ //​nicht 0 wegen XP (10 * Level)
 +
 + };
 +
 + //- - - - - - Nach Level  - - - - - - - - -
 + self.attribute[ATR_HITPOINTS_MAX] = (self.level + 1) * 10;
 + self.attribute[ATR_HITPOINTS] = self.attribute[ATR_HITPOINTS_MAX];​
 +
 + //  - - - - - - XP für NSCs - - - - - -
 + self.exp = (500*[[self.level+1):​2)*(self.level+1]];​
 + self.exp_next = (500*[[self.level+2):​2)*(self.level+2]];​
 +
 +
 + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 + //​ Nahkampf Attribute
 + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 +
 + if nahKampf == NORMAL
 + {
 + // 10 - 60
 + rnd = Hlp_Rand(50);​
 + self.attribute[ATR_STRENGTH] = 10 + rnd;
 + self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH];​
 +
 + // 10 - 29 --> NICHTMAL 30
 + rnd = Hlp_Rand(19);​
 + B_RaiseFightTalent (self, NPC_TALENT_1H,​ 10 + rnd);
 + B_RaiseFightTalent (self, NPC_TALENT_2H,​ 10 + rnd);
 + }
 + else if nahKampf == STRONG
 + {
 + // 50 - 130
 + rnd = Hlp_Rand(80);​
 + self.attribute[ATR_STRENGTH] = 50 + rnd;
 + self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH];​
 +
 + // mind. 30 - max 59 
 + rnd = Hlp_Rand(29);​
 + B_RaiseFightTalent (self, NPC_TALENT_1H,​ 30 + rnd);
 + B_RaiseFightTalent (self, NPC_TALENT_2H,​ 30 + rnd);
 + }
 + else if nahKampf == RAISED
 + {
 + // 120 - 180
 + rnd = Hlp_Rand(60);​
 + self.attribute[ATR_STRENGTH] = 120 + rnd;
 + self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH];​
 +
 + // 60 - 80
 + rnd = Hlp_Rand(20);​
 + B_RaiseFightTalent (self, NPC_TALENT_1H,​ 60 + rnd);
 + B_RaiseFightTalent (self, NPC_TALENT_2H,​ 60 + rnd);
 + }
 + else if nahKampf == MASTER
 + {
 + // 160 - 200
 + rnd = Hlp_Rand(40);​
 + self.attribute[ATR_STRENGTH] = 160 + rnd;
 + self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH];​
 +
 + // 80 - 100
 + rnd = Hlp_Rand(20);​
 + B_RaiseFightTalent (self, NPC_TALENT_1H,​ 80 + rnd);
 + B_RaiseFightTalent (self, NPC_TALENT_2H,​ 80 + rnd);
 + }
 + else
 + {
 + // max 10
 + rnd = Hlp_Rand(9);​
 + self.attribute[ATR_STRENGTH] = 1 + rnd;
 + self.aivar[REAL_STRENGTH] = self.attribute[ATR_STRENGTH];​
 + B_RaiseFightTalent (self, NPC_TALENT_1H,​ 1 + rnd);
 + B_RaiseFightTalent (self, NPC_TALENT_2H,​ 1 + rnd);
 + };
 +
 + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 + //​ Fernkampf-Attribute
 + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 + if fernKampf == NORMAL
 + {
 + // 10 - 60
 + rnd = Hlp_Rand(50);​
 + self.attribute[ATR_DEXTERITY] = 10 + rnd;
 + self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY];​
 +
 + // 10 - 29 --> NICHTMAL 30
 + rnd = Hlp_Rand(19);​
 + B_RaiseFightTalent (self, NPC_TALENT_BOW,​    10 + rnd);
 + B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW,​ 10 + rnd);
 + }
 + else if fernKampf == STRONG
 + {
 + // 50 - 130
 + rnd = Hlp_Rand(80);​
 + self.attribute[ATR_DEXTERITY] = 50 + rnd;
 + self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY];​
 +
 + // mind. 30 - max 59 
 + rnd = Hlp_Rand(29);​
 + B_RaiseFightTalent (self, NPC_TALENT_BOW,​ 30 + rnd);
 + B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, ​ 30 + rnd);
 + }
 + else if fernKampf == RAISED
 + {
 + // 120 - 180
 + rnd = Hlp_Rand(60);​
 + self.attribute[ATR_DEXTERITY] = 120 + rnd;
 + self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY];​
 +
 + // 60 - 80
 + rnd = Hlp_Rand(20);​
 + B_RaiseFightTalent (self, NPC_TALENT_BOW,​ 60 + rnd);
 + B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, ​ 60 + rnd);
 + }
 + else if fernKampf == MASTER
 + {
 + // 160 - 200
 + rnd = Hlp_Rand(40);​
 + self.attribute[ATR_DEXTERITY] = 160 + rnd;
 + self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY];​
 +
 + // 80 - 100
 + rnd = Hlp_Rand(20);​
 + B_RaiseFightTalent (self, NPC_TALENT_BOW,​ 80 + rnd);
 + B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, ​ 80 + rnd);
 + }
 + else
 + {
 + // max 10
 + rnd = Hlp_Rand(9);​
 + self.attribute[ATR_DEXTERITY] = 1 + rnd;
 + self.aivar[REAL_DEXTERITY] = self.attribute[ATR_DEXTERITY];​
 + B_RaiseFightTalent (self, NPC_TALENT_BOW,​ 1 + rnd);
 + B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, ​ 1 + rnd);
 + };
 +
 + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 + //​ Magie-Attribute
 + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 + // Vorsicht: Dieser Abschnitt setzt voraus, dass die AI an unterschiedliche Magiebenutzung angepasst ist. (zu betrachten: B_SelectSpell.d)
 +
 + // Gilt für Manchmal-Magier,​ zb Wächter
 + if magieKampf == NORMAL
 + {
 + self.aivar[AIV_MagicUser] = MAGIC_SOMETIMES;​
 +
 + // 50 - 100
 + rnd = Hlp_Rand(50);​
 + self.attribute[ATR_MANA_MAX] = 50 + rnd;
 + self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX];​
 + self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX];​
 +
 + Npc_SetTalentSkill (self,​ NPC_TALENT_MAGE,​ 2);
 + }
 + // Gilt nur für Magier:
 + else if magieKampf == STRONG
 + {
 + self.aivar[AIV_MagicUser] = MAGIC_ALWAYS;​
 +
 + // 90 - 180
 + rnd = Hlp_Rand(90);​
 + self.attribute[ATR_MANA_MAX] = 90 + rnd;
 + self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX];​
 + self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX];​
 +
 + Npc_SetTalentSkill (self,​ NPC_TALENT_MAGE,​ 3);
 + }
 + else if magieKampf == RAISED
 + {
 + self.aivar[AIV_MagicUser] = MAGIC_ALWAYS;​
 +
 + // 170 - 260
 + rnd = Hlp_Rand(90);​
 + self.attribute[ATR_MANA_MAX] = 170 + rnd;
 + self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX];​
 + self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX];​
 +
 + Npc_SetTalentSkill (self,​ NPC_TALENT_MAGE,​ 4);
 + }
 + else if magieKampf == MASTER
 + {
 + self.aivar[AIV_MagicUser] = MAGIC_ALWAYS;​
 +
 + // 250 - 300
 + rnd = Hlp_Rand(50);​
 + self.attribute[ATR_MANA_MAX] = 250 + rnd;
 + self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX];​
 + self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX];​
 +
 + Npc_SetTalentSkill (self,​ NPC_TALENT_MAGE,​ 6);
 + }
 + else // Alle NICHT-Magier
 + {
 + self.aivar[AIV_MagicUser] = MAGIC_NEVER;​
 +
 + // max 10
 + rnd = Hlp_Rand(9);​
 + self.attribute[ATR_MANA_MAX] = 1 + rnd;
 + self.aivar[REAL_MANA_MAX] = self.attribute[ATR_MANA_MAX];​
 + self.attribute[ATR_MANA] = self.attribute[ATR_MANA_MAX];​
 +
 + Npc_SetTalentSkill (self,​ NPC_TALENT_MAGE,​ 0);
 + };
 +
 + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 + //​ Sonstige Talente
 + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 + if fernKampf >= STRONG
 + {
 + Npc_SetTalentSkill (self,​ NPC_TALENT_PICKLOCK,​ TRUE); ​
 + Npc_SetTalentSkill (self,​ NPC_TALENT_SNEAK,​ TRUE);
 + Npc_SetTalentSkill (self,​ NPC_TALENT_ACROBAT,​ TRUE);
 + Npc_SetTalentSkill (self,​ NPC_TALENT_PICKPOCKET,​ TRUE);
 + };
 +
 + if nahKampf >= STRONG
 + {
 + Npc_SetTalentSkill (self,​ NPC_TALENT_SMITH,​ TRUE);
 + };
 +
 + if nahKampf >= STRONG || fernKampf >= STRONG
 + {
 + Npc_SetTalentSkill (self,​ NPC_TALENT_TAKEANIMALTROPHY,​ TRUE);​
 + };
 +
 + if magieKampf >= STRONG
 + {
 + Npc_SetTalentSkill (self,​ NPC_TALENT_RUNES,​ TRUE);
 + Npc_SetTalentSkill (self,​ NPC_TALENT_ALCHEMY,​ TRUE);
 + };
 +};
 +
 +///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 +//
 +//​ B_SetAttributForWeapons
 +// - - - - - - - - - - - - - - - - - - - - - -
 +//
 +// Das Zufällige Austeilen von Attributen macht es nötig die Werte im Nachhinein an die Waffen anzupassen.
 +// Diese Methode schreibt die Werte neu, wenn sie nicht ausreichen die gewollten Waffen zu tragen.
 +// Dazu wird die Nebenmethode B_SetAttributForWeapon(waffe) benötigt. Die Methode setzt alle 3 Attribute und equipt die Waffe.
 +//
 +///////////////////////////////////////////////////////////////////////////////////////////////////////////////​
 +/* Zur Erinnerung die in der Waffe beschriebenen benötigten Attribute: (Classes.d)
 +
 + // Benötigte Attribute zum Benutzen des Items
 + VAR INT cond_atr [3] ;​
 + VAR INT cond_value [3] ;​
 +
 +(constants.d)
 +
 +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
 +
 +*/
 +
 +func void B_SetAttributForWeapon(var int waffenInstanz)
 +{
 + //- - - - - Resett for Random - - - - - -
 + Hlp_Rand_Resett();​
 +
 + var int rnd; rnd = Hlp_Rand(10);​
 +
 + //​Notausstieg:​
 + if waffenInstanz == nothing //NO_ARMOR ist Ersatz für nil oder nothing
 + {
 + return;
 + }
 + else
 + {
 + CreateInvItems (self,​ waffenInstanz,​ 1);​
 + };
 +
 + if item.cond_atr[0] == ATR_HITPOINTS { if self.attribute[ATR_HITPOINTS] < item.cond_value[0] {self.attribute[ATR_HITPOINTS] = item.cond_value[0] + rnd; }; }
 + else if item.cond_atr[0] == ATR_HITPOINTS_MAX { if self.attribute[ATR_HITPOINTS_MAX] < item.cond_value[0] {self.attribute[ATR_HITPOINTS_MAX] = item.cond_value[0] + rnd; }; }
 + else if item.cond_atr[0] == ATR_MANA { if self.attribute[ATR_MANA] < item.cond_value[0] {self.attribute[ATR_MANA] = item.cond_value[0] + rnd; }; }
 + else if item.cond_atr[0] == ATR_MANA_MAX { if self.attribute[ATR_MANA_MAX] < item.cond_value[0] {self.attribute[ATR_MANA_MAX] = item.cond_value[0] + rnd; }; }
 + else if item.cond_atr[0] == ATR_STRENGTH { if self.attribute[ATR_STRENGTH] < item.cond_value[0] {self.attribute[ATR_STRENGTH] = item.cond_value[0] + rnd; }; }
 + else if item.cond_atr[0] == ATR_DEXTERITY { if self.attribute[ATR_DEXTERITY] < item.cond_value[0] {self.attribute[ATR_DEXTERITY] = item.cond_value[0] + rnd; }; }
 + else if item.cond_atr[0] == ATR_REGENERATEHP { if self.attribute[ATR_REGENERATEHP] < item.cond_value[0] {self.attribute[ATR_REGENERATEHP] = item.cond_value[0] + rnd; }; }
 + else if item.cond_atr[0] == ATR_REGENERATEMANA { if self.attribute[ATR_REGENERATEMANA] < item.cond_value[0] {self.attribute[ATR_REGENERATEMANA] = item.cond_value[0] + rnd; }; };
 +
 + if item.cond_atr[1] == ATR_HITPOINTS { if self.attribute[ATR_HITPOINTS] < item.cond_value[1] {self.attribute[ATR_HITPOINTS] = item.cond_value[1] + rnd; }; }
 + else if item.cond_atr[1] == ATR_HITPOINTS_MAX { if self.attribute[ATR_HITPOINTS_MAX] < item.cond_value[1] {self.attribute[ATR_HITPOINTS_MAX] = item.cond_value[1] + rnd; }; }
 + else if item.cond_atr[1] == ATR_MANA { if self.attribute[ATR_MANA] < item.cond_value[1] {self.attribute[ATR_MANA] = item.cond_value[1] + rnd; }; }
 + else if item.cond_atr[1] == ATR_MANA_MAX { if self.attribute[ATR_MANA_MAX] < item.cond_value[1] {self.attribute[ATR_MANA_MAX] = item.cond_value[1] + rnd; }; }
 + else if item.cond_atr[1] == ATR_STRENGTH { if self.attribute[ATR_STRENGTH] < item.cond_value[1] {self.attribute[ATR_STRENGTH] = item.cond_value[1] + rnd; }; }
 + else if item.cond_atr[1] == ATR_DEXTERITY { if self.attribute[ATR_DEXTERITY] < item.cond_value[1] {self.attribute[ATR_DEXTERITY] = item.cond_value[1] + rnd; }; }
 + else if item.cond_atr[1] == ATR_REGENERATEHP { if self.attribute[ATR_REGENERATEHP] < item.cond_value[1] {self.attribute[ATR_REGENERATEHP] = item.cond_value[1] + rnd; }; }
 + else if item.cond_atr[1] == ATR_REGENERATEMANA { if self.attribute[ATR_REGENERATEMANA] < item.cond_value[1] {self.attribute[ATR_REGENERATEMANA] = item.cond_value[1] + rnd; }; };
 +
 + if item.cond_atr[2] == ATR_HITPOINTS { if self.attribute[ATR_HITPOINTS] < item.cond_value[2] {self.attribute[ATR_HITPOINTS] = item.cond_value[2] + rnd; }; }
 + else if item.cond_atr[2] == ATR_HITPOINTS_MAX { if self.attribute[ATR_HITPOINTS_MAX] < item.cond_value[2] {self.attribute[ATR_HITPOINTS_MAX] = item.cond_value[2] + rnd; }; }
 + else if item.cond_atr[2] == ATR_MANA { if self.attribute[ATR_MANA] < item.cond_value[2] {self.attribute[ATR_MANA] = item.cond_value[2] + rnd; }; }
 + else if item.cond_atr[2] == ATR_MANA_MAX { if self.attribute[ATR_MANA_MAX] < item.cond_value[2] {self.attribute[ATR_MANA_MAX] = item.cond_value[2] + rnd; }; }
 + else if item.cond_atr[2] == ATR_STRENGTH { if self.attribute[ATR_STRENGTH] < item.cond_value[2] {self.attribute[ATR_STRENGTH] = item.cond_value[2] + rnd; }; }
 + else if item.cond_atr[2] == ATR_DEXTERITY { if self.attribute[ATR_DEXTERITY] < item.cond_value[2] {self.attribute[ATR_DEXTERITY] = item.cond_value[2] + rnd; }; }
 + else if item.cond_atr[2] == ATR_REGENERATEHP { if self.attribute[ATR_REGENERATEHP] < item.cond_value[2] {self.attribute[ATR_REGENERATEHP] = item.cond_value[2] + rnd; }; }
 + else if item.cond_atr[2] == ATR_REGENERATEMANA { if self.attribute[ATR_REGENERATEMANA] < item.cond_value[2] {self.attribute[ATR_REGENERATEMANA] = item.cond_value[2] + rnd; }; };
 +
 + EquipItem(self,​waffenInstanz);​
 +};
 +
 +func void B_SetAttributForWeapons(var int nahKampfWaffe,​ var int ferKampfWaffe)
 +{
 + if nahKampfWaffe != nothing
 + {
 + B_SetAttributForWeapon(nahKampfWaffe);​
 + };
 + if ferKampfWaffe != nothing
 + {
 + B_SetAttributForWeapon(ferKampfWaffe);​
 + };
 +};
 +</​code>​
daedalus/nuetzliches.txt · Zuletzt geändert: 2016/12/31 10:11 von milky-way