diff options
-rw-r--r-- | db/constants.conf | 10 | ||||
-rw-r--r-- | db/re/mob_db.conf | 4 | ||||
-rw-r--r-- | db/re/mob_skill_db.conf | 4 | ||||
-rw-r--r-- | npc/020-7-1/core.txt | 64 |
4 files changed, 50 insertions, 32 deletions
diff --git a/db/constants.conf b/db/constants.conf index 171b83abc..4ce2bea22 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -4343,16 +4343,6 @@ constants_db: { BS_SNEST8: 128 BS_SNEST9: 256 BS_SNESTALL: 511 - // K - Nest Kills - BS_KNEST1: 3 - BS_KNEST2: 2 - BS_KNEST3: 1 - BS_KNEST4: 3 - BS_KNEST5: 2 - BS_KNEST6: 1 - BS_KNEST7: 3 - BS_KNEST8: 2 - BS_KNEST9: 1 comment__: "Being actions" ACTION_STAND: 0 diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf index e414bd172..4d0c8b602 100644 --- a/db/re/mob_db.conf +++ b/db/re/mob_db.conf @@ -3558,7 +3558,7 @@ mob_db: ( Exp: 15 JExp: 1 AttackRange: 1 - Attack: [80, 120] + Attack: [28, 120] Def: 10 Mdef: 10 Stats: { @@ -3566,7 +3566,7 @@ mob_db: ( Agi: 30 Vit: 10 Int: 10 - Dex: 30 + Dex: 60 Luk: 20 } ViewRange: 8 diff --git a/db/re/mob_skill_db.conf b/db/re/mob_skill_db.conf index 4e3085269..86bb5d685 100644 --- a/db/re/mob_skill_db.conf +++ b/db/re/mob_skill_db.conf @@ -260,8 +260,8 @@ SKILL_COND2 = { SkillState: "MSS_ANY" SkillLevel: 1 Rate: 8000 - CastTime: 1000 - Delay: 5000 + CastTime: 1200 + Delay: 18000 SkillTarget: "MST_SELF" CastCondition: "MSC_SLAVELT" ConditionData: 1 diff --git a/npc/020-7-1/core.txt b/npc/020-7-1/core.txt index 02ed4e812..015b23ffa 100644 --- a/npc/020-7-1/core.txt +++ b/npc/020-7-1/core.txt @@ -188,21 +188,23 @@ function script BSProccess { if (getd("$@BS_NEST"+str(.@id))) return; - // Let's see if something should happen + // Let's see if something should happen (16.7% odds each second. 3% of drip) .@chance=rand(30); - if (.@chance <= 16) { + if (.@chance <= 25) { return; } else if (.@chance == 27) { dispbottom l("A slime drips in front of you and explodes!"); percentheal -40, 0; + } else { + dispbottom l("You notice a group of slimes emerging from the debris among the shelves."); } // If it haven't returned yet: It's good to go! // Reserve the nest ID for us, and clear the previous. BSClearNest(@nestid); + BSClearNest(.@nest); @nestid=.@nest; - BSClearNest(@nestid); - setd(getd("$@BS_NEST"+.@id), getcharid(0)); + setd("$@BS_NEST"+.@id, getcharid(0)); // We spawn monsters if (.@id % 4 == 0) @@ -210,10 +212,9 @@ function script BSProccess { else .@mid=BlueSlime; - // Does getd() works against a constant? - areamonster .@m$, .@xc-2, .@yc-2, .@xc+2, .@yc+2, "", .@mid, getd("BS_KNEST"+.@id), "#BlueSageHUB::OnSlimeKill"+.@id; - - dispbottom l("You notice a group of slimes emerging from the debris among the shelves."); + //debugmes "Spawning %d slimes on quadrand %d", getd("$@BS_KNEST"+.@id), .@id; + // Does getd() works against a constant? I don't think so + monster .@m$, .@xc, .@yc, strcharinfo(0)+"'s slime", .@mid, getd("$@BS_KNEST"+.@id), "#BlueSageHUB::OnSlimeKill"+.@id; return; } @@ -225,14 +226,25 @@ function script BSProccessDeath { .@ammo=getarg(1); .@id=BSQuadrand(.@nest); + // First and foremost: Drops + if (playerattached()) { + getmapxy(.@m$, .@x, .@y, 0); + // Capped at ~12% drop chance of book pages + if (rand(0,10000) <= 560+(readparam(bLuck)*7)) + makeitem SpellBookPage, 1, .@m$, .@x, .@y; + if (rand(0,10000) <= 100) + makeitem Candy, 1, .@m$, .@x, .@y; + } + + // Mark the score if appliable and player is attached if (playerattached()) { - // Mark the score if appliable if (@nestid == .@nest) { .@q2=getq2(NivalisQuest_BlueSageSlimes)+1; setq2 NivalisQuest_BlueSageSlimes, .@q2; } } + // All mobs are dead if (!mobcount("020-7-1", "#BlueSageHUB::OnSlimeKill"+.@id)) { if (playerattached()) { // Did you killed all slimes? Or did they explode themselves? @@ -242,8 +254,12 @@ function script BSProccessDeath { .@q3=getq3(NivalisQuest_BlueSageSlimes); setq3 NivalisQuest_BlueSageSlimes, .@q3 | .@nest; dispbottom l("It wasn't easy, but you think that you extinguished this nest."); + if ((.@q3 | .@nest) == BS_SNESTALL) + dispbottom l("Perhaps that was the last of them?"); } else { dispbottom l("You don't see any slimes from that nest anymore. But did you really get all of them?"); + debugmes "Nest %d, killed %d/%d slimes", .@id, .@q2, .@ammo; + debugmes "NEST ID: %d / %d", @nestid, .@nest; } } // Regardless of player attached or not, this nest must be clean @@ -257,39 +273,39 @@ function script BSProccessDeath { end; OnSlimeKill1: - BSProccessDeath(BS_SNEST1, BS_KNEST1); + BSProccessDeath(BS_SNEST1, $@BS_KNEST1); end; OnSlimeKill2: - BSProccessDeath(BS_SNEST2, BS_KNEST2); + BSProccessDeath(BS_SNEST2, $@BS_KNEST2); end; OnSlimeKill3: - BSProccessDeath(BS_SNEST3, BS_KNEST3); + BSProccessDeath(BS_SNEST3, $@BS_KNEST3); end; OnSlimeKill4: - BSProccessDeath(BS_SNEST4, BS_KNEST4); + BSProccessDeath(BS_SNEST4, $@BS_KNEST4); end; OnSlimeKill5: - BSProccessDeath(BS_SNEST5, BS_KNEST5); + BSProccessDeath(BS_SNEST5, $@BS_KNEST5); end; OnSlimeKill6: - BSProccessDeath(BS_SNEST6, BS_KNEST6); + BSProccessDeath(BS_SNEST6, $@BS_KNEST6); end; OnSlimeKill7: - BSProccessDeath(BS_SNEST7, BS_KNEST7); + BSProccessDeath(BS_SNEST7, $@BS_KNEST7); end; OnSlimeKill8: - BSProccessDeath(BS_SNEST8, BS_KNEST8); + BSProccessDeath(BS_SNEST8, $@BS_KNEST8); end; OnSlimeKill9: - BSProccessDeath(BS_SNEST9, BS_KNEST9); + BSProccessDeath(BS_SNEST9, $@BS_KNEST9); end; OnTouch: @@ -301,5 +317,17 @@ OnCycle: addtimer(1000, "#BlueSageHUB::OnCycle"); end; +OnInit: + // K - Nest Kills + $@BS_KNEST1=3; + $@BS_KNEST2=2; + $@BS_KNEST3=1; + $@BS_KNEST4=4; // WS + $@BS_KNEST5=2; + $@BS_KNEST6=1; + $@BS_KNEST7=3; + $@BS_KNEST8=5; // WS + $@BS_KNEST9=1; + end; } |