diff --git a/server/gameserver/mt/SkillNumber.cc b/server/gameserver/mt/SkillNumber.cc index 2d94c7b1..f53ed23b 100644 --- a/server/gameserver/mt/SkillNumber.cc +++ b/server/gameserver/mt/SkillNumber.cc @@ -23,7 +23,8 @@ A8_DECLARE_CLASS_ENUM(SkillNumberLispField_e, int, range3, time, cd, - number + number, + time2 ); namespace mt @@ -97,6 +98,14 @@ namespace mt _float_time = a8::XValue(tmp_str).GetDouble() / 100; } + _int_time2 = a8::XValue(time2()); + _float_time2 = a8::XValue(time2()).GetDouble(); + if (time2().find('%') != std::string::npos) { + std::string tmp_str = time2(); + a8::ReplaceString(tmp_str, "%", ""); + _float_time2 = a8::XValue(tmp_str).GetDouble() / 100; + } + _int_cd = a8::XValue(cd()); _float_cd = a8::XValue(cd()).GetDouble(); if (cd().find('%') != std::string::npos) { @@ -202,6 +211,11 @@ namespace mt return number(); } break; + case SkillNumberLispField_e::time2: + { + return _float_time2; + } + break; default: { abort(); @@ -240,6 +254,8 @@ namespace mt return (int)SkillNumberLispField_e::cd; } else if (name == "${skillNumber.number}") { return (int)SkillNumberLispField_e::number; + } else if (name == "${skillNumber.time2}") { + return (int)SkillNumberLispField_e::time2; } return -1; } diff --git a/server/gameserver/mt/SkillNumber.h b/server/gameserver/mt/SkillNumber.h index 5f9532e2..07a77d0f 100644 --- a/server/gameserver/mt/SkillNumber.h +++ b/server/gameserver/mt/SkillNumber.h @@ -35,6 +35,9 @@ namespace mt int _int_time = 0; float _float_time = 0; + int _int_time2 = 0; + float _float_time2 = 0; + int _int_cd = 0; float _float_cd = 0; diff --git a/server/gameserver/mtb/SkillNumber.h b/server/gameserver/mtb/SkillNumber.h index 00eac47b..fba5092a 100644 --- a/server/gameserver/mtb/SkillNumber.h +++ b/server/gameserver/mtb/SkillNumber.h @@ -31,6 +31,7 @@ namespace mtb const std::string probability() const { return probability_; }; int explosion_effect() const { return explosion_effect_; }; const std::string effect_list() const { return effect_list_; }; + const std::string time2() const { return time2_; }; bool has_skill_id() const { return __flags__.test(0);}; bool has_skill_type() const { return __flags__.test(1);}; @@ -53,6 +54,7 @@ namespace mtb bool has_probability() const { return __flags__.test(18);}; bool has_explosion_effect() const { return __flags__.test(19);}; bool has_effect_list() const { return __flags__.test(20);}; + bool has_time2() const { return __flags__.test(21);}; protected: @@ -77,9 +79,10 @@ namespace mtb std::string probability_; int explosion_effect_ = 0; std::string effect_list_; + std::string time2_; public: - std::bitset<21> __flags__; + std::bitset<22> __flags__; }; }; diff --git a/server/gameserver/mtb/mtb.all.cc b/server/gameserver/mtb/mtb.all.cc index 64fcea1a..df92dbd5 100644 --- a/server/gameserver/mtb/mtb.all.cc +++ b/server/gameserver/mtb/mtb.all.cc @@ -420,7 +420,7 @@ namespace mtb { a8::reflect::Class* meta_class = nullptr; if (!meta_class) { - meta_class = new a8::reflect::Class("SkillNumber", 21, 0); + meta_class = new a8::reflect::Class("SkillNumber", 22, 0); meta_class->SetSimpleField(0, "skill_id", a8::reflect::ET_INT32, my_offsetof2(SkillNumber, skill_id_)); meta_class->SetSimpleField(1, "skill_type", a8::reflect::ET_INT32, my_offsetof2(SkillNumber, skill_type_)); meta_class->SetSimpleField(2, "number", a8::reflect::ET_FLOAT, my_offsetof2(SkillNumber, number_)); @@ -442,6 +442,7 @@ namespace mtb meta_class->SetSimpleField(18, "probability", a8::reflect::ET_STRING, my_offsetof2(SkillNumber, probability_)); meta_class->SetSimpleField(19, "explosion_effect", a8::reflect::ET_INT32, my_offsetof2(SkillNumber, explosion_effect_)); meta_class->SetSimpleField(20, "effect_list", a8::reflect::ET_STRING, my_offsetof2(SkillNumber, effect_list_)); + meta_class->SetSimpleField(21, "time2", a8::reflect::ET_STRING, my_offsetof2(SkillNumber, time2_)); } return meta_class; } diff --git a/server/tools/protobuild/mt.proto b/server/tools/protobuild/mt.proto index 28f74066..d16333ea 100755 --- a/server/tools/protobuild/mt.proto +++ b/server/tools/protobuild/mt.proto @@ -363,6 +363,7 @@ message SkillNumber optional string probability = 18; optional int32 explosion_effect = 19; optional string effect_list = 20; + optional string time2 = 22; } message NpcStandard