Jump to content

  •  

Saruman

Member Since 30 Mar 2014
Offline Last Active Nov 08 2014 11:46 PM
-----

Posts I've Made

In Topic: Status Def

02 November 2014 - 01:58 AM

bump


In Topic: Status Resistance

17 September 2014 - 11:11 PM

Not quite.

What you want is that:

case SC_FREEZE:  sc_def = st->luk*25;  tick_def = 0; //No duration reduction  break;
And:
case SC_STUN:  sc_def = st->vit*50;  tick_def = 0; //No duration reduction  break;
You can remove all the rest of the code for those status changes.

 

thanks, i'll try it.

 

But there's no way to do this outside the source? 


In Topic: Status Resistance

17 September 2014 - 04:19 PM

Depends a bit on what exactly you want.

Status change resistances are quite complex. They work a bit like normal def as in there is a hard def (percentual reduction) and a soft def (linear reduction).
I wrote a guide about them over on RMS:
http://forum.ratemys...-(pre-renewal)/

So, do you just want all status changes to depend only on LUK? Or get reduced by other stats? What should affect the chance? What should affect the duration? Etc.

You can find the relevant source code for the status changes in the link that csnv posted.

Basically if you want to change the basic stats a status change uses, you need to change it for each status change individually, see explanations in the comments of the source code about how sc_def, sc_def2, tick_def and tick_def2 work (10000 sc_def = 100% resistance). It's actually pretty straight forward. For example if you want each LUK to reduce chance and duration of STUN by 0.25% that code would look like this:

	case SC_STUN:		sc_def = st->luk*25;		break;
(Note: You don't need to set tick_def, it automatically uses sc_def if you don't set it.)

Or if you set the sc_def config to 25 instead of 100 then you would write:
	case SC_STUN:		sc_def = st->luk*100;		break;
The config option is applied at the end:
		if (battle_config.pc_sc_def_rate != 100) {			sc_def = sc_def*battle_config.pc_sc_def_rate/100;			sc_def2 = sc_def2*battle_config.pc_sc_def_rate/100;		}
If you leave the source code as it is and just set the config option to 25, then the status changes simply need 4 times higher stats than they usually need. As LUK has a very high effect on the linear reduction, you will probably be immune to any status change much earlier.


Hope it helps. If you explain in detail why you want to change it and how exactly it should work, I could probably help more.

 

 

Thanks for answering

 

I want this: 

 

200 of Vit, the player get 100% resistance of stuning

400 of Luk, the player get 100% resistance of freezing 

 

Is it right?

	case SC_FREEZE:		sc_def = st->luk*25;		sc_def = st->mdef*100;		sc_def2 = st->luk*10 + SCDEF_LVL_DIFF(bl, src, 99, 10);		tick_def = 0; //No duration reduction#ifdef RENEWAL		tick_def2 = status_get_luk(src) * -10; //Caster can increase final duration with luk#else		tick_def2 = 0; //No duration reduction

In Topic: Status Resistance

17 September 2014 - 01:35 AM

Nobody knows how to set this? Wtf

In Topic: Status Resistance

13 September 2014 - 04:09 AM

I think status resistance is depend on vit (ex : stun) and int (ex : silence).

They do not depend on luk.

 

edit :

after checking on irowiki stat calculator:

agi : affect sleep & bleeding (100 agi = 100% resist)

vit : affect poison & stun (100 vit = 100% resist)

int : affect silence (100 int = 100% resist), blind & chaos (100 int = 66% resist)

luk : affect curse (100 luk = 100% resist)

str & dex : do not affect anything

 

 

to give 100% resistance when the player have 400 of LUK (curse resist) :

 

pc_status_def_rate: 25

this will affect player only


mob_status_def_rate: 25

this will affect mobs

 

 

Didn't work :/