April 18, 2024, 09:28:12 pm
Username:

Password:

Topic: Support Perk: Scavenger  (Read 3792 times)

Henry

  • Wiki Administrator
  • Global Moderator
  • Posts: 857
  • Gravity is just a theory. Try Density.
    • View Profile
Support Perk: Scavenger
« on: December 04, 2017, 07:23:57 pm »
A few new perks were announced, in the works for a future update:

* Fortune Finder - more caps found in random lockers
* Scrounger - more ammo found in random lockers

And we already have Treasure Hunter - gives more items found in lockers.

These all sound good - i'm looking forward to that update! However...

These are all about random lockers. Meanwhile, crafting requirements were so aggressively increased, that i suggest crafters need some boost to morale. I suggest a perk called...

Scavenger - doubles the item count when you pick up flint, broc, xander, junk, chemical components, eparts, and anytime you use a Tool to "Scavenge" scrap around in towns.

This would not suddenly fix all of a crafter's gathering problems - but it would bridge the gap between what was once needed, and what is needed now, for crafting. We'd still have to spend hours gathering junk to craft 10 of each important gear item for our team, but an efficiency doubler would help a bit.

cthulchu

  • Supporter
  • Posts: 212
    • View Profile
Re: Support Perk: Scavenger
« Reply #1 on: May 08, 2018, 04:46:27 am »
First of all, I have scripted a lot for fonline, so I know quite enough about fos to be able to offer my help scripting little things like all in this suggestion. I also use cvet's forum when help is needed with their native functions, but it won't be needed here

Henry, the Scavenger you described is too good to implement, I believe.

I think it would make more sense to split it into three perks:

Miner: Gives a chance to double/tripple the output during mining. (I think it would be interesting to have something like 20% to double and 5% to tripple the output. 75% to get normal output). Not very useful, but hey, makes mining A LOT more fun :) If you think it can affect the economy negatively, add some chance to have no output from mining at all. The variety will make it more interesting for beginners.

I would also throw in some nice subtle dependencies on luck, strength and slight influence endurance, scavenging skill and melee. I think it's fun when formulas are complex and contain many variables.

Naturalist: Does the same to natural resources gains: flowers, fiber, apples, wood, flint, etc. Although this mechanics is quite different from mining. I haven't looked at these scripts.

Scavenger: I have more issues with this one. I have scavenged A LOT and can say much about mechanics of scavenging I mostly want to comment on it. Henry, I'm very sorry for hijacking your topic, but I want to post it in context of yours since I believe your suggestion is awesome and we have to have more light support perks.

1. First of all, I have to say that the idea and implementation of this is completely amazing. It's the third awesomest thing in s3 after Lander's Point and the Farm (although the farm does influence the economy somewhat significantly).

2. Scavenging is capped at 100% Folks, 100% is too easy to reach. I want to offer to make the skill progression like three times slower (I would really go for like 5-6 times slower progression, tbh) AND

3. Increase the cap to 300% even with no influence on outcome. It's still gonna be very satisfactory to players and will keep them engaged for longer. Even if there's no real added benefit.

4. Deal with the list of existing probable outcomes. I have no issues with the exp given for scavenging, but the items found... Folks, why cat's paw? I know there were talks about making it a book for sneaking skill, but why no other books?

5. Why so few caps? It would make sense to do something like 30% chance to find from 1-100 caps, 5% chance to find 100-1,000 caps, 0.1% chance to find a treasure (with a chat notification about the treasure) 1,000-10,000 caps. Won't influence the economy (0.1% chance of finding 10k is like finding one cap every time), but will make it A LOT more interesting for an average player. Especially for newbies.

6. Add clutter. I don't know if it's a good suggestion, but it is realistic for sure. And will make it more interesting for noobs. Like add a 90% probability to get a random shititem like what you set in random containers in cities (btw, very well done with these too). 50% to get another one, 20% for the third one, 5% for the fourth one. Only when scavenging is successful.

7. Add some fun items to the loot. What I can think of is items that you randomly spawn is caves with the same shitty quality. But set a low chance for them and only give them one per successful scavenging. I would just call the item generation function that is used in Caves, but just once per, say, a hundred of successful scavenges, so 1% chance in case of success.

