ATT_Turan

Forewarner of the Black Wind
Regular
Joined
Jul 2, 2014
Messages
12,465
Reaction score
10,842
First Language
English
Primarily Uses
RMMV
Party Approval 1.2
ATT_Turan

Introduction
I've always enjoyed how the approval system in BioWare and similar RPGs felt immersive, like the party members were real people reacting to my choices and actions. So this has been sitting around in my head for a while and I finally just dove into it.

I have tested the basic functionality, please let me know if you encounter any errors. I will consider making compatibility patches if the other plugin is free to use (or one I own, such as a Yanfly product) and unobfuscated. Otherwise, other authors are free to modify this code to make it compatible with theirs so long as I am still credited.

This plugin provides the basis for an approval system between the protagonist and any actors in the game. Each actor has an approval which starts at 0 and can be modified positively or negatively at any time.
Changing approval also causes an accompanying window to pop up, notifying the player of incurring that actor's good (or poor) graces. This window does not interfere with other on-screen functionality.

Approval1.gif

Approval2.gif

All of this plugin's functionality is via plugin commands and script calls.

ActorApproval <actor> <amount>
ActorApproval <actor ID> <amount>
This modifies the indicated actor's approval by the specified amount and produces a notification using the approval (if amount is positive) or disapproval (if negative) plugin parameters below.

If the actor's name is used, the spelling must match the database entry, and it will use the first actor to match.

Examples:
ActorApproval Therese 5
ActorApproval 2 -3

GetApproval <variable ID> <actor>
GetApproval <variable ID> <actor ID>

This stores an actor's current approval value into the specified game variable. It can be used with either the actor's ID or name, see above for caveats on using the name.

TUR.ActorApproval([actor/ID, amount])

This functions as the plugin command above, but can be called from places which only accept script (such as eval notetags).

Note that if using an actor's name, it must be enclosed in quotations.

Examples:
TUR.ActorApproval(["Therese", 5]);
TUR.ActorApproval([2, -3]);

TUR.AdjustApproval(actorId, amount)

This functions as above, but does not produce a notification. This allows you to adjust approval silently if necessary. Note that the actor's name can not be used as an argument here.

$gameSystem.approvals[]

This system array stores actor's approval values. You can access it direcly by providing the actor's ID as the index to set, modify, or retrieve their approval. This circumvents the Approval Eval notetag above.

Note that approval values are undefined until modified by any of the above functions or plugin commands.

Actor notetag
Code:
<Approval Eval>
code
</Approval Eval>

JavaScript code in this notetag will be executed any time the actor's approval is modified by a plugin command or script call. This might be used to interface with other relationship systems, activate face cutins, etc.

Provided variables:
user - the current actor
value - the amount approval is being modified by
approval - the actor's current approval

Actor notetag
Code:
<ApprovalColor1: color code>
<ApprovalColor2: color code>
<DisapprovalColor1: color code>
<DisapprovalColor2: color code>

These tags can be used to override the default colors for the approval notifications as defined in the plugin parameters. All tags can be used independently - any colors not defined on the actor will use the default values.

Example:
Code:
<ApprovalColor2: rgba(0, 0, 0, 0.8)>

Terms and Credits
Free for non-commercial and commercial use. Credit ATT_Turan.
 

Attachments

  • TUR_PartyApproval.js
    15.2 KB · Views: 7
Last edited:

AlphaOmega

Alpha Ωmega Graphics
Regular
Joined
Jan 16, 2022
Messages
165
Reaction score
234
First Language
English
Primarily Uses
RMMV
LOVE IT!! I have to test it yet but this is a great addition for party selection! Great work!
 

Ebanyle

what
Regular
Joined
Sep 2, 2016
Messages
378
Reaction score
245
First Language
Portuguese
Primarily Uses
RMVXA
Oh this is so very nice!!! I really love those kind of systems, adds so much immersion!
 

ATT_Turan

Forewarner of the Black Wind
Regular
Joined
Jul 2, 2014
Messages
12,465
Reaction score
10,842
First Language
English
Primarily Uses
RMMV
Thanks! I've done testing on my own, but please let me know any problems you have or suggestions for additions/improvements.
 

