MV - TouchDamage(true) Chrono engine problem

● ARCHIVED · READ-ONLY
Started by clownnn 7 posts View original ↗
  1. Hey guys, when i died to this.act(skillId) my leader change to another member party, but when i died to touchdamage, the game doesnt change and i cant controll any member. Do you know some easy fix for touchdamage problem?
  2. I'm out right now phoneposting but I have a patch for this on my home PC. I'll post in a bit.

    Could you save this in a plugin file, place it after Chrono Engine and let me know if it works?
    Code:
    //add death for touch damage
    Game_Chrono.prototype.executeTouchDamage = function(user,target) {
        if (target.battler()._ras.collisionD > 0) {return};
        if (this.isGuardingDirectionTouch(user,target)) {
            this.executeGuardTouch(user,target);
            return
        };
    
        var subject = user.battler();
        var action = new Game_Action(subject);
        action.setAbsSubject(subject)
        var oldHP = target.battler()._hp;   
        var coop = [];
        var skillId = user.battler().attackSkillId();
        action.setSkill(skillId);
        action.applyCN(target.battler(),coop);
        target.battler().startDamagePopup();   
        target.battler()._ras.collisionD = 30;
        if (oldHP > target.battler()._hp) {
        //edit: dead actor script   
            if (target.battler().isDead()) {
                char= target; battler = target.battler();
                    battler._ras.charge.time = 0;
                    battler._ras.charge.time2 = 0;
                    battler._ras.charge.charging = false;   
            if (battler._ras.hookshotUser[0]) {
            $gameSystem._toolHookshotSprite = [null,null,0];
            };
            if (!$gameSystem.isChronoMode()) {
                if ($gameParty.leader()._actorId === battler._actorId) {
                    $gameChrono.selectNextActor();
                    if ($gameParty.leader().isDead()) {this.prepareGameOver(char,battler)};
                    if (Imported.MOG_PartyHud) {$gameSystem._partyHudData[1] = true}; 
            };
        }; 
    }
            this.executeTouchTouchAfterHit(user,target,skillId);
        };
    };
  3. AquaEcho said:
    I'm out right now phoneposting but I have a patch for this on my home PC. I'll post in a bit.

    Could you save this in a plugin file, place it after Chrono Engine and let me know if it works?
    Code:
    //add death for touch damage
    Game_Chrono.prototype.executeTouchDamage = function(user,target) {
        if (target.battler()._ras.collisionD > 0) {return};
        if (this.isGuardingDirectionTouch(user,target)) {
            this.executeGuardTouch(user,target);
            return
        };
    
        var subject = user.battler();
        var action = new Game_Action(subject);
        action.setAbsSubject(subject)
        var oldHP = target.battler()._hp;  
        var coop = [];
        var skillId = user.battler().attackSkillId();
        action.setSkill(skillId);
        action.applyCN(target.battler(),coop);
        target.battler().startDamagePopup();  
        target.battler()._ras.collisionD = 30;
        if (oldHP > target.battler()._hp) {
        //edit: dead actor script  
            if (target.battler().isDead()) {
                char= target; battler = target.battler();
                    battler._ras.charge.time = 0;
                    battler._ras.charge.time2 = 0;
                    battler._ras.charge.charging = false;  
            if (battler._ras.hookshotUser[0]) {
            $gameSystem._toolHookshotSprite = [null,null,0];
            };
            if (!$gameSystem.isChronoMode()) {
                if ($gameParty.leader()._actorId === battler._actorId) {
                    $gameChrono.selectNextActor();
                    if ($gameParty.leader().isDead()) {this.prepareGameOver(char,battler)};
                    if (Imported.MOG_PartyHud) {$gameSystem._partyHudData[1] = true};
            };
        };
    }
            this.executeTouchTouchAfterHit(user,target,skillId);
        };
    };
    Should i save this in the chronoEngine main plugin file?
  4. clownnn said:
    Should i save this in the chronoEngine main plugin file?
    Technically it would work if you paste it at the end but it's better practice to have patches in a separate plugin file so you keep the original intact and can easily turn it on or off in the plugin manager for troubleshooting.
  5. Hello,
    Thank you for the patch
    I tested this script and i think there is a few issues:
    - (follower active) When the first actor dies , the death icon will be shown on the next actor until you openand close the menu or refresh somehow then it will be shown on the dead body
    1740406288088.png
    - also you can move with a dead body behind you , is there a way to make it disappear when it s dead ?

    - when Game Over i got this error
    1740406558036.png
    i changed that line and it works but i dont know if it is the best option or not.
    1740406646205.png


    AquaEcho said:
    I'm out right now phoneposting but I have a patch for this on my home PC. I'll post in a bit.

    Could you save this in a plugin file, place it after Chrono Engine and let me know if it works?
    Code:
    //add death for touch damage
    Game_Chrono.prototype.executeTouchDamage = function(user,target) {
        if (target.battler()._ras.collisionD > 0) {return};
        if (this.isGuardingDirectionTouch(user,target)) {
            this.executeGuardTouch(user,target);
            return
        };
    
        var subject = user.battler();
        var action = new Game_Action(subject);
        action.setAbsSubject(subject)
        var oldHP = target.battler()._hp;  
        var coop = [];
        var skillId = user.battler().attackSkillId();
        action.setSkill(skillId);
        action.applyCN(target.battler(),coop);
        target.battler().startDamagePopup();  
        target.battler()._ras.collisionD = 30;
        if (oldHP > target.battler()._hp) {
        //edit: dead actor script  
            if (target.battler().isDead()) {
                char= target; battler = target.battler();
                    battler._ras.charge.time = 0;
                    battler._ras.charge.time2 = 0;
                    battler._ras.charge.charging = false;  
            if (battler._ras.hookshotUser[0]) {
            $gameSystem._toolHookshotSprite = [null,null,0];
            };
            if (!$gameSystem.isChronoMode()) {
                if ($gameParty.leader()._actorId === battler._actorId) {
                    $gameChrono.selectNextActor();
                    if ($gameParty.leader().isDead()) {this.prepareGameOver(char,battler)};
                    if (Imported.MOG_PartyHud) {$gameSystem._partyHudData[1] = true};
            };
        };
    }
            this.executeTouchTouchAfterHit(user,target,skillId);
        };
    };
  6. you can use some event to check if someone died, and if died, you can call a function stop follow , but this have to be in your script, but how do you pretend to take your friend back?
    edit: i didnt use this death part too.
  7. I'd have to look up the script call but I would just set that follower's opacity to 0 on death. You would have to set their opacity to 255 again when you revive them and I'm not sure if it carries across map transfers

    As for the death icon, you're probably going to have to force a map refresh like the one that happens when you open and close the menu scene. I can't look up the exact script call but it's something like Goto.SceneMap

    Actually if you change the dead actor's image to a ghost or a blank image on death it might force a refresh on the state icon and solve both problems