8. Bind all that I described above to the skill level. Say, in the 7. instead of 1%, use a formula something like:
Code: [Select]
//On scavenging success:
int itemChance = Random (0, int(SK_SCAVENGING/100));
if (itemChance>Random (0, 100){
    //call the Cave function to add an item.
}

So the chance of getting a fun item is from 0% to scavenging/100 %, which is 0-3% (about 1.5% on average) when scavenging is 300%. and 0-1% (about 0.5% on average) when scavenging is 100%. And 0% when it's below 100. As I remember, int doesn't round. No, it doesn't. I believe it doesn't. Although it's angelscript. People who would give such a name to a programming language can do all kinds of things to casting into int :). KEK.

But it's super simplistic. Here's an example of functions I use for my maps. This is just to explain what I mean by more complex formulas, more unique and interesting outcomes that have slight binding to user's skills:

Code: [Select]
void _RepairReward(Critter& player, Critter@ npc)
{
//Log("_RepairReward");
//At this point we know that character's repair or science is >60
player.AddItem(PID_ELECTRONIC_PARTS, Random(int(player.Stat[ST_LUCK]/8), int(player.Stat[ST_LUCK]/3))+int(player.Skill[SK_REPAIR]/50+player.Skill[SK_SCIENCE]/20));
player.AddItem(PID_ALLOYS, Random(int(player.Stat[ST_LUCK]/5), int(player.Stat[ST_LUCK]/2))+int(player.Skill[SK_REPAIR]/60+player.Skill[SK_SCIENCE]/100));
player.AddItem(PID_METAL_PARTS, Random(int(player.Stat[ST_LUCK]/5), int(player.Stat[ST_LUCK]*1.5))+int(player.Skill[SK_REPAIR]/10+player.Skill[SK_SCIENCE]/40));
player.AddItem(PID_METAL_PARTS2, Random(int(player.Stat[ST_LUCK]/8), int(player.Stat[ST_LUCK]/3))+int(player.Skill[SK_REPAIR]/60+player.Skill[SK_SCIENCE]/100));
player.AddItem(PID_ELECTRONIC_PARTS2, Random(0, int(player.Stat[ST_LUCK]/3))+int(player.Skill[SK_REPAIR]/50+player.Skill[SK_SCIENCE]/20));
int exp = int(player.Skill[SK_REPAIR]/20+player.Skill[SK_SCIENCE]/20)*100;
player.StatBase[ST_EXPERIENCE] += exp;
//LogExperience(player, exp);
//dbLog(player, "You earned "+exp+" experience as a result of dismantling the robot");
}
Or stuff like:
Code: [Select]
void _MedReward(Critter& player, Critter@ npc)
{
//At this point we know that character's first aid OR doctor is > 46 AND the repair || science is >60

player.AddItem(PID_STIMPAK, Random(int(player.Stat[ST_LUCK]/8), int(player.Stat[ST_LUCK]/3))+int(player.Skill[SK_FIRST_AID]/20+player.Skill[SK_DOCTOR]/50));
player.AddItem(PID_RADAWAY, Random(int(player.Stat[ST_LUCK]/3), player.Stat[ST_LUCK]));
player.AddItem(PID_ANTIDOTE, Random(0, 1)+int(player.Skill[SK_FIRST_AID]/40+player.Skill[SK_DOCTOR]/60));
player.AddItem(PID_SUPER_STIMPAK, Random(int(player.Stat[ST_LUCK]/10), int(player.Stat[ST_LUCK]/5))+int(player.Skill[SK_FIRST_AID]/80+player.Skill[SK_DOCTOR]/80));
player.AddItem(PID_HYPO, Random(int(player.Stat[ST_LUCK]/10), int(player.Stat[ST_LUCK]/5))+int(player.Skill[SK_FIRST_AID]/100+player.Skill[SK_DOCTOR]/100));
int exp = int(player.Skill[SK_DOCTOR]/20+player.Skill[SK_FIRST_AID]/20)*100;
player.StatBase[ST_EXPERIENCE] += exp;
//LogExperience(player, exp);
//dbLog(player, "You earned "+exp+" experience as a result of dismantling the robot");
}

Again, I would be happy to play around with this snippet if help is needed.

Thanks!

PS

It pisses me off when stuff you find in different locations have no or very little connection to your skills/stats. I want a guy with BG 200%, sg 20% and EW 40% to have a lot more big guns in Muties lockers. Although for that the content should spawn on open rather than on map gen, which is a lot trickier :) but you get the idea, right? Sometimes on mapGen we actually have a player. When it's an SE. Wouldn't it be fun if, for example, the Factory SE would always have a blueprint that is yet unknown to a player? I think it would be cool.
« Last Edit: May 08, 2018, 05:44:40 am by cthulchu »

Mr. Z

  • Supporter
  • Posts: 45
    • View Profile
Re: Support Perk: Scavenger
« Reply #2 on: May 08, 2018, 10:05:28 pm »
Hello there.
Just my point of view about scavenging: I find it's a FASTER, LESS grindy way to get basic crafting materials than scouring random maps/mining. And that doubles when dealing with resource heavy crafts like 20 LSWs in one go. Please do NOT allow more items to be found with scavenging, crafting is already as grindy as it gets.
Just my two Euro cents, keep the ideas rolling.   :)