Ms Littlefish

Time Traveling Victorian Vampire
Global Mod
Joined
Jan 15, 2014
Messages
8,826
Reaction score
13,950
First Language
English
Primarily Uses
RMMV
Absolutely fantastic. I think this will be much enjoyed.
 

TheAM-Dol

Randomly Generated Christmas Festivities
Regular
Joined
Feb 26, 2022
Messages
1,144
Reaction score
2,114
First Language
English
Primarily Uses
RMMV
Garrus and Morigan :kaopride:
 

ATT_Turan

Forewarner of the Black Wind
Regular
Joined
Jul 2, 2014
Messages
12,465
Reaction score
10,842
First Language
English
Primarily Uses
RMMV
Updated with suggested ideas!

There are now separate plugin parameters to define the notification colors by positive and negative approval.

Additionally, notetags have been added to allow each actor to have any combination of colors for positive and negative approval notifications.

Lastly, a plugin parameter to determine whether approval commands will work on actors not in the party.
 
Last edited:

ATT_Turan

Forewarner of the Black Wind
Regular
Joined
Jul 2, 2014
Messages
12,465
Reaction score
10,842
First Language
English
Primarily Uses
RMMV
This ^^^^ is an amazing update
Thank you :kaoblush:

Honestly, it was for my own quality of life. My project has a large-ish cast and I didn't want to stick all of the approval commands inside of conditionals the whole time. So...amazing driven by selfishness, I guess :stickytongue:
 

Piyan Glupak

Regular
Regular
Joined
Nov 14, 2016
Messages
190
Reaction score
97
First Language
English
Primarily Uses
RMMV
Thank you for this plugin, ATT_Turran, I have been playing with it in my new project. It wouldn't be difficult to implement approval ratings (AR) with eventing, using variables, in my opinion, but that wouldn't give you the on-screen messages, which are a very nice feature.

In my game High AR gives a buff-state at the end of the sleep process, whereas low AR makes party members refuse some tasks. It is a good idea to keep an eye on how the party members are feeling, in case the player needs a party member to do something special but unpleasant. AR has made (party member) drinking and getting drunk a part of gameplay, not just a gimmick. This has made me think more about what could be done by individual, selected party members instead of the whole party. With luck, gameplay in my new project won't end up the same as in the one that I finished recently.
 

Plueschkatze

Regular
Regular
Joined
Aug 4, 2016
Messages
654
Reaction score
1,881
First Language
German
Primarily Uses
N/A
Haven't checked it yet, but how customizable is the window that pops up?
As in placement and visuals (as in windowframe option or even a picture background).
Are the texts predefined or can we define them?

The idea is great. Very cool plugin! Thanks for creating this.
 

ATT_Turan

Forewarner of the Black Wind
Regular
Joined
Jul 2, 2014
Messages
12,465
Reaction score
10,842
First Language
English
Primarily Uses
RMMV
@Plueschkatze Please take a look through the plugin parameters, then ask me any questions you still have.

I suspect the notification would be compatible with plugins that allow you to define different window skins, but you'd need to first make a minor edit so that it displays the window skin.
 

Piyan Glupak

Regular
Regular
Joined
Nov 14, 2016
Messages
190
Reaction score
97
First Language
English
Primarily Uses
RMMV
Were you aware that the code between the <Approval Eval> and </Approval Eval> actor notetags runs before the approval rating is changed?

<Approval Eval>
$gameVariables.setValue(16, $gameSystem.approvals[1]);
</Approval Eval>

If you use Yanfly's Status Menu Core and Actor Variables plugins to get the approval ratings onto the status menu, it shows the actor's approval rating before the last change. I also checked by using map events to display the variable values by text message, then update the variables using the same code, the re-display the variable value..

Not a problem for me because I think that Yanfly's status menu is not the best way to let the player know approval ratings, but I don't know whether or not that was what you intended.
 

ATT_Turan

