Skip to content

Commit 986fbcc

Browse files
committed
Prerelease commit
Last code commit before the release
1 parent 47c0ac9 commit 986fbcc

5 files changed

Lines changed: 145 additions & 51 deletions

File tree

nh3api/core/army.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,7 @@ class army
635635
/// @param casting_hero указатель на героя, который будет кастовать
636636
void SetSpellInfluence(SpellID spell,
637637
int32_t power,
638-
enum TSkillMastery mastery,
638+
TSkillMastery mastery,
639639
hero const *casting_hero)
640640
{ THISCALL_5(void, 0x444610, this, spell, power, mastery, casting_hero); }
641641

nh3api/core/hero.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -966,7 +966,7 @@ struct HeroPlaceholder
966966
// Map object /
967967
// Соответствующий объект карты
968968
// offset: +0x0 = +0, size = 0x4 = 4
969-
CObject* obj;
969+
CObject* object;
970970

971971
// Player this hero belongs to /
972972
// Игрок, которому принадлежит этот герой
@@ -976,12 +976,12 @@ struct HeroPlaceholder
976976
// Hero ID /
977977
// ID героя.
978978
// offset: +0x8 = +8, size = 0x4 = 4
979-
THeroID hero_id;
979+
THeroID id;
980980

981981
// Hero power /
982982
// Сила героя.
983983
// offset: +0xC = +12, size = 0x1 = 1
984-
int8_t hero_power;
984+
int8_t power;
985985

986986
};
987987
#pragma pack(pop)

nh3api/core/objects.hpp

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -241,36 +241,6 @@ struct TreasureData
241241
};
242242
#pragma pack(pop)
243243

244-
#pragma pack(push, 4)
245-
// Secondary Skill Data in Pandora's box /
246-
// Данные вторичного навыка, используется в структуре ящика пандоры.
247-
// size = 0x8 = 8, align = 4
248-
struct SecondarySkillData
249-
{
250-
public:
251-
NH3API_FORCEINLINE NH3API_CONSTEXPR
252-
SecondarySkillData() NH3API_NOEXCEPT
253-
: type(SKILL_NONE), level(eMasteryNone)
254-
{}
255-
256-
NH3API_FORCEINLINE
257-
SecondarySkillData(const nh3api::dummy_tag_t& tag) NH3API_NOEXCEPT
258-
{ NH3API_IGNORE(type, level); }
259-
260-
public:
261-
// Secondary skill /
262-
// Вторичный навык.
263-
// offset: +0x0 = +0, size = 0x4 = 4
264-
TSecondarySkill type;
265-
266-
// Secondary skill mastery /
267-
// Ступень вторичного навыка.
268-
// offset: +0x4 = +4, size = 0x4 = 4
269-
TSkillMastery level;
270-
271-
};
272-
#pragma pack(pop)
273-
274244
#pragma pack(push, 4)
275245
// Adventure map monster data /
276246
// Информация о существе на карте.

nh3api/core/quests.hpp

Lines changed: 111 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,7 @@ class TQuestGuard
608608
// Игроки, посетившие этот объект.
609609
// offset: +0x4 = +4, size = 0x1 = 1
610610
uint8_t visitedPlayers;
611+
611612
};
612613
#pragma pack(pop)
613614

@@ -628,30 +629,85 @@ enum TSeerRewardType : uint32_t
628629
eRewardCreature = 10, // Существо
629630
};
630631

