sleepingkirby
Well-Known Member
- Aug 8, 2017
- 1,321
- 1,955
- 262
Wow, uh... you really want to know. Most people just tune out when they hear something this complicated. I mean kudos to you but, in this case, it might be easier to just have them deepthroat you multiple times. But I've never been one to deny someone knowledge that can improve themselves so... *cracks knuckles*. With that said, feel free to ask any further questions about my explanation if I'm getting too much into jargon because I'm about to teach you a small lesson in computer programming . This is usually a day or two's lesson in CS 101 or 102 class.And how would one modify history?
The history object is an instantiation of the history class. Meaning that it's an custom object that RonChon wrote with a lot of properties (data holders) and methods (functions that manipulate data within it or allows you to interface with data within it) within it on how to use it. It's a long read but you'll find the class definition in games/scripts/base/history.rpy within the game's file if you want to read the whole thing. With that said, the history class has some pretty complex properties. In particular, it has properties that RonChon made that tracks events he calls trackers (rightfully so). They look like this:
Code:
class HistoryClass(object):
TRACKER_NAMES: Tuple = (
"immediate",
"event",
"recent",
"last",
"yesterday",
"daily",
"weekly",
"season",
"chapter",
"persistent",
"permanent")
Code:
def check(self, Item: str, tracker: str = "persistent", after: Union[int, Tuple[int, int]] = 0) -> int:
history_Item = self.trackers[tracker].get(Item, None)
if not history_Item:
return 0
cutoff_day, cutoff_time = (after, 0) if isinstance(after, int) else after
return sum(1 for day_, time_ in history_Item.completed if day_ > cutoff_day or (day_ == cutoff_day and time_ > cutoff_time))
Code:
@property
def throat_training(self):
return min(4, math.floor(self.History.check("deepthroat")/8))
Code:
def check(self, Item: str, tracker: str = "persistent", after: Union[int, Tuple[int, int]] = 0) -> int:
Code:
TRACKER_NAMES: Tuple = (
"immediate",
"event",
So, now you know you're looking to push things into the persistent tracker array. The History.check method is a summation of how many items within the array of items that make up the persistent tracker that has the value "deepthroat" (if you're like, "What? It's summation?!? Where did that come from?" In the post I posted earlier with the full explanation, it actually says that. Also, you can see it within the definition of the History.check method that it's returning a sum).
Now the question is, what is the value you want to store into the tracker. We know it's not just a number because the check function is looking for an item string. In the file game/scripts/sex/utilities.rpy, you'll see in start_Action, that it says:
Code:
if Action.type == "deepthroat":
$ Player.give_trait("saliva")
<snip>
python:
for C in (Actor, Target):
if not C.History.check(Action.type, tracker = "recent"):
C.History.update(Action.type)
<name of character>.History.update("deepthroat")
Now, why did I say it might be easier to just have them deepthroat you multiple times? Well, as you can see here:
Code:
return min(4, math.floor(self.History.check("deepthroat")/8))
Last edited: