Skip to content
This repository was archived by the owner on Jul 19, 2024. It is now read-only.

Commit 4a287dc

Browse files
committed
Add battle param to summon getLevel script
1 parent 2cd9971 commit 4a287dc

3 files changed

Lines changed: 12 additions & 8 deletions

File tree

Scripts/summon.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
function getLevel(summoner, summonImpl, item)
1+
function getLevel(summoner, summonImpl, item, battle)
22
return math.max(summoner.impl.level, summonImpl.level);
33
end

luaApi.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,9 +1255,10 @@ end
12551255
#### summon.lua
12561256
`summoner` has type [Unit](luaApi.md#unit-1).
12571257
`summonImpl` is [Unit implementation](luaApi.md#unit-implementation).
1258-
`item` is [Item](luaApi.md#item-2).
1258+
`item` is [Item](luaApi.md#item-2) used to perform the attack.
1259+
`battle` specifies an information about current [battle](luaApi.md#battle).
12591260
```lua
1260-
function getLevel(summoner, summonImpl, item)
1261+
function getLevel(summoner, summonImpl, item, battle)
12611262
-- Use base level of summon if cheap item is used to summon it
12621263
if item and item.base.value.gold < 500 then
12631264
return summonImpl.level

mss32/src/summonhooks.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "batattacksummon.h"
2323
#include "battleattackinfo.h"
2424
#include "battlemsgdata.h"
25+
#include "battlemsgdataview.h"
2526
#include "game.h"
2627
#include "globaldata.h"
2728
#include "itemview.h"
@@ -44,7 +45,8 @@ namespace hooks {
4445
static int getSummonLevel(const game::CMidUnit* summoner,
4546
game::TUsUnitImpl* summonImpl,
4647
const game::IMidgardObjectMap* objectMap,
47-
const game::CMidgardID* unitOrItemId)
48+
const game::CMidgardID* unitOrItemId,
49+
const game::BattleMsgData* battleMsgData)
4850
{
4951
using namespace game;
5052

@@ -58,12 +60,13 @@ static int getSummonLevel(const game::CMidUnit* summoner,
5860
try {
5961
const bindings::UnitView summonerUnit{summoner};
6062
const bindings::UnitImplView impl{summonImpl};
63+
const bindings::BattleMsgDataView battleView{battleMsgData, objectMap};
6164

6265
if (CMidgardIDApi::get().getType(unitOrItemId) == IdType::Item) {
6366
const bindings::ItemView itemView{unitOrItemId, objectMap};
64-
return (*getLevel)(summonerUnit, impl, &itemView);
67+
return (*getLevel)(summonerUnit, impl, &itemView, battleView);
6568
} else
66-
return (*getLevel)(summonerUnit, impl, nullptr);
69+
return (*getLevel)(summonerUnit, impl, nullptr, battleView);
6770
} catch (const std::exception& e) {
6871
showErrorMessageBox(fmt::format("Failed to run '{:s}' script.\n"
6972
"Reason: '{:s}'",
@@ -138,8 +141,8 @@ void __fastcall summonAttackOnHitHooked(game::CBatAttackSummon* thisptr,
138141

139142
auto summoner = fn.findUnitById(objectMap, &thisptr->unitId);
140143
auto summonImpl = static_cast<TUsUnitImpl*>(global.findById(globalData->units, &summonImplId));
141-
const auto summonLevel = getSummonLevel(summoner, summonImpl, objectMap,
142-
&thisptr->unitOrItemId);
144+
const auto summonLevel = getSummonLevel(summoner, summonImpl, objectMap, &thisptr->unitOrItemId,
145+
battleMsgData);
143146

144147
CUnitGenerator* unitGenerator = globalData->unitGenerator;
145148

0 commit comments

Comments
 (0)