Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung | |||
|
daedalus:nuetzliches [2026/08/10 21:34] 43.173.181.157 alte Version wiederhergestellt (2016/02/06 12:54) |
daedalus:nuetzliches [2026/08/11 06:58] (aktuell) 43.173.180.233 alte Version wiederhergestellt (2016/02/06 12:59) |
||
|---|---|---|---|
| Zeile 206: | Zeile 206: | ||
| const int GIL_SEPERATOR_HUM | const int GIL_SEPERATOR_HUM | ||
| + | </ | ||
| 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: | ||
| </ | </ | ||
| - | == [für Fortgeschritene] Zufällige Attribute für Npcs == | + | === Automatische Übertragung von Gegenständen von Opfer nach Hero === |
| - | + | ||
| - | <code C> | + | |
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | // | + | |
| - | // | + | |
| - | // - - - - - - - - - - - - - - - - - - - - - - - - | + | |
| - | // | + | |
| - | // 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; | + | |
| - | const int STRONG = 2; | + | |
| - | const int RAISED = 3; | + | |
| - | 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; | + | |
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | // | + | |
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | + | ||
| - | if nahKampf == MASTER | + | |
| - | || fernKampf == MASTER | + | |
| - | || magieKampf == MASTER | + | |
| - | { | + | |
| - | self.fight_tactic = FAI_HUMAN_MASTER; | + | |
| - | + | ||
| - | // 40 - 60 | + | |
| - | rnd = Hlp_Rand(20); | + | |
| - | self.level = 40 + rnd; | + | |
| - | } | + | |
| - | else if nahKampf == RAISED | + | |
| - | || fernKampf == RAISED | + | |
| - | || magieKampf == RAISED | + | |
| - | { | + | |
| - | self.fight_tactic = FAI_HUMAN_MASTER; | + | |
| - | + | ||
| - | // 30 - 50 | + | |
| - | rnd = Hlp_Rand(20); | + | |
| - | self.level = 30 + rnd; | + | |
| - | } | + | |
| - | else if nahKampf == STRONG | + | |
| - | || fernKampf == STRONG | + | |
| - | || magieKampf == STRONG | + | |
| - | { | + | |
| - | self.fight_tactic = FAI_HUMAN_COWARD; | + | |
| - | + | ||
| - | // 20 - 40 | + | |
| - | rnd = Hlp_Rand(20); | + | |
| - | self.level = 20 + rnd; | + | |
| - | } | + | |
| - | else if nahKampf == NORMAL | + | |
| - | || fernKampf == NORMAL | + | |
| - | || magieKampf == NORMAL | + | |
| - | { | + | |
| - | self.fight_tactic = FAI_HUMAN_NORMAL; | + | |
| - | // 10 - 30 | + | |
| - | rnd = Hlp_Rand(20); | + | |
| - | self.level = 10 + rnd; | + | |
| - | } | + | |
| - | else //Alles COWARD | + | |
| - | { | + | |
| - | self.fight_tactic = FAI_HUMAN_COWARD; | + | |
| - | // 1 - 10 | + | |
| - | rnd = Hlp_Rand(9); | + | |
| - | self.level = 1 + rnd; | + | |
| - | + | ||
| - | }; | + | |
| - | + | ||
| - | //- - - - - - 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): | + | |
| - | self.exp_next = (500*[[self.level+2): | + | |
| - | + | ||
| - | + | ||
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | // | + | |
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | + | ||
| - | 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, | + | |
| - | B_RaiseFightTalent (self, NPC_TALENT_2H, | + | |
| - | } | + | |
| - | 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, | + | |
| - | B_RaiseFightTalent (self, NPC_TALENT_2H, | + | |
| - | } | + | |
| - | 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, | + | |
| - | B_RaiseFightTalent (self, NPC_TALENT_2H, | + | |
| - | } | + | |
| - | 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, | + | |
| - | B_RaiseFightTalent (self, NPC_TALENT_2H, | + | |
| - | } | + | |
| - | 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, | + | |
| - | B_RaiseFightTalent (self, NPC_TALENT_2H, | + | |
| - | }; | + | |
| - | + | ||
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | // | + | |
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | 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, | + | |
| - | B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, | + | |
| - | } | + | |
| - | 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, | + | |
| - | B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, | + | |
| - | } | + | |
| - | 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, | + | |
| - | B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, | + | |
| - | } | + | |
| - | 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, | + | |
| - | B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, | + | |
| - | } | + | |
| - | 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, | + | |
| - | B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, | + | |
| - | }; | + | |
| - | + | ||
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | // | + | |
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | // Vorsicht: Dieser Abschnitt setzt voraus, dass die AI an unterschiedliche Magiebenutzung angepasst ist. (zu betrachten: B_SelectSpell.d) | + | |
| - | + | ||
| - | // Gilt für Manchmal-Magier, | + | |
| - | 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, | + | |
| - | } | + | |
| - | // 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, | + | |
| - | } | + | |
| - | 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, | + | |
| - | } | + | |
| - | 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, | + | |
| - | } | + | |
| - | 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, | + | |
| - | }; | + | |
| - | + | ||
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | // | + | |
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | if fernKampf >= STRONG | + | |
| - | { | + | |
| - | Npc_SetTalentSkill (self, | + | |
| - | Npc_SetTalentSkill (self, | + | |
| - | Npc_SetTalentSkill (self, | + | |
| - | Npc_SetTalentSkill (self, | + | |
| - | }; | + | |
| - | + | ||
| - | if nahKampf >= STRONG | + | |
| - | { | + | |
| - | Npc_SetTalentSkill (self, | + | |
| - | }; | + | |
| - | + | ||
| - | if nahKampf >= STRONG || fernKampf >= STRONG | + | |
| - | { | + | |
| - | Npc_SetTalentSkill (self, | + | |
| - | }; | + | |
| - | + | ||
| - | if magieKampf >= STRONG | + | |
| - | { | + | |
| - | Npc_SetTalentSkill (self, | + | |
| - | Npc_SetTalentSkill (self, | + | |
| - | }; | + | |
| - | }; | + | |
| - | + | ||
| - | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | + | |
| - | // | + | |
| - | // | + | |
| - | // - - - - - - - - - - - - - - - - - - - - - - | + | |
| - | // | + | |
| - | // 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 = | + | |
| - | const int ATR_HITPOINTS_MAX = | + | |
| - | const int ATR_MANA = | + | |
| - | const int ATR_MANA_MAX = | + | |
| - | + | ||
| - | const int ATR_STRENGTH = | + | |
| - | const int ATR_DEXTERITY = | + | |
| - | const int ATR_REGENERATEHP = | + | |
| - | const int ATR_REGENERATEMANA = | + | |
| - | + | ||
| - | */ | + | |
| - | + | ||
| - | func void B_SetAttributForWeapon(var int waffenInstanz) | + | |
| - | { | + | |
| - | //- - - - - Resett for Random - - - - - - | + | |
| - | Hlp_Rand_Resett(); | + | |
| - | + | ||
| - | var int rnd; rnd = Hlp_Rand(10); | + | |
| - | + | ||
| - | // | + | |
| - | if waffenInstanz == nothing //NO_ARMOR ist Ersatz für nil oder nothing | + | |
| - | { | + | |
| - | return; | + | |
| - | } | + | |
| - | else | + | |
| - | { | + | |
| - | CreateInvItems (self, | + | |
| - | }; | + | |
| - | + | ||
| - | 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, | + | |
| - | }; | + | |
| - | + | ||
| - | func void B_SetAttributForWeapons(var int nahKampfWaffe, | + | |
| - | { | + | |
| - | if nahKampfWaffe != nothing | + | |
| - | { | + | |
| - | B_SetAttributForWeapon(nahKampfWaffe); | + | |
| - | }; | + | |
| - | if ferKampfWaffe != nothing | + | |
| - | { | + | |
| - | B_SetAttributForWeapon(ferKampfWaffe); | + | |
| - | }; | + | |
| - | }; | + | |
| - | </ | + | |
| - | + | ||
| - | == 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: | ||
| </ | </ | ||
| - | == 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: | ||
| </ | </ | ||
| - | Wir tragen nach der B_GivePlayerXP noch '' | + | Wir tragen nach der '' |
| - | Hierzu erstellen wir eine Datei mit dem Namen "B_Counter.d" | + | Hierzu erstellen wir eine Datei mit dem Namen '' |
| <code C> | <code C> | ||
| Zeile 1151: | Zeile 751: | ||
| </ | </ | ||
| - | 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 '' |
| <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: | + | Nun müssen wir im Weiteren noch die '' |
| - | < | + | < |
| STORY\Log_Entries\Log_Constants_*.d | STORY\Log_Entries\Log_Constants_*.d | ||
| STORY\XP_Constants.d | STORY\XP_Constants.d | ||
| Zeile 1175: | Zeile 775: | ||
| </ | </ | ||
| - | 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 '' |
| 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> | ||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | // | ||
| + | // | ||
| + | // - - - - - - - - - - - - - - - - - - - - - - - - | ||
| + | // | ||
| + | // 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; | ||
| + | const int STRONG = 2; | ||
| + | const int RAISED = 3; | ||
| + | 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; | ||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | // | ||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | |||
| + | if nahKampf == MASTER | ||
| + | || fernKampf == MASTER | ||
| + | || magieKampf == MASTER | ||
| + | { | ||
| + | self.fight_tactic = FAI_HUMAN_MASTER; | ||
| + | |||
| + | // 40 - 60 | ||
| + | rnd = Hlp_Rand(20); | ||
| + | self.level = 40 + rnd; | ||
| + | } | ||
| + | else if nahKampf == RAISED | ||
| + | || fernKampf == RAISED | ||
| + | || magieKampf == RAISED | ||
| + | { | ||
| + | self.fight_tactic = FAI_HUMAN_MASTER; | ||
| + | |||
| + | // 30 - 50 | ||
| + | rnd = Hlp_Rand(20); | ||
| + | self.level = 30 + rnd; | ||
| + | } | ||
| + | else if nahKampf == STRONG | ||
| + | || fernKampf == STRONG | ||
| + | || magieKampf == STRONG | ||
| + | { | ||
| + | self.fight_tactic = FAI_HUMAN_COWARD; | ||
| + | |||
| + | // 20 - 40 | ||
| + | rnd = Hlp_Rand(20); | ||
| + | self.level = 20 + rnd; | ||
| + | } | ||
| + | else if nahKampf == NORMAL | ||
| + | || fernKampf == NORMAL | ||
| + | || magieKampf == NORMAL | ||
| + | { | ||
| + | self.fight_tactic = FAI_HUMAN_NORMAL; | ||
| + | // 10 - 30 | ||
| + | rnd = Hlp_Rand(20); | ||
| + | self.level = 10 + rnd; | ||
| + | } | ||
| + | else //Alles COWARD | ||
| + | { | ||
| + | self.fight_tactic = FAI_HUMAN_COWARD; | ||
| + | // 1 - 10 | ||
| + | rnd = Hlp_Rand(9); | ||
| + | self.level = 1 + rnd; | ||
| + | |||
| + | }; | ||
| + | |||
| + | //- - - - - - 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): | ||
| + | self.exp_next = (500*[[self.level+2): | ||
| + | |||
| + | |||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | // | ||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | |||
| + | 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, | ||
| + | B_RaiseFightTalent (self, NPC_TALENT_2H, | ||
| + | } | ||
| + | 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, | ||
| + | B_RaiseFightTalent (self, NPC_TALENT_2H, | ||
| + | } | ||
| + | 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, | ||
| + | B_RaiseFightTalent (self, NPC_TALENT_2H, | ||
| + | } | ||
| + | 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, | ||
| + | B_RaiseFightTalent (self, NPC_TALENT_2H, | ||
| + | } | ||
| + | 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, | ||
| + | B_RaiseFightTalent (self, NPC_TALENT_2H, | ||
| + | }; | ||
| + | |||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | // | ||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | 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, | ||
| + | B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, | ||
| + | } | ||
| + | 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, | ||
| + | B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, | ||
| + | } | ||
| + | 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, | ||
| + | B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, | ||
| + | } | ||
| + | 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, | ||
| + | B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, | ||
| + | } | ||
| + | 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, | ||
| + | B_RaiseFightTalent (self, NPC_TALENT_CROSSBOW, | ||
| + | }; | ||
| + | |||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | // | ||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | // Vorsicht: Dieser Abschnitt setzt voraus, dass die AI an unterschiedliche Magiebenutzung angepasst ist. (zu betrachten: B_SelectSpell.d) | ||
| + | |||
| + | // Gilt für Manchmal-Magier, | ||
| + | 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, | ||
| + | } | ||
| + | // 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, | ||
| + | } | ||
| + | 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, | ||
| + | } | ||
| + | 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, | ||
| + | } | ||
| + | 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, | ||
| + | }; | ||
| + | |||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | // | ||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | if fernKampf >= STRONG | ||
| + | { | ||
| + | Npc_SetTalentSkill (self, | ||
| + | Npc_SetTalentSkill (self, | ||
| + | Npc_SetTalentSkill (self, | ||
| + | Npc_SetTalentSkill (self, | ||
| + | }; | ||
| + | |||
| + | if nahKampf >= STRONG | ||
| + | { | ||
| + | Npc_SetTalentSkill (self, | ||
| + | }; | ||
| + | |||
| + | if nahKampf >= STRONG || fernKampf >= STRONG | ||
| + | { | ||
| + | Npc_SetTalentSkill (self, | ||
| + | }; | ||
| + | |||
| + | if magieKampf >= STRONG | ||
| + | { | ||
| + | Npc_SetTalentSkill (self, | ||
| + | Npc_SetTalentSkill (self, | ||
| + | }; | ||
| + | }; | ||
| + | |||
| + | /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| + | // | ||
| + | // | ||
| + | // - - - - - - - - - - - - - - - - - - - - - - | ||
| + | // | ||
| + | // 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 = | ||
| + | const int ATR_HITPOINTS_MAX = | ||
| + | const int ATR_MANA = | ||
| + | const int ATR_MANA_MAX = | ||
| + | |||
| + | const int ATR_STRENGTH = | ||
| + | const int ATR_DEXTERITY = | ||
| + | const int ATR_REGENERATEHP = | ||
| + | const int ATR_REGENERATEMANA = | ||
| + | |||
| + | */ | ||
| + | |||
| + | func void B_SetAttributForWeapon(var int waffenInstanz) | ||
| + | { | ||
| + | //- - - - - Resett for Random - - - - - - | ||
| + | Hlp_Rand_Resett(); | ||
| + | |||
| + | var int rnd; rnd = Hlp_Rand(10); | ||
| + | |||
| + | // | ||
| + | if waffenInstanz == nothing //NO_ARMOR ist Ersatz für nil oder nothing | ||
| + | { | ||
| + | return; | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | CreateInvItems (self, | ||
| + | }; | ||
| + | |||
| + | 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, | ||
| + | }; | ||
| + | |||
| + | func void B_SetAttributForWeapons(var int nahKampfWaffe, | ||
| + | { | ||
| + | if nahKampfWaffe != nothing | ||
| + | { | ||
| + | B_SetAttributForWeapon(nahKampfWaffe); | ||
| + | }; | ||
| + | if ferKampfWaffe != nothing | ||
| + | { | ||
| + | B_SetAttributForWeapon(ferKampfWaffe); | ||
| + | }; | ||
| + | }; | ||
| + | </ | ||