[1.3.0] Hospitality

Started by Orion, March 13, 2015, 11:19:16 AM

Previous topic - Next topic

dopestar667

#195
I'm encountering a bug where my recruiting pawn gets frozen in place when trying to recruit someone. It appears to happen when the target goes to sleep, and then my pawn will not respond to any commands and the game slows significantly. Even if I draft the pawn, it gets stuck in the "Trying to recruit xxx" mode.

I was able to get past it last time by unloading the mod, quitting the game, and reloading the game. Then saving, reloading the mod, and loading the game again. Screenie of the debug log.

Here's the relevant repeating part of the output.log

Exception in Tick (pawn=Mie, job=GuestRecruit A=Human403333): System.InvalidProgramException: Invalid IL code in Hospitality.JobDriver_GuestRecruit:TryGuestRecruit (Verse.Pawn,Verse.Pawn): IL_00a0: stloc.1   



  at Hospitality.JobDriver_GuestRecruit+<>c__DisplayClasse.<TryRecruitGuest>b__c () [0x00000] in <filename unknown>:0

  at Verse.AI.Toil.Cleanup () [0x00000] in <filename unknown>:0

  at Verse.AI.JobDriver.Cleanup (JobCondition condition) [0x00000] in <filename unknown>:0

  at Verse.AI.Pawn_JobTracker.CleanupCurrentJob (JobCondition condition, Boolean releaseReservations, Boolean cancelBusyStancesSoft) [0x00000] in <filename unknown>:0

  at Verse.AI.Pawn_JobTracker.EndCurrentJob (JobCondition condition) [0x00000] in <filename unknown>:0

  at Verse.AI.JobDriver.EndJobWith (JobCondition condition) [0x00000] in <filename unknown>:0

  at Verse.AI.JobDriver.CheckCurrentToilEndOrFail () [0x00000] in <filename unknown>:0

  at Verse.AI.JobDriver.DriverTick () [0x00000] in <filename unknown>:0

(Filename: C:/buildslave/unity/build/artifacts/StandalonePlayerGenerated/UnityEngineDebug.cpp Line: 56)


[attachment deleted due to age]

Leucetius


paragonid

Alpha 11b - goodwill cost for guest recruiting seems to always be 0
Pawns do not attempt to recruit guests outside of home zone (could be intended?)

Orion

Quote from: paragonid on July 06, 2015, 05:32:16 AM
Alpha 11b - goodwill cost for guest recruiting seems to always be 0
Pawns do not attempt to recruit guests outside of home zone (could be intended?)
The mod is not officially Alpha 11b compatible yet, so weird things could happen.
Recruiting outside of home zone is intended. I'll improve this soonTM by letting you specify where visitors gather.

Quote from: Vas on July 03, 2015, 02:48:32 PM
This is already a cheaty method of gaining reputation with factions, even with my nerf, it allows you to gain 100 rep with all of them except pure enemies for free.  Your method lets you gain 19 reputation by talking to ONE person, this is not right, at most you should be getting 1 per person per visit, and this could still be cheaty.
I think it has to be a time investment to improve relations, IF the player has a character with the required skills. With low skills it has to be risky that it ruins the relationship. Recruiting a character has to be a time investment and a relationship cost.

Given that most groups arrive, hang out for a few hours, then go to sleep, then go home, there's a rather narrow time window to improve relationships. I think an improvement of about 30 per visit is a good rule of thumb. If you have 3 skilled guys who spend their whole time kissing the visitors' behinds when they come around, this should be considered a big success.
If one of them is unskilled, there should be a good chance that relationships won't improve. And if half or more of your guys have low skills, a good chance that things go bad should be there.
It shouldn't be too harsh - especially in the beginning of the game you have lower skills but are more dependent on convincing visitors. Later in the game you have many high skilled people, so there has to be a cap for how much improvement you can make per visit.

My ideal vision would cap in both directions: the visitor box should show the relationship with the other faction as a (noninteractive) slider, with the center being the current relationship status (example: 45). The left would be current - 30, (example: 15), the right current + 30, (example: 85). The range (+-40 is up for discussion).
If your guys managed to piss them off all the way to the lower end of the bar (or recruit one of them), they will just leave. If you reach the right, they are pleased and you can't improve it any further.
This will give clarity about how it works and make your successes (or losses) very visible.

