Jump to content
  • 0

MvP have Endure


iraciz

Question


  • Group:  Members
  • Topic Count:  140
  • Topics Per Day:  0.03
  • Content Count:  562
  • Reputation:   108
  • Joined:  10/05/12
  • Last Seen:  

please I need help

MvPs are currently not stoping the whole damage animation

 

it looks like they have endure forever, or even worst, they come at you even faster with each hit

 

for example sniping an Atroce or a Valkyria, Kasa, salamander mobs like mvp or minibosses

won´t stop  the enemies.

 

look this

 

http://www.youtube.com/watch?v=Hw5XXsRdpm8

 

show me a way t change this in to the one before

 

 

 

Link to comment
Share on other sites

11 answers to this question

Recommended Posts


  • Group:  Members
  • Topic Count:  140
  • Topics Per Day:  0.03
  • Content Count:  562
  • Reputation:   108
  • Joined:  10/05/12
  • Last Seen:  

i believe that maybe some changes in the source can give the result you want but idk how to do it. 

 

Thanks!!! 

 

After weeks browsing and trying to find how to revert this! anyone could give me a concrete answer..

 

All I got from the people was.... like

 

"uhh dude, download another client",   "this is not working anymore"    "I all the time knew that mvps  can never stop"

or similar douchebaggery

it seems like nobody here has ever played ragnarok.

 

 

that was my question, and the video below before

as you can be witness watching this video, you can appreciate how this monster

valkyrie still chasing me, even while recieving damage from a blitz beal lvl 30 as  nothing.

then a barrage of double straffing, and same thing. she came after me like a big deal.

 

BUT

Finally I could turn off the hitlock of mvps and minibosses,

 

I made some changes in some lines inside the file       src/map/status.c  

                                                                      and         src/map/unit.c

 

this is how it works after the compilation.

you can see, same valkyrie, and is not a complete hitlock, she still approaching at my char. as you can see.

I was expecting this, and i solved that by myself. if someone likie this change, feel free to askme how to do it.

Edited by iraciz
  • Upvote 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  140
  • Topics Per Day:  0.03
  • Content Count:  562
  • Reputation:   108
  • Joined:  10/05/12
  • Last Seen:  

Updating solution for newer revisions, (remember this mod is intended for pre-re servers who miss the ancient hitlock for bosses)

scr/map/status.c

line 7681:

Original Source:

	/// It has been confirmed on official servers that MvP mobs have no dmotion even without endure
	if( bl->type == BL_MOB && status_get_class_(bl) == CLASS_BOSS )
		return 0;
	if (bl->type == BL_PC && ((TBL_PC *)bl)->special_state.no_walk_delay)
		return 0;
	if( sc->data[SC_ENDURE] || sc->data[SC_RUN] || sc->data[SC_WUGDASH] )
		return 0;

	return (unsigned short)cap_value(dmotion,0,USHRT_MAX);
}

Must Change To:

	/// It has been confirmed on official servers that MvP mobs have no dmotion even without endure
	
	//if( bl->type == BL_MOB && status_get_class_(bl) == CLASS_BOSS )
	
	//return 0;
	if (bl->type == BL_PC && ((TBL_PC *)bl)->special_state.no_walk_delay)
		return 0;
	if( sc->data[SC_ENDURE] || sc->data[SC_RUN] || sc->data[SC_WUGDASH] )
		return 0;

	return (unsigned short)cap_value(dmotion,0,USHRT_MAX);
}

 

and scr/map/unit.c

original:

/**
 * Applies a walk delay to a unit
 * @param bl: Object to apply walk delay to
 * @param tick: Current tick
 * @param delay: Amount of time to set walk delay
 * @param type: Type of delay
 *	0: Damage induced delay; Do not change previous delay
 *	1: Skill induced delay; Walk delay can only be increased, not decreased
 * @return Success(1); Fail(0);
 */
int unit_set_walkdelay(struct block_list *bl, t_tick tick, t_tick delay, int type)
{
	struct unit_data *ud = unit_bl2ud(bl);

	if (delay <= 0 || !ud)
		return 0;

	if (type) {
		//Bosses can ignore skill induced walkdelay (but not damage induced)
		if(bl->type == BL_MOB && status_has_mode(status_get_status_data(bl),MD_STATUS_IMMUNE))
			return 0;
		//Make sure walk delay is not decreased
		if (DIFF_TICK(ud->canmove_tick, tick+delay) > 0)
			return 0;
	} else {
		// Don't set walk delays when already trapped.
		if (!unit_can_move(bl)) {
			unit_stop_walking(bl,4); //Unit might still be moving even though it can't move
			return 0;
		}
		//Immune to being stopped for double the flinch time
		if (DIFF_TICK(ud->canmove_tick, tick-delay) > 0)
			return 0;
	}

	ud->canmove_tick = tick + delay;

	if (ud->walktimer != INVALID_TIMER) { // Stop walking, if chasing, readjust timers.
		if (delay == 1) // Minimal delay (walk-delay) disabled. Just stop walking.
			unit_stop_walking(bl,0);
		else {
			// Resume running after can move again [Kevin]
			if(ud->state.running)
				add_timer(ud->canmove_tick, unit_resume_running, bl->id, (intptr_t)ud);
			else {
				unit_stop_walking(bl,4);

				if(ud->target)
					add_timer(ud->canmove_tick+1, unit_walktobl_sub, bl->id, ud->target);
			}
		}
	}

	return 1;
}

replace original with:

