* Fixed TaTaMiGaEShi(Improvised Defense) not working.
* Implemented new cooking success formula. Now cooking experience starts at 0.(bugreport:2439) git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13881 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
042688ca7a
commit
a936c021c7
@ -3,6 +3,9 @@ Date Added
|
||||
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
|
||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||
|
||||
09/06/11
|
||||
* Fixed TaTaMiGaEShi(Improvised Defense) not working. [Inkfish]
|
||||
* Implemented new cooking success formula. Now cooking experience starts at 0.(bugreport:2439) [Inkfish]
|
||||
09/06/09
|
||||
* Fixed applying autocasts with negative rate before the positive one made it fail to remove the autocast. [Inkfish]
|
||||
09/06/08
|
||||
|
1
sql-files/upgrade_svn13881.sql
Normal file
1
sql-files/upgrade_svn13881.sql
Normal file
@ -0,0 +1 @@
|
||||
DELETE FROM `global_reg_value` WHERE `str`='COOKING_ATTEMPT';
|
@ -972,7 +972,7 @@ int pc_reg_received(struct map_session_data *sd)
|
||||
sd->kafraPoints = pc_readaccountreg(sd,"#KAFRAPOINTS");
|
||||
|
||||
// Cooking Exp
|
||||
sd->cooking_attempt = pc_readglobalreg(sd,"COOKING_ATTEMPT");
|
||||
sd->cook_mastery = pc_readglobalreg(sd,"COOK_MASTERY");
|
||||
|
||||
if( (sd->class_&MAPID_BASEMASK) == MAPID_TAEKWON )
|
||||
{ // Better check for class rather than skill to prevent "skill resets" from unsetting this
|
||||
@ -6445,10 +6445,10 @@ int pc_setregistry(struct map_session_data *sd,const char *reg,int val,int type)
|
||||
if( i )
|
||||
status_calc_pc(sd,0); // Lost the bonus.
|
||||
}
|
||||
else if( !strcmp(reg,"COOKING_ATTEMPT") && sd->cooking_attempt != val )
|
||||
else if( !strcmp(reg,"COOK_MASTERY") && sd->cook_mastery != val )
|
||||
{
|
||||
val = cap_value(val, 0, 400);
|
||||
sd->cooking_attempt = val;
|
||||
val = cap_value(val, 0, 1999);
|
||||
sd->cook_mastery = val;
|
||||
}
|
||||
sd_reg = sd->save_reg.global;
|
||||
max = &sd->save_reg.global_num;
|
||||
|
@ -177,7 +177,7 @@ struct map_session_data {
|
||||
short skillitem,skillitemlv;
|
||||
short skillid_old,skilllv_old;
|
||||
short skillid_dance,skilllv_dance;
|
||||
short cooking_attempt; // max: 400 [Inkfish]
|
||||
short cook_mastery; // range: [0,1999] [Inkfish]
|
||||
unsigned char blockskill[MAX_SKILL];
|
||||
int cloneskill_id;
|
||||
int menuskill_id, menuskill_val;
|
||||
|
@ -6333,7 +6333,6 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
|
||||
}
|
||||
break;
|
||||
case NJ_SHADOWJUMP:
|
||||
{
|
||||
if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground )
|
||||
{ //You don't move on GVG grounds.
|
||||
unit_movepos(src, x, y, 1, 0);
|
||||
@ -6341,7 +6340,6 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
|
||||
}
|
||||
if (sc && sc->data[SC_HIDING])
|
||||
status_change_end(src, SC_HIDING, -1);
|
||||
}
|
||||
break;
|
||||
case AM_SPHEREMINE:
|
||||
case AM_CANNIBALIZE:
|
||||
@ -10425,17 +10423,6 @@ static int skill_unit_timer_sub (DBKey key, void* data, va_list ap)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case UNT_TATAMIGAESHI:
|
||||
if( unit->range >= 0 )
|
||||
{ //Disable processed cell.
|
||||
unit->range = -1;
|
||||
if (--group->val1 <= 0) // number of live cells
|
||||
{ //All tiles were processed, disable skill.
|
||||
group->target_flag=BCT_NOONE;
|
||||
group->bl_flag= BL_NUL;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -10455,10 +10442,14 @@ static int skill_unit_timer_sub (DBKey key, void* data, va_list ap)
|
||||
if(unit->range == -1) //Unit disabled, but it should not be deleted yet.
|
||||
group->unit_id = UNT_USED_TRAPS;
|
||||
|
||||
if( !unit->alive )
|
||||
if( group->unit_id == UNT_TATAMIGAESHI )
|
||||
{
|
||||
if( dissonance ) skill_dance_switch(unit, 1);
|
||||
return 0;
|
||||
unit->range = -1; //Disable processed cell.
|
||||
if (--group->val1 <= 0) // number of live cells
|
||||
{ //All tiles were processed, disable skill.
|
||||
group->target_flag=BCT_NOONE;
|
||||
group->bl_flag= BL_NUL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -10774,6 +10765,7 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in
|
||||
{
|
||||
int slot[3];
|
||||
int i,sc,ele,idx,equip,wlv,make_per,flag;
|
||||
int num = -1; // exclude the recipe
|
||||
struct status_data *status;
|
||||
|
||||
nullpo_retr(0, sd);
|
||||
@ -10815,6 +10807,7 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in
|
||||
int j,id,x;
|
||||
if( (id=skill_produce_db[idx].mat_id[i]) <= 0 )
|
||||
continue;
|
||||
num++;
|
||||
x=qty*skill_produce_db[idx].mat_amount[i];
|
||||
do{
|
||||
int y=0;
|
||||
@ -10917,12 +10910,14 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in
|
||||
if (sd->menuskill_val >= 15) //Legendary Cooking Set.
|
||||
make_per = 10000; //100% Success
|
||||
else
|
||||
make_per = 1200*(sd->menuskill_val-10) //12% chance per set level.
|
||||
+ 1000 - 500*(skill_produce_db[idx].itemlv-10) //10% - 5% per dish level
|
||||
+ 20*status->dex + 10*status->luk //0.2% per DEX, 0.1% per LUK
|
||||
+ 5*sd->cooking_attempt; //+0.05% per try
|
||||
if( sd->cooking_attempt < 400 )
|
||||
pc_setglobalreg(sd, "COOKING_ATTEMPT", sd->cooking_attempt+1);
|
||||
make_per = 1200 * (sd->menuskill_val - 10)
|
||||
+ 20 * (sd->status.base_level + 1)
|
||||
+ 20 * (status->dex + 1)
|
||||
+ 100 * (rand()%(30+5*(sd->cook_mastery/400) - (6+sd->cook_mastery/80)) + (6+sd->cook_mastery/80))
|
||||
- 400 * (skill_produce_db[idx].itemlv - 11 + 1)
|
||||
- 10 * (100 - status->luk + 1)
|
||||
- 500 * (num - 1)
|
||||
- 100 * (rand()%4 + 1);
|
||||
break;
|
||||
}
|
||||
make_per = 5000;
|
||||
@ -11056,9 +11051,12 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in
|
||||
clif_misceffect(&sd->bl,3);
|
||||
break;
|
||||
default: //Those that don't require a skill?
|
||||
if (skill_produce_db[idx].itemlv>10 &&
|
||||
skill_produce_db[idx].itemlv<= 20) //Cooking items.
|
||||
if( skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20)
|
||||
{ //Cooking items.
|
||||
clif_specialeffect(&sd->bl, 608, AREA);
|
||||
if( sd->cook_mastery < 1999 )
|
||||
pc_setglobalreg(sd, "COOK_MASTERY",sd->cook_mastery + ( 1 << ( (skill_produce_db[idx].itemlv - 11) / 2 ) ) * 5);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -11097,9 +11095,12 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in
|
||||
clif_misceffect(&sd->bl,2);
|
||||
break;
|
||||
default:
|
||||
if (skill_produce_db[idx].itemlv>10 &&
|
||||
skill_produce_db[idx].itemlv<= 20) //Cooking items.
|
||||
if( skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20 )
|
||||
{ //Cooking items.
|
||||
clif_specialeffect(&sd->bl, 609, AREA);
|
||||
if( sd->cook_mastery > 0 )
|
||||
pc_setglobalreg(sd, "COOK_MASTERY", sd->cook_mastery - ( 1 << ((skill_produce_db[idx].itemlv - 11) / 2) ) - ( ( ( 1 << ((skill_produce_db[idx].itemlv - 11) / 2) ) >> 1 ) * 3 ));
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user