forked from Tails8521/WololoKingdoms
/
incafix.cpp
90 lines (77 loc) · 3.74 KB
/
incafix.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "incafix.h"
#include "wololo/datPatch.h"
namespace wololo {
void incaPatch(genie::DatFile *aocDat) {
//Civ Bonus Fix
/*
* The incan llama bonus doesn't work if the upgrade effect is part of the civ techs
*/
size_t const incaTechTree = 3;
size_t const llamaResearchID = 673;
size_t const llamaDisableResearchID = 674;
size_t const llamaTechID = 704;
size_t const llamaDisableTechID = 705;
size_t const llamaBuilding = 888;
size_t const llama = 305;
size_t const llamaDisableUnit = 889;
size_t const emptyAnnexUnit = 890;
size_t const incaAnnexUnit = 1118;
size_t const TC = 109;
size_t const TCs[] = {71,109,141,142};
if(aocDat->Researchs.size() < llamaDisableTechID+1)
aocDat->Researchs.resize(llamaDisableTechID+1);
aocDat->Researchs[llamaResearchID].TechageID = llamaTechID;
aocDat->Researchs[llamaResearchID].Civ = 21;
aocDat->Researchs[llamaResearchID].Name = "Llama bonus";
aocDat->Researchs[llamaDisableResearchID].TechageID = llamaDisableTechID;
aocDat->Researchs[llamaDisableResearchID].RequiredTechCount = 1;
aocDat->Researchs[llamaDisableResearchID].Name = "Disable Llama bonus";
aocDat->Techages[llamaTechID].Name = "Llama bonus";
aocDat->Techages[llamaDisableTechID].Name = "Disable Llama bonus";
genie::TechageEffect effect = aocDat->Techages[incaTechTree].Effects.back();
aocDat->Techages[incaTechTree].Effects.pop_back();
if(aocDat->Techages[llamaTechID].Effects.size() == 0)
aocDat->Techages[llamaTechID].Effects.push_back(effect);
else
aocDat->Techages[llamaTechID].Effects[0] = effect;
int tmp = effect.A;
effect.A = effect.B;
effect.B = llamaDisableUnit;
if(aocDat->Techages[llamaDisableTechID].Effects.size() < 2)
aocDat->Techages[llamaDisableTechID].Effects.push_back(effect);
else
aocDat->Techages[llamaDisableTechID].Effects[0] = effect;
effect.A = tmp;
if(aocDat->Techages[llamaDisableTechID].Effects.size() < 2)
aocDat->Techages[llamaDisableTechID].Effects.push_back(effect);
else
aocDat->Techages[llamaDisableTechID].Effects[1] = effect;
for(unsigned int i = 0; i<aocDat->Civs.size(); i++) {
for(unsigned int j = 0; j<sizeof(TCs)/sizeof(TCs[0]); j++) {
aocDat->Civs[i].Units[TCs[j]].Building.Annexes[3].UnitID = emptyAnnexUnit;
aocDat->Civs[i].Units[TCs[j]].Building.Annexes[3].Misplacement = std::make_pair(-1.0,1.0);
}
aocDat->Civs[i].Units[llamaBuilding].Building.Annexes[0].UnitID = -1;
aocDat->Civs[i].Units[llamaBuilding].Building.Annexes[1].UnitID = -1;
aocDat->Civs[i].Units[llamaBuilding].DeadUnitID = llama;
aocDat->Civs[i].Units[llamaBuilding].Building.ResearchID = llamaDisableResearchID;
aocDat->Civs[i].Units[llamaBuilding].Creatable.TrainTime = -1;
aocDat->Civs[i].Units[llamaBuilding].Name = "Llama building";
aocDat->Civs[i].Units[llamaDisableUnit].DeadUnitID = -1;
aocDat->Civs[i].Units[llamaDisableUnit].Building.HeadUnit = TC;
aocDat->Civs[i].Units[llamaDisableUnit].Creatable.TrainTime = -1;
aocDat->Civs[i].Units[llamaDisableUnit].Name = "disables llama building";
aocDat->Civs[i].Units[emptyAnnexUnit].Building.HeadUnit = TC;
aocDat->Civs[i].Units[emptyAnnexUnit].Creatable.TrainTime = -1;
aocDat->Civs[i].Units[emptyAnnexUnit].Name = "Empty llama annex";
aocDat->Civs[i].Units[incaAnnexUnit].Building.HeadUnit = TC;
aocDat->Civs[i].Units[incaAnnexUnit].Creatable.TrainTime = -1;
aocDat->Civs[i].Units[incaAnnexUnit].DeadUnitID = llamaBuilding;
aocDat->Civs[i].Units[incaAnnexUnit].Name = "Inca llama annex";
}
}
DatPatch incaFix = {
&incaPatch,
"Inca Llama bonus fix"
};
}