From 11f49f71ba681d2d4190e4d2f329d6722273a8d8 Mon Sep 17 00:00:00 2001 From: Emistry Date: Wed, 10 Aug 2016 23:35:26 +0800 Subject: Enable @b/joblvl trigger OnPCLvUpEvent - OnPCBaseLvUpEvent - OnPCJobLvUpEvent --- src/map/atcommand.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 5b337e759..de79ae0c4 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -1407,6 +1407,8 @@ ACMD(baselevelup) pc->baselevelchanged(sd); if(sd->status.party_id) party->send_levelup(sd); + npc->script_event(sd, NPCE_BASELVUP); // Trigger OnPCBaseLvUpEvent + return true; } @@ -1455,6 +1457,7 @@ ACMD(joblevelup) clif->updatestatus(sd, SP_NEXTJOBEXP); clif->updatestatus(sd, SP_SKILLPOINT); status_calc_pc(sd, SCO_FORCE); + npc->script_event(sd, NPCE_JOBLVUP); // Trigger OnPCJobLvUpEvent return true; } -- cgit v1.2.3-70-g09d2 From b3df179f705b0a4fe99b0d6e81878251692843f1 Mon Sep 17 00:00:00 2001 From: Emistry Date: Sat, 13 Aug 2016 00:47:41 +0800 Subject: Added atcommand config Based on @Lemongrass3110's commit https://github.com/rathena/rathena/commit/9157318ee9939728b8d332a5668c13d4ad0a6f8b: Added a configuration to enable the atcommands baselevel and joblevel to trigger their respective npc events. This will help you guys with testing your custom scripts that are listening to OnPCBaseLvUpEvent or OnPCJobLvUpEvent. For safety reasons we only trigger the events on level increase. --- conf/battle/gm.conf | 5 +++++ src/map/atcommand.c | 10 ++++++++-- src/map/battle.c | 1 + src/map/battle.h | 2 ++ 4 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/conf/battle/gm.conf b/conf/battle/gm.conf index 83882ae1c..dc70bc6ca 100644 --- a/conf/battle/gm.conf +++ b/conf/battle/gm.conf @@ -35,3 +35,8 @@ atcommand_mobinfo_type: 0 // Set the minimum group id to ignore invalid cells when warping. // Default group is 2. Use 100 to disable this setting. gm_ignore_warpable_area: 2 + +// Should atcommands trigger level up events for NPCs? (Note 1) +// This option is for @baselevelup and @joblevelup +// Default: no +atcommand_levelup_events: no diff --git a/src/map/atcommand.c b/src/map/atcommand.c index de79ae0c4..8d4aa317f 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -1398,6 +1398,7 @@ ACMD(baselevelup) sd->status.base_level -= level; clif->message(fd, msg_fd(fd,22)); // Base level lowered. status_calc_pc(sd, SCO_FORCE); + level *= -1; } sd->status.base_exp = 0; clif->updatestatus(sd, SP_STATUSPOINT); @@ -1407,7 +1408,9 @@ ACMD(baselevelup) pc->baselevelchanged(sd); if(sd->status.party_id) party->send_levelup(sd); - npc->script_event(sd, NPCE_BASELVUP); // Trigger OnPCBaseLvUpEvent + + if (level > 0 && battle_config.atcommand_levelup_events) + npc->script_event(sd, NPCE_BASELVUP); // Trigger OnPCBaseLvUpEvent return true; } @@ -1450,6 +1453,7 @@ ACMD(joblevelup) else sd->status.skill_point -= level; clif->message(fd, msg_fd(fd,25)); // Job level lowered. + level *= -1; } sd->status.job_exp = 0; clif->updatestatus(sd, SP_JOBLEVEL); @@ -1457,7 +1461,9 @@ ACMD(joblevelup) clif->updatestatus(sd, SP_NEXTJOBEXP); clif->updatestatus(sd, SP_SKILLPOINT); status_calc_pc(sd, SCO_FORCE); - npc->script_event(sd, NPCE_JOBLVUP); // Trigger OnPCJobLvUpEvent + + if (level > 0 && battle_config.atcommand_levelup_events) + npc->script_event(sd, NPCE_JOBLVUP); // Trigger OnPCJobLvUpEvent return true; } diff --git a/src/map/battle.c b/src/map/battle.c index 79048457c..908f0364b 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -7248,6 +7248,7 @@ static const struct battle_data { { "max_body_style", &battle_config.max_body_style, 4, 0, SHRT_MAX, }, { "save_body_style", &battle_config.save_body_style, 0, 0, 1, }, { "player_warp_keep_direction", &battle_config.player_warp_keep_direction, 0, 0, 1, }, + { "atcommand_levelup_events", &battle_config.atcommand_levelup_events, 0, 0, 1, }, }; #ifndef STATS_OPT_OUT /** diff --git a/src/map/battle.h b/src/map/battle.h index 1a23870e7..e04a713ae 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -542,6 +542,8 @@ struct Battle_Config { // Warp Face Direction int player_warp_keep_direction; + + int atcommand_levelup_events; // Enable atcommands trigger level up events for NPCs }; /* criteria for battle_config.idletime_critera */ -- cgit v1.2.3-70-g09d2