mirror of
https://github.com/OpenMW/openmw.git
synced 2025-05-10 11:41:28 +00:00
Add issues from Redmine
This commit is contained in:
parent
319d30fb85
commit
3c5a50cf90
2 changed files with 197 additions and 6 deletions
|
@ -117,6 +117,36 @@ player -> addSpell "fire_bite", 645
|
||||||
|
|
||||||
PositionCell "Rabenfels, Taverne" 4480.000 3968.000 15820.000 0
|
PositionCell "Rabenfels, Taverne" 4480.000 3968.000 15820.000 0
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue587 = R"mwscript(Begin stalresetScript
|
||||||
|
|
||||||
|
End stalreset Script)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue677 = R"mwscript(Begin _ase_dtree_dtree-owls
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue685 = R"mwscript(Begin issue685
|
||||||
|
|
||||||
|
Choice: "Sicher. Hier, nehmt." 1 "Nein, ich denke nicht. Tut mir Leid." 2
|
||||||
|
StartScript GetPCGold
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue694 = R"mwscript(Begin issue694
|
||||||
|
|
||||||
|
float timer
|
||||||
|
|
||||||
|
if ( timer < .1 )
|
||||||
|
endif
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue1062 = R"mwscript(Begin issue1026
|
||||||
|
|
||||||
|
short end
|
||||||
|
|
||||||
End)mwscript";
|
End)mwscript";
|
||||||
|
|
||||||
const std::string sIssue1430 = R"mwscript(Begin issue1430
|
const std::string sIssue1430 = R"mwscript(Begin issue1430
|
||||||
|
@ -129,12 +159,58 @@ If ( menumode == 1 )
|
||||||
player->additem "ring_keley", 1,
|
player->additem "ring_keley", 1,
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue1593 = R"mwscript(Begin changeWater_-550_400
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue1730 = R"mwscript(Begin 4LOM_Corprusarium_Guards
|
||||||
|
|
||||||
End)mwscript";
|
End)mwscript";
|
||||||
|
|
||||||
const std::string sIssue1767 = R"mwscript(Begin issue1767
|
const std::string sIssue1767 = R"mwscript(Begin issue1767
|
||||||
|
|
||||||
player->GetPcRank "temple"
|
player->GetPcRank "temple"
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue2206 = R"mwscript(Begin issue2206
|
||||||
|
|
||||||
|
Choice ."Sklavin kaufen." 1 "Lebt wohl." 2
|
||||||
|
Choice Choice "Insister pour qu’il vous réponde." 6 "Le prier de vous accorder un peu de son temps." 6 " Le menacer de révéler qu'il prélève sa part sur les bénéfices de la mine d’ébonite." 7
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue2207 = R"mwscript(Begin issue2207
|
||||||
|
|
||||||
|
PositionCell -35 –473 -248 0 "Skaal-Dorf, Die Große Halle"
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue2794 = R"mwscript(Begin issue2794
|
||||||
|
|
||||||
|
if ( player->"getlevel" == 1 )
|
||||||
|
; do something
|
||||||
|
endif
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue2830 = R"mwscript(Begin issue2830
|
||||||
|
|
||||||
|
AddItem "if" 1
|
||||||
|
AddItem "endif" 1
|
||||||
|
GetItemCount "begin"
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue2991 = R"mwscript(Begin issue2991
|
||||||
|
|
||||||
|
MessageBox "OnActivate"
|
||||||
|
messagebox "messagebox"
|
||||||
|
messagebox "if"
|
||||||
|
messagebox "tcl"
|
||||||
|
|
||||||
End)mwscript";
|
End)mwscript";
|
||||||
|
|
||||||
const std::string sIssue3006 = R"mwscript(Begin issue3006
|
const std::string sIssue3006 = R"mwscript(Begin issue3006
|
||||||
|
@ -156,6 +232,18 @@ if onactivate
|
||||||
; do something
|
; do something
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
End)mwscript";
|
||||||
|
|
||||||
|
const std::string sIssue3836 = R"mwscript(Begin issue3836
|
||||||
|
|
||||||
|
MessageBox " Membership Level: %.0f
|
||||||
|
Account Balance: %.0f
|
||||||
|
Your Gold: %.0f
|
||||||
|
Interest Rate: %.3f
|
||||||
|
Service Charge Rate: %.3f
|
||||||
|
Total Service Charges: %.0f
|
||||||
|
Total Interest Earned: %.0f " Membership BankAccount YourGold InterestRate ServiceRate TotalServiceCharges TotalInterestEarned
|
||||||
|
|
||||||
End)mwscript";
|
End)mwscript";
|
||||||
|
|
||||||
const std::string sIssue3846 = R"mwscript(Begin issue3846
|
const std::string sIssue3846 = R"mwscript(Begin issue3846
|
||||||
|
@ -292,7 +380,7 @@ End)mwscript";
|
||||||
{
|
{
|
||||||
registerExtensions();
|
registerExtensions();
|
||||||
bool failed = true;
|
bool failed = true;
|
||||||
if(auto script = compile(sScript2))
|
if(const auto script = compile(sScript2))
|
||||||
{
|
{
|
||||||
class AddTopic : public Interpreter::Opcode0
|
class AddTopic : public Interpreter::Opcode0
|
||||||
{
|
{
|
||||||
|
@ -320,7 +408,7 @@ End)mwscript";
|
||||||
|
|
||||||
TEST_F(MWScriptTest, mwscript_test_math)
|
TEST_F(MWScriptTest, mwscript_test_math)
|
||||||
{
|
{
|
||||||
if(auto script = compile(sScript3))
|
if(const auto script = compile(sScript3))
|
||||||
{
|
{
|
||||||
struct Algorithm
|
struct Algorithm
|
||||||
{
|
{
|
||||||
|
@ -369,21 +457,94 @@ End)mwscript";
|
||||||
EXPECT_FALSE(!compile(sScript4));
|
EXPECT_FALSE(!compile(sScript4));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_587)
|
||||||
|
{
|
||||||
|
EXPECT_FALSE(!compile(sIssue587));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_677)
|
||||||
|
{
|
||||||
|
EXPECT_FALSE(!compile(sIssue677));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_685)
|
||||||
|
{
|
||||||
|
registerExtensions();
|
||||||
|
EXPECT_FALSE(!compile(sIssue685));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_694)
|
||||||
|
{
|
||||||
|
EXPECT_FALSE(!compile(sIssue694));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_1062)
|
||||||
|
{
|
||||||
|
if(const auto script = compile(sIssue1062))
|
||||||
|
{
|
||||||
|
EXPECT_EQ(script->mLocals.getIndex("end"), 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FAIL();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(MWScriptTest, mwscript_test_1430)
|
TEST_F(MWScriptTest, mwscript_test_1430)
|
||||||
{
|
{
|
||||||
registerExtensions();
|
registerExtensions();
|
||||||
EXPECT_FALSE(!compile(sIssue1430));
|
EXPECT_FALSE(!compile(sIssue1430));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_1593)
|
||||||
|
{
|
||||||
|
EXPECT_FALSE(!compile(sIssue1593));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_1730)
|
||||||
|
{
|
||||||
|
EXPECT_FALSE(!compile(sIssue1730));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(MWScriptTest, mwscript_test_1767)
|
TEST_F(MWScriptTest, mwscript_test_1767)
|
||||||
{
|
{
|
||||||
registerExtensions();
|
registerExtensions();
|
||||||
EXPECT_FALSE(!compile(sIssue1767));
|
EXPECT_FALSE(!compile(sIssue1767));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_2206)
|
||||||
|
{
|
||||||
|
registerExtensions();
|
||||||
|
EXPECT_FALSE(!compile(sIssue2206));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_2207)
|
||||||
|
{
|
||||||
|
registerExtensions();
|
||||||
|
EXPECT_FALSE(!compile(sIssue2207));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_2794)
|
||||||
|
{
|
||||||
|
registerExtensions();
|
||||||
|
EXPECT_FALSE(!compile(sIssue2794));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_2830)
|
||||||
|
{
|
||||||
|
registerExtensions();
|
||||||
|
EXPECT_FALSE(!compile(sIssue2830));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_2991)
|
||||||
|
{
|
||||||
|
registerExtensions();
|
||||||
|
EXPECT_FALSE(!compile(sIssue2991));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(MWScriptTest, mwscript_test_3006)
|
TEST_F(MWScriptTest, mwscript_test_3006)
|
||||||
{
|
{
|
||||||
if(auto script = compile(sIssue3006))
|
if(const auto script = compile(sIssue3006))
|
||||||
{
|
{
|
||||||
TestInterpreterContext context;
|
TestInterpreterContext context;
|
||||||
context.setLocalShort(0, 0);
|
context.setLocalShort(0, 0);
|
||||||
|
@ -405,10 +566,41 @@ End)mwscript";
|
||||||
EXPECT_FALSE(!compile(sIssue3725));
|
EXPECT_FALSE(!compile(sIssue3725));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(MWScriptTest, mwscript_test_3836)
|
||||||
|
{
|
||||||
|
registerExtensions();
|
||||||
|
EXPECT_FALSE(!compile(sIssue3836));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(MWScriptTest, mwscript_test_3846)
|
TEST_F(MWScriptTest, mwscript_test_3846)
|
||||||
{
|
{
|
||||||
registerExtensions();
|
registerExtensions();
|
||||||
EXPECT_FALSE(!compile(sIssue3846));
|
if(const auto script = compile(sIssue3846))
|
||||||
|
{
|
||||||
|
std::vector<std::string> topics = { "-spells...", "-magicka..." };
|
||||||
|
class AddTopic : public Interpreter::Opcode0
|
||||||
|
{
|
||||||
|
std::vector<std::string>& mTopics;
|
||||||
|
public:
|
||||||
|
AddTopic(std::vector<std::string>& topics) : mTopics(topics) {}
|
||||||
|
|
||||||
|
void execute(Interpreter::Runtime& runtime)
|
||||||
|
{
|
||||||
|
const auto topic = runtime.getStringLiteral(runtime[0].mInteger);
|
||||||
|
runtime.pop();
|
||||||
|
EXPECT_EQ(topic, mTopics[0]);
|
||||||
|
mTopics.erase(mTopics.begin());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
installOpcode(Compiler::Dialogue::opcodeAddTopic, new AddTopic(topics));
|
||||||
|
TestInterpreterContext context;
|
||||||
|
run(*script, context);
|
||||||
|
EXPECT_TRUE(topics.empty());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FAIL();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(MWScriptTest, mwscript_test_4061)
|
TEST_F(MWScriptTest, mwscript_test_4061)
|
||||||
|
@ -423,7 +615,7 @@ End)mwscript";
|
||||||
|
|
||||||
TEST_F(MWScriptTest, mwscript_test_4597)
|
TEST_F(MWScriptTest, mwscript_test_4597)
|
||||||
{
|
{
|
||||||
if(auto script = compile(sIssue4597))
|
if(const auto script = compile(sIssue4597))
|
||||||
{
|
{
|
||||||
TestInterpreterContext context;
|
TestInterpreterContext context;
|
||||||
for(int a = 0; a < 100; ++a)
|
for(int a = 0; a < 100; ++a)
|
||||||
|
|
|
@ -31,7 +31,6 @@ namespace
|
||||||
char getGlobalType(const std::string& name) const override { return ' '; }
|
char getGlobalType(const std::string& name) const override { return ' '; }
|
||||||
std::pair<char, bool> getMemberType(const std::string& name, const std::string& id) const override { return {' ', false}; }
|
std::pair<char, bool> getMemberType(const std::string& name, const std::string& id) const override { return {' ', false}; }
|
||||||
bool isId(const std::string& name) const override { return Misc::StringUtils::ciEqual(name, "player"); }
|
bool isId(const std::string& name) const override { return Misc::StringUtils::ciEqual(name, "player"); }
|
||||||
bool isJournalId(const std::string& name) const override { return false; }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class TestErrorHandler : public Compiler::ErrorHandler
|
class TestErrorHandler : public Compiler::ErrorHandler
|
||||||
|
|
Loading…
Reference in a new issue