summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/constants.conf10
-rw-r--r--db/re/mob_db.conf4
-rw-r--r--db/re/mob_skill_db.conf4
-rw-r--r--npc/020-7-1/core.txt64
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;
}