From 2ecc7a56d276905f4f139f9f6b4baf97730e4c2b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Thu, 30 Jul 2020 14:59:44 -0300 Subject: Skill TMW2_STUDY registered Cost: 1x Manapple. It is also the most expensive skill in RP terms. No MSP is required for studying (should be obvious) --- npc/config/magic.txt | 3 +++ npc/functions/hub.txt | 2 +- npc/magic/study.txt | 12 +++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) (limited to 'npc') diff --git a/npc/config/magic.txt b/npc/config/magic.txt index 80f5a61dd..f8d5423b6 100644 --- a/npc/config/magic.txt +++ b/npc/config/magic.txt @@ -467,6 +467,9 @@ OnInit: // Charged Shot RegisterMagic(0, AC_CHARGEARROW, 1, NPCEyes, 1, CLASS_OTHER, 100); + // Study + RegisterMagic(0, TMW2_STUDY, 1, Manapple, 1, + CLASS_OTHER, 1000); end; } diff --git a/npc/functions/hub.txt b/npc/functions/hub.txt index 2b8da7908..126d30706 100644 --- a/npc/functions/hub.txt +++ b/npc/functions/hub.txt @@ -253,7 +253,7 @@ function script HUB_SkillInvoke { SK_mpregen(); break; case TMW2_STUDY: - SK_study(); + SK_study(@skillTarget); break; case EVOL_AREA_PROVOKE: if (@skillTargetX && @skillTargetY) diff --git a/npc/magic/study.txt b/npc/magic/study.txt index 71beded64..418ac0f47 100644 --- a/npc/magic/study.txt +++ b/npc/magic/study.txt @@ -8,6 +8,10 @@ function script SK_study { .@mobGD=getarg(0); + if (.@mobGD <= 0) + return; + + // We want monsters if (getunittype(.@mobGD) != UNITTYPE_MOB) { dispbottom l("This skill can only be used on monsters!"); return; @@ -16,7 +20,8 @@ function script SK_study { // Research Points if (array_rfind(@study, @mobGD) < 0) { - .@rp=getmonsterinfo(MOB_LV)/10+1; + .@mult=max(1, 11-getskilllv(TMW2_STUDY)); + .@rp=getmonsterinfo(MOB_LV)/.@mult+1; array_push(@study, @mobGD); dispbottom l("Research Points +%d", .@rp); } @@ -29,9 +34,10 @@ function script SK_study { fnum(getunitdata(.@mobGD, UDT_SP)), fnum(getunitdata(.@mobGD, UDT_MAXSP))); - // Truncate + // Truncate. + // We're saving the GID so it must be "big enough" + // But not too big so rfind() is not expensive if (getarraysize(@study) > 99) { - //array_shift(@study); deletearray(@study, 30); } return; -- cgit v1.2.3-70-g09d2