Anime-Game-Servers / Grasscutter-Quests

A server software implementation, ineroperable with a certain anime game client. The code in this repository is fully custom made for edyoucational purposes and future preservation, no copyrighted code is allowed in this repository.
https://grasscutters.xyz/grasscutter
GNU Affero General Public License v3.0
138 stars 31 forks source link

[Bug] Perfect Shot fired early #88

Open scooterboo opened 9 months ago

scooterboo commented 9 months ago

Describe the bug The quest "Perfect Shot" fired early for me when I gave myself a big adventure rank with /give 102 x200000

How to replicate: do /give 102 x200000

Notes: Perfect Shot is quest 4140201 The accept conditions has three conditions: (zeros trimmed out of parameters)

    {
        "subId": 4140201,
        "mainId": 41402,
        "order": 1,
        "descTextMapHash": 1574641476,
        "stepDescTextMapHash": 2495318589,
        "guideTipsTextMapHash": 3477654638,
        "acceptCondComb": "LOGIC_AND",
        "acceptCond": [
            {
                "_type": "QUEST_COND_ACTIVITY_END",
                "_param": [
                    5016001,
                    0
                ]
            },
            {
                "_type": "QUEST_COND_PLAYER_LEVEL_EQUAL_GREATER",
                "_param": [
                    20,
                    0
                ]
            },
            {
                "_type": "QUEST_COND_PACK_HAVE_ITEM",
                "_param": [
                    220019,
                    1
                ]
            },

I am unsure about QUEST_COND_ACTIVITY_END, but I definitely do not have item 220019: the Kurious Kamera. It is like the accept conditions are ignoring the LOGIC_AND, or it is giving the wrong return values for some conditions.

Which branch did you use? multi_proto Grasscutter version: 1.4.4-dev-59e2d2b4 Lua: JNLua

Screenshots

image

scooterboo commented 5 months ago

Actually, it's 4140202, which makes more sense:

    {
        "subId": 4140202,
        "mainId": 41402,
        "order": 2,
        "descTextMapHash": 2147397724,
        "stepDescTextMapHash": 3007557389,
        "guideTipsTextMapHash": 3668893718,
        "acceptCondComb": "LOGIC_AND",
        "acceptCond": [
            {
                "_type": "QUEST_COND_ACTIVITY_END",
                "_param": [
                    5016001,
                    0,
                    0,
                    0,
                    0
                ]
            },
            {
                "_type": "QUEST_COND_PLAYER_LEVEL_EQUAL_GREATER",
                "_param": [
                    20,
                    0,
                    0,
                    0,
                    0
                ]
            },
            {
                "_type": "QUEST_COND_STATE_NOT_EQUAL",
                "_param": [
                    4140201,
                    3,
                    0,
                    0,
                    0
                ]
            },
            {
                "_type": "QUEST_COND_ITEM_NUM_LESS_THAN",
                "_param": [
                    220019,
                    1,
                    0,
                    0,
                    0
                ]
            },

I have no camera, 4140201 has not been finished (or started!), my level is >= 20. Just need to look into that QUEST_COND_ACTIVITY_END.