I also want to allow inviting other factions over for a visit. This will come at an immediate cost of relationship (to simulate higher expectations) and have a bit of cooldown, so you can't do it immediately again with the same faction.

Vas

Quote from: Orion on July 06, 2015, 08:49:48 AM
Quote from: Vas on July 03, 2015, 02:48:32 PM
This is already a cheaty method of gaining reputation with factions, even with my nerf, it allows you to gain 100 rep with all of them except pure enemies for free.  Your method lets you gain 19 reputation by talking to ONE person, this is not right, at most you should be getting 1 per person per visit, and this could still be cheaty.
I think it has to be a time investment to improve relations, IF the player has a character with the required skills. With low skills it has to be risky that it ruins the relationship. Recruiting a character has to be a time investment and a relationship cost.

Given that most groups arrive, hang out for a few hours, then go to sleep, then go home, there's a rather narrow time window to improve relationships. I think an improvement of about 30 per visit is a good rule of thumb. If you have 3 skilled guys who spend their whole time kissing the visitors' behinds when they come around, this should be considered a big success.
If one of them is unskilled, there should be a good chance that relationships won't improve. And if half or more of your guys have low skills, a good chance that things go bad should be there.
It shouldn't be too harsh - especially in the beginning of the game you have lower skills but are more dependent on convincing visitors. Later in the game you have many high skilled people, so there has to be a cap for how much improvement you can make per visit.

My ideal vision would cap in both directions: the visitor box should show the relationship with the other faction as a (noninteractive) slider, with the center being the current relationship status (example: 45). The left would be current - 30, (example: 15), the right current + 30, (example: 85). The range (+-40 is up for discussion).
If your guys managed to piss them off all the way to the lower end of the bar (or recruit one of them), they will just leave. If you reach the right, they are pleased and you can't improve it any further.
This will give clarity about how it works and make your successes (or losses) very visible.

I also want to allow inviting other factions over for a visit. This will come at an immediate cost of relationship (to simulate higher expectations) and have a bit of cooldown, so you can't do it immediately again with the same faction.

30 per visit? That's way too much.  I already don't like it because I can rapidly fire off "hey how you doing?" at someone and gain a whole lot of rep in a single short period of time.  If you're going to raise it, to make it so it's even easier to gain rep, I'm just going to delete this mod and move on.

Like I said, you should be able to talk to a character only once every few hours, if it fails or succeeds, you have to  wait a few game hours again before you can talk to him again.  So if they come in a group of 6 people, you can talk to each one, then wait a few game hours, then talk to them again, wait a few more game hours, then talk to them a 3rd time before they end up leaving.  Each time gives you a chance of a +1 to a maximum of +2 rep points, so you could gain 18 points at MOST before they leave.  that group of 6 people that is.  Rep shouldn't be super easy to get, you can't just talk to a guy once and gain 30 rep.  No.  That'd only happen if you talked to their clan leader which never visits.  You only talk to some random grunt or explorer.

In fact, in the event of multiple visitors visiting, I think that talking to all of them should be required before you get +1.  Maybe, even make it harder to improve relations the higher the relation is, without a penalty.

E.G. If you are -50, you can improve relations with a little talking to one guy by just a few points.  When you get to 10 rep, it is 30% harder to improve relations, if you have a good talk, you have a good talk and no rep is gained, if you have a good talk and gain rep, it should be +1 only.  Once you reach 40 rep, it should be about 50% harder to gain, 70 rep, 90% harder to gain.  80 rep, 100% harder to gain.  No gain at all after 80 rep, you'll have to use silver to gain after that.  SHould probably be lower too, just thinking out loud.  It should take a year or more of  visits to gain a super positive rep with factions.
Click to see my steam. I'm a lazy modder who takes long breaks and everyone seems to hate.

Orion

