Skip to content

Commit 25649a6

Browse files
committed
- Add cCreatureCitizen::GetHandheldItemForTool() and enum Simulator::HandheldItem
- Add cCreatureBase::IsHervibore()
1 parent 6a332bb commit 25649a6

File tree

5 files changed

+67
-0
lines changed

5 files changed

+67
-0
lines changed

Spore ModAPI/SourceCode/DLL/AddressesSimulator.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ namespace Simulator
219219
namespace Addresses(cCreatureCitizen) {
220220
DefineAddress(Update, SelectAddress(0xC24210, 0xC24A30));
221221
DefineAddress(DoAction, SelectAddress(0xC26EF0, 0xC27710));
222+
DefineAddress(GetHandheldItemForTool, SelectAddress(0xC22E70, 0xC23740));
222223
}
223224

224225
namespace Addresses(cCreatureBase)
@@ -244,6 +245,7 @@ namespace Simulator
244245
DefineAddress(OnJumpLand, SelectAddress(0xC14670, 0xC14E10));
245246
DefineAddress(OnStartSwimming, SelectAddress(0xC147D0, 0xC14F70));
246247
DefineAddress(Update, SelectAddress(0xC20C50, 0xC21530));
248+
DefineAddress(IsHervibore, SelectAddress(0xC0B040, 0xC0B8E0));
247249
}
248250

249251
namespace Addresses(cCropCirclesToolStrategy)

Spore ModAPI/SourceCode/Simulator/cCreatureAnimal.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,11 @@ namespace Simulator
9696
auto_METHOD_VOID(cCreatureBase, ConsumeEnergy,
9797
Args(float energyConsumed), Args(energyConsumed));
9898

99+
auto_METHOD_(cCreatureBase, bool, IsHervibore);
100+
99101

100102
auto_METHOD_VOID(cCreatureCitizen, DoAction, Args(int actionId, cGameData* actionObject, App::Property* prop), Args(actionId, actionObject, prop));
103+
104+
auto_METHOD(cCreatureCitizen, int, GetHandheldItemForTool, Args(int toolType), Args(toolType));
101105
}
102106
#endif

Spore ModAPI/Spore/Simulator/SimulatorEnums.h

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,4 +766,55 @@ namespace Simulator
766766
kCitizenActionRecruit = 26,
767767
kCitizenActionGatherMeat = 27,
768768
};
769+
770+
enum HandheldItem
771+
{
772+
kHandheldItemNone = 0,
773+
/// trg_hunting_tool1
774+
kHandheldItemTrgHuntingTool1 = 1,
775+
/// trg_hunting_tool2
776+
kHandheldItemTrgHuntingTool1 = 2,
777+
/// trg_hunting_tool3
778+
kHandheldItemTrgHuntingTool1 = 3,
779+
/// trg_fishing_tool and related
780+
kHandheldItemTrgFishingTool = 4,
781+
/// Either trg_eating_fish or trg_fishing_tool1_fish, etc
782+
kHandheldItemTrgFish = 5,
783+
/// Either trg_eating_seaweed or trg_fishing_tool1_seaweed, etc
784+
kHandheldItemTrgFish = 6,
785+
/// trg_eating_fruit
786+
kHandheldItemTrgEatingFruit = 7,
787+
/// trg_eating_seaweed or trg_eating_fish
788+
kHandheldItemTrgEatingSeaweedOrFish = 8,
789+
/// trg_eating_meat
790+
kHandheldItemTrgEatingMeat = 9,
791+
/// trg_eating_seaweed
792+
kHandheldItemTrgEatingSeaweed = 10,
793+
/// city_protest_sign_hunger
794+
kHandheldItemCityProtestSignHunger = 11,
795+
/// trg_recruit_staff
796+
kHandheldItemTrgRecruitStaff = 12,
797+
/// trg_social_maraca
798+
kHandheldItemTrgSocialMaraca = 13,
799+
/// trg_social_horn
800+
kHandheldItemTrgSocialHorn = 14,
801+
/// trg_social_didgeridoo
802+
kHandheldItemTrgSocialDidgeridoo = 15,
803+
/// trg_gathering_treesmacker
804+
kHandheldItemTrgGatheringTreeSmacker = 16,
805+
/// trg_chieftain_staff
806+
kHandheldItemTrgChieftainStaff = 17,
807+
/// trg_healing_staff
808+
kHandheldItemTrgHealingStaff = 18,
809+
/// trg_repair_mallet
810+
kHandheldItemTrgRepairMallet = 19,
811+
/// trg_water_bucket
812+
kHandheldItemTrgWaterBucket = 20,
813+
/// 0xA8F747AE, some tribal horn
814+
kHandheldItemUnk21 = 21,
815+
/// trg_firebomb
816+
kHandheldItemTrgFireBomb = 22,
817+
/// trg_eating_egg
818+
kHandheldItemTrgEatingEgg = 23,
819+
};
769820
}

Spore ModAPI/Spore/Simulator/cCreatureBase.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ namespace Simulator
208208
/// @returns
209209
int PlayVoice(const char* pName, int param2, int param3);
210210

211+
bool IsHervibore();
212+
211213

212214
/* 54h */ virtual void CreateLocomotionStrategy();
213215

@@ -415,5 +417,6 @@ namespace Simulator
415417
DeclareAddress(OnJumpLand); // 0xC14670 0xC14E10
416418
DeclareAddress(OnStartSwimming); // 0xC147D0 0xC14F70
417419
DeclareAddress(Update); // 0xC20C50 0xC21530
420+
DeclareAddress(IsHervibore); // 0xC0B040 0xC0B8E0
418421
}
419422
}

Spore ModAPI/Spore/Simulator/cCreatureCitizen.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ namespace Simulator
2929
/// @param property [Optional]
3030
void DoAction(int actionId, cGameData* actionObject, App::Property* property = nullptr);
3131

32+
/// For a given tribal tool from Simulator::TribeToolType, returns which item must be held by
33+
/// the citizen. The item is part of the Simulator::HandheldItem enum.
34+
/// @param toolType
35+
/// @returns An integer identifying the kind of item to be held
36+
int GetHandheldItemForTool(int toolType);
37+
3238
public:
3339
/* FC0h */ int field_FC0; // 3
3440
/* FC4h */ uint32_t mFavoredGrasperlikeAppendage; // -1
@@ -53,5 +59,6 @@ namespace Simulator
5359
namespace Addresses(cCreatureCitizen) {
5460
DeclareAddress(Update); // 0xC24210 0xC24A30
5561
DeclareAddress(DoAction); // 0xC26EF0 0xC27710
62+
DeclareAddress(GetHandheldItemForTool); // 0xC22E70 0xC23740
5663
}
5764
}

0 commit comments

Comments
 (0)