summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--npc/functions/fishing.txt60
1 files changed, 31 insertions, 29 deletions
diff --git a/npc/functions/fishing.txt b/npc/functions/fishing.txt
index 57df44956..0e6a8c62e 100644
--- a/npc/functions/fishing.txt
+++ b/npc/functions/fishing.txt
@@ -89,6 +89,9 @@ function script fishing {
.@rod = getvariableofnpc(.fishing_rod, .@npc$); // the fishing rod required for this spot
.@rod = (.@rod ? .@rod : FishingRod);
+ .@net_ratio = getvariableofnpc(.net_ratio, .@npc$); // How many fishes and baits are required?
+ .@net_ratio = min(1, (.@net_ratio ? .@net_ratio : 1));
+
.@regen_time = getvariableofnpc(.cooldown, .@npc$); // cooldown for the fishing spot
.@regen_time = (.@regen_time ? .@regen_time : 20);
@@ -204,34 +207,32 @@ function script fishing {
return -4;
}
- // RNG to obtain a rare fish or common fish
- // Luck can increase up to 5% when it is at 100.
- // Level can increase up to 10% when it is at 100.
- .@boost=(readparam(bLuk)/20)+(BaseLevel/10);
- if (rand2(0, 100) < getvariableofnpc(.bait_ids[@bait_d+1], .@npc$)+.@boost)
- {
- //debugmes("[FISH] Got a rare with %d drop chances", getarraysize(.@rare_fish));
- .@fish_id = any_of(.@rare_fish);
- } else {
- //debugmes("[FISH] Got a common with %d drop chances", getarraysize(.@common_fish));
- .@fish_id = any_of(.@common_fish);
- }
// RNG to obtain a fish
- if (rand(gettimetick(0) - @fishing_tick) <= .@pull_rand_max)
+ if (rand2(gettimetick(0) - @fishing_tick) <= .@pull_rand_max)
{
- specialeffect(.@success_fx, SELF, playerattached()); // event success
- getexp getvariableofnpc(.bait_ids[@bait_d+1], .@npc$)+(BaseLevel/10), 0; // xp gain is equivalent to bait rarity + BaseLevel boost
-
- if(!checkweight(.@fish_id, 1))
- {
- dispbottom l("You caught a @@ but had no room in your inventory to carry it.", getitemlink(.@fish_id));
- makeitem .@fish_id, 1, .@mapbis$, .@xbis, .@ybis; // drop on the ground
- return 0;
+ for (.@i=0 ; .@i < .@net_ratio ; .@i++) {
+ // RNG to obtain a rare fish or common fish
+ // Luck can increase up to 5% when it is at 100.
+ // Level can increase up to 10% when it is at 100.
+ .@boost=(readparam(bLuk)/20)+(BaseLevel/10);
+ if (rand2(0, 100) < getvariableofnpc(.bait_ids[@bait_d+1], .@npc$)+.@boost)
+ {
+ .@fish_id = any_of(.@rare_fish);
+ } else {
+ .@fish_id = any_of(.@common_fish);
+ }
+ specialeffect(.@success_fx, SELF, playerattached());
+ getexp getvariableofnpc(.bait_ids[@bait_d+1], .@npc$)+(BaseLevel/10), 0; // xp gain is equivalent to bait rarity + BaseLevel boost
+
+ if(!checkweight(.@fish_id, 1))
+ {
+ dispbottom l("You caught a @@ but had no room in your inventory to carry it.", getitemlink(.@fish_id));
+ makeitem .@fish_id, 1, .@mapbis$, .@xbis, .@ybis; // drop on the ground
+ return 0;
+ }
+ getitem .@fish_id, 1;
}
-
- //dispbottom l("You caught a @@!", getitemlink(.@fish_id)); <= already shows "you picked up [...]"
- getitem .@fish_id, 1;
}
else
{
@@ -255,21 +256,22 @@ function script fishing {
// begin fishing
narrator S_LAST_NEXT,
l("You see some fish reflecting the sun on the surface of the water."),
- l("What will be the bait for the fish?");
+ (.@net_ratio == 1 ? l("What will be the bait for the fish?") : l("You need @@ units of bait for this fishing spot. What will you use?", .@net_ratio));
mes "##B" + l("Drag and drop an item from your inventory.") + "##b";
.@bait = requestitem();
.@bait_c = false;
- if (.@bait < 1) {
+ if (.@bait < .@net_ratio) {
narrator S_FIRST_BLANK_LINE,
- l("You take your fishing rod and leave.");
+ l("You take your @@ and leave.", getitemlink(.@rod));
return -6;
}
- if (countitem(.@bait) < 1) {
+ if (countitem(.@bait) < .@net_ratio) {
+ mesc l("You do not have enough bait for fishing here.");
return -6;
}
@@ -303,7 +305,7 @@ function script fishing {
set getvariableofnpc(.char_id, .@npc$), getcharid(CHAR_ID_CHAR); // record char id
set getvariableofnpc(.last_used, .@npc$), gettimetick(2);
getmapxy(@fishing_loc$[0], @fishing_loc[0], @fishing_loc[1], 0); // record char pos
- delitem .@bait, 1;
+ delitem .@bait, .@net_ratio;
// The player uses this spot, his bait is ready, he just has to wait for the signal.
closedialog;