| 3129 | } |
| 3130 | |
| 3131 | size_t ParseCmd(size_t pnum, const TCmd *pCmd) |
| 3132 | { |
| 3133 | sbLastCmd = pCmd->bCmd; |
| 3134 | if (sgwPackPlrOffsetTbl[pnum] != 0 && sbLastCmd != CMD_ACK_PLRINFO && sbLastCmd != CMD_SEND_PLRINFO) |
| 3135 | return 0; |
| 3136 | |
| 3137 | Player &player = Players[pnum]; |
| 3138 | |
| 3139 | #ifdef LOG_RECEIVED_MESSAGES |
| 3140 | Log("📥 {}", CmdIdString(pCmd->bCmd)); |
| 3141 | #endif |
| 3142 | |
| 3143 | switch (pCmd->bCmd) { |
| 3144 | case CMD_SYNCDATA: |
| 3145 | return OnSyncData(pCmd, pnum); |
| 3146 | case CMD_WALKXY: |
| 3147 | return OnWalk(pCmd, player); |
| 3148 | case CMD_ADDSTR: |
| 3149 | return OnAddStrength(pCmd, pnum); |
| 3150 | case CMD_ADDDEX: |
| 3151 | return OnAddDexterity(pCmd, pnum); |
| 3152 | case CMD_ADDMAG: |
| 3153 | return OnAddMagic(pCmd, pnum); |
| 3154 | case CMD_ADDVIT: |
| 3155 | return OnAddVitality(pCmd, pnum); |
| 3156 | case CMD_GOTOGETITEM: |
| 3157 | return OnGotoGetItem(pCmd, player); |
| 3158 | case CMD_REQUESTGITEM: |
| 3159 | return OnRequestGetItem(pCmd, player); |
| 3160 | case CMD_GETITEM: |
| 3161 | return OnGetItem(pCmd, pnum); |
| 3162 | case CMD_GOTOAGETITEM: |
| 3163 | return OnGotoAutoGetItem(pCmd, player); |
| 3164 | case CMD_REQUESTAGITEM: |
| 3165 | return OnRequestAutoGetItem(pCmd, player); |
| 3166 | case CMD_AGETITEM: |
| 3167 | return OnAutoGetItem(pCmd, pnum); |
| 3168 | case CMD_ITEMEXTRA: |
| 3169 | return OnItemExtra(pCmd, pnum); |
| 3170 | case CMD_PUTITEM: |
| 3171 | return OnPutItem(pCmd, pnum); |
| 3172 | case CMD_SYNCPUTITEM: |
| 3173 | return OnSyncPutItem(pCmd, pnum); |
| 3174 | case CMD_SPAWNITEM: |
| 3175 | return OnSpawnItem(pCmd, pnum); |
| 3176 | case CMD_ATTACKXY: |
| 3177 | return OnAttackTile(pCmd, player); |
| 3178 | case CMD_SATTACKXY: |
| 3179 | return OnStandingAttackTile(pCmd, player); |
| 3180 | case CMD_RATTACKXY: |
| 3181 | return OnRangedAttackTile(pCmd, player); |
| 3182 | case CMD_SPELLXYD: |
| 3183 | return OnSpellWall(pCmd, player); |
| 3184 | case CMD_SPELLXY: |
| 3185 | return OnSpellTile(pCmd, player); |
| 3186 | case CMD_OPOBJXY: |
| 3187 | return OnObjectTileAction(*pCmd, player, ACTION_OPERATE); |
| 3188 | case CMD_DISARMXY: |
no test coverage detected