Quote from: Vas on July 08, 2015, 12:02:03 PM
30 per visit? That's way too much.
We're talking "worst case scenario" here. So maxed out social skills and a bit of luck. Essentially 6 visitors leaving with all dreamy eyes who can't wait to visit you again.

Quote from: Vas on July 08, 2015, 12:02:03 PM
If you [don't do what I want], I'm just going to delete this mod and move on.
That's fine. I can't make it perfect for everyone.

Quote from: Vas on July 08, 2015, 12:02:03 PM
Like I said, you should be able to talk to a character only once every few hours, if it fails or succeeds, you have to  wait a few game hours again before you can talk to him again.  So if they come in a group of 6 people, you can talk to each one, then wait a few game hours, then talk to them again, wait a few more game hours, then talk to them a 3rd time before they end up leaving.
Version 1.06 is going to work like that. After x amount of talking they are fed up for a while. And there's always the chance you ruin relations, so gaining 30 is going to be very difficult.

Quote from: Vas on July 08, 2015, 12:02:03 PM
Maybe, even make it harder to improve relations the higher the relation is, without a penalty.
I like it. I'll think about it. There is no real benefit to having a very good standing with a faction, so at some point it's just not going to be worth the trouble.

Vas

#201
Wow, rephrase what I said to make me seem like an -------.  Good job there.  I hate it when people rephrase what I say to make others see me as the bad guy.  I said if you make it too easy to gain rep, this mod will be game breaking and I will not use it.

No real benefit?  You mean, I can't just call allies to come defend me every time I have a large raid coming in, and have extra defense based on high rep?  If I have 100 rep, I can call the same guy 3 times, that's 3 defense teams from ONE ally.  Imagine I have 2 allies, 6 teams.  3 allies, 9 teams.  And then I can just chat them up again and not spend a dime, completely free easy reputation.

What I'm trying to say is this mod makes it too easy for me to gain fast rep, at this current time, or at least when I last used it which is when I first made my post.
Click to see my steam. I'm a lazy modder who takes long breaks and everyone seems to hate.

Orion

Quote from: Vas on July 09, 2015, 08:25:33 PM
Wow, rephrase what I said to make me seem like an -------. 
I know what you said. But that's how your post came across to me. If it was not your intention then I'm sorry. I just really don't like "do this OR ELSE" posts. There are rude and friendly ways to express yourself.

Quote from: Vas on July 09, 2015, 08:25:33 PM
No real benefit?  You mean, I can't just call allies to come defend me every time I have a large raid coming in, and have extra defense based on high rep?  If I have 100 rep, I can call the same guy 3 times, that's 3 defense teams from ONE ally.  Imagine I have 2 allies, 6 teams.  3 allies, 9 teams.  And then I can just chat them up again and not spend a dime, completely free easy reputation.
If I'm not mistaken, it costs 300 silver for 10 rep. So a defense team costs 750 silver. Given how much money a player has by the time he can safely "just chat them up again" (15+ social), a defense team is almost for free.

The other thing is that most mods make the game easier one way or another: Crafting medkits, bionics, better weapons (brought for free by raids), fortifications, etc. More choices mostly translate to an easier game.
It's interesting, because you can always just play on a higher difficulty level. Or you get further in the game, which is also more difficult again.

So considering that, I think this mod is fairly balanced. I do see your point and I'm striving for a good balance between useless and overpowered, both at the early and the late stages of the game.

I'll release a new version soon (thanks to Leucetius) and I'm curious what you think of it.

hairlessOrphan

Quote from: Orion on July 10, 2015, 08:20:50 AM
Quote from: Vas on July 09, 2015, 08:25:33 PM
Wow, rephrase what I said to make me seem like an -------. 
I know what you said. But that's how your post came across to me. If it was not your intention then I'm sorry. I just really don't like "do this OR ELSE" posts. There are rude and friendly ways to express yourself.

Yeah, that's what it sounded like to me, too.

On the plus side, that post made me go back and edit one of my own posts where I came across sounding like him.

I hate to say it, though, but I agree with his point, even though I think he's a jerk. The rep boosts would be better served in small doses, IMO. Faction rep becomes a pretty low-hanging fruit with swings of +30. By the time the player starts working on this, they'll have a functional base with a couple of dedicated socializers who've been grinding chat xp on prisoners. Scoring the big rep win won't actually be a challenge by then.

Basically, if you want faction rep to be something the player can take care of in a couple of visits, then this is totally fine. I think it'd be more fun as a long-term goal, though.

Vas

I'm going to ignore the fact that the last guy called me a jerk.  I said exactly this "If you make the rep gaining even easier, I'm going to delete the mod and move on".  That is in no way demanding something, you were considering something that would have made it easier than it was when I first made my 'complaint'.  So I stated that.

I do feel that this type of rep gain should be long term though.  You can buy rep with giving gifts, you can talk to people which takes a long time but eventually you'll need to give something to gain more.

Also, I'm not sure, but I think high rep does have another advantage.  I think that the higher your rep is, the more likely it is that you will have allies come to your defense regardless of asking for it.  I've had this happen a lot before when I gained high rep with a faction.  I wasn't sure if it was the game being random, or if it was because of the high rep.  Just a thought.
Click to see my steam. I'm a lazy modder who takes long breaks and everyone seems to hate.

Orion

Quote from: hairlessOrphan on July 10, 2015, 09:52:52 AM
I hate to say it, though, but I agree with his point, even though I think he's a jerk.
This was not meant as an invitation to side against another player. Let's just stick with that it didn't come across as very friendly and move on.

I do appreciate that you guys care about the mod and want it to be better.

Building up strong socializers that let you use and gain allies instead of paying for them sounds like a valid strategy to me, and not an exploit. But I agree that it should not be too easy.

When the next version is up, I'd like you guys to give it a shot and see how much you can exploit it that way and let me know about the experience you had. The mod is not done yet, so if it's too powerful, I can always make it harder.

Example: I want to make it possible to just invite a faction over for a regular visit (at a cost). I could introduce a slow decay of relationship over time (if above 0). So if you want to keep your good standing, you have to invite them over every now and then.

Quote from: Vas on July 10, 2015, 11:32:01 AM
I think that the higher your rep is, the more likely it is that you will have allies come to your defense regardless of asking for it.
This might be true. Good point.

Orion

New version!
1.06 - 10.07.2015
- guests visit you inside your base
- fixed zero relationship damage
- various other fixes and tweaking
- guests leave if you really piss them off or if you reach a maximum increase of relationship
By Leucetius:
- guests eventually become tired of your influence attempts
- changed relationship impacts: affected by social skill

I tested it quite a lot, but I have a hunch I may have missed something here or there.

Vas

Just a random thought, you could always add a UI screen option or something, for choosing a difficulty.  And set variables instead so "Repgained per talk = %var1%" and then make var1 change based on "Easy, Medium, Hard, Very Hard, Is This Mod Even Installed?!(super hard)"  So like 3, 2, 1, 0.5, 0.1 :P  Just throwing out another idea that could be possible.

I'll try an DL this soon, my net is REALLY bad right now.
Click to see my steam. I'm a lazy modder who takes long breaks and everyone seems to hate.

Leucetius

Quote from: Vas on July 10, 2015, 02:50:36 PM
Just a random thought, you could always add a UI screen option or something, for choosing a difficulty.  And set variables instead so "Repgained per talk = %var1%" and then make var1 change based on "Easy, Medium, Hard, Very Hard, Is This Mod Even Installed?!(super hard)"  So like 3, 2, 1, 0.5, 0.1 :P  Just throwing out another idea that could be possible.

I'll try an DL this soon, my net is REALLY bad right now.

Also possible (and quite easy) : let the storyteller difficulty influence the relationship impact. Orion: you know where to put THAT ;)

And: thank you for crediting me so heavily :D

Tynan

This mod looks really great, actually. Very nice vanilla-style addition to the core game.

I wonder if you'll ever add the inverse: visitors coming to recruit away your colonists. Now ally relations become a sort of social conflict over human resources! (Just an idea, in truth this could be infuriating and I probably wouldn't do it myself).
Tynan Sylvester - @TynanSylvester - Tynan's Blog