mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-06 09:09:40 +02:00
Mines and object visitable once per week working.
This commit is contained in:
143
CLua.cpp
143
CLua.cpp
@@ -201,7 +201,6 @@ void CVisitableOPH::newObject(int objid)
|
||||
default:
|
||||
throw new std::exception("Unsupported ID in CVisitableOPH::hoverText");
|
||||
}
|
||||
|
||||
hovername << std::pair<ui8,ui32>(3,os->ID) << " " << std::pair<ui8,ui32>(2,pom);
|
||||
cb->setHoverName(objid,&hovername);
|
||||
|
||||
@@ -308,74 +307,88 @@ std::vector<int> CVisitableOPH::yourObjects()
|
||||
|
||||
void CVisitableOPW::onNAHeroVisit(int objid, int heroID, bool alreadyVisited)
|
||||
{
|
||||
//int mid;
|
||||
//switch (os->ID)
|
||||
//{
|
||||
//case 55:
|
||||
// mid = 92;
|
||||
// break;
|
||||
//case 112:
|
||||
// mid = 170;
|
||||
// break;
|
||||
//case 109:
|
||||
// mid = 164;
|
||||
// break;
|
||||
//}
|
||||
//if (alreadyVisited)
|
||||
//{
|
||||
// if (os->ID!=112)
|
||||
// mid++;
|
||||
// else
|
||||
// mid--;
|
||||
// cb->showInfoDialog(cb->getHeroOwner(heroID),VLC->objh->advobtxt[mid],&std::vector<SComponent*>()); //TODO: maybe we have memory leak with these windows
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// int type, sub, val;
|
||||
// type = SComponent::resource;
|
||||
// switch (os->ID)
|
||||
// {
|
||||
// case 55:
|
||||
// if (rand()%2)
|
||||
// {
|
||||
// sub = 5;
|
||||
// val = 5;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// sub = 6;
|
||||
// val = 500;
|
||||
// }
|
||||
// break;
|
||||
// case 112:
|
||||
// mid = 170;
|
||||
// sub = (rand() % 5) + 1;
|
||||
// val = (rand() % 4) + 3;
|
||||
// break;
|
||||
// case 109:
|
||||
// mid = 164;
|
||||
// sub = 6;
|
||||
// if(cb->getDate(2)<2)
|
||||
// val = 500;
|
||||
// else
|
||||
// val = 1000;
|
||||
// }
|
||||
// SComponent * com = new SComponent((SComponent::Etype)type,sub,val);
|
||||
// std::vector<SComponent*> weko;
|
||||
// weko.push_back(com);
|
||||
// cb->giveResource(cb->getHeroOwner(heroID),sub,val);
|
||||
// cb->showInfoDialog(cb->getHeroOwner(heroID),VLC->objh->advobtxt[mid],&weko);
|
||||
// visited[os] = true;
|
||||
//}
|
||||
DEFOS;
|
||||
int mid;
|
||||
switch (os->ID)
|
||||
{
|
||||
case 55:
|
||||
mid = 92;
|
||||
break;
|
||||
case 112:
|
||||
mid = 170;
|
||||
break;
|
||||
case 109:
|
||||
mid = 164;
|
||||
break;
|
||||
}
|
||||
if (alreadyVisited)
|
||||
{
|
||||
if (os->ID!=112)
|
||||
mid++;
|
||||
else
|
||||
mid--;
|
||||
|
||||
InfoWindow iw;
|
||||
iw.player = cb->getHero(heroID)->tempOwner;
|
||||
iw.text << std::pair<ui8,ui32>(11,mid);
|
||||
cb->showInfoDialog(&iw);
|
||||
}
|
||||
else
|
||||
{
|
||||
int type, sub, val;
|
||||
type = 2;
|
||||
switch (os->ID)
|
||||
{
|
||||
case 55:
|
||||
if (rand()%2)
|
||||
{
|
||||
sub = 5;
|
||||
val = 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub = 6;
|
||||
val = 500;
|
||||
}
|
||||
break;
|
||||
case 112:
|
||||
mid = 170;
|
||||
sub = (rand() % 5) + 1;
|
||||
val = (rand() % 4) + 3;
|
||||
break;
|
||||
case 109:
|
||||
mid = 164;
|
||||
sub = 6;
|
||||
if(cb->getDate(2)<2)
|
||||
val = 500;
|
||||
else
|
||||
val = 1000;
|
||||
}
|
||||
int player = cb->getHeroOwner(heroID);
|
||||
cb->giveResource(player,sub,val);
|
||||
InfoWindow iw;
|
||||
iw.player = player;
|
||||
iw.components.push_back(Component(type,sub,val,0));
|
||||
iw.text << std::pair<ui8,ui32>(11,mid);
|
||||
cb->showInfoDialog(&iw);
|
||||
visited[objid] = true;
|
||||
MetaString ms; //set text to "visited"
|
||||
ms << std::pair<ui8,ui32>(3,os->ID) << " " << std::pair<ui8,ui32>(1,352);
|
||||
cb->setHoverName(objid,&ms);
|
||||
}
|
||||
}
|
||||
void CVisitableOPW::newTurn ()
|
||||
{
|
||||
if (cb->getDate(1)==1)
|
||||
if (cb->getDate(1)==1) //first day of week
|
||||
{
|
||||
for (std::map<int,bool>::iterator i = visited.begin(); i != visited.end(); i++)
|
||||
{
|
||||
(*i).second = false;
|
||||
MetaString ms; //set text to "not visited"
|
||||
ms << std::pair<ui8,ui32>(3,cb->getObj(i->first)->ID) << " " << std::pair<ui8,ui32>(1,353);
|
||||
cb->setHoverName(i->first,&ms);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
void CVisitableOPW::newObject(int objid)
|
||||
@@ -418,6 +431,8 @@ void CMines::onHeroVisit(int objid, int heroID)
|
||||
//TODO: this is code for standard mines, no support for abandoned mine (subId==7)
|
||||
DEFOS;
|
||||
const CGHeroInstance *h = cb->getHero(heroID);
|
||||
if(h->tempOwner == os->tempOwner)
|
||||
return; //TODO: leaving garrison
|
||||
cb->setOwner(objid,h->tempOwner);
|
||||
MetaString ms;
|
||||
ms << std::pair<ui8,ui32>(9,os->subID) << " " << std::pair<ui8,ui32>(6,23+h->tempOwner);
|
||||
@@ -435,8 +450,6 @@ void CMines::onHeroVisit(int objid, int heroID)
|
||||
iw.player = h->tempOwner;
|
||||
iw.components.push_back(Component(2,os->subID,vv,-1));
|
||||
cb->showInfoDialog(&iw);
|
||||
//TODO: leaving garrison
|
||||
|
||||
}
|
||||
std::vector<int> CMines::yourObjects()
|
||||
{
|
||||
@@ -471,10 +484,10 @@ void CPickable::newObject(int objid)
|
||||
switch (os->ID)
|
||||
{
|
||||
case 79:
|
||||
ms << std::pair<ui8,ui32>(4,os->ID);
|
||||
ms << std::pair<ui8,ui32>(4,os->subID);
|
||||
break;
|
||||
case 5:
|
||||
ms << std::pair<ui8,ui32>(5,os->ID);
|
||||
ms << std::pair<ui8,ui32>(5,os->subID);
|
||||
break;
|
||||
default:
|
||||
ms << std::pair<ui8,ui32>(3,os->ID);
|
||||
|
||||
Reference in New Issue
Block a user