mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
* a few fixes for darkness; more are needed
This commit is contained in:
@@ -1714,19 +1714,11 @@ void CGTownInstance::initObj()
|
|||||||
case 7:
|
case 7:
|
||||||
bonusingBuildings.push_back (new CTownBonus(17, this));
|
bonusingBuildings.push_back (new CTownBonus(17, this));
|
||||||
break;
|
break;
|
||||||
case 4:
|
|
||||||
if (vstd::contains(builtBuildings, 17))
|
|
||||||
{
|
|
||||||
GiveBonus gb(GiveBonus::TOWN); //magic
|
|
||||||
gb.bonus.type = Bonus::DARKNESS;
|
|
||||||
gb.bonus.val = 20;
|
|
||||||
gb.id = id;
|
|
||||||
gb.bonus.duration = Bonus::PERMANENT;
|
|
||||||
gb.bonus.source = Bonus::TOWN_STRUCTURE;
|
|
||||||
gb.bonus.id = id;
|
|
||||||
cb->sendAndApply(&gb);
|
|
||||||
}
|
}
|
||||||
break;
|
//add special bonuses from buildings
|
||||||
|
if(subID == 4 && vstd::contains(builtBuildings, 17))
|
||||||
|
{
|
||||||
|
bonuses.push_back( Bonus(Bonus::PERMANENT, Bonus::DARKNESS, Bonus::TOWN_STRUCTURE, 20, 17) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -370,7 +370,7 @@ struct GiveBonus : public CPackForClient //115
|
|||||||
|
|
||||||
enum {HERO, PLAYER, TOWN};
|
enum {HERO, PLAYER, TOWN};
|
||||||
ui8 who; //who receives bonus, uses enum above
|
ui8 who; //who receives bonus, uses enum above
|
||||||
ui32 id; //hero or player id
|
ui32 id; //hero. town or player id - whoever receives it
|
||||||
Bonus bonus;
|
Bonus bonus;
|
||||||
MetaString bdescr;
|
MetaString bdescr;
|
||||||
|
|
||||||
@@ -432,9 +432,9 @@ struct RemoveBonus : public CPackForClient //118
|
|||||||
void applyCl(CClient *cl);
|
void applyCl(CClient *cl);
|
||||||
DLL_EXPORT void applyGs(CGameState *gs);
|
DLL_EXPORT void applyGs(CGameState *gs);
|
||||||
|
|
||||||
enum {HERO, PLAYER};
|
enum {HERO, PLAYER, TOWN};
|
||||||
ui8 who; //who receives bonus, uses enum above
|
ui8 who; //who receives bonus, uses enum above
|
||||||
ui32 whoID; //hero or player id
|
ui32 whoID; //hero, town or player id - whoever loses bonus
|
||||||
|
|
||||||
//vars to identify bonus: its source
|
//vars to identify bonus: its source
|
||||||
ui8 source;
|
ui8 source;
|
||||||
|
@@ -1049,6 +1049,7 @@ void CGameHandler::newTurn()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//unhiding what shouldn't be hidden?
|
||||||
}
|
}
|
||||||
|
|
||||||
sendAndApply(&n);
|
sendAndApply(&n);
|
||||||
@@ -2497,13 +2498,13 @@ bool CGameHandler::buildStructure( si32 tid, si32 bid )
|
|||||||
ns.bid.insert(29);
|
ns.bid.insert(29);
|
||||||
else if (t->subID == 4 && bid == 17) //veil of darkness
|
else if (t->subID == 4 && bid == 17) //veil of darkness
|
||||||
{
|
{
|
||||||
GiveBonus gb(GiveBonus::PLAYER);
|
GiveBonus gb(GiveBonus::TOWN);
|
||||||
gb.bonus.type = Bonus::DARKNESS;
|
gb.bonus.type = Bonus::DARKNESS;
|
||||||
gb.bonus.val = 20;
|
gb.bonus.val = 20;
|
||||||
gb.id = t->tempOwner;
|
gb.id = t->id;
|
||||||
gb.bonus.duration = Bonus::PERMANENT;
|
gb.bonus.duration = Bonus::PERMANENT;
|
||||||
gb.bonus.source = Bonus::TOWN_STRUCTURE;
|
gb.bonus.source = Bonus::TOWN_STRUCTURE;
|
||||||
gb.bonus.id = t->id;
|
gb.bonus.id = 17;
|
||||||
sendAndApply(&gb);
|
sendAndApply(&gb);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2554,10 +2555,10 @@ bool CGameHandler::razeStructure (si32 tid, si32 bid)
|
|||||||
//TODO: Remove dwellers
|
//TODO: Remove dwellers
|
||||||
if (t->subID == 4 && bid == 17) //Veil of Darkness
|
if (t->subID == 4 && bid == 17) //Veil of Darkness
|
||||||
{
|
{
|
||||||
RemoveBonus rb(RemoveBonus::PLAYER);
|
RemoveBonus rb(RemoveBonus::TOWN);
|
||||||
rb.whoID = t->getOwner();
|
rb.whoID = t->id;
|
||||||
rb.source = Bonus::TOWN_STRUCTURE;
|
rb.source = Bonus::TOWN_STRUCTURE;
|
||||||
rb.id = t->id;
|
rb.id = 17;
|
||||||
sendAndApply(&rb);
|
sendAndApply(&rb);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
Reference in New Issue
Block a user