Skip to content

Commit d973647

Browse files
committed
feat: RE::Script and related defs
1 parent c16e10a commit d973647

23 files changed

+538
-0
lines changed

include/RE/A/ActionObject.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#pragma once
2+
3+
namespace RE
4+
{
5+
class TESForm;
6+
7+
struct ACTION_OBJECT
8+
{
9+
public:
10+
// members
11+
TESForm* form; // 00
12+
std::uint64_t flags; // 08
13+
};
14+
static_assert(sizeof(ACTION_OBJECT) == 0x10);
15+
}

include/RE/C/CompilerName.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#pragma once
2+
3+
namespace RE
4+
{
5+
enum class COMPILER_NAME : std::int32_t
6+
{
7+
kDefault,
8+
kSystemWindow,
9+
kDialogue
10+
};
11+
}

include/RE/E/ExpressionOperators.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#pragma once
2+
3+
namespace RE
4+
{
5+
enum class EXPRESSION_OPERATORS : std::int32_t
6+
{
7+
kLeftParen,
8+
kRightParen,
9+
kAnd,
10+
kOr,
11+
kLessEqual,
12+
kLess,
13+
kGreaterEqual,
14+
kGreater,
15+
kEqual,
16+
kNotEqual,
17+
kSubtract,
18+
kAdd,
19+
kMultiply,
20+
kDivide,
21+
kModulus,
22+
kUnaryMinus,
23+
};
24+
}

include/RE/IDs.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ namespace RE::ID
1818
inline constexpr REL::Offset PrintLine{ 0x665C580 };
1919
}
2020

21+
namespace SCRIPT_FUNCTION
22+
{
23+
inline constexpr REL::Offset ConsoleFunctions{ 0x8FF3C40 };
24+
inline constexpr REL::Offset ScriptFunctions{ 0x8FEC850 };
25+
}
26+
2127
namespace Setting
2228
{
2329
inline constexpr REL::Offset SetString{ 0x6710B70 };

include/RE/S/Script.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#pragma once
2+
3+
#include "RE/B/BSTList.h"
4+
#include "RE/S/ScriptHeader.h"
5+
#include "RE/T/TESForm.h"
6+
7+
namespace RE
8+
{
9+
class ScriptVariable;
10+
11+
struct SCRIPT_REFERENCED_OBJECT;
12+
13+
class Script :
14+
public TESForm
15+
{
16+
public:
17+
// members
18+
SCRIPT_HEADER header; // 30
19+
char* text; // 48
20+
char* data; // 50
21+
float profilerTimer; // 58
22+
float questScriptDelay; // 5C
23+
float questScriptGetSecondsBuffer; // 60
24+
BSSimpleList<SCRIPT_REFERENCED_OBJECT*> listRefObjects; // 68
25+
BSSimpleList<ScriptVariable*> listVariables; // 78
26+
};
27+
static_assert(sizeof(Script) == 0x88);
28+
}

include/RE/S/ScriptBlock.h

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#pragma once
2+
3+
namespace RE
4+
{
5+
enum class SCRIPT_BLOCK : std::int32_t
6+
{
7+
kGameMode,
8+
kMenuMode,
9+
kOnActivate,
10+
kOnAdd,
11+
kOnEquip,
12+
kOnUnequip,
13+
kOnDrop,
14+
kOnYield,
15+
kOnHit,
16+
kOnHitWith,
17+
kOnDeath,
18+
kOnMurder,
19+
kOnKnockout,
20+
kOnAlarm,
21+
kOnAlarmVictim,
22+
kOnPackageStart,
23+
kOnPackageEnd,
24+
kScriptEffectStart,
25+
kScriptEffectFinish,
26+
kScriptEffectUpdate,
27+
kOnPackageChange,
28+
kOnLoad,
29+
kOnMagicEffectHit,
30+
kOnSell,
31+
kOnTrigger,
32+
kOnStartCombat,
33+
kOnTriggerActor,
34+
kOnTriggerMob,
35+
kOnActorEquip,
36+
kOnActorUnequip,
37+
kOnReset,
38+
kOnDying
39+
};
40+
}

include/RE/S/ScriptCompileData.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#pragma once
2+
3+
#include "RE/B/BSTList.h"
4+
#include "RE/B/BSStringT.h"
5+
#include "RE/C/CompilerName.h"
6+
#include "RE/S/ScriptError.h"
7+
#include "RE/S/ScriptHeader.h"
8+
9+
namespace RE
10+
{
11+
class Script;
12+
class ScriptVariable;
13+
14+
struct SCRIPT_LINE;
15+
struct SCRIPT_REFERENCED_OBJECT;
16+
17+
class ScriptCompileData
18+
{
19+
public:
20+
// members
21+
const char* input; // 00
22+
std::uint32_t inputOffset; // 08
23+
COMPILER_NAME compilerIndex; // 0C
24+
BSString scriptName; // 10
25+
SCRIPT_ERROR lastError; // 20
26+
bool isPartialScript; // 24
27+
std::uint32_t lastLineNumber; // 28
28+
char* output; // 30
29+
std::uint32_t outputOffset; // 38
30+
SCRIPT_HEADER header; // 3C
31+
BSSimpleList<ScriptVariable*> listVariables; // 50
32+
BSSimpleList<SCRIPT_REFERENCED_OBJECT*> listRefObjects; // 60
33+
Script* currentScript; // 70
34+
BSSimpleList<SCRIPT_LINE*> listLines; // 78
35+
};
36+
static_assert(sizeof(ScriptCompileData) == 0x88);
37+
}

include/RE/S/ScriptCompiler.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#pragma once
2+
3+
namespace RE
4+
{
5+
class ScriptCompiler
6+
{
7+
public:
8+
};
9+
static_assert(std::is_empty_v<ScriptCompiler>);
10+
}

include/RE/S/ScriptEffectData.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#pragma once
2+
3+
namespace RE
4+
{
5+
struct SCRIPT_EFFECT_DATA
6+
{
7+
public:
8+
// members
9+
bool scriptEffectStart; // 00
10+
bool scriptEffectFinish; // 01
11+
float secondsElapsed; // 04
12+
};
13+
static_assert(sizeof(SCRIPT_EFFECT_DATA) == 0x08);
14+
}

include/RE/S/ScriptError.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#pragma once
2+
3+
namespace RE
4+
{
5+
enum class SCRIPT_ERROR : std::int32_t
6+
{
7+
kNoError,
8+
kScriptNameMissing,
9+
kSyntax,
10+
kBadVariableName,
11+
kUnknownVariable,
12+
kNoCommands,
13+
kExpression,
14+
kMissingSetVarAlias,
15+
kWhileStackOverflow,
16+
kWhileStackUnderflow,
17+
kIfStackOverflow,
18+
kIfStackUnderflow,
19+
kOutOfMemory,
20+
kUnhandledCommand,
21+
kFileType,
22+
kFileCorrupt,
23+
kLineTooLong,
24+
kUnknownObject,
25+
};
26+
}

0 commit comments

Comments
 (0)