From af8791f0cd9c55405fc298daaaa6dc0c083cb541 Mon Sep 17 00:00:00 2001 From: Syon Date: Sat, 30 May 2026 09:37:29 -0600 Subject: [PATCH 1/2] Fix JSON response format in partybooking_controller (#10029) Fixes #7853 --- src/web/partybooking_controller.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/web/partybooking_controller.cpp b/src/web/partybooking_controller.cpp index 25dc3b6dc42..d046ce76e8f 100644 --- a/src/web/partybooking_controller.cpp +++ b/src/web/partybooking_controller.cpp @@ -306,7 +306,7 @@ HANDLER_FUNC(partybooking_get){ if( bookings.empty() ){ response = "{ \"Type\": 1 }"; }else{ - response = "{ \"Type\": 1, data: " + bookings.at( 0 ).to_json( world_name ) + " }"; + response = "{ \"Type\": 1, \"data\": " + bookings.at( 0 ).to_json( world_name ) + " }"; } res.set_content( response, "application/json" ); From 8c91bd5c266779a57c9f5a5e7c615ce2bd867331 Mon Sep 17 00:00:00 2001 From: Playtester <3785983+Playtester@users.noreply.github.com> Date: Sat, 30 May 2026 19:31:49 +0200 Subject: [PATCH 2/2] Magic Crasher Damage Fix (#10037) - Magic Crasher now deals MinMATK~MaxMATK base damage instead of WeaponATK+MinMATK in pre-re * Damage is still affected by the weapon's refine bonus - Fixes #10036 --- src/map/battle.cpp | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 0fdf544a703..5420fbde0ee 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -2538,22 +2538,27 @@ static int64 battle_calc_base_damage(block_list *src, struct status_data *status if (atkmin > atkmax) atkmin = atkmax; } else { //PCs - atkmax = wa->atk; - type = (wa == &status->lhw)?EQI_HAND_L:EQI_HAND_R; - - if (!(flag&BDMG_CRIT) || (flag&BDMG_ARROW)) { //Normal attacks - atkmin = status->dex; + if (flag&BDMG_MAGIC) { + atkmin = status->matk_min; + atkmax = status->matk_max; + } else { + atkmax = wa->atk; + type = (wa == &status->lhw)?EQI_HAND_L:EQI_HAND_R; - if (sd->equip_index[type] >= 0 && sd->inventory_data[sd->equip_index[type]] && sd->inventory_data[sd->equip_index[type]]->type == IT_WEAPON) - atkmin = atkmin*(80 + sd->inventory_data[sd->equip_index[type]]->weapon_level*20)/100; + if (!(flag&BDMG_CRIT) || (flag&BDMG_ARROW)) { //Normal attacks + atkmin = status->dex; - if (atkmin > atkmax) - atkmin = atkmax; + if (sd->equip_index[type] >= 0 && sd->inventory_data[sd->equip_index[type]] != nullptr && sd->inventory_data[sd->equip_index[type]]->type == IT_WEAPON) + atkmin = atkmin*(80 + sd->inventory_data[sd->equip_index[type]]->weapon_level*20)/100; - if(flag&BDMG_ARROW) { //Bows - atkmin = atkmin*atkmax/100; if (atkmin > atkmax) - atkmax = atkmin; + atkmin = atkmax; + + if(flag&BDMG_ARROW) { //Bows + atkmin = atkmin*atkmax/100; + if (atkmin > atkmax) + atkmax = atkmin; + } } } } @@ -2615,9 +2620,7 @@ static int64 battle_calc_base_damage(block_list *src, struct status_data *status } //Finally, add baseatk - if(flag&BDMG_MAGIC) - damage += status->matk_min; - else + if(!(flag&BDMG_MAGIC)) damage += status->batk; if (sd)