mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	* added mirth, sorrow, fortune and misfortune spells
* actual stack's morale/luck is displayed in creature info window * initialization of morale/luck for siege machines * removed redundant copies of spell casting code in CGameHandler.cpp * corrected duration of frenzy spell which was incorrect in certain cases
This commit is contained in:
		| @@ -1318,6 +1318,33 @@ upgend: | ||||
|  | ||||
| 							//TODO: check resistances | ||||
|  | ||||
| #define SPELL_CAST_TEMPLATE_1(NUMBER, DURATION) SetStackEffect sse; \ | ||||
| 									if(getSchoolLevel(h,s) < 3)  /*not expert */ \ | ||||
| 									{ \ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; \ | ||||
| 										sse.effect.id = (NUMBER); \ | ||||
| 										sse.effect.level = getSchoolLevel(h,s); \ | ||||
| 										sse.effect.turnsRemain = (DURATION); /*! - any duration */ \ | ||||
| 										sendAndApply(&sse); \ | ||||
| 									} \ | ||||
| 									else \ | ||||
| 									{ \ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) \ | ||||
| 										{ \ | ||||
| 											/*if it's non negative spell and our unit or non positive spell and hostile unit */ \ | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) \ | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) \ | ||||
| 												) \ | ||||
| 											{ \ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; \ | ||||
| 												sse.effect.id = (NUMBER); \ | ||||
| 												sse.effect.level = getSchoolLevel(h,s); \ | ||||
| 												sse.effect.turnsRemain = (DURATION); \ | ||||
| 												sendAndApply(&sse); \ | ||||
| 											} \ | ||||
| 										} \ | ||||
| 									} | ||||
|  | ||||
| 							SpellCasted sc; | ||||
| 							sc.side = ba.side; | ||||
| 							sc.id = ba.additionalInfo; | ||||
| @@ -1380,362 +1407,82 @@ upgend: | ||||
| 								} | ||||
| 							case 27: //shield | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 27; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 27; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(27, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 28: //air shield | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 28; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 28; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(28, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 41: //bless | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 41; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 41; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(41, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 42: //curse | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 42; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 42; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(42, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 43: //bloodlust | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 43; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 43; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(43, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 45: //weakness | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 45; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 45; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(45, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 46: //stone skin | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 46; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 46; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(46, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 48: //prayer | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 48; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 48; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(48, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 49: //mirth | ||||
| 								{ | ||||
| 									SPELL_CAST_TEMPLATE_1(49, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 50: //sorrow | ||||
| 								{ | ||||
| 									SPELL_CAST_TEMPLATE_1(50, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 51: //fortune | ||||
| 								{ | ||||
| 									SPELL_CAST_TEMPLATE_1(51, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 52: //misfortune | ||||
| 								{ | ||||
| 									SPELL_CAST_TEMPLATE_1(52, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 53: //haste | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 53; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 53; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(53, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 54: //slow | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 54; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 54; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(54, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 56: //frenzy | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 56; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = 1; //! - different duration | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 56; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(56, 1) | ||||
| 									break; | ||||
| 								} | ||||
| 							case 61: //forgetfulness | ||||
| 								{ | ||||
| 									SetStackEffect sse; | ||||
| 									if(getSchoolLevel(h,s) < 3) //not expert | ||||
| 									{ | ||||
| 										sse.stack = gs->curB->getStackT(ba.destinationTile)->ID; | ||||
| 										sse.effect.id = 61; | ||||
| 										sse.effect.level = getSchoolLevel(h,s); | ||||
| 										sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 										sendAndApply(&sse); | ||||
| 									} | ||||
| 									else | ||||
| 									{ | ||||
| 										for(int it=0; it<gs->curB->stacks.size(); ++it) | ||||
| 										{ | ||||
| 											//if it's non negative spell and our unit or non positive spell and hostile unit | ||||
| 											if((VLC->spellh->spells[ba.additionalInfo].positiveness >= 0 && gs->curB->stacks[it]->owner == h->tempOwner) | ||||
| 												||(VLC->spellh->spells[ba.additionalInfo].positiveness <= 0 && gs->curB->stacks[it]->owner != h->tempOwner ) | ||||
| 												) | ||||
| 											{ | ||||
| 												sse.stack = gs->curB->stacks[it]->ID; | ||||
| 												sse.effect.id = 61; | ||||
| 												sse.effect.level = getSchoolLevel(h,s); | ||||
| 												sse.effect.turnsRemain = h->getPrimSkillLevel(2); | ||||
| 												sendAndApply(&sse); | ||||
| 											} | ||||
| 										} | ||||
| 									} | ||||
| 									SPELL_CAST_TEMPLATE_1(61, h->getPrimSkillLevel(2)) | ||||
| 									break; | ||||
| 								} | ||||
| 							} | ||||
| @@ -1773,6 +1520,7 @@ customactionend: | ||||
| 	HANDLE_EXCEPTION(end2 = true); | ||||
| handleConEnd: | ||||
| 	tlog1 << "Ended handling connection\n"; | ||||
| #undef SPELL_CAST_TEMPLATE_1 | ||||
| } | ||||
| void CGameHandler::moveStack(int stack, int dest) | ||||
| {							 | ||||
| @@ -2182,16 +1930,22 @@ void CGameHandler::setupBattle( BattleInfo * curB, int3 tile, CCreatureSet &army | ||||
| 		{ | ||||
| 			stacks.push_back(new CStack(&VLC->creh->creatures[146], 1, hero1->tempOwner, stacks.size(), true, 255)); | ||||
| 			stacks[stacks.size()-1]->position = 52; | ||||
| 			stacks.back()->morale = hero1->getCurrentMorale(stacks.back()->ID,false); | ||||
| 			stacks.back()->luck = hero1->getCurrentLuck(stacks.back()->ID,false); | ||||
| 		} | ||||
| 		if(hero1->getArt(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; | ||||
| 			stacks.back()->morale = hero1->getCurrentMorale(stacks.back()->ID,false); | ||||
| 			stacks.back()->luck = hero1->getCurrentLuck(stacks.back()->ID,false); | ||||
| 		} | ||||
| 		if(hero1->getArt(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; | ||||
| 			stacks.back()->morale = hero1->getCurrentMorale(stacks.back()->ID,false); | ||||
| 			stacks.back()->luck = hero1->getCurrentLuck(stacks.back()->ID,false); | ||||
| 		} | ||||
| 	} | ||||
| 	if(hero2) | ||||
| @@ -2200,16 +1954,22 @@ void CGameHandler::setupBattle( BattleInfo * curB, int3 tile, CCreatureSet &army | ||||
| 		{ | ||||
| 			stacks.push_back(new CStack(&VLC->creh->creatures[146], 1, hero2->tempOwner, stacks.size(), false, 255)); | ||||
| 			stacks[stacks.size()-1]->position = 66; | ||||
| 			stacks.back()->morale = hero2->getCurrentMorale(stacks.back()->ID,false); | ||||
| 			stacks.back()->luck = hero2->getCurrentLuck(stacks.back()->ID,false); | ||||
| 		} | ||||
| 		if(hero2->getArt(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; | ||||
| 			stacks.back()->morale = hero2->getCurrentMorale(stacks.back()->ID,false); | ||||
| 			stacks.back()->luck = hero2->getCurrentLuck(stacks.back()->ID,false); | ||||
| 		} | ||||
| 		if(hero2->getArt(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; | ||||
| 			stacks.back()->morale = hero2->getCurrentMorale(stacks.back()->ID,false); | ||||
| 			stacks.back()->luck = hero2->getCurrentLuck(stacks.back()->ID,false); | ||||
| 		} | ||||
| 	} | ||||
| 	//war machiens added | ||||
|   | ||||
		Reference in New Issue
	
	Block a user