Forewarner of the Black Wind
Regular
Joined
Jul 2, 2014
Messages
12,465
Reaction score
10,842
First Language
English
Primarily Uses
RMMV
Were you aware that the code between the <Approval Eval> and </Approval Eval> actor notetags runs before the approval rating is changed?
Yes, that's why the description of the notetag in the instructions says:
approval - the actor's current approval

If you want to reference what the approval is going to be, you can do approval + value

In your case, unless 1 is not the actor you're performing the approval on, there's no reason for you to be referencing $gameSystem.approvals at all.

----------------------------------------------------------------------------------------------------

As a side note, I've updated the post with version 1.2. This is not a necessary change for anyone, and please note that if you do update I have changed the names of the plugin commands and function calls.

But it's a little tighter, code-wise.
 

Piyan Glupak

Regular
Regular
Joined
Nov 14, 2016
Messages
190
Reaction score
97
First Language
English
Primarily Uses
RMMV
Sorry ATT_Turan, I misunderstood the plugin instructions. The code:

<Approval Eval>
$gameVariables.setValue(16, (approval + value));
</Approval Eval>

sets variable 16 to the new approval rating.

Still got to work out the best way aesthetically to let the player know party approval ratings, but at least I know how to do it if I do decide to go this route.
 

ATT_Turan

Forewarner of the Black Wind
Regular
Joined
Jul 2, 2014
Messages
12,465
Reaction score
10,842
First Language
English
Primarily Uses
RMMV
There's no need to apologize. I'll be interested to see what you come up with.
 

Piyan Glupak

Regular
Regular
Joined
Nov 14, 2016
Messages
190
Reaction score
97
First Language
English
Primarily Uses
RMMV
There's no need to apologize. I'll be interested to see what you come up with.
Not 100% there yet, but I have been experimenting with SumRandmDude's SRD_StatusMenuCustomizer plugin. This plugin customises the menu that you get when you press ESC when not in battle. (I would refer to it as the "main menu".)

If you put something like:

"Morale: " + $gameSystem.approvals[actor.actorId()]

in the "Status 1 Eval" parameter, and find a suitable location for it, it shows each party members' approval rating near their picture. This has a couple of advantages: firstly, the player sees the approval ratings as soon as they bring the main menu up, all on the same screen; secondly, you don't need a range of variables to shadow the approvals array, which is useful if the player selects a party from a wide choice.

I need to play around with the formatting, but will be looking to implement this on the project. Don't know whether this is my imagination or whether it is because my computer is old an low spec, but things seem to slow down if I use too many Yanfly plugins, and I am already using their main menu manager and message core.
 

ATT_Turan

Forewarner of the Black Wind
Regular
Joined
Jul 2, 2014
Messages
12,465
Reaction score
10,842
First Language
English
Primarily Uses
RMMV
Simply including plugins isn't going to do anything to your project/game. What you do with them can certainly cause lag, like having lots of events with event chase codes on them.

But just having Yanfly plugins can't make your game slow down. Good luck with your project!
 

Latest Posts

Latest Profile Posts

Kes
You have no idea how much time I spent last night trying to get a Santa hat to fit on my avatar's head. Failure. Head's too small.
I realized recently since my game is still a turn based game, that something like the card game Yomi is a lot closer to what I should try to aim for combat wise. Should also help for those who don't really play fighting games to make things a bit easier to understand. ugh the struggles of trying to show love for my 2 favorite genres in 1 go lol.
Did a bit of work on the chemistry tiles I want.

Hey There!


QPcure.png

My next plugin will be: "Dynamic Temperature Stats"

Now you might be wondering... What does it do?

Well, it's a fascinating plugin that adds a body temperature mechanic to characters.

(MORE INFO ⬇️)
Holy crap, it's cold. Our heat went out this morning and the repair guy won't get the part needed to fix it at least until tomorrow. Had to be now of all times, when we have stuff to do all week and it's the coldest night of November so far.

Forum statistics

Threads
136,562
Messages
1,267,592
Members
180,244
Latest member
buttermequeasy334
Top