|
|
|
@ -392,6 +392,46 @@ namespace MWScript
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class OpGetPCCrimeLevel : public Interpreter::Opcode0
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
virtual void execute (Interpreter::Runtime& runtime)
|
|
|
|
|
{
|
|
|
|
|
MWBase::World *world = MWBase::Environment::get().getWorld();
|
|
|
|
|
MWWorld::Ptr player = world->getPlayer().getPlayer();
|
|
|
|
|
runtime.push (static_cast <Interpreter::Type_Float> (MWWorld::Class::get (player).getNpcStats (player).getBounty()));
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class OpSetPCCrimeLevel : public Interpreter::Opcode0
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
virtual void execute (Interpreter::Runtime& runtime)
|
|
|
|
|
{
|
|
|
|
|
MWBase::World *world = MWBase::Environment::get().getWorld();
|
|
|
|
|
MWWorld::Ptr player = world->getPlayer().getPlayer();
|
|
|
|
|
|
|
|
|
|
MWWorld::Class::get (player).getNpcStats (player).setBounty(runtime[0].mFloat);
|
|
|
|
|
runtime.pop();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class OpModPCCrimeLevel : public Interpreter::Opcode0
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
virtual void execute (Interpreter::Runtime& runtime)
|
|
|
|
|
{
|
|
|
|
|
MWBase::World *world = MWBase::Environment::get().getWorld();
|
|
|
|
|
MWWorld::Ptr player = world->getPlayer().getPlayer();
|
|
|
|
|
|
|
|
|
|
MWWorld::Class::get (player).getNpcStats (player).setBounty(runtime[0].mFloat + MWWorld::Class::get (player).getNpcStats (player).getBounty());
|
|
|
|
|
runtime.pop();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
template<class R>
|
|
|
|
|
class OpAddSpell : public Interpreter::Opcode0
|
|
|
|
|
{
|
|
|
|
@ -1016,6 +1056,10 @@ namespace MWScript
|
|
|
|
|
const int opcodeModSkill = 0x20000fa;
|
|
|
|
|
const int opcodeModSkillExplicit = 0x2000115;
|
|
|
|
|
|
|
|
|
|
const int opcodeGetPCCrimeLevel = 0x20001ec;
|
|
|
|
|
const int opcodeSetPCCrimeLevel = 0x20001ed;
|
|
|
|
|
const int opcodeModPCCrimeLevel = 0x20001ee;
|
|
|
|
|
|
|
|
|
|
const int opcodeAddSpell = 0x2000147;
|
|
|
|
|
const int opcodeAddSpellExplicit = 0x2000148;
|
|
|
|
|
const int opcodeRemoveSpell = 0x2000149;
|
|
|
|
@ -1141,6 +1185,10 @@ namespace MWScript
|
|
|
|
|
opcodeModSkill+i, opcodeModSkillExplicit+i);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extensions.registerFunction ("getpccrimelevel", 'f', "", opcodeGetPCCrimeLevel);
|
|
|
|
|
extensions.registerInstruction ("setpccrimelevel", "f", opcodeSetPCCrimeLevel);
|
|
|
|
|
extensions.registerInstruction ("modpccrimelevel", "f", opcodeModPCCrimeLevel);
|
|
|
|
|
|
|
|
|
|
extensions.registerInstruction ("addspell", "c", opcodeAddSpell, opcodeAddSpellExplicit);
|
|
|
|
|
extensions.registerInstruction ("removespell", "c", opcodeRemoveSpell,
|
|
|
|
|
opcodeRemoveSpellExplicit);
|
|
|
|
@ -1235,6 +1283,10 @@ namespace MWScript
|
|
|
|
|
interpreter.installSegment5 (opcodeModSkillExplicit+i, new OpModSkill<ExplicitRef> (i));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interpreter.installSegment5 (opcodeGetPCCrimeLevel, new OpGetPCCrimeLevel);
|
|
|
|
|
interpreter.installSegment5 (opcodeSetPCCrimeLevel, new OpSetPCCrimeLevel);
|
|
|
|
|
interpreter.installSegment5 (opcodeModPCCrimeLevel, new OpModPCCrimeLevel);
|
|
|
|
|
|
|
|
|
|
interpreter.installSegment5 (opcodeAddSpell, new OpAddSpell<ImplicitRef>);
|
|
|
|
|
interpreter.installSegment5 (opcodeAddSpellExplicit, new OpAddSpell<ExplicitRef>);
|
|
|
|
|
interpreter.installSegment5 (opcodeRemoveSpell, new OpRemoveSpell<ImplicitRef>);
|
|
|
|
|