Jump to content

Playtester

Developer
  • Posts

    816
  • Joined

  • Last visited

  • Days Won

    22

Posts posted by Playtester

  1. 22 hours ago, skymia said:

    how to make this only for 4-5 secs

    Well the resist does not affect the base duration which is different for each skill. But if you want 12 seconds to be reduced to 4-5 seconds then try:

    		case SC_FREEZE:
    			sc_def = status->mdef*100;
    			sc_def2 = status->luk*10 + status_get_lv(bl)*10 - status_get_lv(src)*10;
    			tick_def = 6000 + status->mdef*40;
    			tick_def2 = status_src->luk*-10; // Caster can increase final duration with luk
    			break;

     

    • Upvote 1
  2. I'm not sure why you would want that. Freeze would be useless if it only lasted 2 seconds and also makes spells like Storm Gust abusable, BUT if you really insist then find this in status.cpp:

    		case SC_FREEZE:
    			sc_def = status->mdef*100;
    			sc_def2 = status->luk*10 + status_get_lv(bl)*10 - status_get_lv(src)*10;
    			tick_def2 = status_src->luk*-10; // Caster can increase final duration with luk
    			break;

    And change it to:

    		case SC_FREEZE:
    			sc_def = status->mdef*100;
    			sc_def2 = status->luk*10 + status_get_lv(bl)*10 - status_get_lv(src)*10;
    			tick_def = 8000 + status->mdef*20;
    			tick_def2 = status_src->luk*-10; // Caster can increase final duration with luk
    			break;

    That way all Freeze durations are reduced by 5 times, but you still maintain same immunity and other behavior.

    • Upvote 1
  3. 		case SC_STONE:
    			sc_def = status->mdef*100;
    			sc_def2 = status->luk*10 + status_get_lv(bl)*10 - status_get_lv(src)*10;
    			tick_def = status->luk*32;
    			tick_def2 = 0;
    			break;

    Are you sure it's always 15 seconds? I'd think it would be 5 seconds minimum because that's the incubation time. I don't really know of an easy way to reduce incubation time because that's skill-specific and works on timers. Would require quite some rewriting. But that second phase of stone where you can't move anymore should actually be over after 100ms if you have 320 LUK.

  4. Well if you want to do it properly and only want to change the duration and nothing else, then you have to do the math.

    How much % reduction should each point in LUK give so that at 320 LUK, you have 100% resist?

    100%/320 = 0.3125%

    Unfortunately that's an odd number the program can't properly work with in its current state. You could give 0.31% reduction per LUK, then at 320 LUK you'd have 320*0.31% = 99.2% reduction.

    So for example for freeze, you could put something like:

    		case SC_FREEZE:
    			sc_def = status->mdef*100;
    			sc_def2 = status->luk*10 + status_get_lv(bl)*10 - status_get_lv(src)*10;
    			tick_def = status->luk*31;
    			tick_def2 = 0;
    			break;

    See the luk*31? There I define that each point in LUK should reduce the duration by 0.31%.

    Keep in mind that MDEF will now only reduce the chance but not the duration anymore.

    • Like 1
  5. Sounds like MAX_LEVEL is still 175. Might be an issue with how you compile, but it's hard for me to see what's wrong.

    For starters, try to change the error message and see if it actually changes your output, e.g.:

    ShowError("pc_readdb_job_exp: Invalid maxlevel %d specified. MAX_LEVEL=%d\n", maxlvl, MAX_LEVEL);

    Then, when you start it and the error message is still the same, then you know that it didn't actually recompile your sources at all.

  6. Can't find an error on first look, try to debug in pc.c:

    	maxlvl = atoi(fields[0]);
    	if(maxlvl > MAX_LEVEL || maxlvl<1){
    		ShowError("pc_readdb_job_exp: Invalid maxlevel %d specified.\n", maxlvl);
    		return false;
    	}

    As you can see, it just reads the first column in the file (255) then compared it with MAX_LEVEL. So it seems "maxlvl > MAX_LEVEL" is true. The only reason for that can be that MAX_LEVEL is not set to 255.

×
×
  • Create New...