diff options
author | Bardur Arantsson <bardur@scientician.net> | 2014-12-21 14:38:46 +0100 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2014-12-23 12:07:55 +0100 |
commit | c1a907e0bf6acc94e77f5af50cd8099977a9ab30 (patch) | |
tree | 96d2249613810c12ba3d59b56af05d10846cca37 | |
parent | 5cab4125d9447928f04d1e4f42c3b58efc485dbf (diff) |
Update HOOK_MONSTER_AI to new-style hook
-rw-r--r-- | src/melee2.cc | 8 | ||||
-rw-r--r-- | src/q_invas.cc | 19 | ||||
-rw-r--r-- | src/types.h | 12 |
3 files changed, 26 insertions, 13 deletions
diff --git a/src/melee2.cc b/src/melee2.cc index d4f2e9ff..f3dc1301 100644 --- a/src/melee2.cc +++ b/src/melee2.cc @@ -5119,10 +5119,12 @@ static bool_ get_moves(int m_idx, int *mm) /* Let quests redefine AI */ if (r_ptr->flags7 & RF7_AI_SPECIAL) { - if (process_hooks_ret(HOOK_MONSTER_AI, "dd", "(d)", m_idx)) + struct hook_monster_ai_in in = { m_idx, &m_list[m_idx] }; + struct hook_monster_ai_out out = { 0, 0 }; + if (process_hooks_new(HOOK_MONSTER_AI, &in, &out)) { - y2 = process_hooks_return[0].num; - x2 = process_hooks_return[1].num; + y2 = out.y; + x2 = out.x; } } diff --git a/src/q_invas.cc b/src/q_invas.cc index 03281ba6..983e84fb 100644 --- a/src/q_invas.cc +++ b/src/q_invas.cc @@ -46,13 +46,12 @@ static bool_ quest_invasion_gen_hook(void *, void *, void *) return TRUE; } -static bool_ quest_invasion_ai_hook(const char *fmt) +static bool_ quest_invasion_ai_hook(void *, void *in_, void *out_) { - monster_type *m_ptr; - s32b m_idx; - - m_idx = get_next_arg(fmt); - m_ptr = &m_list[m_idx]; + struct hook_monster_ai_in *in = static_cast<struct hook_monster_ai_in *>(in_); + struct hook_monster_ai_out *out = static_cast<struct hook_monster_ai_out *>(out_); + monster_type *m_ptr = in->m_ptr; + s32b m_idx = in->m_idx; if (p_ptr->inside_quest != QUEST_INVASION) return FALSE; @@ -77,8 +76,8 @@ static bool_ quest_invasion_ai_hook(const char *fmt) } else { - process_hooks_return[0].num = cquest.data[0]; - process_hooks_return[1].num = cquest.data[1]; + out->y = cquest.data[0]; + out->x = cquest.data[1]; return (TRUE); } } @@ -198,8 +197,8 @@ bool_ quest_invasion_init_hook(int q_idx) add_hook_new(HOOK_CHAR_DUMP, quest_invasion_dump_hook, "invasion_dump", NULL); if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED)) { - add_hook (HOOK_MONSTER_AI, quest_invasion_ai_hook, "invasion_ai"); - add_hook_new(HOOK_GEN_QUEST, quest_invasion_gen_hook, "invasion_gen", NULL); + add_hook_new(HOOK_MONSTER_AI, quest_invasion_ai_hook, "invasion_ai", NULL); + add_hook_new(HOOK_GEN_QUEST, quest_invasion_gen_hook, "invasion_gen", NULL); add_hook_new(HOOK_MONSTER_DEATH, quest_invasion_death_hook, "invasion_death", NULL); add_hook_new(HOOK_STAIR, quest_invasion_stair_hook, "invasion_stair", NULL); } diff --git a/src/types.h b/src/types.h index b2f40124..32615672 100644 --- a/src/types.h +++ b/src/types.h @@ -2227,6 +2227,18 @@ struct hook_monster_death_in { s32b m_idx; }; +typedef struct hook_monster_ai_in hook_monster_ai_in; +struct hook_monster_ai_in { + s32b m_idx; + monster_type *m_ptr; +}; + +typedef struct hook_monster_ai_out hook_monster_ai_out; +struct hook_monster_ai_out { + s32b y; + s32b x; +}; + typedef struct hook_chat_in hook_chat_in; struct hook_chat_in { s32b m_idx; |