Jump to content

substep

Members
  • Posts

    11
  • Joined

  • Last visited

Posts posted by substep

  1. Hello everyone,

     

    I went through most of the SQL files and noticed how atrocious the syntax was and decided to clean it up a bit. Shouldn't have any affect on the actual execution (especially since MySQL supports this new format).

    As most of up know, the current syntax is this for all the sql files:

    REPLACE INTO `mob_db_re` VALUES (1018,'CREAMY','Creamy','Creamy',23,378,1,144,162,1,61,62,28,20,16,1,1,0,1,20,10,12,0,4,24,0x181,150,1136,720,840,0,0,0,0,0,0,0,924,9000,2322,10,518,150,602,100,2207,2,712,500,692,100,0,0,0,0,4040,1);
    

    Ill be changing the mob,item and mob skill db's to this:

    REPLACE INTO `mob_db_re`
           (a,b,c,d,e,f,g,h,i,j,k)
    VALUES (a,b,c,d,e,f,g,h,i,j,k),
           (a,b,c,d,e,f,g,h,i,j,k);
    

    It should work unless there is something I don't know about. Also Ill be adding a lot of whitespace so they all line up nicely in rows and columns in case anyone wants to do some serious editing. Its tedious but it should help everyone out in the long run.

     

    Mob_db_re: 3% complete <- This is a total lie (its more like 1% lol)

    Mob_db2_re: 0%

    Item_db_re: 0%

    Item_db2_re: 0%

    mob_skill_db_re: 0%

    mob_skill_db2_re:0%

    • Upvote 1
  2. Are mob stats affected by this stuff in status.c?

    #ifdef RENEWAL // Renewal formulas
    	if (bl->type == BL_HOM) {
    		// Def2
    		stat = status_get_homvit(bl) + status_get_homagi(bl) / 2;
    		status->def2 = cap_value(stat, 0, SHRT_MAX);
    		// Mdef2
    		stat = (status_get_homvit(bl) + status_get_homint(bl)) / 2;
    		status->mdef2 = cap_value(stat, 0, SHRT_MAX);
    		// Def
    		stat = status->def;
    		stat += status_get_homvit(bl) + level / 2;
    		status->def = cap_value(stat, 0, SHRT_MAX);
    		// Mdef
    		stat = (int)(((float)status_get_homvit(bl) + level) / 4 + (float)status_get_homint(bl) / 2);
    		status->mdef = cap_value(stat, 0, SHRT_MAX);
    		// Hit
    		stat = level + status->dex + 150;
    		status->hit = cap_value(stat, 1, SHRT_MAX);
    		// Flee
    		stat = level + status_get_homagi(bl);
    		status->flee = cap_value(stat, 1, SHRT_MAX);
    		// Atk
    		stat = (status_get_homstr(bl) + status_get_homdex(bl)) / 5;
    		status->rhw.atk = cap_value(stat, 0, SHRT_MAX);
    		// Atk2
    		stat = (status_get_homluk(bl) + status_get_homstr(bl) + status_get_homdex(bl)) / 3;
    		status->rhw.atk2 = cap_value(stat, 0, SHRT_MAX);
    	} else {
    		// Hit
    		stat = status->hit;
    		stat += level + status->dex + (bl->type == BL_PC ? status->luk / 3 + 175 : 150); //base level + ( every 1 dex = +1 hit ) + (every 3 luk = +1 hit) + 175
    		status->hit = cap_value(stat, 1, SHRT_MAX);
    		// Flee
    		stat = status->flee;
    		stat += level + status->agi + (bl->type == BL_MER ? 0 : bl->type == BL_PC ? status->luk / 5 : 0) + 100; //base level + ( every 1 agi = +1 flee ) + (every 5 luk = +1 flee) + 100
    		status->flee = cap_value(stat, 1, SHRT_MAX);
    		// Def2
    		if (bl->type == BL_MER)
    			stat = (int)(status->vit + ((float)level / 10) + ((float)status->vit / 5));
    		else {
    			stat = status->def2;
    			stat += (int)(((float)level + status->vit) / 2 + (bl->type == BL_PC ? ((float)status->agi / 5) : 0)); //base level + (every 2 vit = +1 def) + (every 5 agi = +1 def)
    		}
    		status->def2 = cap_value(stat, 0, SHRT_MAX);
    		// Mdef2
    		if (bl->type == BL_MER)
    			stat = (int)(((float)level / 10) + ((float)status->int_ / 5));
    		else {
    			stat = status->mdef2;
    			stat += (int)(bl->type == BL_PC ? (status->int_ + ((float)level / 4) + ((float)(status->dex + status->vit) / 5)) : ((float)(status->int_ + level) / 4)); //(every 4 base level = +1 mdef) + (every 1 int = +1 mdef) + (every 5 dex = +1 mdef) + (every 5 vit = +1 mdef)
    		}
    		status->mdef2 = cap_value(stat, 0, SHRT_MAX);
    	}
    	status->matk_min = status->matk_max = status_base_matk(bl, status, level);
    #else
    	// Matk
    	status->matk_min = status_base_matk_min(status);
    	status->matk_max = status_base_matk_max(status);
    	// Hit
    	stat = status->hit;
    	stat += level + status->dex;
    	status->hit = cap_value(stat, 1, SHRT_MAX);
    	// Flee
    	stat = status->flee;
    	stat += level + status->agi;
    	status->flee = cap_value(stat, 1, SHRT_MAX);
    	// Def2
    	stat = status->def2;
    	stat += status->vit;
    	status->def2 = cap_value(stat, 0, SHRT_MAX);
    	// Mdef2
    	stat = status->mdef2;
    	stat += status->int_ + (status->vit>>1);
    	status->mdef2 = cap_value(stat, 0, SHRT_MAX);
    #endif
    

    I mean i get that it checks for the bl type but i was just wondering if editing these fomulas affected mob stats as well

  3. I cant see it being a source issue. The core devs are pretty on point with it. 9 times out of 10 its an issue with the something we did or didn't do.

     

    Actually before you get into data files check this file rathena/db/homun_skill_tree.txt (forgot that was there lol). cross check it with this https://github.com/rathena/rathena/blob/master/db/homun_skill_tree.txt

     

    if its the same as that link then keep reading the rest of the post (unless you want the new laggy prontera haha) if its not the same then copy n paste n see if it fixes your problem

     

    Something like this though might have something to do with your grf files. I know that their are tons of different data folders out there (I use this from hercules https://github.com/ROClientSide/Translation- its pretty up to date but there are some translation issues like the item menu).

     

    Back-up the grf file you have now (just change the name to this <your_grf_name>.grf.bak) and create a new grf with that data folder and see if it fixes the problem. Just dont go to prontera, if you use that grf folder you need the fix for new prontera - just add this to i think the data.grf (its either data.grf or rdata.grf whichever holds the prt map files)

     

    https://rathena.org/board/topic/100726-new-prontera-client-crash/

  4. cuz your vani wants to fly -.-

     

    Jk, check the luas in your grf file, see if they are correct if not change it

     

    Also check to see if your sprites and stuff arent mixed up either. If could actually be a fillir and not a vani 

  5. Err check your map flags, see if there is anything for that particular map. If not, check the map server cmd and see if any errors are thrown.

     

    It could also be something you diffed into the client (I know if you dont diff certain things the client bugs out). Like if you diff in to ignore sprite/act files and your grf is not updated to support different colors for hair/clothes the client wont crash but nothing will change.

     

    Worst case scenario pm a contributor like judas or a forum mod with some screenshots and they should be able to tell you the problem

  6. Just as the title says, I want to mod the ASPD% that berserk gives. Currently it just max's out atk speed instead of giving +30% aspd (should be the same as 2h quicken). Where exactly is it defined in source?

  7. Just as the title says, I want to cap the max crit rate to a certain percentage but with a catch. How do I cap the crit rate so that it doesn't affect cards?

     

    For example: Max crit is 30% (achievable through stats alone) then a card adds 10% to crit so that its now 40%.

     

    I know that there is this:

     

    // Critical adjustment rate for non-players (Note 2)
    mob_critical_rate: 100
    critical_rate: 100
     
    but there isnt much of a description lol
     
    EDIT: Also, is it possible to put a soft cap on aspd as well? 
     
    EDIT2: nvm, I decided to quit being lazy for a few minutes and just modded the source
×
×
  • Create New...