## chat_actions.rpy
## replaces the entire thing (based on the OG 24.1 code, didn't check if it's any different in the bugfix mod.)
label small_talk_person(the_person): #Tier 0. Useful for discovering a character's opinions and the first step to building up love.
$ mc.change_energy(-15)
$ smalltalk_opinion = the_person.get_opinion_score("small talk")
mc.name "So [the_person.title], what's been on your mind recently?"
$ the_person.discover_opinion("small talk")
$ successful_smalltalk = 60 + (smalltalk_opinion * 20) + (mc.charisma * 5)
$ smalltalk_chance = renpy.random.randint(0,100)
# TODO: Add a chance that she wants to talk about someone she knows.
if smalltalk_chance < successful_smalltalk:
if smalltalk_opinion >= 0:
$ the_person.draw_person(emotion = "happy")
"She seems glad to have a chance to take a break and make small talk with you."
else:
"She seems uncomfortable with making small talk, but after a little work you manage to get her talking."
$ tongue_slip = False
$ casual_sex_talk = the_person.sluttiness > 50
$ opinion_learned = the_person.get_random_opinion(include_known = False, include_sexy = casual_sex_talk)
$ none_roll = opinion_learned is None and renpy.random.randint(0,100) > 80
## the way this worked in unmodded game was encouraging tons of repeated mindless clicking and parroting her known opinions for easy love gain.
## Now it's still useful as initial approach move, but past 30 love it just gives 4 love for 45 energy on average, which isn't really a good deal.
## I'm also going to replace hard caps in compliment and flirt with something like this
if (opinion_learned is None) and (the_person.love > 0 and the_person.love <= 30 and none_roll >= the_person.love) or none_roll > 80:
$ opinion_learned = the_person.get_random_opinion(include_known = True, include_sexy = casual_sex_talk)
elif (opinion_learned is None) and renpy.random.randint(0,100) > 90-mc.charisma*2 and not casual_sex_talk:
$ opinion_learned = the_person.get_random_opinion(include_known = False, include_sexy = True)
if not opinion_learned is None:
$ tongue_slip = True
if not opinion_learned is None:
$ opinion_state = the_person.get_opinion_topic(opinion_learned)
$ opinion_string = opinion_score_to_string(opinion_state[0])
if tongue_slip:
"The two of you chat somewhat awkwardly for half an hour when suddenly [the_person.char] blurts out"
the_person.char "So [the_person.mc_title], I'm curious what you think about about [opinion_learned]. Do you have any opinions on it?"
"She's blushing even as she says it, but it's too late."
$ the_person.change_slut_temp(1)
elif opinion_state[1]:
"The two of you chat pleasantly for half an hour."
else:
"The two of you chat pleasantly for half an hour."
the_person.char "So [the_person.mc_title], I'm curious what you think about about [opinion_learned]. Do you have any opinions on it?"
$ love_gain = 4
$ prediction = 0
if opinion_state[1]:
$ prediction_difference = 0
else:
menu:
"I love [opinion_learned].":
$ prediction = 2
mc.name "Me? I love [opinion_learned]. Absolutely love it."
"I like [opinion_learned].":
$ prediction = 1
mc.name "I really like [opinion_learned]."
"I don't have any opinion about [opinion_learned].":
$ prediction = 0
mc.name "I don't really have any thoughts on it, I guess I just don't think it's a big deal."
"I don't like [opinion_learned].":
$ prediction = -1
mc.name "I'm not a fan, that's for sure."
"I hate [opinion_learned].":
$ prediction = -2
mc.name "I'll be honest, I absolutely hate [opinion_learned]. I just can't stand it."
$ prediction_difference = math.fabs(prediction - opinion_state[0])
if tongue_slip:
the_person.char "I really shouldn't be saying this to you, but..."
if prediction_difference == 4: #as wrong as possible
the_person.char "Really? Wow, we really don't agree about [opinion_learned], that's for sure."
elif prediction_difference == 3:
the_person.char "You really think so? Huh, I guess we'll just have to agree to disagree."
elif prediction_difference == 2:
the_person.char "I guess I could understand that."
elif prediction_difference == 1:
the_person.char "Yeah, I'm glad you get it. I feel like we're both on the same wavelength."
else: #prediction_difference == 0
the_person.char "Exactly! It's so rare that someone feels exactly the same way about [opinion_learned] as me!"
if opinion_state[1]:
"You listen while [the_person.possessive_title] talks about how she [opinion_string] [opinion_learned]."
else:
$ the_person.discover_opinion(opinion_learned)
"You listen while [the_person.possessive_title] talks and discover that she [opinion_string] [opinion_learned]."
if tongue_slip:
"She seems more aroused than embarrassed now by her tongue slip."
$ the_person.change_slut_temp(int(2+(love_gain-prediction_difference)*2));
$ the_person.change_love(love_gain - prediction_difference)
else:
"You and [the_person.possessive_title] chat for a while. You don't feel like you've learned much about her, but you both enjoyed talking."
$ smalltalk_bonus = smalltalk_opinion + 1
$ the_person.change_happiness(smalltalk_bonus)
if smalltalk_opinion >= 0:
the_person.char "It was nice chatting [the_person.mc_title], we should do it more often!"
else:
the_person.char "So uh... I guess that's all I have to say about that..."
"[the_person.char] trails off awkwardly."
else:
if smalltalk_opinion < 0:
the_person.char "Oh, not much."
$ the_person.change_happiness(smalltalk_opinion)
"You try and keep the conversation going, but making small talk with [the_person.title] is like talking to a wall."
else:
the_person.char "Oh, not much honestly. How about you?"
$ the_person.change_happiness(smalltalk_opinion)
"[the_person.possessive_title] seems happy to chitchat, and you spend a couple of hours just hanging out."
"You don't feel like you've learned much about her, but least she seems to have enjoyed talking."
$ the_person.apply_serum_study()
return