Hello,
I want to create an item that levels up a party member of your choosing upon its usage. I know that there exists a way to increase the level of your entire party, and that there are scripts to make an item like that, but I want to have an item that can boost the level of ANY party member, and the only scripts I can find are created for MV. Does anyone know a way I can make this item?
tl;dr I'm trying to make an item that levels up one party member that you choose, but I can't find any way to do that.
Creating A "Level Up" Item
● ARCHIVED · READ-ONLY
-
-
You could do this via the damage formula of the item but that will make it fall under the restrictions of skill use of the different damage types (like u cant use an HP Recover damage type item on someone with full hp)
Anyway, you can use my script here
https://lescripts.wordpress.com/rgss3/skillitem-apply-extension-v1-00/
To set rgss codes that will run when you use the item -
Create common event:
#1 - set variable to script - $gameParty._targetActorId
#2 - Change Level of actor - select created earlier variable
Create consumable item and in effect panel select COMMON EVENT - event created earlier. -
Create common event:
#1 - set variable to script - $gameParty._targetActorId
#2 - Change Level of actor - select created earlier variable
Create consumable item and in effect panel select COMMON EVENT - event created earlier.
do you know of the Ace equivalent of that? This post is in Ace, not MV :) -
Nope, but I'll check it in a moment.
-
I see, that would be nice. I always thought we can not get the target in the common event. :)
PS: does it work in other cases like skills used in combat? or is it just for items used in the menu? Im not with my RM rn so I cant check -
It works everywhere, anyway, my, more complex Tome of Levelup works, both ingame, inbattle, inmenu.
-
I think you could do $game_party.target_actor, but I haven't checked.
-
Here is how you do it.
The problem with levelling up with an item is that of knowing who to apply the item to.
First, in the item’s damage formula (changing the 250 to the ID of the variable you are using) put:
$game_variables[250] = b.id; 0
Also have it call a common event.
Set it to certain hit, zero variance.
In the common event use the ‘Change level’ command from the Event Command menu.
For Actor select ‘variable’ and then select the variable you have used in the damage formula.
Choose how many levels.
Done -
Actually, there are some problems with using the damage formula for it because the engine blocks some skill usage depending on damage type. Like if you use a skill/item in the menu, you can't target allies if its set to HP Damage (but its fine in battle which is weird), and you cant use HP Recover if target has full HP. Same for Drain type and the MP equivalents. Take note that these were tested in a base Ace project with no external scripts.
I've checked the Ace equivalent of the target actor thingy that Landazar posted and found it to be
$game_party.target_actor.id if you want to get the actor id id to set for variable use.
Take note though that upon checking the Ace base scripts, $game_party.target_actor is only set/changed if you use the item/skill in the menu because the only class that use/set it is Window_MenuActor while battles use Window_BattleActor and there was no interdependence between the two. So in case the item is usable in battle, it will actually take effect on either the last actor which you targetted in the menu or the party leader if the last actor doesn't exist. -
An even 'silly' answer. Still using damage formula, but why not just like this :p
Code:b.level_up; 0 -
@Engr. Adiktuzmiko In the solution I suggested, there is no damage type, so I don't think it will have the problem you mention. I've used that in 2 games now, without any issue.
@TheoAllen That looks very interesting. Have you tested it? -
There has to be a damage type, otherwise you can't put in a formula. When none the formula box is grayed out.In the solution I suggested, there is no damage type, so I don't think it will have the problem you mention. I've used that in 2 games now, without any issue.
Setting this to HP damage works, except I would want the screen to go back to the item window (using from menu) not the map.
I can fix this by using a script call
SceneManager.call(Scene_Menu)
SceneManager.call(Scene_Item)
But it doesn't go back to the window selection part.
This made all my characters go up a level and the one selected go up a second level.An even 'silly' answer. Still using damage formula, but why not just like this :p
Code:b.level_up; 0 -
Wow, thanks for all the answers!
I've decided to go with @Engr. Adiktuzmiko's script. The only issue is, I'm having some issues figuring out how to make it work. Could I get some more help? -
@Roninator2 Ah, I see what you mean now. I was misunderstanding your point.
Yes, it does go back to the map. That has never bothered me because in my games these items are extremely rare, so going back to the map instead of returning to the Item window wasn't a big deal. -
@Engr. Adiktuzmiko In the solution I suggested, there is no damage type, so I don't think it will have the problem you mention. I've used that in 2 games now, without any issue.
How did you input a damage formula without damage type? The maker blocks off the damage formula if damage type is None.
@andrew - you use the tags given in the script and input b.level_up as a code..
<start_apply_ext>
b.change_level(b.level+1,true)
<end_apply_ext>
Or just follow Landazars flow using the $game_party.target_actor.id instead of $gameParty._targetActorId
@TheoAllen - I find change_level better because it also adjusts the exp of the battler, the level_up method just increases the level without modifying exp
This made all my characters go up a level and the one selected go up a second level.
Thats weird.. level_up is a method in Game_Actor so it should only level the actor defined as the target of the skill/item. -
@Engr. Adiktuzmiko As I mentioned in the post just above yours, in fact it does have HP Damage as the damage type. I had misunderstood what roninator2 had written. The item looks like this.
-
And it runs even if the item is run from the menu? The game wont let me do that, as long as I set it to Damage, it doesnt allow me to choose an ally as target (plays the buzzer sound upon choosing my ally) if I use the item/skill from the menu (but if I test it from battle it works) And thats on a "scriptless" Ace project
@Roninator2 Ah, I see what you mean now. I was misunderstanding your point.
Yes, it does go back to the map. That has never bothered me because in my games these items are extremely rare, so going back to the map instead of returning to the Item window wasn't a big deal.
Thats the post above mine, there's nothing in there about the damage type.. Thats why I still asked in my previous post. -
-
Oh I see now.. It works if there's other effects other than the damage. Like in your case, a common event call.
So there's two possible ways here, one is using the formula, the other using the target_actor object of $game_party (but strictly only for menu use items)
PS: I tried theo's b.level_up and it works fine for me, it only levels the target, except there is the problem of the level_up method not adjusting exp
I also found that if were gonna do everything inside the damage formula, the effect Gain TP 0% is a good placeholder to ensure that the game doesnt block the item usage. It also keeps you inside the menu.
So another possibility to approach this level up, without moving out from the menu is using
Code:or change the +1 to whatever + u needb.change_level(b.level+1,true)
as the damage formula, then add a Gain TP 0% as effect so that the game don't stop the item from being used.
PS: if the 2nd parameter is true though, it only shows the level up message once you go out of the menu, so maybe better leave it false.