package channelserver import ( "erupe-ce/common/byteframe" "erupe-ce/network/mhfpacket" ) func handleMsgMhfGetBreakSeibatuLevelReward(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfGetBreakSeibatuLevelReward) bf := byteframe.NewByteFrame() bf.WriteInt32(0) bf.WriteInt32(0) bf.WriteInt32(0) bf.WriteInt32(0) doAckBufSucceed(s, pkt.AckHandle, bf.Data()) } type WeeklySeibatuRankingRewardData struct { Index0 int32 //Place Start Index1 int32 //Place Finish Index2 uint32 // UNK DistributionType int32 //Type 7201:Item 7202:N Points 7203:Guild Contribution Points ItemID int32 Amount int32 } type WeeklySeibatuRankingRewards struct { Unk0 int32 ItemID int32 Amount uint32 PlaceFrom int32 PlaceTo int32 } func handleMsgMhfGetWeeklySeibatuRankingReward(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfGetWeeklySeibatuRankingReward) var data []*byteframe.ByteFrame var weeklySeibatuRankingRewards []WeeklySeibatuRankingRewards var weeklySeibatuRankingRewardsData []WeeklySeibatuRankingRewardData switch pkt.Operation { case 1: //Conquest Data switch pkt.ID { // Seems to align with EarthStatus 1 and 2 for Conquest case 1: switch pkt.EarthMonster { case 116: weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{ {0, 2, 3, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 25, 1, 100}, {0, 2, 2, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 30, 101, 1000}, {0, 2, 2, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 6, 1000, 1001}, {0, 2, 6, 1000, 1001}, } case 107: weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{ {0, 2, 3, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 25, 1, 100}, {0, 2, 2, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 30, 101, 1000}, {0, 2, 2, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 6, 1000, 1001}, {0, 2, 6, 1000, 1001}, } case 2: weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{ {0, 2, 3, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 25, 1, 100}, {0, 2, 2, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 30, 101, 1000}, {0, 2, 2, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 6, 1000, 1001}, {0, 2, 6, 1000, 1001}, } case 36: weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{ {0, 2, 3, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 25, 1, 100}, {0, 2, 2, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 30, 101, 1000}, {0, 2, 2, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 6, 1000, 1001}, {0, 2, 6, 1000, 1001}, } } case 2: switch pkt.EarthMonster { case 116: weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{ {0, 2, 3, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 25, 1, 100}, {0, 2, 2, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 30, 101, 1000}, {0, 2, 2, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 6, 1000, 1001}, {0, 2, 6, 1000, 1001}, } case 107: weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{ {0, 2, 3, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 25, 1, 100}, {0, 2, 2, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 30, 101, 1000}, {0, 2, 2, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 6, 1000, 1001}, {0, 2, 6, 1000, 1001}, } case 2: weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{ {0, 2, 3, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 25, 1, 100}, {0, 2, 2, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 30, 101, 1000}, {0, 2, 2, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 6, 1000, 1001}, {0, 2, 6, 1000, 1001}, } case 36: weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{ {0, 2, 3, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 6, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 15, 1, 100}, {0, 2, 25, 1, 100}, {0, 2, 2, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 4, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 9, 101, 1000}, {0, 2, 30, 101, 1000}, {0, 2, 2, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 4, 1000, 1001}, {0, 2, 6, 1000, 1001}, {0, 2, 6, 1000, 1001}, } } } case 3: //Pallone Festival Data weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{ //Unk0 //Unk1 //Unk2 //Unk3, //ROUTE, (Crashes if it doesnt exist be careful with values ) //Status 1 = Only Now ! 2= Unk 3= Disabled} //Route 0 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, //Route 1 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, //Route 2 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, //Route 3 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, //Route 4 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, //Route 5 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, //Route 6 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, //Route 7 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, //Route 8 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, //Route 9 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, //Route 10 {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, } // 0 = Max 7 Routes so value 6 //ZZ looks like it only works up to Route 2 case 5: //Event Reward Data switch pkt.ID { //243400 = Route 0 //243401 = Route 1 //I have a sneaky suspicion that the above massive array is feeding into this somehow.... case 240031: weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{ {1, 1, 1, 7201, 12068, 1}} case 240041: weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{ {0, 0, 1, 7201, 12068, 1}} case 240042: weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{ {0, 0, 2, 7201, 12068, 1}} case 240051: weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{ {0, 0, 1, 7201, 12068, 1}} case 240052: weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{ {1, 1, 1, 7201, 12068, 1}, } case 260001: //Tower Dure Kill Reward weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{ //Can only have 10 in each dist (It disapears otherwise) Looks like up to dist 4 is implemented //This is claimable for every Dure Kill, Make cliamable in bulk or mandatory claim per kill //{unk,unk,dist,seiabtuType,ItemID,Value} {0, 0, 1, 7201, 11463, 1}, {0, 0, 1, 7201, 11464, 1}, {0, 0, 1, 7201, 11163, 1}, {0, 0, 1, 7201, 11159, 5}, {0, 0, 1, 7201, 11160, 5}, {0, 0, 1, 7201, 11161, 5}, {0, 0, 2, 7201, 12506, 1}, {0, 0, 2, 7201, 10355, 1}, {0, 0, 2, 7201, 11163, 1}, {0, 0, 2, 7201, 11159, 5}, {0, 0, 2, 7201, 11160, 5}, {0, 0, 2, 7201, 11161, 5}, } case 260003: //Tower Floor Reward weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{ //Adjust Floors done in database to make blue //This is claimable for every Floor Climbed across dist 1 and 2 //{Floor,unk,unk,seiabtuType,ItemID,Value} {1, 0, 0, 7201, 11158, 1}, {2, 0, 0, 7201, 11173, 1}, {3, 0, 0, 7201, 10813, 3}, {4, 0, 0, 7201, 11163, 1}, {5, 0, 0, 7201, 11164, 1}, {6, 0, 0, 7201, 11389, 3}, {6, 0, 0, 7201, 11381, 1}, {7, 0, 0, 7201, 11384, 1}, {8, 0, 0, 7201, 11159, 10}, {9, 0, 0, 7201, 11160, 10}, {10, 0, 0, 7201, 11161, 10}, {11, 0, 0, 7201, 11265, 2}, {11, 0, 0, 7201, 7279, 2}, {12, 0, 0, 7201, 11381, 1}, {13, 0, 0, 7201, 11384, 1}, {14, 0, 0, 7201, 11381, 1}, {15, 0, 0, 7201, 11384, 1}, {15, 0, 0, 7201, 11464, 1}, {16, 0, 0, 7201, 11381, 1}, {17, 0, 0, 7201, 11384, 1}, {18, 0, 0, 7201, 11381, 1}, {19, 0, 0, 7201, 11384, 1}, {20, 0, 0, 7201, 10778, 3}, {21, 0, 0, 7201, 11265, 2}, {21, 0, 0, 7201, 7279, 2}, {22, 0, 0, 7201, 11381, 1}, {23, 0, 0, 7201, 11384, 1}, {24, 0, 0, 7201, 11381, 1}, {25, 0, 0, 7201, 11389, 3}, {25, 0, 0, 7201, 11286, 4}, {26, 0, 0, 7201, 11384, 1}, {27, 0, 0, 7201, 11381, 1}, {28, 0, 0, 7201, 11384, 1}, {29, 0, 0, 7201, 11381, 1}, {30, 0, 0, 7201, 11209, 3}, {31, 0, 0, 7201, 11265, 2}, {31, 0, 0, 7201, 7279, 2}, {32, 0, 0, 7201, 11159, 10}, {33, 0, 0, 7201, 11463, 1}, {34, 0, 0, 7201, 11160, 10}, {35, 0, 0, 7201, 11286, 4}, {36, 0, 0, 7201, 11161, 10}, {38, 0, 0, 7201, 11384, 1}, {39, 0, 0, 7201, 11164, 1}, {40, 0, 0, 7201, 10813, 3}, {41, 0, 0, 7201, 11265, 2}, {41, 0, 0, 7201, 7280, 2}, {43, 0, 0, 7201, 11381, 1}, {45, 0, 0, 7201, 11286, 4}, {47, 0, 0, 7201, 11384, 1}, {48, 0, 0, 7201, 11358, 1}, {50, 0, 0, 7201, 11356, 1}, {51, 0, 0, 7201, 11265, 2}, {51, 0, 0, 7201, 7280, 2}, {53, 0, 0, 7201, 11381, 2}, {55, 0, 0, 7201, 11357, 1}, {57, 0, 0, 7201, 11384, 1}, {60, 0, 0, 7201, 11286, 4}, {61, 0, 0, 7201, 11265, 2}, {61, 0, 0, 7201, 7280, 2}, {63, 0, 0, 7201, 11381, 2}, {66, 0, 0, 7201, 11463, 1}, {67, 0, 0, 7201, 11384, 1}, {70, 0, 0, 7201, 11286, 4}, {71, 0, 0, 7201, 11265, 2}, {71, 0, 0, 7201, 7280, 2}, {73, 0, 0, 7201, 11381, 2}, {77, 0, 0, 7201, 11384, 1}, {79, 0, 0, 7201, 11164, 1}, {80, 0, 0, 7201, 11286, 6}, {81, 0, 0, 7201, 11265, 2}, {81, 0, 0, 7201, 7281, 1}, {83, 0, 0, 7201, 11381, 2}, {85, 0, 0, 7201, 11464, 1}, {87, 0, 0, 7201, 11384, 1}, {90, 0, 0, 7201, 11286, 6}, {91, 0, 0, 7201, 11265, 2}, {91, 0, 0, 7201, 7281, 1}, {93, 0, 0, 7201, 11381, 2}, {95, 0, 0, 7201, 10778, 3}, {97, 0, 0, 7201, 11384, 1}, {99, 0, 0, 7201, 11463, 1}, {100, 0, 0, 7201, 11286, 6}, {101, 0, 0, 7201, 11265, 2}, {101, 0, 0, 7201, 7281, 1}, {103, 0, 0, 7201, 11381, 2}, {107, 0, 0, 7201, 11384, 1}, {110, 0, 0, 7201, 11286, 6}, {113, 0, 0, 7201, 11381, 2}, {115, 0, 0, 7201, 11164, 1}, {117, 0, 0, 7201, 11384, 1}, {120, 0, 0, 7201, 11286, 12}, {123, 0, 0, 7201, 11381, 2}, {127, 0, 0, 7201, 11384, 1}, {130, 0, 0, 7201, 11286, 12}, {132, 0, 0, 7201, 11381, 2}, {134, 0, 0, 7201, 11384, 1}, {136, 0, 0, 7201, 11381, 2}, {138, 0, 0, 7201, 11384, 1}, {140, 0, 0, 7201, 11286, 12}, {142, 0, 0, 7201, 11382, 1}, {144, 0, 0, 7201, 11385, 1}, {145, 0, 0, 7201, 11464, 1}, {146, 0, 0, 7201, 11382, 1}, {148, 0, 0, 7201, 11385, 1}, {150, 0, 0, 7201, 11164, 1}, {155, 0, 0, 7201, 11382, 1}, {160, 0, 0, 7201, 11209, 3}, {165, 0, 0, 7201, 11385, 1}, {170, 0, 0, 7201, 11159, 10}, {175, 0, 0, 7201, 11382, 1}, {180, 0, 0, 7201, 11160, 10}, {185, 0, 0, 7201, 11385, 1}, {190, 0, 0, 7201, 11161, 10}, {195, 0, 0, 7201, 11382, 1}, {200, 0, 0, 7201, 11159, 15}, {210, 0, 0, 7201, 11160, 15}, {220, 0, 0, 7201, 11385, 1}, {235, 0, 0, 7201, 11382, 2}, {250, 0, 0, 7201, 11161, 15}, {265, 0, 0, 7201, 11159, 20}, {280, 0, 0, 7201, 11385, 1}, {300, 0, 0, 7201, 11160, 20}, {315, 0, 0, 7201, 11382, 2}, {330, 0, 0, 7201, 11385, 1}, {350, 0, 0, 7201, 11161, 20}, {365, 0, 0, 7201, 11382, 2}, {380, 0, 0, 7201, 11385, 1}, {400, 0, 0, 7201, 11159, 25}, {415, 0, 0, 7201, 11382, 2}, {430, 0, 0, 7201, 11385, 1}, {450, 0, 0, 7201, 11160, 25}, {465, 0, 0, 7201, 11382, 2}, {480, 0, 0, 7201, 11385, 1}, {500, 0, 0, 7201, 11161, 25}, {525, 0, 0, 7201, 11382, 2}, {550, 0, 0, 7201, 11385, 1}, {575, 0, 0, 7201, 11159, 25}, {600, 0, 0, 7201, 11382, 2}, {625, 0, 0, 7201, 11385, 1}, {650, 0, 0, 7201, 11160, 25}, {675, 0, 0, 7201, 11382, 2}, {700, 0, 0, 7201, 11385, 1}, {725, 0, 0, 7201, 11161, 25}, {750, 0, 0, 7201, 11382, 2}, {775, 0, 0, 7201, 11385, 1}, {800, 0, 0, 7201, 11159, 25}, {825, 0, 0, 7201, 11382, 2}, {850, 0, 0, 7201, 11385, 1}, {875, 0, 0, 7201, 11160, 25}, {900, 0, 0, 7201, 11382, 2}, {925, 0, 0, 7201, 11385, 1}, {950, 0, 0, 7201, 11161, 25}, {975, 0, 0, 7201, 11382, 2}, {1000, 0, 0, 7201, 11385, 1}, {1025, 0, 0, 7201, 11159, 25}, {1050, 0, 0, 7201, 11382, 2}, {1075, 0, 0, 7201, 11385, 1}, {1100, 0, 0, 7201, 11160, 25}, {1125, 0, 0, 7201, 11382, 2}, {1150, 0, 0, 7201, 11385, 1}, {1200, 0, 0, 7201, 11161, 25}, {1235, 0, 0, 7201, 11382, 2}, {1270, 0, 0, 7201, 11385, 1}, {1305, 0, 0, 7201, 11159, 25}, {1340, 0, 0, 7201, 11382, 2}, {1375, 0, 0, 7201, 11385, 1}, {1410, 0, 0, 7201, 11160, 25}, {1445, 0, 0, 7201, 11382, 2}, {1480, 0, 0, 7201, 11385, 1}, {1500, 0, 0, 7201, 11161, 25}, } default: //Covers all Pallone Requests... for now weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{ //1st {1, 0, 0, 7202, 10, 10000}, {1, 1, 0, 7201, 10, 30}, {1, 1, 0, 7201, 10, 18}, {1, 1, 0, 7201, 10, 18}, //2nd - 3rd {2, 3, 0, 7202, 10, 6000}, {2, 3, 0, 7201, 10, 15}, {2, 3, 0, 7201, 10, 9}, {2, 3, 0, 7201, 10, 9}, //4th -10th {4, 10, 0, 7202, 10, 5500}, {4, 10, 0, 7201, 10, 12}, {4, 10, 0, 7201, 10, 9}, } } } if pkt.Operation == 1 { for _, seibatuData := range weeklySeibatuRankingRewards { bf := byteframe.NewByteFrame() bf.WriteInt32(seibatuData.Unk0) bf.WriteInt32(seibatuData.ItemID) bf.WriteUint32(seibatuData.Amount) bf.WriteInt32(seibatuData.PlaceFrom) bf.WriteInt32(seibatuData.PlaceTo) data = append(data, bf) } } else { for _, seibatuData := range weeklySeibatuRankingRewardsData { bf := byteframe.NewByteFrame() bf.WriteInt32(seibatuData.Index0) bf.WriteInt32(seibatuData.Index1) bf.WriteUint32(seibatuData.Index2) bf.WriteInt32(seibatuData.DistributionType) bf.WriteInt32(seibatuData.ItemID) bf.WriteInt32(seibatuData.Amount) data = append(data, bf) } } doAckEarthSucceed(s, pkt.AckHandle, data) } func handleMsgMhfGetFixedSeibatuRankingTable(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfGetFixedSeibatuRankingTable) bf := byteframe.NewByteFrame() bf.WriteInt32(0) bf.WriteInt32(0) bf.WriteBytes(make([]byte, 32)) doAckBufSucceed(s, pkt.AckHandle, bf.Data()) } func handleMsgMhfReadBeatLevel(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfReadBeatLevel) // This response is fixed and will never change on JP, // but I've left it dynamic for possible other client differences. resp := byteframe.NewByteFrame() for i := 0; i < int(pkt.ValidIDCount); i++ { resp.WriteUint32(pkt.IDs[i]) resp.WriteUint32(1) resp.WriteUint32(1) resp.WriteUint32(1) } doAckBufSucceed(s, pkt.AckHandle, resp.Data()) } func handleMsgMhfReadLastWeekBeatRanking(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfReadLastWeekBeatRanking) bf := byteframe.NewByteFrame() bf.WriteInt32(0) bf.WriteInt32(0) bf.WriteInt32(0) bf.WriteInt32(0) doAckBufSucceed(s, pkt.AckHandle, bf.Data()) } func handleMsgMhfUpdateBeatLevel(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfUpdateBeatLevel) doAckBufSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00}) } func handleMsgMhfReadBeatLevelAllRanking(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfReadBeatLevelAllRanking) bf := byteframe.NewByteFrame() bf.WriteUint32(0) bf.WriteInt32(0) bf.WriteInt32(0) for i := 0; i < 100; i++ { bf.WriteUint32(0) bf.WriteUint32(0) bf.WriteBytes(make([]byte, 32)) } doAckBufSucceed(s, pkt.AckHandle, bf.Data()) } func handleMsgMhfReadBeatLevelMyRanking(s *Session, p mhfpacket.MHFPacket) { pkt := p.(*mhfpacket.MsgMhfReadBeatLevelMyRanking) bf := byteframe.NewByteFrame() doAckBufSucceed(s, pkt.AckHandle, bf.Data()) }