632+
#pragma pack(push, 4)
633+
// Seer hut quest completion reward as a creature /
634+
// Награда хижины провидца - существо.
635+
// size = 0x8 = 8, align = 4
636+
struct TCreatureStack
637+
{
638+
public:
639+
// Creature type /
640+
// Тип существа.
641+
// offset: +0x0 = +0, size = 0x4 = 4
642+
TCreatureType Creature;
643+
644+
// Number of creatures /
645+
// Количество существ.
646+
// offset: +0x4 = +4, size = 0x2 = 2
647+
int16_t numTroops;
648+
649+
protected:
650+
byte_t gap6[2];
651+
652+
};
653+
#pragma pack(pop)
654+
655+
#pragma pack(push, 4)
656+
// Seer hut quest completion reward as a game resource /
657+
// Награда хижины провидца - игровой ресурс.
658+
// size = 0x8 = 8, align = 4
659+
struct TSeerResourceReward
660+
{
661+
public:
662+
// Resource type /
663+
// Тип ресурса.
664+
// offset: +0x0 = +0, size = 0x4 = 4
665+
EGameResource resType;
666+
667+
// Resource quantity /
668+
// Количество ресурса.
669+
// offset: +0x4 = +4, size = 0x4 = 4
670+
uint32_t resQty;
671+
672+
};
673+
#pragma pack(pop)
674+
675+
#pragma pack(push, 4)
676+
// Seer hut quest completion reward as a primary skill /
677+
// Награда хижины провидца - первичный навык.
678+
// size = 0x8 = 8, align = 4
679+
struct TSeerPrimarySkillReward
680+
{
681+
public:
682+
// Primary skill type /
683+
// Тип первичного навыка.
684+
// offset: +0x0 = +0, size = 0x4 = 4
685+
TPrimarySkill skillType;
686+
687+
// Primary skill level increment /
688+
// Уровень первичного навыка.
689+
// offset: +0x4 = +4, size = 0x1 = 1
690+
uint8_t bonus;
691+
protected:
692+
byte_t gap5[3];
693+
694+
};
695+
#pragma pack(pop)
696+
631697
#pragma pack(push, 4)
632698
// Seerhut reward /
633699
// Информация о вознаграждении хижины провидца.
634700
// size = 0xC = 12, align = 4
635701
struct TSeerReward
636702
{
637703
public:
638-
NH3API_FORCEINLINE NH3API_CONSTEXPR
639-
TSeerReward(TSeerRewardType reward_type,
640-
int32_t reward_value1,
641-
int32_t reward_value2) NH3API_NOEXCEPT
642-
: rewardType(reward_type),
643-
rewardValue1(reward_value1),
644-
rewardValue2(reward_value2)
645-
{}
646-
647-
NH3API_FORCEINLINE NH3API_CONSTEXPR
704+
NH3API_FORCEINLINE
648705
TSeerReward() NH3API_NOEXCEPT
649-
: rewardType(eRewardNone), rewardValue1(0), rewardValue2(0)
650-
{}
706+
{ nh3api::trivial_zero<sizeof(TSeerReward)>(this); }
651707

652708
NH3API_FORCEINLINE
653709
TSeerReward(const nh3api::dummy_tag_t& tag) NH3API_NOEXCEPT
654-
{ NH3API_IGNORE(rewardType, rewardValue1, rewardValue2); }
710+
{ NH3API_IGNORE(rewardType); }
655711

656712
public:
657713
int32_t getValue(hero* current_hero)
@@ -669,11 +725,49 @@ struct TSeerReward
669725
// offset: +0x0 = +5, size = 0x4 = 4
670726
TSeerRewardType rewardType;
671727

672-
// offset: +0x9 = +9, size = 0x4 = 4
673-
int32_t rewardValue1;
728+
union
729+
{
730+
// Experience increment reward /
731+
// Кол-во опыта в виде вознаграждения.
732+
int32_t ExperienceBonus;
733+
734+
// Mana reward /
735+
// Вознаграждение в виде маны.
736+
int32_t ManaBonus;
737+
738+
// Morale reward /
739+
// Вознаграждение в виде боевого духа.
740+
int8_t MoraleBonus;
741+
742+
// Luck reward /
743+
// Вознаграждение в виде удачи.
744+
int8_t LuckBonus;
745+
746+
// Resource reward /
747+
// Вознаграждение в виде ресурсов
748+
TSeerResourceReward ResourceReward;
749+
750+
// Primary skill increment reward /
751+
// Увеличение уровня первичного навыка в виде вознаграждения.
752+
TSeerPrimarySkillReward PrimarySkillReward;
753+
754+
// Secondary skill learning reward /
755+
// Обучение вторичным навыком в качестве вознаграждения.
756+
SecondarySkillData SecondarySkillReward;
757+
758+
// Artifact reward /
759+
// Вознаграждение в виде артефакта.
760+
TArtifact ArtifactReward;
761+
762+
// Spell learning reward /
763+
// Обучение заклинанию в качестве вознаграждения.
764+
SpellID SpellReward;
765+
766+
// Creature reward /
767+
// Вознаграждение в существа.
768+
TCreatureStack CreatureReward;
674769

675-
// offset: +0xD = +13, size = 0x4 = 4
676-
int32_t rewardValue2;
770+
} NH3API_MSVC_LAYOUT;
677771
};
678772
#pragma pack(pop)
679773

nh3api/core/skills.hpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,36 @@ struct TSSkillTraits
105105
};
106106
#pragma pack(pop)
107107

108+
#pragma pack(push, 4)
109+
// Secondary Skill Data in Pandora's box and Seer's Hut /
110+
// Данные вторичного навыка вознаграждения в ящике пандоры и хижине провидца.
111+
// size = 0x8 = 8, align = 4
112+
struct SecondarySkillData
113+
{
114+
public:
115+
NH3API_FORCEINLINE NH3API_CONSTEXPR
116+
SecondarySkillData() NH3API_NOEXCEPT
117+
: type(SKILL_NONE), level(eMasteryNone)
118+
{}
119+
120+
NH3API_FORCEINLINE
121+
SecondarySkillData(const nh3api::dummy_tag_t& tag) NH3API_NOEXCEPT
122+
{ NH3API_IGNORE(type, level); }
123+
124+
public:
125+
// Secondary skill /
126+
// Вторичный навык.
127+
// offset: +0x0 = +0, size = 0x4 = 4
128+
TSecondarySkill type;
129+
130+
// Secondary skill mastery /
131+
// Ступень вторичного навыка.
132+
// offset: +0x4 = +4, size = 0x4 = 4
133+
TSkillMastery level;
134+
135+
};
136+
#pragma pack(pop)
137+
108138
NH3API_INLINE_OR_EXTERN
109139
// Secondary Skill traits table. Filled by game from "SSTRAITS.TXT" /
110140
// Таблица свойств вторичных навыков. Заполняется игрой из файла "SSTRAITS.TXT"

0 commit comments

Comments
 (0)