diff --git a/def.go b/def.go index a707943..8789acd 100644 --- a/def.go +++ b/def.go @@ -395,135 +395,136 @@ const ( castleShark = 6 castleWolf = 7 - objSubTypeUser = 101 - objSubTypeGuild = 201 - objSubTypeMessageUnknown = 301 - objSubTypeMessageWar = 302 // from Chat Wars Reports (not done) - objSubTypeMessageMiniWar = 303 // FIXME DELETE - objSubTypeMessageGuildWar = 304 // from Chat Wars Reports (not done) - objSubTypeMessageReportReq = 305 // /report (done) - objSubTypeMessageReportAck = 306 // result from /report (done) - objSubTypeMessageGReportReq = 307 // /g_report (done) - objSubTypeMessageGReportAck = 308 // result from /g_report (not done) - objSubTypeMessageQuestResult = 309 // result from going to quest (not done) - objSubTypeMessageDuelFight = 310 // result from going to duel fight (done) - objSubTypeMessageHeroReq = 311 // /hero (done) - objSubTypeMessageHeroAck = 312 // result from /hero (not done) - objSubTypeMessageMeReq = 313 // 🏅Me (done) - objSubTypeMessageMeAck = 314 // result from 🏅Me (done) - objSubTypeMessageInventoryReq = 315 // /inv (done) - objSubTypeMessageInventoryAck = 316 // result from /inv (not done) - objSubTypeMessagePillageInc = 317 // random incoming pillage (done) - objSubTypeMessagePillageGo = 318 // ack from /go (done) - objSubTypeMessagePillageTimeout = 319 // ack from lack of /go (done) - objSubTypeMessagePillageWin = 320 // pillage successfully intercepted (done) - objSubTypeMessagePillageLoss = 321 // pillage not intercepted (done) - objSubTypeMessageTributeInc = 322 // request for a /pledge (not done) - objSubTypeMessageTributeAck = 323 // pledge accepted (not done) - objSubTypeMessageAuctionAnnounce = 324 // from Boris and Co, Ltd (done) - objSubTypeMessageAuctionUpdReq = 325 // /l_123456 msg (not done) - objSubTypeMessageAuctionUpdAck = 326 // result from /l_123456 (not done) - objSubTypeMessageTimeAck = 327 // result from /time (done) - objSubTypeMessageTimeReq = 328 // /time (done) - objSubTypeMessageGo = 329 // /go (done) - objSubTypeMessagePledge = 330 // /pledge (done) - objSubTypeMessageGoQuestReq = 331 // 🌲Forest or 🍄Swamp or ⛰️Valley (not done) - objSubTypeMessageGoFastFight = 332 // ▶️Fast fight (not done) - objSubTypeMessageGoArena = 333 // 📯Arena (not done) - objSubTypeMessageTop = 334 // any /topXX (not done) - objSubTypeMessageMenu = 335 // main menu (not done) - objSubTypeMessageBuyReq = 336 // /wtb_xx (done) - objSubTypeMessageSellReq = 337 // /wts_xx (done) - objSubTypeMessageOrderbookReq = 338 // /t_xx (done) - objSubTypeMessageOrderbookAck = 339 // orderbook summary (not done) - objSubTypeMessageWithdrawReq = 340 // /g_withdraw (done) - objSubTypeMessageWithdrawCode = 341 // code to receive (done) - objSubTypeMessageWithdrawRcv = 342 // Withdraw "received" msg (done) - objSubTypeMessageStockReq = 343 // /stock (done) - objSubTypeMessageStockAck = 344 // result from /stock (not done) - objSubTypeMessageMiscReq = 345 // /misc (done) - objSubTypeMessageMiscAck = 346 // result from /misc (not done) - objSubTypeMessageUnionWar = 347 // from Chat Wars Reports (not done) - objSubTypeMessageTUReportReq = 348 // /tu_report (not done) - objSubTypeMessageTUReportAck = 349 // result from /tu_report (not done) - objSubTypeMessageTimeout = 350 // generic timeout for action - objSubTypeMessageGoQuestAck = 351 // confirm quest destination/busyness (done) - objSubTypeMessageGRolesReq = 352 // /g_roles (done) - objSubTypeMessageGRolesAck = 353 // result from /g_roles (done) - objSubTypeMessageGStockResReq = 354 // /g_stock_res (done) - objSubTypeMessageGStockAlchReq = 355 // /g_stock_alch (done) - objSubTypeMessageGStockMiscReq = 356 // /g_stock_misc (done) - objSubTypeMessageGStockRecReq = 357 // /g_stock_rec (done) - objSubTypeMessageGStockPartReq = 358 // /g_stock_parts (done) - objSubTypeMessageGStockOthReq = 359 // /g_stock_other (done) - objSubTypeMessageGStockAnyAck = 360 // result from any /g_stock_xxx (done) - objSubTypeMessageGStockReq = 361 // /g_stock (done) - objSubTypeMessageGStockAck = 362 // result from /g_stock (done) - objSubTypeMessageBusy = 363 // too busy now - objSubTypeMessageResStockReq = 364 // 📦Resources or /stock (done) - objSubTypeMessageAlchStockReq = 365 // ⚗️Alchemy (done) - objSubTypeMessageMiscStockReq = 366 // 🗃Misc or /misc (done) - objSubTypeMessageEquipStockReq = 367 // 🏷Equipment (done) - objSubTypeMessageCraftStockReq = 368 // ⚒Crafting (done) - objSubTypeMessageStockEmpty = 369 // [empty] (done) - objSubTypeMessageStockAnyAck = 370 // list of stock (done) - objSubTypeMessageGDepositReq = 371 // /g_deposit xx y (done) - objSubTypeMessageGDepositAck = 372 // Deposited successfully: xx (y) (done) - objSubTypeMessageAttackReq = 373 // Attack (done) - objSubTypeMessageAttackAck = 374 // Read for attack, select target (done) - objSubTypeMessageAttackTargetReq = 375 // Castle selection (done) - objSubTypeMessageAttackTargetAck = 376 // Castle confirmation (done) - objSubTypeMessageDefendReq = 377 // Defend (done) - objSubTypeMessageDefendAck = 378 // Defend confirmation (done) - objSubTypeMessageBack = 379 // Back (done) - objSubTypeMessageCastleReq = 380 // Castle (done) - objSubTypeMessageCastleAck = 381 // Castle msg (not done) - objSubTypeMessageExchangeReq = 382 // ⚖Exchange (done) - objSubTypeMessageExchangeAck = 383 // List of deals (done) - objSubTypeMessageEquipGearReq = 384 // /on_item (done) - objSubTypeMessageEquipGearAck = 385 // Item equipped (done) - objSubTypeMessageUnequipGearReq = 386 // /off_item (done) - objSubTypeMessageUnequipGearAck = 387 // Item unequipped (done) - objSubTypeMessageNoStamina = 388 // Not enough stamina. (done) - objSubTypeMessageOrderbookSearch = 389 // /t - objSubTypeMessageQuestReq = 390 // quest - objSubTypeMessageQuestAck = 391 // forest/swamp/valley/arena - objSubTypeMessageBattle = 392 // wind is howling - objSubTypeMessageOrderCancelReq = 393 // /rm_xxx - objSubTypeMessageOrderCancelAck = 394 // Cancelling order - objSubTypeMessageStaminaRestored = 395 // Stamina Restored - objSubTypeMessageTopReq = 394 - objSubTypeJobPillage = 601 - objSubTypeJobTribute = 602 - objSubTypeJobStatus = 603 - objSubTypeJobGWithdraw = 604 - objSubTypeJobGStock = 605 - objSubTypeJobRescanMsg = 606 - objSubTypeJobSetJobDone = 607 - objSubTypeJobMsgClient = 608 - objSubTypeJobMsgRefresh = 609 - objSubTypeJobBackupExport = 610 - objSubTypeJobBackupImport = 611 - objSubTypeJobGDeposit = 612 - objSubTypeJobGDepositForward = 613 - objSubTypeJobSaveRes = 614 - objSubTypeJobVaultUserStatus = 615 - objSubTypeJobVaultItemStatus = 616 - objSubTypeItemResource = 701 - objSubTypeItemAlch = 702 - objSubTypeItemMisc = 703 - objSubTypeItemRecipe = 704 - objSubTypeItemPart = 705 - objSubTypeItemOther = 706 - objSubTypeItemUnique = 707 - objSubTypeCastle = 801 - objSubTypeFair = 901 - objSubTypeUnion = 1001 - objSubTypeTribute = 1101 - objSubTypeExperience = 1201 - objSubTypeQuestForest = 1301 - objSubTypeQuestSwamp = 1302 - objSubTypeQuestValley = 1303 + objSubTypeUser = 101 + objSubTypeGuild = 201 + objSubTypeMessageUnknown = 301 + objSubTypeMessageWar = 302 // from Chat Wars Reports (not done) + objSubTypeMessageMiniWar = 303 // FIXME DELETE + objSubTypeMessageGuildWar = 304 // from Chat Wars Reports (not done) + objSubTypeMessageReportReq = 305 // /report (done) + objSubTypeMessageReportAck = 306 // result from /report (done) + objSubTypeMessageGReportReq = 307 // /g_report (done) + objSubTypeMessageGReportAck = 308 // result from /g_report (not done) + objSubTypeMessageQuestResult = 309 // result from going to quest (not done) + objSubTypeMessageDuelFight = 310 // result from going to duel fight (done) + objSubTypeMessageHeroReq = 311 // /hero (done) + objSubTypeMessageHeroAck = 312 // result from /hero (not done) + objSubTypeMessageMeReq = 313 // 🏅Me (done) + objSubTypeMessageMeAck = 314 // result from 🏅Me (done) + objSubTypeMessageInventoryReq = 315 // /inv (done) + objSubTypeMessageInventoryAck = 316 // result from /inv (not done) + objSubTypeMessagePillageInc = 317 // random incoming pillage (done) + objSubTypeMessagePillageGo = 318 // ack from /go (done) + objSubTypeMessagePillageTimeout = 319 // ack from lack of /go (done) + objSubTypeMessagePillageWin = 320 // pillage successfully intercepted (done) + objSubTypeMessagePillageLoss = 321 // pillage not intercepted (done) + objSubTypeMessageTributeInc = 322 // request for a /pledge (not done) + objSubTypeMessageTributeAck = 323 // pledge accepted (not done) + objSubTypeMessageAuctionAnnounce = 324 // from Boris and Co, Ltd (done) + objSubTypeMessageAuctionUpdReq = 325 // /l_123456 msg (not done) + objSubTypeMessageAuctionUpdAck = 326 // result from /l_123456 (not done) + objSubTypeMessageTimeAck = 327 // result from /time (done) + objSubTypeMessageTimeReq = 328 // /time (done) + objSubTypeMessageGo = 329 // /go (done) + objSubTypeMessagePledge = 330 // /pledge (done) + objSubTypeMessageGoQuestReq = 331 // 🌲Forest or 🍄Swamp or ⛰️Valley (not done) + objSubTypeMessageGoFastFight = 332 // ▶️Fast fight (not done) + objSubTypeMessageGoArena = 333 // 📯Arena (not done) + objSubTypeMessageTop = 334 // any /topXX (not done) + objSubTypeMessageMenu = 335 // main menu (not done) + objSubTypeMessageBuyReq = 336 // /wtb_xx (done) + objSubTypeMessageSellReq = 337 // /wts_xx (done) + objSubTypeMessageOrderbookReq = 338 // /t_xx (done) + objSubTypeMessageOrderbookAck = 339 // orderbook summary (not done) + objSubTypeMessageWithdrawReq = 340 // /g_withdraw (done) + objSubTypeMessageWithdrawCode = 341 // code to receive (done) + objSubTypeMessageWithdrawRcv = 342 // Withdraw "received" msg (done) + objSubTypeMessageStockReq = 343 // /stock (done) + objSubTypeMessageStockAck = 344 // result from /stock (not done) + objSubTypeMessageMiscReq = 345 // /misc (done) + objSubTypeMessageMiscAck = 346 // result from /misc (not done) + objSubTypeMessageUnionWar = 347 // from Chat Wars Reports (not done) + objSubTypeMessageTUReportReq = 348 // /tu_report (not done) + objSubTypeMessageTUReportAck = 349 // result from /tu_report (not done) + objSubTypeMessageTimeout = 350 // generic timeout for action + objSubTypeMessageGoQuestAck = 351 // confirm quest destination/busyness (done) + objSubTypeMessageGRolesReq = 352 // /g_roles (done) + objSubTypeMessageGRolesAck = 353 // result from /g_roles (done) + objSubTypeMessageGStockResReq = 354 // /g_stock_res (done) + objSubTypeMessageGStockAlchReq = 355 // /g_stock_alch (done) + objSubTypeMessageGStockMiscReq = 356 // /g_stock_misc (done) + objSubTypeMessageGStockRecReq = 357 // /g_stock_rec (done) + objSubTypeMessageGStockPartReq = 358 // /g_stock_parts (done) + objSubTypeMessageGStockOthReq = 359 // /g_stock_other (done) + objSubTypeMessageGStockAnyAck = 360 // result from any /g_stock_xxx (done) + objSubTypeMessageGStockReq = 361 // /g_stock (done) + objSubTypeMessageGStockAck = 362 // result from /g_stock (done) + objSubTypeMessageBusy = 363 // too busy now + objSubTypeMessageResStockReq = 364 // 📦Resources or /stock (done) + objSubTypeMessageAlchStockReq = 365 // ⚗️Alchemy (done) + objSubTypeMessageMiscStockReq = 366 // 🗃Misc or /misc (done) + objSubTypeMessageEquipStockReq = 367 // 🏷Equipment (done) + objSubTypeMessageCraftStockReq = 368 // ⚒Crafting (done) + objSubTypeMessageStockEmpty = 369 // [empty] (done) + objSubTypeMessageStockAnyAck = 370 // list of stock (done) + objSubTypeMessageGDepositReq = 371 // /g_deposit xx y (done) + objSubTypeMessageGDepositAck = 372 // Deposited successfully: xx (y) (done) + objSubTypeMessageAttackReq = 373 // Attack (done) + objSubTypeMessageAttackAck = 374 // Read for attack, select target (done) + objSubTypeMessageAttackTargetReq = 375 // Castle selection (done) + objSubTypeMessageAttackTargetAck = 376 // Castle confirmation (done) + objSubTypeMessageDefendReq = 377 // Defend (done) + objSubTypeMessageDefendAck = 378 // Defend confirmation (done) + objSubTypeMessageBack = 379 // Back (done) + objSubTypeMessageCastleReq = 380 // Castle (done) + objSubTypeMessageCastleAck = 381 // Castle msg (not done) + objSubTypeMessageExchangeReq = 382 // ⚖Exchange (done) + objSubTypeMessageExchangeAck = 383 // List of deals (done) + objSubTypeMessageEquipGearReq = 384 // /on_item (done) + objSubTypeMessageEquipGearAck = 385 // Item equipped (done) + objSubTypeMessageUnequipGearReq = 386 // /off_item (done) + objSubTypeMessageUnequipGearAck = 387 // Item unequipped (done) + objSubTypeMessageNoStamina = 388 // Not enough stamina. (done) + objSubTypeMessageOrderbookSearch = 389 // /t + objSubTypeMessageQuestReq = 390 // quest + objSubTypeMessageQuestAck = 391 // forest/swamp/valley/arena + objSubTypeMessageBattle = 392 // wind is howling + objSubTypeMessageOrderCancelReq = 393 // /rm_xxx + objSubTypeMessageOrderCancelAck = 394 // Cancelling order + objSubTypeMessageStaminaRestored = 395 // Stamina Restored + objSubTypeMessageTopReq = 396 + objSubTypeMessageQuestResultAmbush = 397 // result from going to quest with ambush (not done) + objSubTypeJobPillage = 601 + objSubTypeJobTribute = 602 + objSubTypeJobStatus = 603 + objSubTypeJobGWithdraw = 604 + objSubTypeJobGStock = 605 + objSubTypeJobRescanMsg = 606 + objSubTypeJobSetJobDone = 607 + objSubTypeJobMsgClient = 608 + objSubTypeJobMsgRefresh = 609 + objSubTypeJobBackupExport = 610 + objSubTypeJobBackupImport = 611 + objSubTypeJobGDeposit = 612 + objSubTypeJobGDepositForward = 613 + objSubTypeJobSaveRes = 614 + objSubTypeJobVaultUserStatus = 615 + objSubTypeJobVaultItemStatus = 616 + objSubTypeItemResource = 701 + objSubTypeItemAlch = 702 + objSubTypeItemMisc = 703 + objSubTypeItemRecipe = 704 + objSubTypeItemPart = 705 + objSubTypeItemOther = 706 + objSubTypeItemUnique = 707 + objSubTypeCastle = 801 + objSubTypeFair = 901 + objSubTypeUnion = 1001 + objSubTypeTribute = 1101 + objSubTypeExperience = 1201 + objSubTypeQuestForest = 1301 + objSubTypeQuestSwamp = 1302 + objSubTypeQuestValley = 1303 objJobStatusCallBack = -1 objJobStatusNew = 0 diff --git a/rules.go b/rules.go index 1b50c93..22b42bf 100644 --- a/rules.go +++ b/rules.go @@ -364,7 +364,15 @@ func resetMsgParsingRules() { `Foray is a dangerous activity\\. Someone can notice you and may beat you up\\. But if you go unnoticed, you will acquire a lot of loot\\.\\n\\n` + `📯Arena (🔒){0,1}\\n` + `Arena isn't a place for the weak\\. Here you fight against other players and if you stand victorious, you acquire precious experience\\.$") - + ,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResultAmbush) + `, "Quest Res with Ambush and loot", "^You met some hostile creatures\\. Be careful:\\n` + + `(?P(([0-9] x ){0,1}[a-zA-Z ]* lvl\\.[0-9]*\\n{0,1})+)\\n` + + `It's an ambush! Loot is locked till the end of the fight:\\n` + + `(?P([a-zA-Z ]* \\([0-9]+\\)\\n{0,1})+*)\\n` + + `/fight_[a-zA-Z0-9]+$") + ,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResultAmbush) + `, "Quest Res with Ambush and no loot", "^You met some hostile creatures\\. Be careful:\\n` + + `(?P(([0-9] x ){0,1}[a-zA-Z ]* lvl\\.[0-9]*\\n{0,1})+)\\n` + + `It's an ambush!\\n\\n` + + `/fight_[a-zA-Z0-9]+$") ;`) failOnError(err, "resetMsgParsingRules : populate table msg_rules") diff --git a/sql.go b/sql.go index 446cd08..3ca6f67 100644 --- a/sql.go +++ b/sql.go @@ -464,6 +464,7 @@ func initDB() { ,(` + strconv.Itoa(objSubTypeMessageGReportReq) + `, "g_report_req", "Player guilds war report request", ` + strconv.Itoa(objTypeMessage) + `) ,(` + strconv.Itoa(objSubTypeMessageGReportAck) + `, "g_report_ack", "Player guilds war report ack", ` + strconv.Itoa(objTypeMessage) + `) ,(` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "quest_res", "Quest result", ` + strconv.Itoa(objTypeMessage) + `) + ,(` + strconv.Itoa(objSubTypeMessageQuestResultAmbush) + `, "quest_res_ambush", "Quest result with Ambush", ` + strconv.Itoa(objTypeMessage) + `) ,(` + strconv.Itoa(objSubTypeMessageDuelFight) + `, "duel_fight", "Duel fight result", ` + strconv.Itoa(objTypeMessage) + `) ,(` + strconv.Itoa(objSubTypeMessageHeroReq) + `, "hero_req", "Hero summary request", ` + strconv.Itoa(objTypeMessage) + `) ,(` + strconv.Itoa(objSubTypeMessageHeroAck) + `, "hero_ack", "Hero summary ack", ` + strconv.Itoa(objTypeMessage) + `)