/**
 * Applies a walk delay to a unit
 * @param bl: Object to apply walk delay to
 * @param tick: Current tick
 * @param delay: Amount of time to set walk delay
 * @param type: Type of delay
 *	0: Damage induced delay; Do not change previous delay
 *	1: Skill induced delay; Walk delay can only be increased, not decreased
 * @return Success(1); Fail(0);
 */
int unit_set_walkdelay(struct block_list *bl, t_tick tick, t_tick delay, int type)
{
	struct unit_data *ud = unit_bl2ud(bl);

	if (delay <= 0 || !ud)
		return 0;
	
	ud->canmove_tick = tick + delay;

	if (ud->walktimer != INVALID_TIMER) { // Stop walking, if chasing, readjust timers.
		if (delay == 1) // Minimal delay (walk-delay) disabled. Just stop walking.
			unit_stop_walking(bl,0);
		else {
			// Resume running after can move again [Kevin]
			if(ud->state.running)
				add_timer(ud->canmove_tick, unit_resume_running, bl->id, (intptr_t)ud);
			else {
				unit_stop_walking(bl,4);

				if(ud->target)
					add_timer(ud->canmove_tick+1, unit_walktobl_sub, bl->id, ud->target);
			}
		}
	}

	return 1;
}

 

now go to rAthena/conf/battle/monster.conf

// Monster damage delay rate (Note 1)
// Setting to no/0 is like they always have endure.
monster_damage_delay_rate: 100

Default is 100, if you want them to stop with mor difficult change delay rate to 50.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  52
  • Topics Per Day:  0.01
  • Content Count:  185
  • Reputation:   20
  • Joined:  01/06/13
  • Last Seen:  

sry for ask but isnt that normal? i remember the endure since the rebalance after the trans classes be implemented. /hmm

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  140
  • Topics Per Day:  0.03
  • Content Count:  562
  • Reputation:   108
  • Joined:  10/05/12
  • Last Seen:  

I need to change that because my server in runing pre renewal mode

and  I did not implement third classes

 

I dont want to use other client,

there must be something I can change  in the source

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  11
  • Topics Per Day:  0.00
  • Content Count:  115
  • Reputation:   4
  • Joined:  10/25/12
  • Last Seen:  

yeap... thats rA sir...

I think you used to be the other emulator user... eg: 3ceam, eA, etc...

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  52
  • Topics Per Day:  0.01
  • Content Count:  185
  • Reputation:   20
  • Joined:  01/06/13
  • Last Seen:  

i believe that maybe some changes in the source can give the result you want but idk how to do it. 

 

in the mob_db its probably the mode used for bosses but change that will also affect other bonuses like alice and abyssmal knight cards.

 

as i said thats an old setting from the rebalance after the trans classes and way before the renewal be implemented.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  43
  • Topics Per Day:  0.01
  • Content Count:  400
  • Reputation:   5
  • Joined:  12/05/11
  • Last Seen:  

i solved that by myself. if someone likie this change, feel free to askme how to do it.

 

May I know how to do it? I'm using Pre-Re and having this problem also.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  140
  • Topics Per Day:  0.03
  • Content Count:  562
  • Reputation:   108
  • Joined:  10/05/12
  • Last Seen:  

you have to follow this steps

 

save a copy off status.c and unit.c

to cover your ass, just in case you mess up your source!

or either if you want perma endure back!

 

 

go first to   src/map/status.c

 

 

pasito1.png
 
EDIT THE TEXT it have  to look like this:

 

 

    /**
     * It has been confirmed on official servers that MvP mobs have no dmotion even without endure
     **/
    if( sc->data[sC_ENDURE] )
        return 0;
 
Then go to   src/map/unit.c
 
Edit  the line
pasito2.png
 
delete all the text inside the green, 
It should end like this:
sinttuloigb.png
 
 
    struct unit_data *ud = unit_bl2ud(bl);
    if (delay <= 0 || !ud) return 0;
 
 
    if (type) {
        if (DIFF_TICK(ud->canmove_tick, tick+delay) > 0)
            return 0;
 
 
recompile, and enjoy your no perma endure.
Edited by iraciz
  • Upvote 1
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  43
  • Topics Per Day:  0.01
  • Content Count:  400
  • Reputation:   5
  • Joined:  12/05/11
  • Last Seen:  

Then go to   src/map/status.c

 

Edit  the line

pasito2.png

 

delete all the text inside the green, 

It should end like this:

sinttuloigb.png

 

 

    struct unit_data *ud = unit_bl2ud(bl);

    if (delay <= 0 || !ud) return 0;

 

 

    if (type) {

        if (DIFF_TICK(ud->canmove_tick, tick+delay) > 0)

            return 0;

 

That should be in src/map/unit.c right?

 

Btw, I did saw a changes about MVP walk delay. Thank you so much.

Edited by uDe
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  140
  • Topics Per Day:  0.03
  • Content Count:  562
  • Reputation:   108
  • Joined:  10/05/12
  • Last Seen:  

you are welcome

Link to comment
Share on other sites


  • Group:  Developer
  • Topic Count:  35
  • Topics Per Day:  0.01
  • Content Count:  815
  • Reputation:   236
  • Joined:  01/30/13
  • Last Seen:  

The behavior in rAthena is actually pretty different from the official behavior. On official servers there is nothing like a walk delay at all, but monsters are still fairly easy to stop because if you hit them, they will be put back on the closest cell. Walking speed is an important factor for hitlocking on officials, while in rAthena it doesn't matter much at all and rather depends on the damage motion duration.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...