1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

Last part of hero specialities - support for peculiar enchants.

This commit is contained in:
DjWarmonger 2010-08-31 08:39:32 +00:00
parent 30cf8b7e77
commit 4696d89d2e
3 changed files with 47 additions and 16 deletions

View File

@ -9,11 +9,11 @@
7 1 0 0 10
8 2 5 27 0
9 6 3 41 0
10 8 45 0 0
10 8 0 45 0
11 3 3 20 0
12 1 0 0 8
13 2 5 11 0
14 8 48 0 0
14 8 0 48 0
15 10 350 6 0
16 2 5 23 0
17 1 0 0 16
@ -23,7 +23,7 @@
21 1 0 0 18
22 1 0 0 24
23 2 5 2 0
24 8 55 1 0
24 8 0 55 1
25 3 3 37 0
26 2 5 24 0
27 2 5 27 0
@ -45,7 +45,7 @@
43 7 0 51 0
44 1 0 0 34
45 3 3 19 0
46 8 53 0 0
46 8 0 53 0
47 10 350 6 0
48 1 0 0 46
49 1 0 0 52
@ -58,9 +58,9 @@
56 2 5 24 0
57 3 3 22 0
58 2 5 8 1
59 8 45 0 0
59 8 0 45 0
60 10 1 3 0
61 8 43 0 0
61 8 0 43 0
62 2 5 25 0
63 3 3 21 0
64 1 0 0 58
@ -76,7 +76,7 @@
74 2 5 25 0
75 2 5 11 1
76 3 39 0 3
77 8 46 0 0
77 8 0 46 0
78 2 5 12 0
79 10 350 6 0
80 1 0 0 72
@ -94,7 +94,7 @@
92 2 5 11 1
93 3 3 23 0
94 10 1 4 0
95 8 46 0 0
95 8 0 46 0
96 1 0 0 94
97 1 0 0 146
98 1 0 0 88
@ -106,8 +106,8 @@
105 2 5 25 0
106 1 0 0 90
107 2 5 2 0
108 8 53 0 0
109 8 44 0 0
108 8 0 53 0
109 8 0 44 0
110 2 5 25 0
111 2 5 11 1
112 10 1 5 0
@ -122,7 +122,7 @@
121 2 5 8 1
122 2 2 5 1
123 2 5 27 1
124 8 46 0 0
124 8 0 46 0
125 2 5 25 0
126 2 5 24 0
127 2 5 11 1
@ -145,11 +145,11 @@
134 4 2 3 114
135 4 2 1 115
136 5 100 13 0
137 8 53 0 0
137 8 0 53 0
138 5 50 15 0
139 8 46 0 0
140 8 43 0 0
141 8 47 0 0
139 8 0 46 0
140 8 0 43 0
141 8 0 47 0
142 10 350 6 0
143 10 350 6 0
144 12 2 0 0

View File

@ -1102,7 +1102,8 @@ void CGHeroInstance::initObj()
break;
case 8://peculiar spells - enchantments
bonus.type = Bonus::SPECIAL_PECULIAR_ENCHANT;
bonus.subtype = it->subtype; //0, 1 for Coronius
bonus.subtype = it->subtype; //spell id
bonus.additionalInfo = it->additionalinfo;//0, 1 for Coronius
speciality.bonuses.push_back (bonus);
break;
case 9://upgrade creatures

View File

@ -758,6 +758,31 @@ const Bonus * CStack::getEffect( ui16 id, int turn /*= 0*/ ) const
void CStack::stackEffectToFeature(BonusList & sf, const Bonus & sse)
{
si32 power = VLC->spellh->spells[sse.id].powers[sse.val];
Bonus * bonus = getBonus(Selector::typeSybtype(Bonus::SPECIAL_PECULIAR_ENCHANT, sse.id));
if (bonus)
{
switch(bonus->additionalInfo)
{
case 0: //normal
switch(type->level)
{
case 1: case 2:
power += 3; //it doesn't necessarily make sense for some spells, use it wisely
break;
case 3: case 4:
power += 2;
break;
case 5: case 6:
power += 1;
break;
}
break;
case 1: //only Coronius as yet
power = std::max(5 - type->level, 0);
break;
}
}
switch(sse.id)
{
case 27: //shield
@ -860,6 +885,11 @@ void CStack::stackEffectToFeature(BonusList & sf, const Bonus & sse)
sf.back().id = sse.id;
break;
case 55: //slayer
if (bonus) //Coronius
{
sf.push_back(featureGenerator(Bonus::PRIMARY_SKILL, PrimarySkill::ATTACK, power, sse.turnsRemain));
sf.back().id = sse.id;
}
sf.push_back(featureGenerator(Bonus::SLAYER, 0, sse.val, sse.turnsRemain));
sf.back().id = sse.id;
break;