Here I go. My first blog ever so I'm pretty sure I will be a miserable blogger. Still, I want to give this a try and inform you about the development progression of APPS.
We divided the development into two big blocks:
First of, there will be a Framework around APPS which will contain resources and patches which other modders can use to develop their own mods.
Short term goals are:
- Providing a general tavern and whoring job at local inns where the player can earn some money (and stain his reputation in Skyrim)
- Providing a simple interface where you can hook into the above mentioned quests and provide other locations to start a whoring job (Currently it will autostart in every location which has the keyword LocTypeInn)
- Providing a rather simple framework which reflects the player characters personality and dominant/submissive relationships for each NPC (For example if you have or had a master/mistress should not mean that you voluntary accept everyone else as a master/mistress)
Second, APPS itself. It will be story driven mod. Everything which can be reused from this part will be pushed to the framework. So far the tavern job quest is rewritten and uses alot of the new functions provided by SexLab and PapyrusUtil. It is polished up to the point where I need to think about what kind of events and status variables I'm going to share for other mods so they do not conflict with APPS.
Also we have written some background stories for some NPC's which hopefully serve as a good integration into the world of Skyrim.
Speaking of the APPS-Framework, this is a quick example of the framework which is already documentated:
CheckGold(Actor akClient, Int auiBaseGold, Int auiGoldMultiplier, Int auiRecastLimit, Bool abIgnoreSexSkill)
Checks if the NPC has enough gold. Spell will be recast every 24h ingame hours at the standard timescale value of 30. This function will not be applied to beggars.
Keep in mind that this function will add septims to the inventory of the actor and therefore it can be stolen from the player. Its solely purpose is to give NPC's real gold so that he can pay the player for quests, services etc. Your mind is the limit how to make this function call useful.
The Actor you want to give money. Must not be the player, can be a child.
The base amount of gold the actor will receive. Childs will receive a tenth amount of gold and always ignore the auiGoldMultiplier value.
If you want to give more money based on the player's sex skills. This value is useful if you want to make payment based on the player's sex skills and make sure the client has enough money to pay the player. If the parameter abIgnoreSexSkills (see below) is set, the function will apply the Multiplier to the highest sex profession skill (Anal, oral or vaginal).
If the amount of gold of the actor has fallen below this value the spell will be refreshed and the actor gets some money again.
Ignores the player's sex skills and only gives the base amount of gold to the actor.
Pay the player for successfully completing a quest
Let's say you have written a new quest and after completing it you want the NPC to pay the player. Now you want to do this immersive. So after accepting the quest you call the function like this:
APPS.CheckGold(TargetRef, 500, abIgnoreSexSkills = True)
This gives the target actor 500 gold and it ignores the player's sex skills to increase the gold amount (Because they aren't needed in this case).
Now the player is tricky and greedy and checks out the NPC's inventory. Since he is a dedicated thief he developed enough skills to pickpocket the NPC and steals the gold you have given him.
Later the player did the quest and comes back for his reward. Of course the NPC does not have the gold anymore while you call the function EarnReward():
ReturnValue = APPS.EarnReward(PlayerRef, TargetRef)
In this case the ReturnValue would be -1 indicating that the NPC could not give the player the amount of gold which was expected. Now what you do with this information and how you continue to develop a side story is left to your own imagination.
Remark: The EarnReward-function is still in development and serves as an example.