-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Group training seminars #51634
Group training seminars #51634
Conversation
Ping: @eltank? |
If you're going to have one NPC train another you'd have to make sure the one you're not talking to when setting the situation up "knows" about it and so won't continue with a current activity (can either be to break the activity off or not be available for the task while active) and won't be available for a new one (and won't follow the PC around while engaged in a training session). |
I personally think that this "near-instantaneous training" is not realistic and should either be removed from the game or replaced with a "training seminar" that takes at least 1h and can have multiple participants. My solution to teaching NPCs skills is #51628 (letting them work on practice recipes). |
I agree that it's not completely realistic. Do you think it would be reasonable to have both crafting practice as well as group training? As in, you could instruct NPCs to craft items or participate in a training seminar? |
Both of those options sound realistic to me. But if practice via crafting addresses the problem more efficiently it might not be worth the effort of coding seminars. OTOH if it turns out to be easy to code, then why not. |
Good point. I'll refocus this PR on group training like you described. |
1d791ab
to
b8e9ae6
Compare
75732c8
to
83b80b3
Compare
Ping: @eltank |
I believe training sessions ought to take time rather than being instantaneous with spamming blocked by a "memory" of having trained someone. If seminars (or, for that matter one on one training) takes time there's no need for a timeout timer. The snipped of changed code seems to imply there's a check for if the player has been asked to train ("player_character"), but it really should be a check for the teacher having been asked to train, regardless of whether the teacher is the (current) player character or not. |
I'm sorry, I don't really understand. Are you saying that training is currently instantaneous? That shouldn't be the case. I'm using the same mechanism as receiving training from an NPC, so it's handled through an activity. It takes roughly 50-100 turns depending on the skill requirements. (see Yeah, currently the |
Training currently is very quick, although it might not be instantaneous. 50-100 seconds is extremely fast, whereas I'd expect a "real" training session to be somewhere around 45-60 minutes, based on how long individual lessons tend to be currently. I thought there was a reason for the specification of the player character, but I don't think it hurts to check. Also, if it's reasonably easy to implement, having the function just take a character would make it possible to reuse it later on when/if the UI issues have been sorted out. |
Yes I agree, eltank mentioned earlier that he wanted training activities to take >1h. I've added it to the TODO checklist above.
That's how I implemented it: Cataclysm-DDA/src/npctalk_funcs.cpp Lines 1012 to 1013 in 69caaef
|
900d4f9
to
82a490a
Compare
7a5730d
to
339f0e6
Compare
Initial groundwork for allowing training between any 2 characters.
WIP towards group training
This adds a dialog option to allow the player to train an NPC. This proof of concept just includes skill training.
Co-authored-by: Binrui Dong <[email protected]>
Summary
None
Purpose of change
Fixes #51532
Describe the solution
A new '
C
' menu option was added to initiate a training seminar. The player selects a skill to teach, then selects which of their followers they want to participate in the seminar.Also, dialogue options were added to the NPC talk screen for asking the NPC to host a training seminar, as well as for one-on-one training from the player.
The
start_training()
function was refactored intostart_training_gen()
, which accepts one teacherCharacter
and an arbitrary vector of studentCharacter
s. This allows one character to train any number of other characters. A new activityACT_TRAIN_TEACHER
was added as well to force the teacher to spend the required time teaching the session.TODO:
Character
snpctalk.cpp
)ACT_TRAIN
activities to complete without the teacher'sACT_TRAIN_TEACHER
activityAdd ability to teach proficiencies, martial arts, and spellsThis would make the menus more cluttered. For now, just add the infrastructure to process these kinds of training.Describe alternatives you've considered
Testing
Player teaching seminar:
C
menuNPC teaching seminar:
Additional context