diff --git a/CBattleInterface.cpp b/CBattleInterface.cpp index 422dad7ad..a53e0e0e9 100644 --- a/CBattleInterface.cpp +++ b/CBattleInterface.cpp @@ -426,7 +426,7 @@ void CBattleInterface::show(SDL_Surface * to) //showing queue of stacks if(showStackQueue) { - int xPos = 400 - ( stacks.size() * 42 )/2; + int xPos = 400 - ( stacks.size() * 37 )/2; int yPos = 10; std::vector stacksSorted; @@ -472,7 +472,7 @@ void CBattleInterface::show(SDL_Surface * to) } //colored border printed SDL_BlitSurface(graphics->smallImgs[stacksSorted[b % stacksSorted.size()].creature->idNumber], NULL, to, &genRect(32, 32, xPos, yPos)); - xPos += 42; + xPos += 37; } } } @@ -1281,6 +1281,7 @@ void CBattleInterface::castThisSpell(int spellID) ba->actionType = 1; ba->additionalInfo = spellID; //spell number ba->destinationTile = -1; + ba->stackNumber = (attackingHeroInstance->tempOwner == LOCPLINT->playerID) ? -1 : -2; ba->side = defendingHeroInstance ? (LOCPLINT->playerID == defendingHeroInstance->tempOwner) : false; spellToCast = ba; spellDestSelectMode = true; diff --git a/CCastleInterface.cpp b/CCastleInterface.cpp index d002af759..092f81760 100644 --- a/CCastleInterface.cpp +++ b/CCastleInterface.cpp @@ -1376,7 +1376,11 @@ void CFortScreen::draw( CCastleInterface * owner, bool first) //damage printAt(CGI->generaltexth->allTexts[199],positions[i].x+288,positions[i].y+46,GEOR13,zwykly,bg); SDL_itoa(c->damageMin,buf,10); - int hlp=log10f(c->damageMin)+2; + int hlp; + if(c->damageMin > 0) + hlp = log10f(c->damageMin)+2; + else + hlp = 2; buf[hlp-1]=' '; buf[hlp]='-'; buf[hlp+1]=' '; SDL_itoa(c->damageMax,buf+hlp+2,10); printToWR(buf,positions[i].x+381,positions[i].y+59,GEOR13,zwykly,bg); diff --git a/CPlayerInterface.cpp b/CPlayerInterface.cpp index f6a671474..989528724 100644 --- a/CPlayerInterface.cpp +++ b/CPlayerInterface.cpp @@ -3143,7 +3143,7 @@ CCreInfoWindow::CCreInfoWindow(int Cid, int Type, int creatureCount, StackState graphics->blueToPlayersAdv(bitmap,LOCPLINT->playerID); SDL_SetColorKey(bitmap,SDL_SRCCOLORKEY,SDL_MapRGB(bitmap->format,0,255,255)); anim = new CCreaturePic(c); - if(!type) anim->anim->setType(1); + if(!type) anim->anim->setType(2); char pom[75];int hlp=0; @@ -3160,7 +3160,11 @@ CCreInfoWindow::CCreInfoWindow(int Cid, int Type, int creatureCount, StackState SDL_itoa(c->attack,pom,10); if(State && State->attackBonus) { - int hlp = log10f(c->attack)+2; + int hlp; + if(c->attack > 0) + hlp = log10f(c->attack)+2; + else + hlp = 2; pom[hlp-1] = ' '; pom[hlp] = '('; SDL_itoa(c->attack+State->attackBonus,pom+hlp+1,10); hlp += 2+(int)log10f(State->attackBonus+c->attack); @@ -3173,7 +3177,11 @@ CCreInfoWindow::CCreInfoWindow(int Cid, int Type, int creatureCount, StackState SDL_itoa(c->defence,pom,10); if(State && State->defenseBonus) { - int hlp = log10f(c->defence)+2; + int hlp; + if(c->defence > 0) + hlp = log10f(c->defence)+2; + else + hlp = 2; pom[hlp-1] = ' '; pom[hlp] = '('; SDL_itoa(c->defence+State->defenseBonus,pom+hlp+1,10); hlp += 2+(int)log10f(State->defenseBonus+c->defence); @@ -3195,7 +3203,10 @@ CCreInfoWindow::CCreInfoWindow(int Cid, int Type, int creatureCount, StackState //damage printAt(CGI->generaltexth->allTexts[199],155,105,GEOR13,zwykly,bitmap); SDL_itoa(c->damageMin,pom,10); - hlp=log10f(c->damageMin)+2; + if(c->damageMin > 0) + hlp = log10f(c->damageMin)+2; + else + hlp = 2; pom[hlp-1]=' '; pom[hlp]='-'; pom[hlp+1]=' '; SDL_itoa(c->damageMax,pom+hlp+2,10); printToWR(pom,276,118,GEOR13,zwykly,bitmap); diff --git a/client/CCreatureAnimation.cpp b/client/CCreatureAnimation.cpp index 977a4b77b..2744b2c33 100644 --- a/client/CCreatureAnimation.cpp +++ b/client/CCreatureAnimation.cpp @@ -138,7 +138,7 @@ void CCreatureAnimation::incrementFrame() int j=-1; //first frame in displayed group for(int g=0; gposition -= 1; } } + //adding war machines + if(hero1) + { + if(hero1->artifWorn[13]) //ballista + { + stacks.push_back(new CStack(&VLC->creh->creatures[146], 1, hero1->tempOwner, stacks.size(), true, 255)); + stacks[stacks.size()-1]->position = 52; + } + if(hero1->artifWorn[14]) //ammo cart + { + stacks.push_back(new CStack(&VLC->creh->creatures[148], 1, hero1->tempOwner, stacks.size(), true, 255)); + stacks[stacks.size()-1]->position = 18; + } + if(hero1->artifWorn[15]) //first aid tent + { + stacks.push_back(new CStack(&VLC->creh->creatures[147], 1, hero1->tempOwner, stacks.size(), true, 255)); + stacks[stacks.size()-1]->position = 154; + } + } + if(hero2) + { + if(hero2->artifWorn[13]) //ballista + { + stacks.push_back(new CStack(&VLC->creh->creatures[146], 1, hero2->tempOwner, stacks.size(), false, 255)); + stacks[stacks.size()-1]->position = 66; + } + if(hero2->artifWorn[14]) //ammo cart + { + stacks.push_back(new CStack(&VLC->creh->creatures[148], 1, hero2->tempOwner, stacks.size(), false, 255)); + stacks[stacks.size()-1]->position = 32; + } + if(hero2->artifWorn[15]) //first aid tent + { + stacks.push_back(new CStack(&VLC->creh->creatures[147], 1, hero2->tempOwner, stacks.size(), false, 255)); + stacks[stacks.size()-1]->position = 168; + } + } + //war machiens added std::stable_sort(stacks.begin(),stacks.end(),cmpst); //block engaged players