mirror of
https://github.com/OpenMW/openmw.git
synced 2025-06-02 07:11:33 +00:00
added missing disposition script instructions
This commit is contained in:
parent
8aa1fd921b
commit
c621a9f7e4
2 changed files with 50 additions and 4 deletions
|
@ -207,5 +207,9 @@ op 0x20001a0: ShowMap
|
||||||
op 0x20001a1: FillMap
|
op 0x20001a1: FillMap
|
||||||
op 0x20001a2: WakeUpPc
|
op 0x20001a2: WakeUpPc
|
||||||
op 0x20001a3: GetDeadCount
|
op 0x20001a3: GetDeadCount
|
||||||
opcodes 0x20001a4-0x3ffffff unused
|
op 0x20001a4: SetDisposition
|
||||||
|
op 0x20001a5: SetDisposition, Explicit
|
||||||
|
op 0x20001a6: GetDisposition
|
||||||
|
op 0x20001a7: GetDisposition, Explicit
|
||||||
|
opcodes 0x20001a8-0x3ffffff unused
|
||||||
|
|
||||||
|
|
|
@ -609,6 +609,35 @@ namespace MWScript
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<class R>
|
||||||
|
class OpSetDisposition : public Interpreter::Opcode0
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual void execute (Interpreter::Runtime& runtime)
|
||||||
|
{
|
||||||
|
MWWorld::Ptr ptr = R()(runtime);
|
||||||
|
|
||||||
|
Interpreter::Type_Integer value = runtime[0].mInteger;
|
||||||
|
runtime.pop();
|
||||||
|
|
||||||
|
MWWorld::Class::get (ptr).getNpcStats (ptr).setBaseDisposition (value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class R>
|
||||||
|
class OpGetDisposition : public Interpreter::Opcode0
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual void execute (Interpreter::Runtime& runtime)
|
||||||
|
{
|
||||||
|
MWWorld::Ptr ptr = R()(runtime);
|
||||||
|
|
||||||
|
runtime.push (MWWorld::Class::get (ptr).getNpcStats (ptr).getBaseDisposition());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class OpGetDeadCount : public Interpreter::Opcode0
|
class OpGetDeadCount : public Interpreter::Opcode0
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -666,6 +695,10 @@ namespace MWScript
|
||||||
const int opcodeGetPCRankExplicit = 0x2000f;
|
const int opcodeGetPCRankExplicit = 0x2000f;
|
||||||
const int opcodeModDisposition = 0x200014d;
|
const int opcodeModDisposition = 0x200014d;
|
||||||
const int opcodeModDispositionExplicit = 0x200014e;
|
const int opcodeModDispositionExplicit = 0x200014e;
|
||||||
|
const int opcodeSetDisposition = 0x20001a4;
|
||||||
|
const int opcodeSetDispositionExplicit = 0x20001a5;
|
||||||
|
const int opcodeGetDisposition = 0x20001a6;
|
||||||
|
const int opcodeGetDispositionExplicit = 0x20001a7;
|
||||||
|
|
||||||
const int opcodeGetLevel = 0x200018c;
|
const int opcodeGetLevel = 0x200018c;
|
||||||
const int opcodeGetLevelExplicit = 0x200018d;
|
const int opcodeGetLevelExplicit = 0x200018d;
|
||||||
|
@ -755,6 +788,10 @@ namespace MWScript
|
||||||
extensions.registerInstruction("pcjoinfaction","/S",opcodePCJoinFaction);
|
extensions.registerInstruction("pcjoinfaction","/S",opcodePCJoinFaction);
|
||||||
extensions.registerInstruction ("moddisposition","l",opcodeModDisposition,
|
extensions.registerInstruction ("moddisposition","l",opcodeModDisposition,
|
||||||
opcodeModDispositionExplicit);
|
opcodeModDispositionExplicit);
|
||||||
|
extensions.registerInstruction ("setdisposition","l",opcodeSetDisposition,
|
||||||
|
opcodeSetDispositionExplicit);
|
||||||
|
extensions.registerFunction ("getdisposition",'l', "",opcodeGetDisposition,
|
||||||
|
opcodeGetDispositionExplicit);
|
||||||
extensions.registerFunction("getpcrank",'l',"/S",opcodeGetPCRank,opcodeGetPCRankExplicit);
|
extensions.registerFunction("getpcrank",'l',"/S",opcodeGetPCRank,opcodeGetPCRankExplicit);
|
||||||
|
|
||||||
extensions.registerInstruction("setlevel", "l", opcodeSetLevel, opcodeSetLevelExplicit);
|
extensions.registerInstruction("setlevel", "l", opcodeSetLevel, opcodeSetLevelExplicit);
|
||||||
|
@ -828,11 +865,16 @@ namespace MWScript
|
||||||
interpreter.installSegment3(opcodePCRaiseRank,new OpPCRaiseRank);
|
interpreter.installSegment3(opcodePCRaiseRank,new OpPCRaiseRank);
|
||||||
interpreter.installSegment3(opcodePCLowerRank,new OpPCLowerRank);
|
interpreter.installSegment3(opcodePCLowerRank,new OpPCLowerRank);
|
||||||
interpreter.installSegment3(opcodePCJoinFaction,new OpPCJoinFaction);
|
interpreter.installSegment3(opcodePCJoinFaction,new OpPCJoinFaction);
|
||||||
interpreter.installSegment5(opcodeModDisposition,new OpModDisposition<ImplicitRef>);
|
|
||||||
interpreter.installSegment5(opcodeModDispositionExplicit,new OpModDisposition<ExplicitRef>);
|
|
||||||
interpreter.installSegment3(opcodeGetPCRank,new OpGetPCRank<ImplicitRef>);
|
interpreter.installSegment3(opcodeGetPCRank,new OpGetPCRank<ImplicitRef>);
|
||||||
interpreter.installSegment3(opcodeGetPCRankExplicit,new OpGetPCRank<ExplicitRef>);
|
interpreter.installSegment3(opcodeGetPCRankExplicit,new OpGetPCRank<ExplicitRef>);
|
||||||
|
|
||||||
|
interpreter.installSegment5(opcodeModDisposition,new OpModDisposition<ImplicitRef>);
|
||||||
|
interpreter.installSegment5(opcodeModDispositionExplicit,new OpModDisposition<ExplicitRef>);
|
||||||
|
interpreter.installSegment5(opcodeSetDisposition,new OpSetDisposition<ImplicitRef>);
|
||||||
|
interpreter.installSegment5(opcodeSetDispositionExplicit,new OpSetDisposition<ExplicitRef>);
|
||||||
|
interpreter.installSegment5(opcodeGetDisposition,new OpGetDisposition<ImplicitRef>);
|
||||||
|
interpreter.installSegment5(opcodeGetDispositionExplicit,new OpGetDisposition<ExplicitRef>);
|
||||||
|
|
||||||
interpreter.installSegment5 (opcodeGetLevel, new OpGetLevel<ImplicitRef>);
|
interpreter.installSegment5 (opcodeGetLevel, new OpGetLevel<ImplicitRef>);
|
||||||
interpreter.installSegment5 (opcodeGetLevelExplicit, new OpGetLevel<ExplicitRef>);
|
interpreter.installSegment5 (opcodeGetLevelExplicit, new OpGetLevel<ExplicitRef>);
|
||||||
interpreter.installSegment5 (opcodeSetLevel, new OpSetLevel<ImplicitRef>);
|
interpreter.installSegment5 (opcodeSetLevel, new OpSetLevel<ImplicitRef>);
|
||||||
|
|
Loading…
Reference in a new issue