MV - SRPG Engine MV - Plugins for creating Tactical Battle System

● ARCHIVED · READ-ONLY
Started by RyanBram 3313 posts Page 125 of 166 View original ↗
  1. rpgmakerxp said:
    how do we "remove" units? like retreating after reaching a specific point, teleporting out, etc. enemy or ally
    The easy way is to "kill" the unit (I used gainHp(-9999) when they reach a specific point. If you dont like this method, then you can manually remove the unit from $gameSystem._EventToUnit, $gameSystem._srpgAllActors and then erase the event ($gameMap.event(eventId).erase())

    As for making an event to remove such units, the easiest way is to make a "vanishing point" event, have it set to <type:afterAction> and then check if an srpgUnit is standing on top of it (same X and Y coordinates)

    example:
    for (var i = 0; i < $gameMap.eventsXy($gameMap._events[this._eventId].posX(), $gameMap._events[this._eventId].posY()).length; i++) {
    if ($gameMap.eventsXy($gameMap._events[this._eventId].posX(), $gameMap._events[this._eventId].posY()).eventId() !== this._eventId) {
    if ($gameSystem.isSRPGMode()) {
    if ($gameMap.eventsXy($gameMap._events[this._eventId].posX(), $gameMap._events[this._eventId].posY()).isType() == "enemy") {
    $gameSystem._EventToUnit[$gameMap.eventsXy($gameMap._events[this._eventId].posX(), $gameMap._events[this._eventId].posY()).eventId()][1].gainHp(-9999);
    $gameSystem._EventToUnit[$gameMap.eventsXy($gameMap._events[this._eventId].posX(), $gameMap._events[this._eventId].posY()).eventId()][1].event().erase()
    }
    }
    }
    }
  2. hello.
    How do I make a skill that targets all adjacent allies?
    I'd like to set the number of targets for skills that reactivate allies to 4.
  3. TheLastYuriSamurai said:
    I tried searching the forum and this thread, but is there a known compatibility issue with yanfly/other plugin makers menu plugins? From what I see the plugins seem to override the menu on the battle maps as well, making the plugin unusable. I plan to commission a menu script regardless, but was curious if anyone has ever had a workaround.
    I ran into the same problem as well. I don't know enough about JavaScript editing to fix this issue, so I've been searching for other plugins that don't have compatibility issues. For the most part, I've been able to find plugins that can do what I need them to do that aren't Yanfly-based, but it is definitely a hassle.
  4. Magenta-Fantasies said:
    I ran into the same problem as well. I don't know enough about JavaScript editing to fix this issue, so I've been searching for other plugins that don't have compatibility issues. For the most part, I've been able to find plugins that can do what I need them to do that aren't Yanfly-based, but it is definitely a hassle.
    I've managed to get a simple plugin like Mr T's menu to work, but I'll likely have to commission something that can play nicely with it haha
  5. RyanBram said:
    Introducing
    SRPG-Engine-MV.png
    credits : Gakuto Mikagami, Doctor_Q
    https://github.com/Echizen-ham/SRPGcore
    https://github.com/RyanBram/SRPGcore

    SRPG-MV.jpg

    Hi, everyone.
    Do you like Turn Based Strategy RPG games?
    If so, then I'm also like it so much just like you.

    Therefore, on this occasion, let me introduce a collection of plugins called SRPG_Converter. As the name implies, these plugins will change the RPG Maker MV engine that you have as an editor for Turn Based Strategy genre games like Fire Emblems or Shining Force.

    DOWNLOAD

    The following are the features of these plugins:
    • Provides feature complete of basic SRPG engine. Only one plugin then you can watch your RPG Maker MV turn into a Turn Based Strategy engine;
    • High compatibility with any plugins. There are almost no RPG Maker MV Core function that was altered, so you can still use RPG Maker MV and your favorite plugins as usual;
    • Easy to customize. Every character, weapon, skill, or class can be customized using note tag;
    • Turn based events trigger. Enjoy rich story customization, by choosing any event to trigger at the moments: Start of Battle, Start of Actor Phase, Start of Enemy Phase, End of Turn, Start of Action, and End of Action,
    • Can be extended with extension. If you know can write Javascript plugin, you can easily add features that are not yet available. Let us know if you made public extension;
    • Royalty free for commercial purposes. With the MIT license, anyone can use this plugin without worrying about legal issues. As long as you comply with the provisions of the MIT license, this plugin can be used for any purpose.
    Making the SRPG Engine is a complex thing, even comparable to making a new engine that is equivalent to the RPG Maker MV Core scripts itself. Before I introduce this system to this forum, I am using this plugin internally for my own projects. I don't want to become the only one who get the benefits of this plugin, which become the reason I translated it and share it to this forum.

    New feature:
    • On map battle as part of core plugin.
    • SRPG_AgiAttackPlus, SRPG_UncounterableAttack, and SRPGconverter_with_YEP_BattleEngineCore now become part of core plugin.
    • DynamicAction for performing action sequence in both Sideview battle and Mapview battle.
    • Mouse System as alternative to control your game without using keyboard at all.

    Planned feature:
    • (Please suggest it)
    Since the era of RPG Maker XP, I have never seen a SRPG system that is truly complete. There are at least two possibilities for that: 1) Kadokawa had already made a new version of RPG Maker before the SRPG System was completed, or 2) The creator of the SRPG System was busy or had other interests that caused the project to be abandoned. Then I decided to offer myself to the author by helping him pushing the system forward, because I am afraid I never see this system finish before being abandoned again.
    If you are a Javascript programmer, you can always help by creating extension for this system.

    Best regards
    Ryan

    • Author: Gakuto Mikagami, Doktor_Q, RyanBram
    • Translation: Me (RyanBram)
    • License: MIT
    • Non-commercial use: free
    • Commercial use: free
    • Redistribution: OK
    • Editing: OK
    • Redistribution after editing: OK
    • Series: RPG Maker MV

    Special Thanks:
    • Dopan and Boomy for endless support for the community
  6. RyanBram said:
    is it possible to use this demo to just edit a new game with the assets given within the demo? Also, the demo alone is excellent!
  7. cannot read property agi of undefined ...

    I don't get states like Attracted

  8. is there a mz version
  9. 1663828824071.png
    Been trying to get an AOE Animation plugin to work on my end, one sort of does, but after I used the attack and the enemies move, it gives me this error.

    Edit: I'm a potato. I just needed to update the core plugin
  10. 1663953490113.png

    Allow me to explain my bug:
    I was creating a project and I copied some data from the demo (imgs, js) into it. When I try to start Ch1 or the Feature reference map, this appears. As I have loads of plugins there, i do not exactly where the problem is...


    I MAY HAVE FIND THE PROBLEM IS IN THE CHARSET SIZES... BUT THERE IS NO INFO ABOUT THAT AS FAR AS I KNOW, AND I WONT READ 123 MORE POSTS ON THIS THREAD
    May I ask if there is also an option about bigger characters/enemies?
    I am not asking this quote
    @CharlieMetal said:
    3. Is it possible to create units whose size is bigger than the standard 1 tile?
    I am asking if the sprite could be bigger
  11. I have the same bug by switching to OFF YEP and SRDude Plugins i was using, and i believe the problem is in the charset sizes...
    TypeError: Cannot read property 'width' of undefined
    at Sprite_Character.updateCharacterFrame (SRPG_core.js:3790)
    how can it be solved?
  12. PARCB said:
    I have the same bug by switching to OFF YEP and SRDude Plugins i was using, and i believe the problem is in the charset sizes...
    TypeError: Cannot read property 'width' of undefined
    at Sprite_Character.updateCharacterFrame (SRPG_core.js:3790)
    how can it be solved?
    it probbably means that the img which should be read is not defined..
    what char imgs are you using and which srpg core version (&from which demo came that core) are you using?

    how much frames(default is 3x4) are used ect .. give a few more infos pls
  13. dopan said:
    it probbably means that the img which should be read is not defined..
    what char imgs are you using and which srpg core version are you using?

    how much frames(default is 3x4) are used ect .. give a few more infos pls
    3 columns 4 rows frames, custom images that are bigger than default one.
    SRPG core... i dunno really, i picked the Shoukang 1,32Q demo and started modifying from there. The demo that appears in this thread, not the one of the blog page.

    I had this same problem with RyanBram version too: Once i changed the images from the ones i want to used, the same error bumps off. At first i thought it was due to the appearance of YEP and SRD plugins, but now that i switched off the YEP ones (as it was mention on the game that they had compatibility issues) this error still lingers...

    The error message:
    moreerrorsandbugs.png
    It is obvious from the sprites... but they have been charged correctly as far as i know.
  14. PARCB said:
    3 columns 4 rows frames, custom images that are bigger than default one.
    SRPG core... i dunno really, i picked the Shoukang 1,32Q demo and started modifying from there. The demo that appears in this thread, not the one of the blog page.

    I had this same problem with RyanBram version too: Once i changed the images from the ones i want to used, the same error bumps off. At first i thought it was due to the appearance of YEP and SRD plugins, but now that i switched off the YEP ones (as it was mention on the game that they had compatibility issues) this error still lingers...

    The error message:
    View attachment 241739
    It is obvious from the sprites... but they have been charged correctly as far as i know.
    can you send me one of the sprite-imgs via mail? any is fine its just as example img

    i dont promise that i can solve your problem but ill look into it
  15. RMMVPlugins/SRPG_EnemyLevelTag.js at main · natanmaia95/RMMVPlugins Sharing a quick plugin I made that helped my workflow a lot: setting enemy levels via notetags.
    It works with Eli's Enemy Classes, and *should* work with YEP Enemy Levels but I don't have that one to test. There's a github link and an attached file.
    Hope it's any useful for y'all.
  16. How do I go about adding the critical hit rate into the prediction window? I'm wanting to place "Critical: value" on the bottom right side.

    I've already adjusted the damage value being closer to the text, based on the Hit rate value position code.

    Also, turning Switch 2 on will cause noticeable lag when the event engages a battle transitioning to it. I thought it was something I did wrong on my end, but it's also in the demo (Enable the switch on the Battle Start event, start Chapter 1, just end turn, notice the lag when the enemy gets to you). Switch 2 is named "Battle Skip" in that demo and I use sideview battles.
  17. RK DracoRoy said:
    How do I go about adding the critical hit rate into the prediction window? I'm wanting to place "Critical: value" on the bottom right side.

    I've already adjusted the damage value being closer to the text, based on the Hit rate value position code.

    Also, turning Switch 2 on will cause noticeable lag when the event engages a battle transitioning to it. I thought it was something I did wrong on my end, but it's also in the demo (Enable the switch on the Battle Start event, start Chapter 1, just end turn, notice the lag when the enemy gets to you). Switch 2 is named "Battle Skip" in that demo and I use sideview battles.
    code
    JavaScript:
        Window_SrpgPrediction.prototype.drawContents = function() {
            var windowWidth = this.windowWidth();
            var lineHeight = this.lineHeight();
            var x = 40;
            // attacker
            var actor = this._actionArray[1];
            var target = this._targetArray[1];
            var action = actor.currentAction();
            var damage = action.srpgPredictionDamage(target);
            var hit = action.itemHit(target);
            var eva = action.itemEva(target);
            var cri = action.itemCri(target); // show cri
            this.drawSrpgBattleActionName(actor, action, windowWidth / 2 + x, lineHeight * 0, true);
            this.drawSrpgBattleHit(hit, eva, windowWidth / 2 + x, lineHeight * 1);
            this.drawSrpgBattleCri(cri, windowWidth / 2 + x, lineHeight * 2); // show cri
            this.drawSrpgBattleDistance(actor, action, windowWidth / 2 + 160 + x, lineHeight * 1);
            this.drawSrpgBattleDamage(damage, windowWidth / 2 + x + 160, lineHeight * 2); // show cri
            // target
            var actor = this._targetArray[1];
            var target = this._actionArray[1];
            var action = actor.currentAction();
            if (!this._targetArray[1].canUse(action.item())) {
                action = null;
            }
            if (!action || actor == target) {
                this.drawSrpgBattleActionName(actor, action, x, lineHeight * 0, false);
                return;
            }
            var damage = action.srpgPredictionDamage(target);
            var hit = action.itemHit(target);
            var eva = action.itemEva(target);
            var cri    = action.itemCri(target); // show cri
            this.drawSrpgBattleActionName(actor, action, x, lineHeight * 0, true);
            this.drawSrpgBattleHit(hit, eva, x, lineHeight * 1);
            this.drawSrpgBattleCri(cri, x, lineHeight * 2); // show cri
            this.drawSrpgBattleDistance(actor, action, x + 160, lineHeight * 1);
            this.drawSrpgBattleDamage(damage, x + 160, lineHeight * 2); // show cri
            this._targetArray[1].clearActions();
        };
    
        Window_SrpgPrediction.prototype.drawSrpgBattleActionName = function(actor, action, x, y, flag) {
            if (action && flag == true) {
                var skill = action.item();
                if (skill) {
                    var costWidth = this.costWidth();
                    this.changePaintOpacity(this.isEnabled(actor, skill));
                    if (DataManager.isSkill(skill) && skill.id == actor.attackSkillId() &&
                        !actor.hasNoWeapons()) {
                        if (actor.isActor()) {
                            var item = actor.weapons()[0];
                        } else {
                            var item = $dataWeapons[Number(actor.enemy().meta.srpgWeapon)];
                        }
                        this.drawItemName(item, x + 4, y, 280 - costWidth);
                    } else {
                        this.drawItemName(skill, x + 4, y, 280 - costWidth);
                    }
                    this.drawSkillCost(actor, skill, x, y, 288);
                    this.changePaintOpacity(1);
                    
                    // is attack effective
                    if (actor.isActor()) {
                        if ($gameSystem.EventToUnit($gameTemp.targetEvent().eventId())[1].elementRate($gameSystem.EventToUnit($gameTemp.activeEvent().eventId())[1].currentAction().item().damage.elementId) > 1) {
                            this.drawIcon(73, x - 28, y + 2);
                        } else if ($gameSystem.EventToUnit($gameTemp.targetEvent().eventId())[1].elementRate($gameSystem.EventToUnit($gameTemp.activeEvent().eventId())[1].currentAction().item().damage.elementId) < 1) {
                            this.drawIcon(74, x - 28, y + 2);
                        }
                    } else if (!actor.isActor()) {
                        if ($gameSystem.EventToUnit($gameTemp.activeEvent().eventId())[1].elementRate($gameSystem.EventToUnit($gameTemp.targetEvent().eventId())[1].currentAction().item().damage.elementId) > 1) {
                            this.drawIcon(73, x - 28, y + 2);
                        } else if ($gameSystem.EventToUnit($gameTemp.activeEvent().eventId())[1].elementRate($gameSystem.EventToUnit($gameTemp.targetEvent().eventId())[1].currentAction().item().damage.elementId) < 1) {
                            this.drawIcon(74, x - 28, y + 2);
                        }
                    }
                    
                } else {
                    this.drawText('------------', x + 52, y, 96, 'right');
                }
            } else {
                this.drawText('------------', x + 52, y, 96, 'right');
            }
            
    
        };
  18. @xabileug Thank you for that. Where would I go about putting in a custom name like "Crt" in place of "Hit". I currently have two hits displayed. One for the hit rate, one for the critical hit rate.
  19. just comment out the drawSrpgBattleHit like this
    Code:
    //this.drawSrpgBattleHit(hit, eva, windowWidth / 2 + x, lineHeight * 1);

    then adjust the line display x, y. i've already comment which side of the window is the attacker and the target, so you can edit add stuff you like
  20. Ah. I found one way to do it based on existing hit code. Just had to change the textmanager part to 'Crt: ' and good to go.
    Code:
        Window_SrpgPrediction.prototype.drawSrpgBattleCri = function(cri, x, y) {
            var val = Math.max(0, 1.0 * cri);
            this.changeTextColor(this.systemColor());
            this.drawText('Crt: ', x, y, 98);
            this.resetTextColor();
            this.drawText(Math.floor(val * 100) + '%', x + 32, y, 96, 'right');
        };

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

    Anyone else tested the demo or their project by adding and turning on SwitchId 2 in Chapter 1's Battle Start event? The slight lag is a bit noticeable when you choose to fight the enemy, but very when the enemy touches you in Enemy Phase. Any switch (except SwitchId 2 for some strange reason) can be enabled and the transition to battle goes smoothly.

    Edit:
    Found the line with "$gameSwitches.value(2)" in the Srpg_core where it checks if the 2nd switch is enabled, which causing noticeable lag when beginning the battle transition. So I commented only the first condition out and solved.