chirpnest/rules.go

455 lines
64 KiB
Go
Raw Normal View History

2019-05-19 06:06:06 +02:00
package main
import (
2019-12-29 09:42:54 +01:00
"encoding/json"
2019-05-19 06:06:06 +02:00
"strconv"
)
2019-12-26 09:16:19 +01:00
func resetMsgParsingRules2() error {
2019-12-29 09:40:52 +01:00
var rules []MessageParsingRule
2019-12-29 12:45:26 +01:00
b, err := Asset("data/msg_rules.json")
logOnError(err, "resetMsgParsingRules2 : load data/msg_rules.json")
if err != nil {
return err
}
err = json.Unmarshal(b, &rules)
for r := range rules {
r.MsgTypeID64, err = codeObjSubTypeId(r.MsgType)
logOnError(err, "resetMsgParsingRules2 : codeObjSubTypeId("+r.MsgType+")")
if err != nil {
return err
}
i.re, err = regexp.Compile(rule)
logOnError(err, "resetMsgParsingRules2 : Compile("+r.rule+")")
if err != nil {
return err
}
}
2019-12-26 09:16:19 +01:00
_, err := db.Exec(`TRUNCATE TABLE msg_rules;`)
2019-12-29 08:50:56 +01:00
logOnError(err, "resetMsgParsingRules2 : truncate table msg_rules")
2019-12-26 09:16:19 +01:00
if err != nil {
return err
}
2019-12-29 12:45:26 +01:00
stmt, err := db.Prepare(`INSERT INTO msg_rules (prio, msg_type_id, descn, rule)
VALUES (?, ?, ?, ?);`)
logOnError(errm "resetMsgParsingRules2 : prepare statement")
2019-12-29 08:50:56 +01:00
if err != nil {
return err
}
2019-12-29 12:45:26 +01:00
defer stmt.Close()
for r := range rules {
_, err = stmt.Exec(r.Priority, r.MsgTypeID64, r.Description, r.Rule)
logOnError(err, "resetMsgParsingRules2 : insert statement " + r.Description)
if err != nil {
return err
}
2019-12-29 09:40:52 +01:00
2019-12-29 12:45:26 +01:00
}
2019-12-29 08:50:56 +01:00
2019-12-26 09:16:19 +01:00
return nil
}
2019-05-19 06:06:06 +02:00
func resetMsgParsingRules() {
_, err := db.Exec(`TRUNCATE TABLE msg_rules;`)
failOnError(err, "resetMsgParsingRules : truncate table msg_rules")
_, err = db.Exec(`INSERT INTO msg_rules (prio, msg_type_id, descn, rule)
2019-06-10 11:05:59 +02:00
VALUES (5000, ` + strconv.Itoa(objSubTypeMessageReportAck) + `, "Player war report", "^(?P<Castle>[🐉🦅🐺🦈🦌🥔🌑])(\\[(?P<Guild>[A-Z0-9]{1,3})\\]){0,1}(?P<User>([A-Za-z0-9 ]*)) :(?P<Attack>[0-9]+)(?P<AttackMod>\\((-|\\+)[0-9]+\\)){0,1} 🛡:(?P<Defense>[0-9]+) Lvl: (?P<Level>[0-9]+)\\n` +
`Your result on the battlefield:\\n` +
`(🔥Exp: (?P<Exp>[0-9]+)){0,1}(\\n)*` +
`(💰Gold: (?P<Gold>\\-{0,1}[0-9]+)){0,1}(\\n)*` +
`(📦Stock: (?P<Stock>\\-{0,1}[0-9]+)){0,1}(\\n)*` +
`(❤Hp: (?P<HP>\\-[0-9]+)){0,1}(\\n)*` +
`((?P<Stamina>(🔋Stamina restored))){0,1}(\\n(?P<Crit>(Critical strike))){0,1}$")
2019-07-08 09:28:31 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageAuctionAnnounce) + `, "Auction annouce", "^Lot #(?P<Lot>[0-9]+) : (?P<Item>.*)\\n` +
`(Quality: (?P<Quality>.*)\\n){0,1}` +
`(Condition: (?P<Cond>.*)\\n){0,1}` +
`Seller: (?P<SellerCastle>[🐉🦅🐺🦈🦌🥔🌑])( ){0,1}(\\[(?P<SellerGuild>[A-Z0-9]{1,3})\\]){0,1}(?P<SellerUser>.*){0,1}\\n` +
`Current price: (?P<Price>[0-9]+) pouch\\(es\\)\\n` +
`Buyer: (None|(?P<BuyerCastle>[🐉🦅🐺🦈🦌🥔🌑])( ){0,1}(\\[(?P<BuyerGuild>[A-Z0-9]{1,3})\\]){0,1}(?P<BuyerUser>.*){0,1})\\n` +
`End At: (?P<End>.*)\\n` +
`Status: (?P<Status>.*)(\\n)` +
`*(?s:.*)")
2019-12-19 04:31:28 +01:00
,(5000, ` + strconv.Itoa(objSubTypeMessageTimeAck) + `, "Time", "^In Chat Wars world now\\n` +
`(?P<Time>.*)\\n` +
`(?P<Hour>[0-9]{2}):(?P<Minute>[0-9]{2})\\n` +
`(?P<Day>[0-9]{2}) (?P<Month>.+) (?P<Year>[0-9]{4})\\n\\n` +
`Weather forecast\\n` +
`(?P<Weather>.*)→(?P<WeatherNext>.*)\\n` +
2019-12-20 03:07:25 +01:00
`(?s:.*)$")
2019-05-19 06:06:06 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessagePillageInc) + `, "Pillage Inc", "^You were strolling around on your horse when you noticed (\\[(?P<Guild>[A-Z0-9]{1,3})\\]){0,1}(?P<Attacker>.*) of .{1}(?P<Castle>(Moonlight|Wolfpack|Deerhorn|Dragonscale|Sharkteeth|Potato|Highnest)) Castle trying to pillage a local village. To stop him click /go$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGo) + `, "Go", "^/go$")
,(5000, ` + strconv.Itoa(objSubTypeMessagePillageGo) + `,"Pillage Go", "^You lift up your sword and charge at the violator.$")
,(5000, ` + strconv.Itoa(objSubTypeMessagePillageWin) + `,"Pillage Win", "^You successfully defeated (\\[(?P<Guild>[A-Z0-9]{1,3})\\]){0,1}(?P<Attacker>.*). As he was crawling away, you picked up some of the gold he left behind. Received (?P<Gold>[0-9]+) gold and (?P<Exp>[0-9]+) exp.$")
2019-12-16 04:17:00 +01:00
,(5000, ` + strconv.Itoa(objSubTypeMessagePillageTimeout) + `,"Pillage Timeout", "^You\\'ve failed to protect the villagers\\. No more rewards for you\\.$")
,(5000, ` + strconv.Itoa(objSubTypeMessagePillageLoss) + `,"Pillage Loss", "^You let (\\[(?P<Guild>[A-Z0-9]{1,3})\\]){0,1}(?P<Attacker>.*) go and he pillaged the village\\. We hope you feel terrible\\.$")
,(5000, ` + strconv.Itoa(objSubTypeMessagePillageDefeat) + `,"Pillage Defeat", "^You tried stopping (\\[(?P<Guild>[A-Z0-9]{1,3})\\]){0,1}(?P<Attacker>.*)\\. Sadly, he was too strong\\. Your body hurts, but for some reason you feel enlightened\\. Received: (?P<Exp>[0-9]+) exp\\.$")
2019-05-19 06:06:06 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageDuelFight) + `, "Duel Fight result #2", "(?P<Life1>(\\-){0,1}[0-9]+).*(?P<Castle1>[🐉🦅🐺🦈🦌🥔🌑])(\\[(?P<Guild1>[A-Z0-9]{1,3})\\]){0,1}(?P<Duelist1>.*)\\n` +
`VS\\n` +
`(?P<Life2>(\\-){0,1}[0-9]+).*(?P<Castle2>[🐉🦅🐺🦈🦌🥔🌑])(\\[(?P<Guild2>[A-Z0-9]{1,3})\\]){0,1}(?P<Duelist2>.*)\\n` +
`(?s:.*)\\n` +
`(\\[(?P<WinGuild>[A-Z0-9]{1,3})\\]){0,1}(?P<WinDuelist>.*) from .*(?P<WinCastle>[🐉🦅🐺🦈🦌🥔🌑]).* Castle stands victorious over (\\[(?P<LossGuild>[A-Z0-9]{1,3})\\]){0,1}(?P<LossDuelist>.*) from .*(?P<LossCastle>[🐉🦅🐺🦈🦌🥔🌑]).* Castle, with blood slowly dripping from his (?P<Weapon>.*).\\n` +
`You received: (?P<Exp>[0-9]+) exp.\\n` +
`(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageDuelFight) + `, "Duel Fight result #1", "(?P<Life1>(\\-){0,1}[0-9]+).*(?P<Castle1>[🐉🦅🐺🦈🦌🥔🌑])(\\[(?P<Guild1>[A-Z0-9]{1,3})\\]){0,1}(?P<Duelist1>.*)\\n` +
`VS\\n` +
`(?P<Life2>(\\-){0,1}[0-9]+).*(?P<Castle2>[🐉🦅🐺🦈🦌🥔🌑])(\\[(?P<Guild2>[A-Z0-9]{1,3})\\]){0,1}(?P<Duelist2>.*)\\n` +
`(?s:.*)\\n` +
`(\\[(?P<WinGuild>[A-Z0-9]{1,3})\\]){0,1}(?P<WinDuelist>.*) from .*(?P<WinCastle>[🐉🦅🐺🦈🦌🥔🌑]).* Castle was stronger than (\\[(?P<LossGuild>[A-Z0-9]{1,3})\\]){0,1}(?P<LossDuelist>.*) from .*(?P<LossCastle>[🐉🦅🐺🦈🦌🥔🌑]).* Castle.\\n` +
`You received: (?P<Exp>[0-9]+) exp.\\n` +
`(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageReportReq) + `, "Report request", "^/report$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGReportReq) + `, "Guild report request", "^/g_report$")
,(5000, ` + strconv.Itoa(objSubTypeMessageHeroReq) + `, "Hero request", "^/hero$")
,(5000, ` + strconv.Itoa(objSubTypeMessageMeReq) + `, "Me request", "^🏅Me$")
,(5000, ` + strconv.Itoa(objSubTypeMessageInventoryReq) + `, "Inventory request", "^/inv$")
,(5000, ` + strconv.Itoa(objSubTypeMessageTimeReq) + `, "Time request", "^/time$")
2019-05-19 08:35:26 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessagePledge) + `, "Pledge", "^/pledge$")
2019-05-19 08:51:48 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageBuyReq) + `, "Buy request", "^/wtb_(?P<Item>[0-9]+)(_(?P<Quantity>[0-9]+)){0,1}$")
,(5000, ` + strconv.Itoa(objSubTypeMessageSellReq) + `, "Sell request", "^/wts_(?P<Item>[0-9]+)(_(?P<Quantity>[0-9]+)(_(?P<Price>[0-9]+)){0,1}){0,1}$")
2019-10-03 12:11:24 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageOrderbookSearch) + `, "Orderbook search", "^/t (?P<Item>[a-zA-z0-9 ]+)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageOrderbookReq) + `, "Orderbook req", "^/t_(?P<Code>[0-9]+)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageOrderbookAck) + `, "Orderbook ack", "^(?P<Name>[a-zA-Z ]+) offers now:\\n` +
`(?P<Qty1>[0-9]+) pcs for (?P<Price1>[0-9]+)💰\\n` +
`(?P<Qty2>[0-9]+) pcs for (?P<Price2>[0-9]+)💰\\n` +
`(?P<Qty3>[0-9]+) pcs for (?P<Price3>[0-9]+)💰\\n` +
`.*Buy:\\n` +
`Buy 1: /wtb_(?P<Code>[0-9]+)\\n` +
`Buy 5: /wtb_[0-9]+_5\\n\n` +
`You have (?P<Gold>[0-9]+)💰 and (?P<Qty>[0-9]+) [a-zA-Z ]*\\n` +
`.*Sell:\\n` +
`Sell 1 quickly: /wts_[0-9]+\\n` +
2019-08-21 06:44:34 +02:00
`Sell 5 quickly: /wts_[0-9]+_5\\n` +
`Sell 10 for [0-9]+💰 each: /wts_[0-9]+_10_[0-9]+$")
2019-05-20 14:29:11 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageWithdrawReq) + `, "Withdraw Req", "^/g_withdraw( )+(?P<Item1>[a-z0-9]+)( )+(?P<Quantity1>[0-9]+)` +
`(( )+(?P<Item2>[a-z0-9]+)( )+(?P<Quantity2>[0-9]+)){0,1}` +
`(( )+(?P<Item3>[a-z0-9]+)( )+(?P<Quantity3>[0-9]+)){0,1}` +
`(( )+(?P<Item4>[a-z0-9]+)( )+(?P<Quantity4>[0-9]+)){0,1}` +
`(( )+(?P<Item5>[a-z0-9]+)( )+(?P<Quantity5>[0-9]+)){0,1}` +
`(( )+(?P<Item6>[a-z0-9]+)( )+(?P<Quantity6>[0-9]+)){0,1}` +
`(( )+(?P<Item7>[a-z0-9]+)( )+(?P<Quantity7>[0-9]+)){0,1}` +
`(( )+(?P<Item8>[a-z0-9]+)( )+(?P<Quantity8>[0-9]+)){0,1}$")
2019-05-20 14:45:53 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageWithdrawCode) + `, "Withdraw Code #1", "^Withdrawing (?P<Item1>.*) x (?P<Quantity1>.*). Recipient shall send to bot:\\n` +
2019-05-20 14:40:16 +02:00
`/g_receive [a-z0-9]+$")
2019-05-20 14:45:53 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageWithdrawCode) + `, "Withdraw Code #2", "^Withdrawing:\\n` +
2019-05-20 14:29:11 +02:00
`(?P<Item1>.*) x (?P<Quantity1>.*)\\n` +
`((?P<Item2>.*) x (?P<Quantity2>.*)\\n){0,1}` +
`((?P<Item3>.*) x (?P<Quantity3>.*)\\n){0,1}` +
`((?P<Item4>.*) x (?P<Quantity4>.*)\\n){0,1}` +
`((?P<Item5>.*) x (?P<Quantity5>.*)\\n){0,1}` +
`((?P<Item6>.*) x (?P<Quantity6>.*)\\n){0,1}` +
`((?P<Item7>.*) x (?P<Quantity7>.*)\\n){0,1}` +
`((?P<Item8>.*) x (?P<Quantity8>.*)\\n){0,1}` +
`Recipient shall send to bot:\\n` +
`/g_receive [a-z0-9]+$")
2019-10-11 03:21:09 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageWithdrawRcv) + `, "Withdraw Received #1", "^Received (?P<Items>(.*) x (.*))$")
,(5000, ` + strconv.Itoa(objSubTypeMessageWithdrawRcv) + `, "Withdraw Received #2", "^Received:(?P<Items>(\\n(.*) x (.*))*)$")
2019-05-20 16:16:49 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageStockReq) + `, "Stock Req", "^/stock$")
2019-08-22 11:36:16 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageStockAck) + `, "Stock Ack", "^📦Storage \\((?P<Used>[0-9]+)\\/(?P<Available>[0-9]+)\\):` +
2019-08-22 11:31:16 +02:00
`(?P<Items>(\\n[a-zA-Z ]+ \\([0-9]+\\))*)$")
2019-08-27 06:12:29 +02:00
,(4000, ` + strconv.Itoa(objSubTypeMessageStockAck) + `, "Stock Ack", "^📦Storage \\((?P<Used>[0-9]+)\\/(?P<Available>[0-9]+)\\):\\n` +
2019-08-27 06:14:43 +02:00
`Use \\/sg_\\{code\\} to trade some amount of resource for .*💰\\/pcs\\n` +
2019-08-27 05:58:23 +02:00
`(?P<Items>(\\n\\/sg_[0-9]+ [a-zA-Z ]+ \\([0-9]+\\))*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageMiscReq) + `, "Misc Req", "^/misc$")` + /*
,(5000, ` + strconv.Itoa(objSubTypeMessageUnionWar) + `, "Union war report", "^(🏠Trade union news:\\n){0,1}` +
2019-05-25 17:15:14 +02:00
`(((?P<Union>[A-Z][a-z]+ [A-Z][a-z]+) was (?P<StatusUnion>(easily defended|defended successfully|breached.|easily breached.|closely breached.))( Attackers have pillaged union for (?P<Loot>[0-9]+) stock){0,1}:\\n` +
`(🎖Attack leaders: (?P<AtkUnionCastle1>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUnionUser1>[^,]+)(,(?P<AtkUnionCastle2>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUnionUser2>[^,]+)){0,1}(,(?P<AtkUnionCastle3>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUnionUser3>[^,]+)){0,1}(,(?P<AtkUnionCastle4>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUnionUser4>[^,]+)){0,1}){0,1}(\\n){0,1}` +
`(🎖Defense leaders: (?P<DefUnionCastle1>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefUnionUser1>[^,]+)(,(?P<DefUnionCastle2>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefUnionUser2>[^,]+)){0,1}(,(?P<DefUnionCastle3>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefUnionUser3>[^,]+)){0,1}(,(?P<DefUnionCastle4>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefUnionUser4>[^,]+)){0,1}){0,1}(\\n){0,1})(\\n)*)*` +
`(🎪State of exclusive rights:\\n){0,1}` +
2019-05-25 13:44:14 +02:00
`((?P<Fair>[A-Z][a-z]+ [A-Z][a-z]+) (?P<StatusFair>(was protected|belongs to)( (?P<Attacker>[A-Z][a-z]+ [A-Z][a-z]+):)\\n` +
`(🎖Attack leaders: (?P<AtkFairCastle1>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkFairUser1>[^,]+)(,(?P<AtkFairCastle2>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkFairUser2>[^,]+)){0,1}(,(?P<AtkFairCastle3>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkFairUser3>[^,]+)){0,1}(,(?P<AtkFairCastle4>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkFairUser4>[^,]+)){0,1}){0,1}(\\n){0,1}` +
`(🎖Defense leaders: (?P<DefFairCastle1>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefFairUser1>[^,]+)(,(?P<DefFairCastle2>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefFairUser2>[^,]+)){0,1}(,(?P<DefFairCastle3>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefFairUser3>[^,]+)){0,1}(,(?P<DefFairCastle4>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefFairUser4>[^,]+)){0,1}){0,1}(\\n){0,1})(\\n)*)*` +
`$")*/`
,(5000, ` + strconv.Itoa(objSubTypeMessageUnionWar) + `, "Union war report", "^(🏠Trade union news:\\n){0,1}` +
2019-05-25 17:15:14 +02:00
`((([A-Z][a-z]+ [A-Z][a-z]+) was ((easily defended|defended successfully|breached.|easily breached.|closely breached.))( Attackers have pillaged union for ([0-9]+) stock){0,1}:\\n` +
`(🎖Attack leaders: ([🐉🦅🐺🦈🦌🥔🌑])([^,]+)(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}){0,1}(\\n){0,1}` +
`(🎖Defense leaders: ([🐉🦅🐺🦈🦌🥔🌑])([^,]+)(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}){0,1}(\\n){0,1})(\\n)*)*` +
2019-05-25 13:33:35 +02:00
`(🎪State of exclusive rights:\\n){0,1}` +
2019-05-25 13:44:14 +02:00
`(([A-Z][a-z]+ [A-Z][a-z]+) ((was protected|belongs to)( ([A-Z][a-z]+ [A-Z][a-z]+):)\\n` +
`(🎖Attack leaders: ([🐉🦅🐺🦈🦌🥔🌑])([^,]+)(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}){0,1}(\\n){0,1}` +
`(🎖Defense leaders: ([🐉🦅🐺🦈🦌🥔🌑])([^,]+)(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}(,([🐉🦅🐺🦈🦌🥔🌑])([^,]+)){0,1}){0,1}(\\n){0,1})(\\n)*)*` +
2019-05-25 15:23:17 +02:00
`$")
2019-05-25 18:07:20 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageUnionWar) + `, "Union war rep with both", "^(🏠Trade union news:\n)(?P<Union>(?s:.*))(🎪State of exclusive rights:\n)(?P<Fair>(?s:.*))$")
,(4900, ` + strconv.Itoa(objSubTypeMessageUnionWar) + `, "Union war rep only union", "^(🏠Trade union news:\n)(?P<Union>(?s:.*))(🎪State of exclusive rights:\n){0}(?P<Fair>(?s:.*))$")
,(4900, ` + strconv.Itoa(objSubTypeMessageUnionWar) + `, "Union war rep only fair", "^(🏠Trade union news:\n){0}(?P<Union>(?s:.*))(🎪State of exclusive rights:\n)(?P<Fair>(?s:.*))$")
2019-05-27 06:04:10 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageTimeout) + `, "Generic timeout", "^Too late. Action is not available.$")
2019-08-12 09:53:39 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageMeAck) + `, "Me ack", "^(?s:.*)Battle(.*)of the seven castles in .*!\\n` +
`(?s:.*)\\n` +
`(?P<CastleIcon>.)(\\[(?P<Guild>[A-Z0-9]+)\\]){0,1}(?P<Player>.*?) ((?P<Class>(Knight|Ranger|Sentinel|Collector|Blacksmith|Alchemist|Esquire|Master)) ){0,1}of (?P<Castle>[a-zA-Z]*) Castle\\n` +
`.+?Level: (?P<Level>[0-9]+)\\n` +
`.+?Atk: (?P<Atk>[0-9]+) .+?Def: (?P<Def>[0-9]+)\\n` +
`.+?Exp: (?P<ExpNow>[0-9]+)\\/(?P<ExpLvl>[0-9]+)\\n` +
`(.+?Hp: (?P<HPNow>[0-9]+)\\/(?P<HPMax>[0-9]+).*\\n){0,1}` +
`.+?Stamina: (?P<StaminaNow>[0-9]+)\\/(?P<StaminaMax>[0-9]+).*?\\n` +
`(.+?Mana: (?P<ManaNow>[0-9]+)\\/(?P<ManaMax>[0-9]+).*\\n){0,1}` +
`(.+?(?P<Gold>(-){0,1}[0-9]+)){0,1}( .+?(?P<Pogs>[0-9]+)){0,1}( .+?(?P<Gems>[0-9]+)){0,1}\\n\\n` +
`(.*?)(🎽Equipment \\+(?P<AtkGear>[0-9]+).\\+(?P<DefGear>[0-9]+).){0,1}\\n` +
`🎒Bag: (?P<BagUsed>[0-9]+)\\/(?P<BagDispo>[0-9]+) \\/inv\\n\\n` +
`State:\\n(?P<State>.*)\\n\\n` +
`More: \\/hero(?s:.*)$")
2019-10-10 11:15:58 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageBattle) + `, "Battle", "^The wind is howling in the meadows, castles are unusually quiet\\. Warriors are mending their wounds and repairing armor after a tiresome battle\\. All the establishments and castle gates are closed for the next couple of minutes\\. Await the battle report at @chtwrsReports$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoArena) + `, "Go Arena", "^📯Arena$")
2019-10-03 13:21:45 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestReq) + `, "Go Quest Req Forest", "^🌲Forest$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestReq) + `, "Go Quest Req Swamp", "^🍄Swamp$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestReq) + `, "Go Quest Req Valley", "^🏔Valley$")
2019-10-10 11:15:58 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestReq) + `, "Go Quest Req Valley", "^⛰Valley$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestReq) + `, "Go Quest Req Village", "^🗡Foray$")
2019-10-03 13:21:45 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestReq) + `, "Go Quest Req Mirkwood", "^🍂Mirkwood$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestReq) + `, "Go Quest Req Dead Marshes", "^.*Dead Marshes$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestReq) + `, "Go Quest Req Devil's Valley", "^🌋Devil's Valley$")
2019-05-28 09:06:55 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestAck) + `, "Go Quest Ack Forest", "^In a dire need for an adventure, you went to a (?P<Place>[a-zA-Z ]+). You'll be back in (?P<Time>[0-9]+) minutes.$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestAck) + `, "Go Quest Ack Mirkwood", "^You went to the (?P<Place>[a-zA-Z ]+). Beware of spooders. Back in (?P<Time>[0-9]+) minutes$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestAck) + `, "Go Quest Ack Village", "^Feeling an unsatisfiable lust for violence you set off to the nearest (?P<Place>[a-zA-Z ]+). You will reach the nearest one in (?P<Time>[0-9]+) minutes$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestAck) + `, "Go Quest Ack Swamp", "^An adventure is calling. But you went to a (?P<Place>[a-zA-Z ]+). You'll be back in (?P<Time>[0-9]+) minutes.$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestAck) + `, "Go Quest Ack Dead Marshes", "^You went to the (?P<Place>[a-zA-Z ]+). The dead are near. Back in (?P<Time>[0-9]+) minutes$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestAck) + `, "Go Quest Ack Mountain", "^(?P<Place>[a-zA-Z ']+) can be a dangerous place. You decided to investigate, what's going on. You'll be back in (?P<Time>[0-9]+) minutes.$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoQuestAck) + `, "Go Quest Ack Devil's Valley", "^You went to the (?P<Place>[a-zA-Z ']+). Don't lose your soul. Back in (?P<Time>[0-9]+) minutes$")
2019-05-30 10:36:40 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageGRolesReq) + `, "Guild roles Req", "^/g_roles$")
2019-08-12 10:05:45 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageGRolesAck) + `, "Guild roles Req", "^Roles:\\nBartender:\\n` +
2019-08-12 10:30:17 +02:00
`((⚗️|⚔️|⚒|🛡|📦)(?P<Bartender>.*)|.*\[unassigned\].*)\\n\\n\\n` +
2019-08-12 10:05:45 +02:00
`Commander:\\n` +
2019-08-12 10:30:17 +02:00
`((⚗️|⚔️|⚒|🛡|📦)(?P<Commander>.*)|.*\[unassigned\].*)\\n\\n\\n` +
2019-08-12 10:05:45 +02:00
`Squire:\\n` +
2019-08-12 10:30:17 +02:00
`((⚗️|⚔️|⚒|🛡|📦)(?P<Squire>.*)|.*\[unassigned\].*)\\n\\n\\n` +
2019-08-12 10:07:43 +02:00
`Treasurer:\\n` +
2019-08-12 10:21:31 +02:00
`((|||🛡|📦)(?P<Treasurer>.*)|.*\[unassigned\].*)$")
2019-06-02 08:48:16 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageGStockReq) + `, "Guild stock Req", "^/g_stock$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGStockAck) + `, "Guild stock Ack", "^Grouped by:\\n` +
`/g_stock_res - resources\\n` +
`/g_stock_alch - alchemist herbs\\n` +
`/g_stock_misc - miscellaneous stuff\\n` +
`/g_stock_rec - items recipes\\n` +
`/g_stock_parts - items parts\\n` +
`/g_stock_other - everything else$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGStockResReq) + `, "Guild stock resources Req", "^/g_stock_res$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGStockAlchReq) + `, "Guild stock alchemy Req", "^/g_stock_alch$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGStockMiscReq) + `, "Guild stock misc Req", "^/g_stock_misc$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGStockRecReq) + `, "Guild stock recipes Req", "^/g_stock_rec$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGStockPartReq) + `, "Guild stock parts Req", "^/g_stock_parts$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGStockOthReq) + `, "Guild stock other Req", "^/g_stock_other$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGStockAnyAck) + `, "Guild stock any Ack", "^Guild Warehouse:(?P<Stock>(\\n[0-9a-z]+ (.*) x ([0-9]+))+)$")
2019-08-24 08:00:55 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageBusy) + `, "Too busy now", "^You are too busy with a different adventure. Try a bit later.$")
2019-12-13 12:22:13 +01:00
,(5000, ` + strconv.Itoa(objSubTypeMessageStaminaRestored) + `, "Stamina Restored", "^Stamina restored\\. You are ready for more adventures!$")
2019-08-29 13:03:38 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageResStockReq) + `, "Resources Stock Req #1", "^📦Resources$")
,(5000, ` + strconv.Itoa(objSubTypeMessageResStockReq) + `, "Resources Stock Req #2", "^/stock$")
,(5000, ` + strconv.Itoa(objSubTypeMessageAlchStockReq) + `, "Alchemy Stock Req", "^⚗Alchemy$")
,(5000, ` + strconv.Itoa(objSubTypeMessageMiscStockReq) + `, "Misc Stock Req #1", "^🗃Misc$")
,(5000, ` + strconv.Itoa(objSubTypeMessageMiscStockReq) + `, "Misc Stock Req #2", "^/misc$")
,(5000, ` + strconv.Itoa(objSubTypeMessageEquipStockReq) + `, "Equipment Stock Req", "^🏷Equipment$")
2019-08-29 13:06:12 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageCraftStockReq) + `, "Crafting Stock Req", "^⚒Crafting$")
2019-08-24 08:18:13 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageStockEmpty) + `, "Stock Empty", "^\\[empty\\]$")
2019-11-05 03:59:12 +01:00
,(5000, ` + strconv.Itoa(objSubTypeMessageStockAnyAck) + `, "Any Stock Ack", "^(?P<Items>((['a-zA-Z 📃]+ \\([0-9]+\\)( /view_[a-z0-9]+){0,1}\\n{0,1})+))$")
2019-08-29 13:37:52 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageGDepositReq) + `, "GDeposit Req", "^/g_deposit (?P<Item>[a-z0-9]+) (?P<Quantity>[0-9]+)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGDepositAck) + `, "GDeposit Ack #2", "^Deposited successfully: (?P<Item>.*) \\((?P<Quantity>[0-9]+)\\)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGDepositAck) + `, "GDeposit Ack #1", "^Deposited (?P<Item>.*) \\((?P<Quantity>[0-9]+)\\) successfully$")
2019-09-01 09:36:56 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageAttackReq) + `, "Castle Attack Req", "^⚔Attack$")
2019-09-01 10:29:45 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageAttackAck) + `, "Castle Attack Ack", "^Ha, bold enough\\? Choose an enemy\\!$")
2019-09-01 09:36:56 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageAttackTargetReq) + `, "Castle Attack Target Req", "^(?P<Target>[🐉🦅🐺🦈🦌🥔🌑])$")
,(5000, ` + strconv.Itoa(objSubTypeMessageAttackTargetAck) + `, "Castle Attack Target Ack", "^You are ready to strike. The next battle is in .*.\\n\\n` +
`💬 Pass the waiting for the battle outcome chatting with players from other castles at @chatwarscommunity 💬$")
,(5000, ` + strconv.Itoa(objSubTypeMessageDefendReq) + `, "Defend Req", "^🛡Defend$")
,(5000, ` + strconv.Itoa(objSubTypeMessageDefendAck) + `, "Defend Ack", "^You joined the defensive formations. The next battle is in .*.\\n\\n` +
`💬 Pass the waiting for the battle outcome chatting with players from other castles at @chatwarscommunity 💬$")
2019-09-01 10:29:45 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageBack) + `, "Back", "^⬅Back$")
,(5000, ` + strconv.Itoa(objSubTypeMessageGoFastFight) + `, "Fast Fight", "^▶Fast fight$")
2019-09-01 10:56:15 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageCastleReq) + `, "Castle Req", "^🏰Castle$")
,(5000, ` + strconv.Itoa(objSubTypeMessageCastleAck) + `, "Castle Ack", "^$")
2019-09-14 10:27:38 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageExchangeReq) + `, "Exchange Req", "^⚖Exchange$")
,(5000, ` + strconv.Itoa(objSubTypeMessageExchangeAck) + `, "Exchange Ack", "^Here you can buy and sell some items.\\n` +
`To find a tradable item just type:\\n` +
2019-09-14 10:29:36 +02:00
`/t \\[item name\\]\\n` +
2019-09-14 10:27:38 +02:00
`Example:\\n` +
`/t coal\\n\\n` +
`Your deals \\((?P<ActiveDeals>[0-9]+)/(?P<MaxDeals>[0-9]+)\\):\\n` +
2019-09-14 10:37:49 +02:00
`(?P<Deals>(?s:.*))\\n` +
2019-10-10 11:47:51 +02:00
`Your last 10 comitted trades: /trades$")
,(5000, ` + strconv.Itoa(objSubTypeMessageOrderCancelReq) + `, "Order Cancel Req", "^/rm_(?P<Ref>[a-z0-9]+)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageOrderCancelAck) + `, "Order Cancel Ack", "^Cancelling order$")
2019-09-15 08:54:08 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageEquipGearReq) + `, "Equip Req", "^/on_(?P<Item>[a-z0-9]+)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageEquipGearAck) + `, "Equip Ack", "^Item equipped: (?P<Item>.+)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageUnequipGearReq) + `, "Unequip Req", "^/off_(?P<Item>[a-z0-9]+)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageUnequipGearAck) + `, "Unequip Ack", "^Item unequipped: (?P<Item>.+)$")
2019-09-15 09:43:00 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageNoStamina) + `, "Unequip Ack", "^Not enough stamina. Come back after you take a rest.\\n\\n` +
`To get more stamina, invite friends to the game via invite link. Press /promo to get it.$")
2019-10-10 11:15:58 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageTopReq) + `, "Top Req", "^/top(?P<TopType>[0-9]+)$")
2019-10-03 12:11:24 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #01", "^On your way to the swamp, you saw a group of people shouting angrily at their supposed leader\\. The leader was in tears and explained that loyalty can be won again, even if the medals are lost. You left confused. But a few meters away you found a badge with almost unrecognizable letters: tl\\.\\. You sold it to a merchant\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #02", "^You were taking a walk when you found two burning marks on the ground that disappeared after a few meters\\. Near them there was some kind of almanac with a lot of numbers written in it\\. It was a cold day so you used it to make a campfire to warm yourself and then went back to the castle\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #03", "^Mrrrrgl mrrrgl mrrrrrrgl mrrrgl. Mrrrrrrrrrrrgl mrrrrgl mrrrrrrrgl mrrrrrrgl mrrrrrrrrl\\. Mrrrrrgl\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #04", "^Suddenly you were surrounded by a huge band of orcs, led by an orc shaman\\. They demanded you give them everything you have\\. You killed every single one of them and collected a lot of loot\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #05", "^In the middle of a swamp you met a huge ogre who was finishing eating a donkey\\. “Get out of my swamp!” He shouted angrily with a Scottish accent\\. Somebody once told you that you should not mess with ogres, so you let it be\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #06", "^You entered the swamp in search of knowledge\\. Eventually you found some mushrooms and decided to eat them\\. Apparently they were hallucinogenic, so after a good trip you decided to pick some more to sell them back in town\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #07", "^You stumbled upon a man wielding a sword near a campfire\\.\\n-Why are you armed\\?\\n-Mimics\\nYou laughed, he laughed, the campfire laughed\\. You killed the campfire\\. Fun times\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #08", "^You met a guy who asked you to shoot him in the face\\. You shot him in the face\\. On his cold corpse you found some gold\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #09", "^You found a crypt in an old cemetery where some humans and dwarves were drinking booze\\. They invited you in and offered a sip\\. That was the tastiest mandrake liquor you ever tasted, and the host was kind enough to provide a recipe\\. You sold it to the local pub, but they couldn't replicate it\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #10", "^In your journey you have reached a dark cave, where you met the Devil himself\\. You seized the opportunity and sold your soul for a handful of money\\. When you returned home you realized you didn't have a soul to start with\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #11", "^You came across an eccentric man who lead you through a magical land of candy and sweets\\. Upon reaching the exit, the man loudly informs that you get nothing\\. You bid him good day and decapitate him for wasting your time\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #12", "^While marching through the swamp you hear someone shouting for a hunter\\. Being quite proficient in hunting yourself you walk towards the voice\\. You find a man running up to you who shakes you wildly while screaming something about a Dark One\\. Seconds later he runs away\\.\\nYou pick up some things he lost in his hysteria\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #13", "^In the swamp you found a beautiful mermaid selling some flasks with a magic potion for 30 golden coins\\. However, after you returned home, you realized it's just swamp water\\. What a rip off! You poured it out and sold the flask to your alchemist friend\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #14", "^You went too far and saw the forbidden castle\\. Its gates were painted with blood and the road was scratched with claws\\. You hid in the bushes and saw the two angels dragging the warrior into the castle\\. The gate closed and a terrible scream came from behind them\\. You picked up a few coins that fell from the pockets of the warrior and ran back home\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #15", "^“There was a guy\\nWho was in love\\nWith a girl as beautiful as snow\\nBut she chose the one\\nWho was her ex\\nSo you stole her blue dress\\.”(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #16", "^Walking through the swamp you find a bunch of crazy librarians who are trying to catalogue all adventures happening all around the seven kingdoms\\. Naturally they are doomed to fail, so you leave them behind - not without helping yourself to a few gold coins scattered around them(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #17", "^On your quest, you found the Deer Legend\\. He didn't talk much\\. But when he was leaving for his own quest, he said something in a foreign language before the urn smashed him\\. So you took a bit of his loot left behind\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #18", "^Far away in the distance you saw three tiny figures walking through the mire\\. Suddenly, one of them fell into the water\\. You rushed to them, but by the time you got there, figures disappeared\\. Luckily, you found a shiny ring laying on the ground\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #19", "^Walking through the swamp, you found yourself surrounded by the mist\\. Suddenly you heard a dog howling in the distance\\. You decided to investigate further and found a beast with glowing mouth\\. It was your neighbor's long-lost puppy, so you took it back home for a reward\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #20", "^In the forest you saw a rabbit wearing clothes and holding a pocketwatch muttering “I'm late! Im late“ It hopped into a bunny hole and disappeared\\. Curiousity got the best of you so you jumped into the hole following it\\. There you got high and had a tea party with a cat, some weird looking twins and a guy with crazy hats\\. As a farewell gift they gave you some gold\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #21", "^On the outskirts of the forest, you saw a tree standing alone\\. It was a sad tree, you wanted to make it happy and decided he needs a little friend\\. So you planted another tree\\. While planting the tree, you found a chest full with golden coins\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #22", "^While wandering through the valley, you found a big metal object with wings\\. Some ghastly looking people with remarkably formed foreheads were discussing loudly next to it\\. One of them saw you and asked: nuqneH\\? You got scared and ran away\\. At least you found some metal parts that you could sell to a local blacksmith\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #23", "^You passed a hidden fortress in the mountains, where a bunch of people were shouting at some guy in the shining coat\\. Apparently they were unhappy with too much salt in their food\\. You couldn't sneak past the guards, but you managed to find some loot in a nearby cave\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #24", "^As you were hiking through the icy mountains, you found a shirtless man shouting at a dragon\\. After defeating them both, you took some loot of their cold bodies and went home\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #25", "^At the edge of the known lands, there is an old cursed field, full of relics of ancient civilisations that destroyed each other\\. You love coming back there, to collect antique items\\. This time you found a huge battle-axe, with the rarest Whitewood handle\\. A runic inscription is hard to read, you only understood its about some Valhalla\\. You took it home to cut the handle and sell the wood to merchants\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #26", "^In the forest you found two completely identical man-spiders staring at each other, pointing with their second right leg\\. They were hissing and sputtering about something\\. That is until you sliced their throats and extracted precious web glands\\. Good job!(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #27", "^In the forest you encountered a father and son\\. Father was shouting at his child screaming something about corals\\. We don't even have sea around here, what a strange man\\. You hit him and his son with a baseball bat to clear their heads\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #28", "^You discovered a trail of trunks in the woods\\. You followed it with caution\\. In the center of a clearing you found a black dragon caught in a net\\. It doesn't seem dangerous, so you approached it carefully and freed it\\.\\.\\. from its miserable existence\\. You sold its black scales for a good price to a local blacksmith\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #29", "^Snares and traps, placed far away from the road, indicated that hunters earned their living in those places\\. Having spotted a quail in a snare, you reasoned that it wouldn't cost the hunters anything if you set it free, as the bird was so small, you couldnt eat it anyway\\. Besides, there were all sorts of small items near the traps, so it was a win-win situation\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #30", "^At the edge of the known lands, there is an old cursed field, full of relics of ancient civilisations that destroyed each other\\. You love coming back there, to collect antique items\\. Under a small stone hill you found a blue cloak\\. The fabric was aged but still strong, embroidered with stars and some obscene symbols\\. Perhaps it belonged to some warlord of the past to set fear in his enemies\\. You took the cloak to sell the quality fabric to merchants\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #31", "^As you were strolling through the forest, you found a drunk scientist and a little kid swearing at each other\\. But before you could approach them, they disappeared into thin air\\. As you came closer to investigate you found a pickle that you sold to Jerry, the local merchant\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #32", "^In the forest you came across five librarians\\. Two of them were writing something down while the other three were just copying\\. You decided that it's unacceptable, so you pulled out your sword and killed them\\. Piracy's a crime, and crime doesn't pay\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #33", "^Walking through the forest you reached a cemetery, where you found a boy facing a man without a nose in a magic duel\\. You decided to help the man and stabbed the boy\\. The man gave you some magic artifacts that you sold to a local magician\\. Hope you did nothing wrong(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #34", "^In the lush thicket the path became barely distinguishable\\. Luckily, the trees ended before you got lost completely\\. You even managed to find some gold in an old tree hollow\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #35", "^You saw a river running through the middle of the forest\\. It was a rather hot day, so you decided to go for a swim\\. On the other shore, you saw beautiful nimphas bathing in the waters\\. They looked so naive, so you stole their clothes and sold them\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #36", "^On your way through the forest, you found an old woman, who offered you a beautifull red apple\\. You heard this story before, so you slayed the woman and you sold it to your neighbor\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #37", "^In the forest you met a strange creature who was mumbling about his ""precious"" and was scared of sunlight\\. It was poor mad Andy Serkis\\. You stole his wedding ring and sold it to a merchant\\. Strangely the merchant was never seen again\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #38", "^In the middle of the forest you came upon a short man wearing all green\\. He was drunkingly mumbling about pot of gold at the end of the rainbow\\. Feeling excited, you followed it, only to find a big couldron, full of potatoes\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #39", "^At the edge of the known lands, there is an old cursed field, full of relics of ancient civilisations that destroyed each other\\. You love coming back there, to collect antique items that historians can pay a good price for\\. Today you found there a massive red shield with a mystical engraving of a crowned black square\\. A shame that you cant decipher a symbolical meaning of perished empires\\. Still, worth a fortune\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #40", "^As you were humming a song between the trees of the forest, animals approached you to hear more of this beautiful melody\\. When you shot a few, the rest ran away\\. You sold their pelt for gold\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #41", "^In the deep shadows of trees you noticed ancient ruins, covered in either moss or some algae\\. In such darkness, you failed to distinguish what kind of ruins they were\\. But in order to make up for it you managed to find a couple of interesting things to take home\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #42", "^You came across a small, red, derpy-looking Echidna waddling towards you and shouting, “Do you know da wae\\?”\\n\\nYou showed it the way to the Queen; so it waddled away making clicking sounds\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #43", "^In the forest you met a beautiful woman\\. You became suspicious that she was out here all alone, so you robbed her just in case\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #44", "^As you came across a glade in the forest, you smelled the scent of burned fiends\\. Upon further investigation you found the remains of a grand bonfire\\. Digging around in the pile of burned werewolves and witches you found some unburned stocks\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #45", "^In the forest you found a skinny man with a talking dog, eating dog cookies\\. You decided to face them, but the man was too strong\\. Frustrated, you return to the castle with nothing but shame(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #46", "^In the forest you found a wolf driving a cart full of deers\\. ""I wonder, where could they be going\\?"",- you thought\\. But the wolf threw you a shiny coin, so you decided to go home and forget about this strange incident\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #47", "^Under the twisted shadows of the trees, you found a little wolf cub with a scar on its face. Being kind hearted, you took it with you\\. One night, little cub disappeared, but you found some gold on your doorstep\\. The local fool kept telling everyone that he saw a big white wolf taking your cub with it to the forest\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #48", "^In the forest you met a one-armed shinobi who asked you about his lord\\. As you didn't know anything he continued his way\\. You noticed you have a strange cough on your way to the castle\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #49", "^In the forest you encountered a naked man in a red bandana dancing to some sweet music\\. You got carried away by his amazing moves and stared at him for a couple of days\\. After you gained back control over your body, you stole his bandana and sold it for a golden coin\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #50", "^In the forest you found a rare mushroom species that you could sell to some local alchemists\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #51", "^At the edge of the known lands, there is an old cursed field, full of relics of ancient civilisations that destroyed each other\\. You love coming back there, to collect rare antique items\\. An old sword caught your attention\\. On the hilt you found a fine art of a blazing sun and a beautiful yellow city\\. The blade itself was a bit rusty though, its owner probably spent a lot of time near the sea\\. But weapons are always valuable, so you took the sword with you for sale\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #52", "^You don't know what happened in the forest\\. All you can still remember is a bright flash of light and two guys in black suits wearing sunglasses walking away\\. When you checked your pockets you found some coins, that haven't been there before!(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #53", "^You finally found a ring of fairies\\. They laughed and invited you to join them\\. Poor fairies\\. You killed all of them for their treasure, but as soon as you left the forest, they turned into dusty leaves\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #54", "^While walking through an abandoned village in the woods you got knocked out\\. As you woke up, a scary looking metal man asks you what kind of fruit you are while muttering something about ""dissection""\\. A strange figure calling himself Zee Captain rescues you from this fate and puts a curious looking device in your hand\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #55", "^The forest was impenetrable to the sunlight\\. A long walk through it made you ponder over the meaning of life\\. As a result you became slightly wiser\\. In addition, you found a tenner in your inside pocket, which have been left there since last season\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #56", "^Somewhere in the forest you saw an internet troll\\. He turned out to be a fat and slow creature, so you easily defeated him\\. What does ""internet"" mean, anyway\\? You wondered about that for a few seconds, but then you saw the contents of the troll's coin purse and the thought vanished\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #57", "^In the forest you encountered a sad frog\\. You found it extremely aesthetically pleasing, so you sold it to a local painter to be a poster model\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #58", "^On your quest through the forest you found a sword in stone\\. Out of excitement you pulled the sword from the stone, expecting to find The Greatest Sword in the World! But the engraving said ""This is just a tribute""\\. So you sold it off to a merchant\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #59", "^Statistically speaking, you come back empty handed from every third adventure in the forest\\. Seems like you drew your lucky ticket\\. You came back from the forest\\. And guess what\\? Something interesting happened\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #60", "^”The faery forest glimmered beneath the ivory moon,\\nthe silver grasses shimmered against a faery tune\\.\\nBeneath the silken silence the crystal branches slept,\\nand dreaming thro the dew wall\\. The cold white blossoms wept\\.”\\n\\nForest fairies were impressed by your poem and invited you to their hideout\\. They should not have done that\\. You took the chance and decided to kill them and claim their treasures\\. Poor fairies\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #61", "^As you were walking through the forest, you met a spider-man\\. You slew the beast and took its web gland as a trophy\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #62", "^In the forest you encountered a body of a dwarf with a lion engraved on his shirt and a bag of gold lying next to him\\. It looks like he fell from the sky\\. You took the gold and left the body alone\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #63", "^“Two roads diverged in a wood,\\nand I-\\nI took the one less travelled by,\\nAnd robbed some guy - oh my\.”(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #64", "^Strolling through the mountains you encountered an evil undead wizard hitting himself against a cold wall\\. He must be completely out of his mind\\. You decided not to bother him and simply collected all the gold around him\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #65", "^In the valley's tranquility you saw sheep and lambs grazing on lush meadows\\. You took your knife out and killed one, but the lambs stayed silent\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #66", "^In the mountains you found a small lake and a hidden door\\. The door was carved with symbols and a picture of a bush\\. You recognised the ancient language and managed to translate the scriblings: ""Say friend and come in""\\. Unfortunatelly, you never had any friends, so you picked up some arrows laying around and went home\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #67", "^On your way to the market in another village, you met an old man talking about peaceful associations between the traders of the seven castles\\. He dreamed of sharing goods and creating a market for extraordinary items\\. You had to leave, but not before the old man gave you a bell and told you to spread the idea\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #68", "^Deep down along the valley you found a small inn. Some big warrior with a burnt face ate all the chicken they had and you got nothing\\. You tried writing to the inn's feedback box, but there was no reply\\. However, you stole a strange coin from the girl who accompanied the bully\\. Maybe it's worth something\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #69", "^On your quest you reached the top of the mountain\\. You were looking at the lands lying in front of you, when you noticed a dark shadowy place in the distance\\. You heard a mighty voice say ""That's urn castle, you must not go there""\\. While looking for the voice, you found a golden ingot and decided to head back home\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #70", "^At the edge of the known lands, there is an old cursed field, full of relics of ancient civilisations that destroyed each other\\. You love coming back there, to collect antique items\\. This time you found a green bag lying around\\. You checked the content and only found some weird herbs with refreshing smell\\. Having no idea what it is, it came to your mind it will be a nice tea ingredient\\. You kept the herb, but sold the bag\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #71", "^At the edge of the known lands, there is an old cursed field, full of relics of ancient civilisations that destroyed each other\\. You love coming back there, to collect antique items\\. This time you found a strange dusky helmet\\. The engraving on it illustrated a worshipping of a giant sea monster, which decorated the top of the helmet\\. The helmet seemed to have an occult meaning to it, but having lesser interest in those, you just sold it to historians\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #72", "^Out in the swamp you encountered a micro hydra trying to eat a little girl\\. You stepped on it and killed the beast\\. You noticed that it dropped a giant golden crown\\. I wonder, how could it fit inside such a small body\\?(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #73", "^In the forest you found a rare mushroom species that you could sell to some local alchemists and apothecaries(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #74", "^In the middle of a swamp you met a huge ogre who was finishing eating a donkey\\. “14 Silver bullets can't hurt me!” He shouted angrily with a Scottish accent\\. Somebody once told you that you should not mess with ogres, so you let it be\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #75", "^In the forest you met a guy who asked you to shoot him in the face with some black stuff\\. What a weird request, you thought to yourself\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #76", "^In the forest you encountered a knight in a flashy red iron armor\\. He was talking about a Jar-Beast and “ku'anthum fhi'zicks” before disappearing into thin air\\. You looted some contraptions left by this mysterious man and sold them to the local mechanic, Jerry\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #77", "^You have killed Harambe in the forest\\. You are a terrible person\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #78", "^At the edge of the known lands, there is an old cursed field, full of relics of ancient civilisations that destroyed each other\\. You love coming back there, to collect antique items\\. Today, you noticed a shattered spear blade made from an odd gloomy metal\\. The instant you took it, you heard strange voices speaking of The Dark Lord and his ascend\\. You hid it and rushed to a wizard, who would pay great deal for such magical artefacts\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #79", "^In the middle of the swamp you found a blue box, that turned out to be bigger on the inside\\. Along side some strange garbage with buttons and levers you found a weird screwdriver you sold to a local pawnshop\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #80", "^On your way to the forest, you saw a wolf trying to eat a little girl\\. The little girl screamed for help\\. You killed the wolf\\. You killed the girl\\. What a day! What a lovely day!(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #81", "^In the forest you met a one-armed shinobi who asked you about his lord\\. As you didn't know anything he continued his way\\. You noticed you have a stange cough on your way to the castle\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #82", "^While walking through the forest, you found two muggers\\. You overheard their conversation: ""Do you see him\\?"", ""You mean him, the hero who slayed various beasts on his quest\\?"", ""Yes, let's mug him!"", ""Nah, let's not\\.""\\. Because what do muggers do\\? They Mug! While they were discussing to mug you, you mugged them instead\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #83", "^Far away in the distance you saw three tiny figures walking through the mire\\. Suddenly, one of the fell into the water\\. You rushed to them, but by the time you got there, figures disappeared\\. Luckily, you found a shiny ring laying on the ground\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #84", "^In the forest you stumbled upon a pond of crystal clear water with Incredibly beautiful carps swimming inside\\. Just think about it! Those fish could live longer than an average warrior! After admiring the carps you achieved an inner harmony, and came back later to clean the pond from all sorts of ""garbage""\\. Some things could come in handy in your workshop\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #85", "^Deep in the forest you found a hole\\. And in that hole lived a hobbit\\. Unfortunately, in this universe, hobbits are a kind of rabbits\\. So you skinned it and made yourself a hat\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #86", "^In the forest you made friends with a small green goblin who taught you how to use the force\\. Unfortunately by the time you returned home you have already forgotten how to use that ancient art\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #87", "^You saw a huge wooden horse near the edge of the forest\\. Fortunately you studied history and resisted the urge to bring it with you to the castle\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #88", "^Looking for some shiny things at the edge of the forest, you saw a broken piece of a metal under a tree\\. After examining it, you didnt find anything special about it, except for some old painted text: “F A L C O … V Y”\\. Nonetheless, you took it back home, hoping to sell to a local antique collector, Mr Musk\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #89", "^You came across a man with an arrow in his knee\\. You helped him, and he taught you some ancient gibberish\\. The moment you said the last word, he was hit by sudden blast of wind and ended up impaled on a tree branch\\. Weird\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #90", "^In the valley you encountered a sleeping dragon\\. Even the loudest thunder couldn't wake it up, so you robbed its cave\\.(?s:.*)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #91", "^At the edge of the known lands, there is an old cursed field, full of relics of ancient civilisations that destroyed each other\\. You love coming back there, to collect antique items\\. This time you found a strange dusky helmet\\. The engraving on it illustrated a worshipping of an old powder cult, which decorated the top of the helmet\\. The helmet seemed to have an occult meaning to it, but having lesser interest in those, you just sold it to historians\\.(?s:.*)$")
2019-10-10 11:15:58 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #91", "^It was a really nice and sunny day, so you sat under a tree and enjoyed the weather\\.\\.\\.$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #92", "^Wandering around, you saw a little golden ball flying around. Quickly, you hopped on your broom and started chasing it\\. Just as you were about to catch the ball, you woke up, realising it was just a dream$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #93", "^You fell asleep and in your dream there was a beautiful land where seven colourful armies were battling each other\\. “How is that different from real life and why is there a taste of mushrooms and berries in my mouth\\?” was your thought when you woke up\\.$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #94", "^It was a cool and refreshing night, so you made a campfire out in the woods\\.$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #95", "^In the forest you met a redhead woman. Now you know nothing. You returned home empty handed\\.$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #96", "^You've stepped into a pile of dung\\. Now you stink\\. Nothing else happened\\.$")
2019-12-20 03:07:25 +01:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #97", "^As you were about to head out for an adventure, you got a feeling you were forgetting something, so you wasted some time trying to remember what it was\\. Finally you gave up and stayed home\\.$")
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #98", "^Walking through the swamp, you found yourself surrounded by the mist\\. Suddenly you heard a dog howling in the distance\\. You decided to save yourself and ran back home, as your butler promised to cook some porridge\\.$")
2019-12-20 03:53:43 +01:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResult) + `, "Quest result #99", "^Strolling through the cold winter mountains you came across a giant mansion\\. As you peeked in the window, you noticed a man staring at some blue hideous creature\\. \"Perfection\",\\- the man said\\. You decided not to mess with this lunatic, so you stole some magnetic rocks scattered around the house and departed safely\\.(?s:.*)$")
2019-10-10 11:15:58 +02:00
2019-10-03 12:11:24 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestReq) + `, "Quest Req", "^🗺Quests$")
2019-10-10 11:47:51 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestAck) + `, "Quest Ack #0", "^🌲Forest [0-9]min\\n` +
`Many things can happen in the forest\\.\\n\\n` +
`🗡Foray 🔋🔋\\n` +
`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\\.$")
2019-10-03 13:00:57 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestAck) + `, "Quest Ack #1", "^🌲Forest [0-9]min\\n` +
2019-10-03 12:24:02 +02:00
`Many things can happen in the forest\\.\\n\\n` +
2019-10-10 11:47:51 +02:00
`🗡Foray 🔋🔋\\n` +
`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(objSubTypeMessageQuestAck) + `, "Quest Ack #2", "^🌲Forest [0-9]min\\n` +
`Many things can happen in the forest\\.\\n\\n` +
2019-10-03 12:24:02 +02:00
`🍄Swamp [0-9]min\\n` +
`Who knows what is lurking in mud\\.\\n\\n` +
2019-10-10 11:15:58 +02:00
`🗡Foray 🔋🔋\\n` +
`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\\.$")
2019-10-10 11:47:51 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestAck) + `, "Quest Ack #3", "^🌲Forest [0-9]min\\n` +
2019-10-10 11:15:58 +02:00
`Many things can happen in the forest\\.\\n\\n` +
`🍄Swamp [0-9]min\\n` +
`Who knows what is lurking in mud\\.\\n\\n` +
`🗡Foray 🔋🔋\\n` +
`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\\.$")
2019-10-10 11:47:51 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestAck) + `, "Quest Ack #4", "^🌲Forest [0-9]min\\n` +
2019-10-10 11:15:58 +02:00
`Many things can happen in the forest\\.\\n\\n` +
`🍄Swamp [0-9]min\\n` +
`Who knows what is lurking in mud\\.\\n\\n` +
2019-10-03 12:24:02 +02:00
`🏔Mountain Valley [0-9]min\\n` +
`Watch out for landslides\\.\\n\\n` +
`🗡Foray 🔋🔋\\n` +
`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` +
2019-10-03 12:43:15 +02:00
`📯Arena (🔒){0,1}\\n` +
2019-10-03 12:24:02 +02:00
`Arena isn't a place for the weak\\. Here you fight against other players and if you stand victorious, you acquire precious experience\\.$")
2019-10-10 11:47:51 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestAck) + `, "Quest Ack #5", "^🍂Mirkwood [0-9]min\\n` +
2019-10-03 13:00:57 +02:00
`A corrupted forest, inhabited by twisted creatures\.\\n\\n` +
2019-10-03 13:06:00 +02:00
`.*The Dead Marshes [0-9]min\\n` +
2019-10-03 13:00:57 +02:00
`The dead don't test\\.\\n\\n` +
`🌋Devil's Valley [0-9]min\\n` +
`Beware of pentagrams\\.\\n\\n` +
`🗡Foray 🔋🔋\\n` +
`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\\.$")
2019-10-20 11:03:54 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResultAmbush) + `, "Quest Res with Ambush and loot", "^You met some hostile creatures\\. Be careful:\\n` +
2019-12-16 03:22:22 +01:00
`(?P<Monsters>(((([0-9] x ){0,1}[⚜a-zA-Z ]* lvl\\.[0-9]*)|( ╰ [a-z ]*))\\n{0,1})+)\\n` +
2019-10-20 11:34:41 +02:00
`((It's an ambush)|(It is ambush))! Loot is locked till the end of the fight:\\n` +
2019-10-20 11:21:36 +02:00
`(?P<Loot>([a-zA-Z ]* \\([0-9]+\\)\\n{0,1})+)\\n` +
2019-10-21 05:55:49 +02:00
`(?P<Link>\\/fight_[a-zA-Z0-9]+)$")
2019-10-20 11:03:54 +02:00
,(5000, ` + strconv.Itoa(objSubTypeMessageQuestResultAmbush) + `, "Quest Res with Ambush and no loot", "^You met some hostile creatures\\. Be careful:\\n` +
2019-10-20 11:29:40 +02:00
`(?P<Monsters>(((([0-9] x ){0,1}[a-zA-Z ]* lvl\\.[0-9]*)|( ╰ [a-z ]*))\\n{0,1})+)\\n` +
2019-10-20 11:34:41 +02:00
`((It's an ambush)|(It is ambush))!\\n\\n` +
2019-10-21 05:55:49 +02:00
`(?P<Link>\\/fight_[a-zA-Z0-9]+)$")
2019-12-16 03:56:53 +01:00
,(5000, ` + strconv.Itoa(objSubTypeMessageHealUpFirst) + `, "Heal Up Message", "^You should heal up a bit first\\.$")
,(5000, ` + strconv.Itoa(objSubTypeMessageArenaFightAck) + `, "Arena Fight Ack", "^Thirsty for blood, you went to the Arena. You'll be back soon\\.$")
2019-12-16 04:05:43 +01:00
,(5000, ` + strconv.Itoa(objSubTypeMessageGoArenaAck) + `, "Go Arena Ack", "^📯Welcome to Arena!\\n` +
`Dirty air is soaked with the thick smell of blood\\. No one ends up here by an accident: you can't leave once you begin your battle\\. I hope, your sword is sharp and your shield is steady\\.\\n\\n` +
`Your rank: (?P<Rank>[0-9]+)\\n` +
`Your fights: (?P<Fights>[0-9]+)/5\\n\\n` +
`Combat Ranking: /top5\\n` +
`Fastest-growing: /top6\\n\\n` +
`Entrance fee: 5💰$")
2019-12-16 04:10:43 +01:00
,(5000, ` + strconv.Itoa(objSubTypeMessageWithdrawNAck) + `, "Withdraw NAck", "^Not enough items on guild stock$")
2019-12-20 03:32:33 +01:00
,(5000, ` + strconv.Itoa(objSubTypeMessageLevelUpReq) + `, "Level Up Req", "^/level_up$")
2019-12-20 03:38:02 +01:00
,(5000, ` + strconv.Itoa(objSubTypeMessageLevelUpAck) + `, "Level Up Ack #1", "^Choose what you would like to improve 💡 \\((?P<Points>[0-9]+) points\\)$")
,(5000, ` + strconv.Itoa(objSubTypeMessageLevelUpAck) + `, "Level Up Ack #2", "^You have (?P<SPs>[0-9]+) sp. What to improve\\?🤔\\n` +
2019-12-20 03:32:33 +01:00
`(?s:.*)Learned skills: /class$")
2019-10-03 12:11:24 +02:00
2019-10-02 07:24:35 +02:00
;`)
2019-05-19 06:06:06 +02:00
failOnError(err, "resetMsgParsingRules : populate table msg_rules")
}