mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-25 22:42:04 +02:00
- some fixes for town events
- #190 - InfoWindow components adjusted vertically - #194 - correct sex for heroes in battles
This commit is contained in:
@@ -1217,7 +1217,10 @@ CBattleInterface::CBattleInterface(const CCreatureSet * army1, const CCreatureSe
|
|||||||
//loading hero animations
|
//loading hero animations
|
||||||
if(hero1) // attacking hero
|
if(hero1) // attacking hero
|
||||||
{
|
{
|
||||||
attackingHero = new CBattleHero(graphics->battleHeroes[hero1->type->heroType], 0, 0, false, hero1->tempOwner, hero1->tempOwner == curInt->playerID ? hero1 : NULL, this);
|
int type = hero1->type->heroType;
|
||||||
|
if ( type % 2 ) type--;
|
||||||
|
if ( hero1->sex ) type++;
|
||||||
|
attackingHero = new CBattleHero(graphics->battleHeroes[type], 0, 0, false, hero1->tempOwner, hero1->tempOwner == curInt->playerID ? hero1 : NULL, this);
|
||||||
attackingHero->pos = genRect(attackingHero->dh->ourImages[0].bitmap->h, attackingHero->dh->ourImages[0].bitmap->w, -40 + pos.x, pos.y);
|
attackingHero->pos = genRect(attackingHero->dh->ourImages[0].bitmap->h, attackingHero->dh->ourImages[0].bitmap->w, -40 + pos.x, pos.y);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1226,7 +1229,10 @@ CBattleInterface::CBattleInterface(const CCreatureSet * army1, const CCreatureSe
|
|||||||
}
|
}
|
||||||
if(hero2) // defending hero
|
if(hero2) // defending hero
|
||||||
{
|
{
|
||||||
defendingHero = new CBattleHero(graphics->battleHeroes[hero2->type->heroType], 0, 0, true, hero2->tempOwner, hero2->tempOwner == curInt->playerID ? hero2 : NULL, this);
|
int type = hero2->type->heroType;
|
||||||
|
if ( type % 2 ) type--;
|
||||||
|
if ( hero2->sex ) type++;
|
||||||
|
defendingHero = new CBattleHero(graphics->battleHeroes[type ], 0, 0, true, hero2->tempOwner, hero2->tempOwner == curInt->playerID ? hero2 : NULL, this);
|
||||||
defendingHero->pos = genRect(defendingHero->dh->ourImages[0].bitmap->h, defendingHero->dh->ourImages[0].bitmap->w, 690 + pos.x, pos.y);
|
defendingHero->pos = genRect(defendingHero->dh->ourImages[0].bitmap->h, defendingHero->dh->ourImages[0].bitmap->w, 690 + pos.x, pos.y);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -422,10 +422,11 @@ void CHeroWindow::redrawCurBack()
|
|||||||
CSDL_Ext::printAtMiddle(curHero->name, 190, 38, FONT_BIG, tytulowy, curBack);
|
CSDL_Ext::printAtMiddle(curHero->name, 190, 38, FONT_BIG, tytulowy, curBack);
|
||||||
|
|
||||||
//printing hero's level
|
//printing hero's level
|
||||||
std::ostringstream secondLine;
|
std::string secondLine= CGI->generaltexth->allTexts[342];
|
||||||
secondLine<<"Level "<<curHero->level<<" "<<curHero->type->heroClass->name;
|
boost::algorithm::replace_first(secondLine,"%d",boost::lexical_cast<std::string>(curHero->level));
|
||||||
CSDL_Ext::printAtMiddle(secondLine.str(), 190, 65, FONT_MEDIUM, zwykly, curBack);
|
boost::algorithm::replace_first(secondLine,"%s",curHero->type->heroClass->name);
|
||||||
|
CSDL_Ext::printAtMiddle(secondLine, 190, 65, FONT_MEDIUM, zwykly, curBack);
|
||||||
|
|
||||||
//primary skills names
|
//primary skills names
|
||||||
CSDL_Ext::printAtMiddle(CGI->generaltexth->jktexts[1], 52, 99, FONT_SMALL, tytulowy, curBack);
|
CSDL_Ext::printAtMiddle(CGI->generaltexth->jktexts[1], 52, 99, FONT_SMALL, tytulowy, curBack);
|
||||||
CSDL_Ext::printAtMiddle(CGI->generaltexth->jktexts[2], 123, 99, FONT_SMALL, tytulowy, curBack);
|
CSDL_Ext::printAtMiddle(CGI->generaltexth->jktexts[2], 123, 99, FONT_SMALL, tytulowy, curBack);
|
||||||
|
|||||||
@@ -592,39 +592,43 @@ ComponentsToBlit::ComponentsToBlit(std::vector<SComponent*> & SComps, int maxw,
|
|||||||
|
|
||||||
void ComponentsToBlit::blitCompsOnSur( SDL_Surface * _or, int inter, int &curh, SDL_Surface *ret )
|
void ComponentsToBlit::blitCompsOnSur( SDL_Surface * _or, int inter, int &curh, SDL_Surface *ret )
|
||||||
{
|
{
|
||||||
for (size_t i=0;i<comps.size();i++)
|
for (size_t i=0;i<comps.size();i++)//for each row
|
||||||
{
|
{
|
||||||
int totalw=0, maxh=0;
|
int totalw=0, maxh=0;
|
||||||
for(size_t j=0;j<(comps)[i].size();j++)
|
for(size_t j=0;j<(comps)[i].size();j++)//find max height & total width in this row
|
||||||
{
|
{
|
||||||
ComponentResolved *cur = (comps)[i][j];
|
ComponentResolved *cur = (comps)[i][j];
|
||||||
totalw += cur->comp->pos.w;
|
totalw += cur->comp->pos.w;
|
||||||
amax(maxh,cur->comp->pos.h+BETWEEN_COMPS_ROWS);
|
amax(maxh,cur->comp->getImg()->h);//subtitles height will added later
|
||||||
}
|
}
|
||||||
if(_or)
|
if(_or)
|
||||||
{
|
{
|
||||||
totalw += (inter*2+_or->w) * ((comps)[i].size() - 1);
|
totalw += (inter*2+_or->w) * ((comps)[i].size() - 1);
|
||||||
}
|
}
|
||||||
else
|
else//add space between comps in this row
|
||||||
{
|
{
|
||||||
totalw += (inter) * ((comps)[i].size() - 1);
|
totalw += (inter) * ((comps)[i].size() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
curh+=maxh/2;
|
curh+=maxh/2;
|
||||||
|
int compX, compY;
|
||||||
|
|
||||||
int curw = (ret->w/2)-(totalw/2);
|
int curw = (ret->w/2)-(totalw/2);
|
||||||
for(size_t j=0;j<(comps)[i].size();j++)
|
for(size_t j=0;j<(comps)[i].size();j++)
|
||||||
{
|
{
|
||||||
ComponentResolved *cur = (comps)[i][j];
|
ComponentResolved *cur = (comps)[i][j];
|
||||||
|
|
||||||
//blit img
|
//blit img
|
||||||
int hlp = curh-(cur->comp->pos.h)/2;
|
compX = curw + ( cur->comp->pos.w - cur->comp->getImg()->w ) / 2;
|
||||||
blitAt(cur->img, curw + (cur->comp->pos.w - cur->comp->getImg()->w)/2, hlp, ret);
|
compY = curh - cur->comp->getImg()->h / 2;
|
||||||
cur->comp->pos.x = curw;
|
blitAt(cur->img, compX, compY, ret);
|
||||||
cur->comp->pos.y = hlp;
|
cur->comp->pos.x = compX;
|
||||||
|
cur->comp->pos.y = compY;
|
||||||
|
|
||||||
//blit subtitle
|
//blit subtitle
|
||||||
hlp += cur->img->h + COMPONENT_TO_SUBTITLE;
|
compX += cur->comp->getImg()->w/2;
|
||||||
CMessage::blitTextOnSur(cur->txt, cur->txtFontHeight, hlp, ret, cur->comp->pos.x + cur->comp->pos.w/2 );
|
compY = curh + maxh / 2 + COMPONENT_TO_SUBTITLE;
|
||||||
|
CMessage::blitTextOnSur(cur->txt, cur->txtFontHeight, compY, ret, compX );
|
||||||
|
|
||||||
//if there is subsequent component blit "or"
|
//if there is subsequent component blit "or"
|
||||||
curw += cur->comp->pos.w;
|
curw += cur->comp->pos.w;
|
||||||
@@ -639,6 +643,6 @@ void ComponentsToBlit::blitCompsOnSur( SDL_Surface * _or, int inter, int &curh,
|
|||||||
curw+=inter;
|
curw+=inter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
curh+=maxh/2;
|
curh = compY+BETWEEN_COMPS_ROWS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,17 +3,19 @@ CH00.DEF
|
|||||||
CH01.DEF
|
CH01.DEF
|
||||||
CH02.DEF
|
CH02.DEF
|
||||||
CH03.DEF
|
CH03.DEF
|
||||||
CH04.DEF
|
|
||||||
CH05.DEF
|
CH05.DEF
|
||||||
|
CH04.DEF
|
||||||
CH06.DEF
|
CH06.DEF
|
||||||
CH07.DEF
|
CH07.DEF
|
||||||
CH08.DEF
|
CH08.DEF
|
||||||
CH09.DEF
|
CH09.DEF
|
||||||
CH010.DEF
|
CH010.DEF
|
||||||
CH11.DEF
|
CH11.DEF
|
||||||
CH012.DEF
|
|
||||||
CH013.DEF
|
CH013.DEF
|
||||||
|
CH012.DEF
|
||||||
CH014.DEF
|
CH014.DEF
|
||||||
CH015.DEF
|
CH015.DEF
|
||||||
CH16.DEF
|
CH16.DEF
|
||||||
CH17.DEF
|
CH17.DEF
|
||||||
|
|
||||||
|
hero animation used in battles, each 2 def represent male and female heroes for each race
|
||||||
@@ -1,158 +1,158 @@
|
|||||||
//heroes'_inintial_set_of_secondary_abilities_format:_heroID_numberOfInitialSecSkills_(Skill_ID,_skill_lvl_for_every_spell)
|
//heroes'_inintial_set_of_secondary_abilities_format:_heroID,_sex_numberOfInitialSecSkills_(Skill_ID,_skill_lvl_for_every_skill)
|
||||||
0 2 6 1 1 1
|
0 0 2 6 1 1 1
|
||||||
1 2 6 1 1 1
|
1 1 2 6 1 1 1
|
||||||
2 2 6 1 23 1
|
2 0 2 6 1 23 1
|
||||||
3 2 6 1 5 1
|
3 1 2 6 1 5 1
|
||||||
4 2 6 1 13 1
|
4 0 2 6 1 13 1
|
||||||
5 2 6 1 22 1
|
5 1 2 6 1 22 1
|
||||||
6 2 6 1 20 1
|
6 0 2 6 1 20 1
|
||||||
7 2 6 1 19 1
|
7 1 2 6 1 19 1
|
||||||
8 2 7 1 27 1
|
8 0 2 7 1 27 1
|
||||||
9 2 7 1 4 1
|
9 1 2 7 1 4 1
|
||||||
10 2 7 1 13 1
|
10 0 2 7 1 13 1
|
||||||
11 1 7 2
|
11 1 1 7 2
|
||||||
12 2 7 1 8 1
|
12 0 2 7 1 8 1
|
||||||
13 2 7 1 11 1
|
13 1 2 7 1 11 1
|
||||||
14 2 7 1 21 1
|
14 0 2 7 1 21 1
|
||||||
15 2 7 1 24 1
|
15 1 2 7 1 24 1
|
||||||
16 2 6 1 23 1
|
16 1 2 6 1 23 1
|
||||||
17 2 9 1 26 1
|
17 0 2 9 1 26 1
|
||||||
18 1 1 2
|
18 1 1 1 2
|
||||||
19 2 4 1 6 1
|
19 0 2 4 1 6 1
|
||||||
20 1 26 2
|
20 0 1 26 2
|
||||||
21 2 1 1 22 1
|
21 0 2 1 1 22 1
|
||||||
22 2 0 1 26 1
|
22 0 2 0 1 26 1
|
||||||
23 2 1 1 2 1
|
23 1 2 1 1 2 1
|
||||||
24 2 7 1 18 1
|
24 0 2 7 1 18 1
|
||||||
25 2 7 2 10 1
|
25 0 2 7 2 10 1
|
||||||
26 2 7 1 24 1
|
26 0 2 7 1 24 1
|
||||||
27 2 7 1 27 1
|
27 1 2 7 1 27 1
|
||||||
28 2 7 1 11 1
|
28 0 2 7 1 11 1
|
||||||
29 2 7 1 9 1
|
29 1 2 7 1 9 1
|
||||||
30 2 7 1 25 1
|
30 0 2 7 1 25 1
|
||||||
31 2 7 1 3 1
|
31 0 2 7 1 3 1
|
||||||
32 2 3 1 8 1
|
32 0 2 3 1 8 1
|
||||||
33 1 18 2
|
33 0 1 18 2
|
||||||
34 2 8 1 25 1
|
34 1 2 8 1 25 1
|
||||||
35 2 18 1 23 1
|
35 1 2 18 1 23 1
|
||||||
36 2 8 1 19 1
|
36 0 2 8 1 19 1
|
||||||
37 2 18 1 26 1
|
37 0 2 18 1 26 1
|
||||||
38 2 8 1 22 1
|
38 1 2 8 1 22 1
|
||||||
39 2 18 1 24 1
|
39 1 2 18 1 24 1
|
||||||
40 1 7 2
|
40 0 1 7 2
|
||||||
41 2 7 1 8 1
|
41 0 2 7 1 8 1
|
||||||
42 2 7 1 11 1
|
42 1 2 7 1 11 1
|
||||||
43 2 7 1 24 1
|
43 1 2 7 1 24 1
|
||||||
44 2 7 1 10 1
|
44 0 2 7 1 10 1
|
||||||
45 2 7 1 25 1
|
45 0 2 7 1 25 1
|
||||||
46 2 7 1 4 1
|
46 1 2 7 1 4 1
|
||||||
47 2 7 1 18 1
|
47 1 2 7 1 18 1
|
||||||
48 1 3 2
|
48 1 1 3 2
|
||||||
49 2 7 1 18 1
|
49 0 2 7 1 18 1
|
||||||
50 1 23 2
|
50 1 1 23 2
|
||||||
51 2 19 1 26 1
|
51 0 2 19 1 26 1
|
||||||
52 2 18 1 22 1
|
52 1 2 18 1 22 1
|
||||||
53 2 1 1 3 1
|
53 0 2 1 1 3 1
|
||||||
54 2 20 1 2 1
|
54 1 2 20 1 2 1
|
||||||
55 1 22 2
|
55 1 1 22 2
|
||||||
56 2 7 1 24 1
|
56 0 2 7 1 24 1
|
||||||
57 2 7 1 18 1
|
57 0 2 7 1 18 1
|
||||||
58 2 7 1 8 1
|
58 0 2 7 1 8 1
|
||||||
59 2 7 1 10 1
|
59 1 2 7 1 10 1
|
||||||
60 2 7 1 21 1
|
60 0 2 7 1 21 1
|
||||||
61 2 7 1 11 1
|
61 1 2 7 1 11 1
|
||||||
62 2 7 1 25 1
|
62 0 2 7 1 25 1
|
||||||
63 2 7 1 6 1
|
63 0 2 7 1 6 1
|
||||||
64 2 12 1 26 1
|
64 0 2 12 1 26 1
|
||||||
65 2 12 1 20 1
|
65 0 2 12 1 20 1
|
||||||
66 2 12 1 21 1
|
66 0 2 12 1 21 1
|
||||||
67 2 12 1 19 1
|
67 1 2 12 1 19 1
|
||||||
68 2 12 1 22 1
|
68 1 2 12 1 22 1
|
||||||
69 1 12 2
|
69 1 1 12 2
|
||||||
70 2 12 1 22 1
|
70 0 2 12 1 22 1
|
||||||
71 2 12 1 23 1
|
71 0 2 12 1 23 1
|
||||||
72 2 12 1 18 1
|
72 1 2 12 1 18 1
|
||||||
73 2 12 1 7 1
|
73 1 2 12 1 7 1
|
||||||
74 2 12 1 25 1
|
74 0 2 12 1 25 1
|
||||||
75 2 12 1 11 1
|
75 0 2 12 1 11 1
|
||||||
76 2 12 1 8 1
|
76 0 2 12 1 8 1
|
||||||
77 2 12 1 21 1
|
77 1 2 12 1 21 1
|
||||||
78 1 12 2
|
78 1 1 12 2
|
||||||
79 2 12 1 24 1
|
79 0 2 12 1 24 1
|
||||||
80 2 3 1 6 1
|
80 1 2 3 1 6 1
|
||||||
81 2 20 1 22 1
|
81 0 2 20 1 22 1
|
||||||
82 2 19 1 22 1
|
82 0 2 19 1 22 1
|
||||||
83 2 6 1 26 1
|
83 0 2 6 1 26 1
|
||||||
84 1 22 2
|
84 0 1 22 2
|
||||||
85 2 2 1 19 1
|
85 0 2 2 1 19 1
|
||||||
86 2 6 1 18 1
|
86 1 2 6 1 18 1
|
||||||
87 2 19 1 22 1
|
87 0 2 19 1 22 1
|
||||||
88 2 7 1 18 1
|
88 0 2 7 1 18 1
|
||||||
89 2 7 1 8 1
|
89 0 2 7 1 8 1
|
||||||
90 2 7 1 25 1
|
90 0 2 7 1 25 1
|
||||||
91 1 7 2
|
91 1 1 7 2
|
||||||
92 2 7 1 11 1
|
92 0 2 7 1 11 1
|
||||||
93 2 7 1 3 2
|
93 0 2 7 1 3 2
|
||||||
94 2 7 1 24 1
|
94 1 2 7 1 24 1
|
||||||
95 2 7 1 21 1
|
95 0 2 7 1 21 1
|
||||||
96 2 22 1 10 1
|
96 0 2 22 1 10 1
|
||||||
97 2 22 1 20 1
|
97 0 2 22 1 20 1
|
||||||
98 2 22 1 1 1
|
98 0 2 22 1 1 1
|
||||||
99 2 22 1 3 1
|
99 1 2 22 1 3 1
|
||||||
100 2 22 1 0 1
|
100 1 2 22 1 0 1
|
||||||
101 2 22 1 26 1
|
101 0 2 22 1 26 1
|
||||||
102 1 22 2
|
102 0 1 22 2
|
||||||
103 2 22 1 19 1
|
103 0 2 22 1 19 1
|
||||||
104 2 7 1 25 1
|
104 1 2 7 1 25 1
|
||||||
105 2 7 1 6 1
|
105 0 2 7 1 6 1
|
||||||
106 2 7 1 2 1
|
106 1 2 7 1 2 1
|
||||||
107 2 7 1 19 1
|
107 0 2 7 1 19 1
|
||||||
108 2 7 1 20 1
|
108 0 2 7 1 20 1
|
||||||
109 2 7 1 22 1
|
109 1 2 7 1 22 1
|
||||||
110 2 7 1 11 1
|
110 1 2 7 1 11 1
|
||||||
111 2 7 1 26 1
|
111 0 2 7 1 26 1
|
||||||
112 2 23 1 26 1
|
112 0 2 23 1 26 1
|
||||||
113 2 23 1 6 1
|
113 0 2 23 1 6 1
|
||||||
114 2 23 1 1 1
|
114 0 2 23 1 1 1
|
||||||
115 1 23 2
|
115 0 1 23 2
|
||||||
116 2 23 1 22 1
|
116 0 2 23 1 22 1
|
||||||
117 2 23 1 0 1
|
117 0 2 23 1 0 1
|
||||||
118 2 23 1 20 1
|
118 0 2 23 1 20 1
|
||||||
119 2 23 1 3 1
|
119 0 2 23 1 3 1
|
||||||
120 1 7 2
|
120 1 1 7 2
|
||||||
121 2 7 1 8 1
|
121 1 2 7 1 8 1
|
||||||
122 2 7 1 5 1
|
122 1 2 7 1 5 1
|
||||||
123 2 7 1 27 1
|
123 1 2 7 1 27 1
|
||||||
124 2 7 1 21 1
|
124 1 2 7 1 21 1
|
||||||
125 2 7 1 25 1
|
125 1 2 7 1 25 1
|
||||||
126 2 7 1 24 1
|
126 1 2 7 1 24 1
|
||||||
127 2 7 1 11 1
|
127 1 2 7 1 11 1
|
||||||
128 2 20 1 22 1
|
128 1 2 20 1 22 1
|
||||||
129 2 13 1 19 1
|
129 1 2 13 1 19 1
|
||||||
130 2 20 1 22 1
|
130 1 2 20 1 22 1
|
||||||
131 1 19 2
|
131 1 1 19 2
|
||||||
132 2 2 1 22 1
|
132 0 2 2 1 22 1
|
||||||
133 2 13 1 19 1
|
133 0 2 13 1 19 1
|
||||||
134 1 22 2
|
134 0 1 22 2
|
||||||
135 2 19 1 21 1
|
135 0 2 19 1 21 1
|
||||||
136 2 7 1 14 1
|
136 1 2 7 1 14 1
|
||||||
137 2 7 1 15 1
|
137 1 2 7 1 15 1
|
||||||
138 2 7 1 16 1
|
138 1 2 7 1 16 1
|
||||||
139 2 7 1 17 1
|
139 1 2 7 1 17 1
|
||||||
140 2 7 1 14 1
|
140 0 2 7 1 14 1
|
||||||
141 2 7 1 15 1
|
141 0 2 7 1 15 1
|
||||||
142 2 7 1 16 1
|
142 0 2 7 1 16 1
|
||||||
143 2 7 1 17 1
|
143 0 2 7 1 17 1
|
||||||
144 1 6 2
|
144 0 1 6 2
|
||||||
145 2 7 1 14 3
|
145 1 2 7 1 14 3
|
||||||
146 2 6 1 22 1
|
146 1 2 6 1 22 1
|
||||||
147 1 7 2
|
147 0 1 7 2
|
||||||
148 2 1 1 6 1
|
148 0 2 1 1 6 1
|
||||||
149 1 22 2
|
149 0 1 22 2
|
||||||
150 1 12 2
|
150 0 1 12 2
|
||||||
151 2 13 1 19 1
|
151 1 2 13 1 19 1
|
||||||
152 2 6 1 23 1
|
152 0 2 6 1 23 1
|
||||||
153 2 13 1 19 1
|
153 1 2 13 1 19 1
|
||||||
154 2 19 1 22 1
|
154 0 2 19 1 22 1
|
||||||
155 2 6 1 19 1
|
155 0 2 6 1 19 1
|
||||||
-1
|
-1
|
||||||
|
|||||||
@@ -304,6 +304,8 @@ void CHeroHandler::loadHeroes()
|
|||||||
if(hid == -1)
|
if(hid == -1)
|
||||||
break;
|
break;
|
||||||
inp>>secQ;
|
inp>>secQ;
|
||||||
|
heroes[hid]->sex = secQ;
|
||||||
|
inp>>secQ;
|
||||||
for(int g=0; g<secQ; ++g)
|
for(int g=0; g<secQ; ++g)
|
||||||
{
|
{
|
||||||
int a, b;
|
int a, b;
|
||||||
@@ -356,6 +358,7 @@ void CHeroHandler::loadHeroes()
|
|||||||
int i = expPerLevel.size() - 1;
|
int i = expPerLevel.size() - 1;
|
||||||
expPerLevel.push_back (expPerLevel[i] + (expPerLevel[i] - expPerLevel[i-1]) * 1.2);
|
expPerLevel.push_back (expPerLevel[i] + (expPerLevel[i] - expPerLevel[i-1]) * 1.2);
|
||||||
}
|
}
|
||||||
|
expPerLevel.pop_back();//last value is broken
|
||||||
|
|
||||||
//ballistics info
|
//ballistics info
|
||||||
buf = bitmaph->getTextFile("BALLIST.TXT");
|
buf = bitmaph->getTextFile("BALLIST.TXT");
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ public:
|
|||||||
std::vector<std::pair<ui8,ui8> > secSkillsInit; //initial secondary skills; first - ID of skill, second - level of skill (1 - basic, 2 - adv., 3 - expert)
|
std::vector<std::pair<ui8,ui8> > secSkillsInit; //initial secondary skills; first - ID of skill, second - level of skill (1 - basic, 2 - adv., 3 - expert)
|
||||||
std::vector<SSpecialtyInfo> spec;
|
std::vector<SSpecialtyInfo> spec;
|
||||||
si32 startingSpell; //-1 if none
|
si32 startingSpell; //-1 if none
|
||||||
|
ui8 sex; // default sex: 0=male, 1=female
|
||||||
//bool operator<(CHero& drugi){if (ID < drugi.ID) return true; else return false;}
|
//bool operator<(CHero& drugi){if (ID < drugi.ID) return true; else return false;}
|
||||||
|
|
||||||
CHero();
|
CHero();
|
||||||
|
|||||||
@@ -842,6 +842,9 @@ void CGHeroInstance::initHero()
|
|||||||
level = VLC->heroh->level(exp);
|
level = VLC->heroh->level(exp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sex == 0xFF)//sex is default
|
||||||
|
sex = type->sex;
|
||||||
|
|
||||||
setFormation(false);
|
setFormation(false);
|
||||||
if (!stacksCount()) //standard army//initial army
|
if (!stacksCount()) //standard army//initial army
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1732,6 +1732,17 @@ void CGameState::init( StartInfo * si, ui32 checksum, int Seed )
|
|||||||
vti->builtBuildings.insert(25);
|
vti->builtBuildings.insert(25);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (std::list<CCastleEvent*>::iterator ev=vti->events.begin(); ev!=vti->events.end(); ev++)
|
||||||
|
for (int i = 0; i<CREATURES_PER_TOWN; i++)
|
||||||
|
if (vstd::contains((*ev)->buildings,(-31-i))) //if we have horde for this level
|
||||||
|
{
|
||||||
|
(*ev)->buildings.erase(-31-i);
|
||||||
|
if (vti->town->hordeLvl[0] == i)
|
||||||
|
(*ev)->buildings.insert(18);
|
||||||
|
if (vti->town->hordeLvl[1] == i)
|
||||||
|
(*ev)->buildings.insert(24);
|
||||||
|
}
|
||||||
//init spells
|
//init spells
|
||||||
vti->spells.resize(SPELL_LEVELS);
|
vti->spells.resize(SPELL_LEVELS);
|
||||||
CSpell *s;
|
CSpell *s;
|
||||||
|
|||||||
@@ -905,8 +905,13 @@ void Mapa::loadHero( CGObjectInstance * &nobj, const unsigned char * bufor, int
|
|||||||
{
|
{
|
||||||
if(readChar(bufor,i))//true if hero has nonstandard (mapmaker defined) biography
|
if(readChar(bufor,i))//true if hero has nonstandard (mapmaker defined) biography
|
||||||
nhi->biography = readString(bufor,i);
|
nhi->biography = readString(bufor,i);
|
||||||
nhi->sex = !(bufor[i]); ++i;
|
nhi->sex = bufor[i]; ++i;
|
||||||
|
|
||||||
|
if (nhi->sex != 0xFF)//remove trash
|
||||||
|
nhi->sex &=1;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
nhi->sex = 0xFF;
|
||||||
//spells
|
//spells
|
||||||
if(version>AB)
|
if(version>AB)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1123,6 +1123,9 @@ void CGameHandler::newTurn()
|
|||||||
}
|
}
|
||||||
//n.res.push_back(r);
|
//n.res.push_back(r);
|
||||||
}
|
}
|
||||||
|
// townID, creatureID, amount
|
||||||
|
std::map<si32, std::map<si32, si32> > newCreas;//creatures that needs to be added by town events
|
||||||
|
|
||||||
for(std::vector<CGTownInstance *>::iterator j = gs->map->towns.begin(); j!=gs->map->towns.end(); j++)//handle towns
|
for(std::vector<CGTownInstance *>::iterator j = gs->map->towns.begin(); j!=gs->map->towns.end(); j++)//handle towns
|
||||||
{
|
{
|
||||||
ui8 player = (*j)->tempOwner;
|
ui8 player = (*j)->tempOwner;
|
||||||
@@ -1152,7 +1155,7 @@ void CGameHandler::newTurn()
|
|||||||
}
|
}
|
||||||
n.res[player][6] += (**j).dailyIncome();
|
n.res[player][6] += (**j).dailyIncome();
|
||||||
}
|
}
|
||||||
handleTownEvents(*j, n);
|
handleTownEvents(*j, n, newCreas);
|
||||||
if (vstd::contains((**j).builtBuildings, 26))
|
if (vstd::contains((**j).builtBuildings, 26))
|
||||||
{
|
{
|
||||||
switch ((**j).subID)
|
switch ((**j).subID)
|
||||||
@@ -1215,6 +1218,11 @@ void CGameHandler::newTurn()
|
|||||||
amin(sac.creatures[k].first, VLC->creh->creatures[(*j)->town->basicCreatures[k]]->growth);
|
amin(sac.creatures[k].first, VLC->creh->creatures[(*j)->town->basicCreatures[k]]->growth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//creatures from town events
|
||||||
|
if (vstd::contains(newCreas, (**j).id))
|
||||||
|
for(std::map<si32, si32>::iterator i=newCreas[(**j).id].begin() ; i!=newCreas[(**j).id].end(); i++)
|
||||||
|
sac.creatures[i->first].first += i->second;
|
||||||
|
|
||||||
n2.cres.push_back(sac);
|
n2.cres.push_back(sac);
|
||||||
}
|
}
|
||||||
if (gs->getDate(0) > 1)
|
if (gs->getDate(0) > 1)
|
||||||
@@ -2783,7 +2791,7 @@ bool CGameHandler::buildStructure( si32 tid, si32 bid, bool force /*=false*/ )
|
|||||||
}
|
}
|
||||||
|
|
||||||
ns.bid.insert(bid);
|
ns.bid.insert(bid);
|
||||||
ns.builded = t->builded + 1;
|
ns.builded = force?t->builded:(t->builded+1);
|
||||||
sendAndApply(&ns);
|
sendAndApply(&ns);
|
||||||
|
|
||||||
//reveal ground for lookout tower
|
//reveal ground for lookout tower
|
||||||
@@ -4488,7 +4496,7 @@ void CGameHandler::handleTimeEvents()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGameHandler::handleTownEvents(CGTownInstance * town, NewTurn &n)
|
void CGameHandler::handleTownEvents(CGTownInstance * town, NewTurn &n, std::map<si32, std::map<si32, si32> > &newCreas)
|
||||||
{
|
{
|
||||||
town->events.sort(evntCmp);
|
town->events.sort(evntCmp);
|
||||||
while(town->events.size() && town->events.front()->firstOccurence == gs->day)
|
while(town->events.size() && town->events.front()->firstOccurence == gs->day)
|
||||||
@@ -4525,28 +4533,15 @@ void CGameHandler::handleTownEvents(CGTownInstance * town, NewTurn &n)
|
|||||||
iw.components.push_back(Component(Component::BUILDING, town->subID, *i, 0));
|
iw.components.push_back(Component(Component::BUILDING, town->subID, *i, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
SetAvailableCreatures sac;
|
for(si32 i=0;i<ev->creatures.size();i++) //creature growths
|
||||||
if (n.cres.empty() || n.cres.back().tid != town->id)
|
|
||||||
{
|
|
||||||
sac.tid = town->id;
|
|
||||||
sac.creatures = town->creatures;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sac = n.cres.back();
|
|
||||||
n.cres.pop_back();
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i=0;i<ev->creatures.size();i++) //creature growths
|
|
||||||
{
|
{
|
||||||
if(town->creatureDwelling(i) && ev->creatures[i])//there is dwelling
|
if(town->creatureDwelling(i) && ev->creatures[i])//there is dwelling
|
||||||
{
|
{
|
||||||
sac.creatures[i].first += ev->creatures[i];
|
newCreas[town->id][i] += ev->creatures[i];
|
||||||
iw.components.push_back(Component(Component::CREATURE,
|
iw.components.push_back(Component(Component::CREATURE,
|
||||||
town->creatures[i].second.back(), ev->creatures[i], 0));
|
town->creatures[i].second.back(), ev->creatures[i], 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
n.cres.push_back(sac);
|
|
||||||
sendAndApply(&iw); //show dialog
|
sendAndApply(&iw); //show dialog
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include "../global.h"
|
#include "../global.h"
|
||||||
#include <set>
|
#include <set>
|
||||||
|
#include <map>
|
||||||
#include "../client/FunctionList.h"
|
#include "../client/FunctionList.h"
|
||||||
#include "../lib/CGameState.h"
|
#include "../lib/CGameState.h"
|
||||||
#include "../lib/Connection.h"
|
#include "../lib/Connection.h"
|
||||||
@@ -194,7 +195,7 @@ public:
|
|||||||
void save(const std::string &fname);
|
void save(const std::string &fname);
|
||||||
void close();
|
void close();
|
||||||
void handleTimeEvents();
|
void handleTimeEvents();
|
||||||
void handleTownEvents(CGTownInstance *town, NewTurn &n);
|
void handleTownEvents(CGTownInstance *town, NewTurn &n, std::map<si32, std::map<si32, si32> > &newCreas);
|
||||||
bool complain(const std::string &problem); //sends message to all clients, prints on the logs and return true
|
bool complain(const std::string &problem); //sends message to all clients, prints on the logs and return true
|
||||||
void objectVisited( const CGObjectInstance * obj, const CGHeroInstance * h );
|
void objectVisited( const CGObjectInstance * obj, const CGHeroInstance * h );
|
||||||
void engageIntoBattle( ui8 player );
|
void engageIntoBattle( ui8 player );
|
||||||
|
|||||||
Reference in New Issue
Block a user