From 02ffdd80107dbfecb0cb0f638a55608bc7c864b5 Mon Sep 17 00:00:00 2001 From: Yuan Si Date: Fri, 21 Apr 2023 01:28:34 +0800 Subject: [PATCH] Fix live power calculation [3/3] https://wiki-ll.loveliv.es/%E5%88%86%E6%95%B0%E8%AE%A1%E7%AE%97%E6%96%B9%E5%BC%8F Signed-off-by: Yuan Si --- assets/main.db | Bin 3952640 -> 4030464 bytes handler/live.go | 130 ++++++++++++++++++++++++++++++++++++++++++++---- model/live.go | 2 +- 3 files changed, 120 insertions(+), 12 deletions(-) diff --git a/assets/main.db b/assets/main.db index a192c239abdd9478b792c97023c7da560e65a337..caa262cb1d95ebffea74b01cf3d7d58e7803c7bc 100644 GIT binary patch delta 55057 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 delta 6556 zcmX|_1$0!$7shwq3q;uDC3w&T2<{MEg1fs1E$%Me%&|9#0h|D1DwcPIPa%-nmwJ8yR*B3_7yf~O*>dcZW3Nxy9R|DRZy+_a6D zRv4acR4I@Ddiw%iWy*kMjPH0^h|BE%h0&m1!2%5GW`u!t5|)F((F4FBdl)Y+XPgC1 ztz71yqsE|?A9cW>ML`p=d44F^EGGOsNDmNbCjHkMre( zfyOG(G{|LcxzMl-bhN@?fTJ$h-@zOEIm&{4troD4>IU{!t-)S$EZ9>H1A9pBFif@t zyURLYH_3&%N*(O72I#yH=rjlDI2q_L1Zdv_Xcr2EHUiq#G~uQ;0eIQklUw`R=NnKo zbeY3G^|3VA+#G}Yn`?m~oBhCg`Ph`Go4*9ClaGXp;CyUH1m$-JYv=obwer@3HS^|! zHS#8c)$;~|)$))z5t!EiteRH^tdhG4tem?Dtdu(iteA^kiVC@1!Sa^eW^e(yH9`Me zU(m?m4SqR@O!(#?Dq+qU1eVL`4Ep4tD8f6ZI_Q8@NL#8@J*J56@8t>)W6DNivP=^j$USI;J=v^%0HPiz!#Y# z!M`(^+~=7sz-O75+VoeZH~7@aa{uY%)K8qF!N*Rj;SVQg{@ux$A30fr-<$&cHDek0 zOGY^B|8oX*ZTcw#2{HYc(G>h4qXzhWh8g@WeIxiVot1u&j#QhzP45qWlim)zpI#6A zI-Q&TDs4UZW!hZui?s3J=V`q1voy;2URp!&)3mDKCuv^b$Ej;fSpRM+^>ZhcyS|;; z8@!d;7W^ocQ-7FBxqgsJ$=yt0K5nE;2d}3L2d||-6Q-*vD5B{~3iEL}g;QTjWWH|~Gp&`@Z#B$)FgmvJ-g!jM$3GAr-2@GssLK|>z0?V-{ z0b(~YmyW)B2&iFClj(ApXdweT!TYPPBYdnN$+7h<`EQp&2ZjKuV=EwB`^Wr#Z zZd@>!6K8GSD;C{h%8cce&R8y=5lc0s$D-FvX|XJBswIZYr^L(!lViAiQVe5C zjA;%g#4u6uF;K55E_x*x8yybDL{l-*(Otl(Xm+_Hx-u9Ut%3HaC7>;83TTZ&@0e6n zC@7;CcSMvwXmPv`zVEOsfZODtST;KPf*TyH{dxy4UFTrjYa_YEHIdBF>d4XHs>m>K zWh4u;u5Xc8YY7owF^pGdBxtl=FNWXPajm4gHzs+F0-R zZ0Ky$92@mH+vWkzvMvQ@S|@`uto_01R&Flb8U#+Wa&uGFT5yV@CMGMYXHv;&I#Dqz z6I3N|yb|CzxdhAO zv~`(>A2SBFu?Jw#+J*v)RyG7DT3Y$Kg_S2ya|NM@W~u|&R9e6$5|tH=C1w(hdUL*p z25TXvxXj_6hGp_*>{(38M`gss{7K-1e27Gh&zl8~%j*Y@&8rHI$%VAU=v@A1RBlCZ zWDW``M&v*dVtC2vI4qm5hi0R3#gHtNK@84BbYf5@+EEO2LL*{;lP6_=CwJ6uVFv0i z`evY>qEGr_uy-0#CVHhI3!-Nl8d3B}FDO5ye;k0=qr14&qtINSS4+{UIvR9%$6&`S+aaXxS8Xqn~FvpQ?cD;K5R8C+w6>IYl#}S*r<#G8~450 zhBHCrvx`I?`$yzj>wq~5$CJobW5F!NOl2yT$tk&|3`td`OKvQUpELxY4bi<(rZP?#s4#{k3cie#KKp zd?{IyFC^RgbBf`!Wxzcq_|r+iC!FGA7Vj=syhFv^W9G{kMntdAVyY`0oz3-9OtYtQT7Yz`w%_7~%7LitAZ! z82DE<^YAni4-)Zb#zOE(8s+gg)d&2e7;aSz5>VCV1T;zAV^24wGr^ z;&7B|p>b8fwy}_h)+Tlc*gCc@*oytHwTyuhwH7gL!R9d#lh!O6veTMI_W_$kBSfun z)EdyzC~72J!>DFpgD5YszGEgB;$U*?IRe4Dk=#(7NaR5ajzmJWph!=!ww+hjvh&KC z_G(}a8xpEjw+#oY@foTG+IVGE>kP1pl|fdvGRR751z54O8VXl|4@j-N@&E(mG|*pm z0u6q}(EOGHzGxNAT%Vfj>DL<6l-oR9H1e}Zb)x}>5$ZZaw5aPX;NDl)xRXulT4%V8 z>Y9Mtpsx0VTd%I-*w@ynE2H4nsw<3fjk?TrSF6h*aI4g%1#m0XB?@hYy2xBDR~Nbe zW$K~^w^Uu|54XgkF5n>07OV3pxVA{0XC4-+V$QZe6?3-v>KtdAr_OPs`LR!8wT)JCbJ)Wk?t zGz)HoD&pM3l?!UuhA9`CK^v-$Fr!1%5%iKaSQT!98>9*c^?)C!3c1n%br_Ept-m_V z1ou;iM!@w|hgiiv>L5kgTODK+z0?7Uxu-f%AFhYm&)S8#-%JyJ{vzIOUMkKQz2f-! zON+J60b{HsEB%vO2Y)On*AGY8r{5QG{qJ03!G}j! z{s%{xmv0NJgWnuxcJ3eI{9hj`2Yz+17Wk#*KpVI(_A{c-_p{YM+sEnd?d=PGx@R`{ z$sP^-cy}mxcNg3H&d#;q?VSPOtsPXtN81^|huc}>54KS$H@7m8H@2(-uWw;DUMpa+ zuNH8&E1QGC%lQ`W`cfX3xtPaXUC8Br&*$_9i?b=*bJ@(t*{pitnamF0X(yvOmBCD$ z%wUu!(z)s5X+uDFDjVwd1rWWMW4;#x-%`EJQ~G3{_dPZso0{5bGn9Fuk+ zt~|IuwjH>Sp9;0TF=lWNzshL4qZWd@qAG$r9n{2*$f@9V`v!0uzdvYOZH>V#Ru-;6 zQP7+D;abb*Q&!6xgKe2A``ra~Pve=}uYf0hS#J+bXj)~jz)kpnnbMKaYGPx$N6AP$ zDp!N|=%u539@TL?>RRcj*f$WzpDs#A`^r{1g^{Urlx|f11Pi|_9YuIm>Wa}@FAvRI z6EiCOguxqc3s)C|eaa8R@O9~x?REdR7`-YT1)Ghl82wi|GMDl5$LM9r$n?U`?*vBw zmX02JnwMkrPwD8e=0ml;C>>?_dKF>xcj?Gh)^iF*&%HeQ2%#r{jP~-N zZvOK05Z+oR?G;`>EqNo*L)f4(lb8P3WE}L}ZvMn)f=}hL6+Fi3k6p_O?&;c`YEEaN zXeeqsiwi|J_qZal$;&xCK-_k3ttKXGX2`{KrW|C1-|5`uV$q_U<&w&6i{V9;jq>Uj z6s4x0SI$Xr#VP}e(9fwfoR|7p#orn9Gb*_=+-a4#0`8PbXaaXq#i2L!6Dqbk+;J6+ z(?xfyD13O-kEuu;iTY7xTL)L9_?c06DLD`Bh(*5Rn}zZXo&ow{`5FzSACmvgg*zx; z2EiSW|BQ#*FJB<<`aby_?V<0L<rX`4rLUyXBLmaJ%GV^qRg?{*K)0JLGTZT7A3x zWf9yq`Ev-|R{0~}+aiCc1Xmy}-=S^v&GI2b%a`AvOZ7Z?AI+`j%CB&E>pAjEu9Pi5 z=So@f-V(S>`6*X&%8wy(Jwx6_v+C*c4pW&XZ*jp?c?;>*Q{;!;;gaP|MxP{aa_U5R zof%D#*DPoWJzid6O5^0Em2k20Vl%iHd7%$nv@C}9^(c9EB%DK@fu!_Ed8#*@U7pwo zXOqXdu2mjm36(s`5=!Zs3>P7fRD`og9)kM&@(|DMI-zfJ5pgZ*qat{MtFLw*L zb#f=)Tr0OPgIgoFHG*3$w}iv3k_AlLN}12Bt&n+T;g-vsZg9&af5Fq2%1j*9`VyHj z2X3)U$5E>!U3z#mkFEj6O%qq#*M~suH=s{`g<~(q0NyFhBjM9 zGPGIJ#?WR;D?^(hCCfDZ9fcJBhB}(|IvAY#AB8gIC5|F}@{8Hvq`xR9LV^`{K1JvKbjAY`mHWF@)yc~#LrCK@E;lLupc2s4s?tQ%z*z3e1u&0}v=y7xv;}0w1 zMBVws(z_k*3U)oX3hZ)#|L?qy3v}9B4eYpk1lVDhH`sm$`=;HtKrnR6P_S(dd#6nn z^WHkMCfF*41#OwcdbWsRKAT4~)Mi$0v8i<`ernR2SlO$M`4v=eWTg%pT3NvcR;IMR zl{pBpdV=*7RbH3h?esc|2@F=eH%PIZwH24CrJ8~@Rc)|_;^|RcF|cZKEf~lzv3gaB zh4m_u!3?P^S?)@*Jy=mT0W0v!m|kA;<^cX4qx-J|3@X5nclr(o%*=JUP{4I`^I=lZhx_E{E4|1au*Z=?k diff --git a/handler/live.go b/handler/live.go index aa5ab60..1690cde 100644 --- a/handler/live.go +++ b/handler/live.go @@ -15,6 +15,7 @@ import ( "github.com/gin-gonic/gin" _ "github.com/mattn/go-sqlite3" + "github.com/tidwall/gjson" ) type GameOverResp struct { @@ -37,6 +38,7 @@ func PartyListHandler(ctx *gin.Context) { } func PlayLiveHandler(ctx *gin.Context) { + fmt.Println(ctx.PostForm("request_data")) playReq := model.PlayReq{} err := json.Unmarshal([]byte(ctx.PostForm("request_data")), &playReq) CheckErr(err) @@ -107,14 +109,14 @@ func PlayLiveHandler(ctx *gin.Context) { exists, err := MainEng.Table("common_unit_m").Where("unit_owning_user_id = ?", owningId).Cols("unit_id").Get(&uId) CheckErr(err) - var maxHp, attrId int + var maxHp, attrId, unitTypeId int var baseSmile, basePure, baseCool, smileMax, pureMax, coolMax float64 if exists { // 公共卡片仅为100级属性 _, err = MainEng.Table("unit_m").Where("unit_id = ?", uId). Join("LEFT", "unit_rarity_m", "unit_m.rarity = unit_rarity_m.rarity"). - Cols("attribute_id,hp_max,smile_max,pure_max,cool_max,after_love_max"). - Get(&attrId, &maxHp, &baseSmile, &basePure, &baseCool, &maxLove) + Cols("attribute_id,hp_max,smile_max,pure_max,cool_max,after_love_max,unit_type_id"). + Get(&attrId, &maxHp, &baseSmile, &basePure, &baseCool, &maxLove, &unitTypeId) CheckErr(err) } else { // 用户卡片暂时固定为满级350级 @@ -125,8 +127,8 @@ func PlayLiveHandler(ctx *gin.Context) { // 卡片100级基础属性 _, err = MainEng.Table("unit_m").Where("unit_id = ?", uId). Join("LEFT", "unit_rarity_m", "unit_m.rarity = unit_rarity_m.rarity"). - Cols("attribute_id,hp_max,smile_max,pure_max,cool_max,after_love_max"). - Get(&attrId, &maxHp, &baseSmile, &basePure, &baseCool, &maxLove) + Cols("attribute_id,hp_max,smile_max,pure_max,cool_max,after_love_max,unit_type_id"). + Get(&attrId, &maxHp, &baseSmile, &basePure, &baseCool, &maxLove, &unitTypeId) CheckErr(err) // 增量属性 @@ -160,7 +162,7 @@ func PlayLiveHandler(ctx *gin.Context) { baseSmile += smileAccessory basePure += pureAccessory baseCool += coolAccessory - fmt.Println("饰品属性加成:", smileAccessory, pureAccessory, coolAccessory) + // fmt.Println("饰品属性加成:", smileAccessory, pureAccessory, coolAccessory) // fmt.Println("饰品属性加成后的基础属性:", baseSmile, basePure, baseCool) // 回忆画廊属性加成(该加成会影响个宝等百分比宝石属性加成的计算,故先计算。) @@ -187,6 +189,8 @@ func PlayLiveHandler(ctx *gin.Context) { // 宝石属性加成 var kissSmile, kissPure, kissCool float64 var skillSmile, skillPure, skillCool float64 + // var mainCenterSmile, mainCenterPure, mainCenterCool float64 + // var secCenterSmile, secCenterPure, secCenterCool float64 // 宝石加成(满级) removableSkillIds := []int{} @@ -250,17 +254,121 @@ func PlayLiveHandler(ctx *gin.Context) { pureMax = basePure + kissPure + skillPure coolMax = baseCool + kissCool + skillCool + // 主唱技能加成 + var myCenterUnitId int + _, err = UserEng.Table("deck_unit_m").Join("LEFT", "user_deck_m", "deck_unit_m.user_deck_id = user_deck_m.id"). + Where("user_deck_m.deck_id = ? AND user_deck_m.user_id = ? AND deck_unit_m.position = 5", playReq.UnitDeckID, ctx.GetString("userid")). + Cols("deck_unit_m.unit_id").Get(&myCenterUnitId) + CheckErr(err) + + // 主唱技能加成:主C技能(这里不使用新C技能,即以某属性的百分比提升另一属性) + var myAttrId int + var myEffectValue float64 + _, err = MainEng.Table("unit_m"). + Join("LEFT", "unit_leader_skill_m", "unit_m.default_leader_skill_id = unit_leader_skill_m.unit_leader_skill_id"). + Where("unit_m.unit_id = ?", myCenterUnitId). + Cols("unit_m.attribute_id,unit_leader_skill_m.effect_value").Get(&myAttrId, &myEffectValue) + CheckErr(err) + var myCenterSmile, myCenterPure, myCenterCool float64 + if myAttrId == 1 { + myCenterSmile = math.Ceil(smileMax * (myEffectValue / 100)) + } else if myAttrId == 2 { + myCenterPure = math.Ceil(pureMax * (myEffectValue / 100)) + } else if myAttrId == 3 { + myCenterCool = math.Ceil(coolMax * (myEffectValue / 100)) + } + // fmt.Println("主C技能属性加成:", myCenterSmile, myCenterPure, myCenterCool) + + // 主唱技能加成:副C技能 + var mySubEffectValue float64 + var myMemberTagId int + _, err = MainEng.Table("unit_m"). + Join("LEFT", "unit_leader_skill_extra_m", "unit_m.default_leader_skill_id = unit_leader_skill_extra_m.unit_leader_skill_id"). + Where("unit_m.unit_id = ?", myCenterUnitId). + Cols("unit_leader_skill_extra_m.effect_value,unit_leader_skill_extra_m.member_tag_id").Get(&mySubEffectValue, &myMemberTagId) + CheckErr(err) + + exists, err = MainEng.Table("unit_type_member_tag_m"). + Where("unit_type_id = ? AND member_tag_id = ?", unitTypeId, myMemberTagId).Exist() + CheckErr(err) + var mySubSmile, mySubPure, mySubCool float64 + if exists { + if myAttrId == 1 { + mySubSmile = math.Ceil(smileMax * (mySubEffectValue / 100)) + } else if myAttrId == 2 { + mySubPure = math.Ceil(pureMax * (mySubEffectValue / 100)) + } else if myAttrId == 3 { + mySubCool = math.Ceil(coolMax * (mySubEffectValue / 100)) + } + // fmt.Println("副C技能属性加成:", mySubSmile, mySubPure, mySubCool) + } + + // 好友主唱技能加成 + // TODO 好友支援存入数据库 + var tomoUnitId int64 + partyList := gjson.Parse(utils.ReadAllText("assets/partylist.json")).Get("response_data.party_list") + partyList.ForEach(func(key, value gjson.Result) bool { + if value.Get("user_info.user_id").Int() == playReq.PartyUserID { + tomoUnitId = value.Get("center_unit_info.unit_id").Int() + return false + } + return true + }) + // fmt.Println("好友UnitID:", tomoUnitId) + + // 好友主唱技能加成:主C技能(这里不使用新C技能,即以某属性的百分比提升另一属性) + var tomoAttrId int + var tomoEffectValue float64 + _, err = MainEng.Table("unit_m"). + Join("LEFT", "unit_leader_skill_m", "unit_m.default_leader_skill_id = unit_leader_skill_m.unit_leader_skill_id"). + Where("unit_m.unit_id = ?", tomoUnitId). + Cols("unit_m.attribute_id,unit_leader_skill_m.effect_value").Get(&tomoAttrId, &tomoEffectValue) + CheckErr(err) + var tomoCenterSmile, tomoCenterPure, tomoCenterCool float64 + if myAttrId == 1 { + tomoCenterSmile = math.Ceil(smileMax * (tomoEffectValue / 100)) + } else if myAttrId == 2 { + tomoCenterPure = math.Ceil(pureMax * (tomoEffectValue / 100)) + } else if myAttrId == 3 { + tomoCenterCool = math.Ceil(coolMax * (tomoEffectValue / 100)) + } + // fmt.Println("好友主C技能属性加成:", tomoCenterSmile, tomoCenterPure, tomoCenterCool) + + // 好友主唱技能加成:副C技能 + var tomoSubEffectValue float64 + var tomoMemberTagId int + _, err = MainEng.Table("unit_m"). + Join("LEFT", "unit_leader_skill_extra_m", "unit_m.default_leader_skill_id = unit_leader_skill_extra_m.unit_leader_skill_id"). + Where("unit_m.unit_id = ?", tomoUnitId). + Cols("unit_leader_skill_extra_m.effect_value,unit_leader_skill_extra_m.member_tag_id").Get(&tomoSubEffectValue, &tomoMemberTagId) + CheckErr(err) + + exists, err = MainEng.Table("unit_type_member_tag_m"). + Where("unit_type_id = ? AND member_tag_id = ?", unitTypeId, tomoMemberTagId).Exist() + CheckErr(err) + var tomoSubSmile, tomoSubPure, tomoSubCool float64 + if exists { + if myAttrId == 1 { + tomoSubSmile = math.Ceil(smileMax * (tomoSubEffectValue / 100)) + } else if myAttrId == 2 { + tomoSubPure = math.Ceil(pureMax * (tomoSubEffectValue / 100)) + } else if myAttrId == 3 { + tomoSubCool = math.Ceil(coolMax * (tomoSubEffectValue / 100)) + } + // fmt.Println("好友副C技能属性加成:", tomoSubSmile, tomoSubPure, tomoSubCool) + } + // 全部卡属性 - totalSmile += smileMax - totalPure += pureMax - totalCool += coolMax + totalSmile += smileMax + myCenterSmile + mySubSmile + tomoCenterSmile + tomoSubSmile + totalPure += pureMax + myCenterPure + mySubPure + tomoCenterPure + tomoSubPure + totalCool += coolMax + myCenterCool + mySubCool + tomoCenterCool + tomoSubCool totalHp += maxHp // 单卡属性计算结果取上取整 fixedSmileMax := int(smileMax) fixedPureMax := int(pureMax) fixedCoolMax := int(coolMax) - fmt.Println("单卡属性:", fixedSmileMax, fixedPureMax, fixedCoolMax) + // fmt.Println("单卡属性:", fixedSmileMax, fixedPureMax, fixedCoolMax) unitList = append(unitList, model.UnitList{ Smile: fixedSmileMax, @@ -273,7 +381,7 @@ func PlayLiveHandler(ctx *gin.Context) { fixedTotalSmile := int(math.Ceil(totalSmile)) fixedTotalPure := int(math.Ceil(totalPure)) fixedTotalCool := int(math.Ceil(totalCool)) - fmt.Println("全卡组属性:", fixedTotalSmile, fixedTotalPure, fixedTotalCool) + // fmt.Println("全卡组属性:", fixedTotalSmile, fixedTotalPure, fixedTotalCool) lives := []model.PlayLiveList{} lives = append(lives, model.PlayLiveList{ diff --git a/model/live.go b/model/live.go index 41e7b2c..2f5f55a 100644 --- a/model/live.go +++ b/model/live.go @@ -92,7 +92,7 @@ type LiveScheduleResp struct { // Play type PlayReq struct { Module string `json:"module"` - PartyUserID int `json:"party_user_id"` + PartyUserID int64 `json:"party_user_id"` Action string `json:"action"` Mgd int `json:"mgd"` IsTraining bool `json:"is_training"`