Skip to content
Permalink
Browse files
Bug Fixes
* Fixed Main Frame Restructure not giving DEF bonus when wearing Madogear. (bugreport:8863)
* Updated some more damage formulas for Kagerou skills.
* Fixed critical damage bonus from Monster Transformation system.
* Fixed Fire Trap and Ice Trap Burning/Freezing chance.
* Cleaned up the visual effects for Ranger traps.
* Odins Power now decreases DEF/MDEF by 40 at level 2. (bugreport:8869)
* Added skill define for Overbrand's Plus Attack.
* Fixed an issue with Overbrand's pierce damage placement. (bugreport:8856)
* Fixed Unlimit not updating DEF/MDEF on players and increased the cooldown to 5 minutes. (bugreport:8870)
* Few status icon updates.
* Fixed two compile warnings when the VIP system is enabled.
  • Loading branch information
aleos89 committed Apr 4, 2014
1 parent bcf73f5 commit e2d2494e13621221dd5398680ffdf55fee86b972
Showing with 212 additions and 78 deletions.
  1. +3 −1 db/const.txt
  2. +1 −1 db/pre-re/skill_cast_db.txt
  3. +1 −0 db/pre-re/skill_db.txt
  4. +1 −1 db/re/skill_cast_db.txt
  5. +1 −0 db/re/skill_db.txt
  6. +1 −1 src/login/account.h
  7. +5 −5 src/login/login.h
  8. +30 −26 src/map/battle.c
  9. +6 −0 src/map/itemdb.h
  10. +93 −30 src/map/skill.c
  11. +68 −13 src/map/status.c
  12. +2 −0 src/map/status.h
@@ -2486,6 +2486,8 @@ SI_ZONGZI_POUCH_TRANS 777
SI_HEAT_BARREL_AFTER 778
SI_DECORATION_OF_MUSIC 779
SI_OVERSEAEXPUP 780
SI_CLOWN_N_GYPSY_CARD 781
SI_OPEN_NPC_MARKET 782
SI_BEEF_RIB_STEW 783
SI_PORK_RIB_STEW 784
SI_CHUSEOK_MONDAY 785
@@ -2520,7 +2522,7 @@ SI_BS_REPAIRWEAPON_OPERATOR 813
SI_GET_MAILBOX 814
SI_JUMPINGCLAN 815
SI_JP_OTP 816

e_gasp 0
e_what 1
e_ho 2
@@ -1271,7 +1271,7 @@
2254,0,0,0,20000,15000,0

//-- RA_UNLIMIT
5002,1000,500,0,60000,0,240000
5002,1000,500,0,60000,0,250000

This comment has been minimized.

Copy link
@Traxis

Traxis Apr 7, 2014

@aleos89
250000 = 4.16666667 minutes
It should be 300000

This comment has been minimized.

Copy link
@aleos89

aleos89 Apr 9, 2014

Author Contributor

Thanks. I have no clue why I did that. Fixed in 81ca299.

//==========================================

//===== Mechanic ===========================
@@ -1084,6 +1084,7 @@
2324,3,8,1,-1,0,0,5,3,yes,0,0,0,weapon,0,0x0, LG_HESPERUSLIT,Hesperus Lit
2325,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, LG_INSPIRATION,Inspiration
2519,1,6,1,-1,0x2,0,5,1,yes,0,0,0,weapon,3:4:5:6:7,0x0, LG_OVERBRAND_BRANDISH,Overbrand Brandish
2520,1,6,1,-1,0x40,0,5,1,no,0,0,0,weapon,0,0, LG_OVERBRAND_PLUSATK,Overbrand Plus Attack

//****
// SR Sura
@@ -1269,7 +1269,7 @@
//-- RA_ICEBOUNDTRAP
2254,0,0,0,20000,15000,0,-1
//-- RA_UNLIMIT
5002,0,500,0,60000,0,240000,1000
5002,0,500,0,60000,0,250000,1000

This comment has been minimized.

Copy link
@Traxis

Traxis Apr 7, 2014

@aleos89
Same as my previous comment, it should be 300000, not 250000.

This comment has been minimized.

Copy link
@aleos89

aleos89 Apr 9, 2014

Author Contributor

Fixed in 81ca299.

//==========================================

//===== Mechanic ===========================
@@ -1084,6 +1084,7 @@
2324,3,8,1,-1,0,0,5,3,yes,0,0,0,weapon,0,0x0, LG_HESPERUSLIT,Hesperus Lit
2325,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, LG_INSPIRATION,Inspiration
2519,1,6,1,-1,0x2,0,5,1,yes,0,0,0,weapon,3:4:5:6:7,0x0, LG_OVERBRAND_BRANDISH,Overbrand Brandish
2520,1,6,1,-1,0x40,0,5,1,no,0,0,0,weapon,0,0, LG_OVERBRAND_PLUSATK,Overbrand Plus Attack

//****
// SR Sura
@@ -40,7 +40,7 @@ struct mmo_account {
char pass[32+1]; // 23+1 for plaintext, 32+1 for md5-ed passwords
char sex; // gender (M/F/S)
char email[40]; // e-mail (by default: a@a.com)
int group_id; // player group id
unsigned int group_id; // player group id
uint8 char_slots; // this accounts maximum character slots (maximum is limited to MAX_CHARS define in char server)
unsigned int state; // packet 0x006a value + 1 (0: compte OK)
time_t unban_time; // (timestamp): ban time limit of the account (0 = no ban)
@@ -46,18 +46,18 @@ struct login_session_data {
///Struct describing 1 char-serv attach to us
struct mmo_char_server {
char name[20]; ///char-serv name
int fd; ///char-serv socket (well actually file descriptor)
uint32 ip; ///char-serv IP
int fd; ///char-serv socket (well actually file descriptor)
uint32 ip; ///char-serv IP
uint16 port; ///char-serv rt
uint16 users; /// user count on this server
uint16 type; /// 0=normal, 1=maintenance, 2=over 18, 3=paying, 4=P2P
uint16 new_; /// should display as 'new'?
};

struct client_hash_node {
int group_id; ///group
uint8 hash[16]; ///hash required for that groupid or below
struct client_hash_node *next; ///next entry
unsigned int group_id; ///group
uint8 hash[16]; ///hash required for that groupid or below
struct client_hash_node *next; ///next entry
};

struct Login_Config {
@@ -1983,10 +1983,10 @@ static int is_attack_piercing(struct Damage wd, struct block_list *src, struct b
struct status_data *tstatus = status_get_status_data(target);
#ifdef RENEWAL
if( skill_id != PA_SACRIFICE && skill_id != CR_GRANDCROSS && skill_id != NPC_GRANDDARKNESS
&& skill_id != PA_SHIELDCHAIN && skill_id != ASC_BREAKER ) // Renewal: Soul Breaker no longer gains ice pick effect and ice pick effect gets crit benefit [helvetica]
&& skill_id != PA_SHIELDCHAIN && skill_id != KO_HAPPOKUNAI && skill_id != ASC_BREAKER ) // Renewal: Soul Breaker no longer gains ice pick effect and ice pick effect gets crit benefit [helvetica]
#else
if( skill_id != PA_SACRIFICE && skill_id != CR_GRANDCROSS && skill_id != NPC_GRANDDARKNESS
&& skill_id != PA_SHIELDCHAIN && !is_attack_critical(wd, src, target, skill_id, skill_lv, false) )
&& skill_id != PA_SHIELDCHAIN && skill_id != KO_HAPPOKUNAI && !is_attack_critical(wd, src, target, skill_id, skill_lv, false) )
#endif
{ //Elemental/Racial adjustments
if( sd && (sd->right_weapon.def_ratio_atk_ele & (1<<tstatus->def_ele) || sd->right_weapon.def_ratio_atk_ele & (1<<ELE_ALL) ||
@@ -2365,6 +2365,7 @@ static struct Damage battle_calc_element_damage(struct Damage wd, struct block_l

switch( skill_id ) {
case MC_CARTREVOLUTION: //Cart Revolution apply the element fix once more with neutral element
case KO_BAKURETSU:
wd.damage = battle_attr_fix(src, target, wd.damage, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
break;
case GS_GROUNDDRIFT:
@@ -2728,6 +2729,10 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list
ATK_ADDRATE(wd.damage, wd.damage2, sd->bonus.crit_atk_rate);
}
#endif
if(is_attack_critical(wd, src, target, skill_id, skill_lv, false) && sc && sc->data[SC_MTF_CRIDAMAGE]) {
ATK_ADDRATE(wd.damage, wd.damage2, 25);
RE_ALLATK_ADDRATE(wd, 25); //Temporary it should be 'bonus.crit_atk_rate'
}
if(sd->status.party_id && (skill=pc_checkskill(sd,TK_POWER)) > 0) {
if( (i = party_foreachsamemap(party_sub_count, sd, 0)) > 1 ) { // exclude the player himself [Inkfish]
ATK_ADDRATE(wd.damage, wd.damage2, 2*skill*i);
@@ -3624,26 +3629,36 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
skillratio += 700;
break;
case KO_JYUMONJIKIRI:
skillratio += -100 + 150 * skill_lv;
skillratio = 150 * skill_lv;
RE_LVL_DMOD(120);
if(tsc && tsc->data[SC_JYUMONJIKIRI])
skillratio += skill_lv * status_get_lv(src);
break;
case KO_HUUMARANKA:
skillratio += -100 + 150 * skill_lv + sstatus->dex/2 + sstatus->agi/2; // needs more info
skillratio = 150 * skill_lv + sstatus->agi + sstatus->dex + (sd ? pc_checkskill(sd,NJ_HUUMA) * 100 : 0);
break;
case KO_SETSUDAN:
skillratio += 100 * (skill_lv-1);
RE_LVL_DMOD(100);
if(tsc && tsc->data[SC_SPIRIT])
skillratio += 200 * tsc->data[SC_SPIRIT]->val1;
break;
case KO_BAKURETSU:
skillratio = 50 * skill_lv * (sd?pc_checkskill(sd,NJ_TOBIDOUGU):10);
skillratio = (sd ? pc_checkskill(sd,NJ_TOBIDOUGU) : 1) * (50 + sstatus->dex / 4) * skill_lv * 4 / 10;
RE_LVL_DMOD(120);
skillratio += 10 * (sd ? sd->status.job_level : 1);
break;
case KO_MAKIBISHI:
skillratio = 20 * skill_lv;
break;
case MH_NEEDLE_OF_PARALYZE:
skillratio += 600 + 100 * skill_lv;
break;
case MH_STAHL_HORN:
skillratio += 400 + 100 * skill_lv * status_get_lv(src);
skillratio = skillratio/100; //@TODO uv1 factor need to be confirmed
skillratio += 400 + 100 * skill_lv * status_get_lv(src) / 150;
break;
case MH_LAVA_SLIDE:
skillratio += -100 + 70 * skill_lv;
skillratio = 70 * skill_lv;
break;
case MH_SONIC_CRAW:
skillratio = 40 * skill_lv;
@@ -3797,16 +3812,6 @@ static int battle_calc_skill_constant_addition(struct Damage wd, struct block_li
else
atk += ( status_get_lv(target) * 50 ); //mobs
break;
case KO_SETSUDAN:
if( tsc && tsc->data[SC_SPIRIT] ){
#ifdef RENEWAL
atk = ((wd.equipAtk + wd.weaponAtk + wd.statusAtk + wd.masteryAtk) * (10*tsc->data[SC_SPIRIT]->val1)) / 100;// +10% custom value.
#else
atk = (int) ((wd.damage) * (10*tsc->data[SC_SPIRIT]->val1)) / 100;// +10% custom value.
#endif
status_change_end(target,SC_SPIRIT,INVALID_TIMER);
}
break;
}
return atk;
}
@@ -4741,8 +4746,6 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
if(is_attack_critical(wd, src, target, skill_id, skill_lv, false)) {
if(sd) { // check for player so we don't crash out, monsters don't have bonus crit rates [helvetica]
wd.damage = (int)floor((double)(wd.damage * 1.4 * (100 + sd->bonus.crit_atk_rate)) / 100);
if (sc && sc->data[SC_MTF_CRIDAMAGE]) // Monster Transformation Bonus
wd.damage *= (int)1.25;
}
else
wd.damage = (int)floor((double)wd.damage * 1.4);
@@ -4795,11 +4798,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
// skills forced to neutral gain benefits from weapon element
// but final damage is considered "neutral" and resistances are applied again
switch (skill_id) {
case GN_CARTCANNON: // Cart Cannon gets forced to element of cannon ball (neutral or holy/shadow/ghost)
wd.damage = battle_attr_fix(src, target, wd.damage, (sd && sd->bonus.arrow_ele) ? sd->bonus.arrow_ele : ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
break;
case MC_CARTREVOLUTION: // Cart Revolution gets forced to neutral element
case MO_INVESTIGATE:
case KO_BAKURETSU:
wd.damage = battle_attr_fix(src, target, wd.damage, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
break;
case CR_SHIELDBOOMERANG:
@@ -4835,6 +4836,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
}
}
break;
case GN_CARTCANNON: // Cart Cannon gets forced to element of cannon ball (neutral or holy/shadow/ghost)
wd.damage = battle_attr_fix(src, target, wd.damage, (sd && sd->bonus.arrow_ele) ? sd->bonus.arrow_ele : ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
break;
}

// perform multihit calculations
@@ -5886,9 +5890,6 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
//[{( Hell Plant Skill Level x Casters Base Level ) x 10 } + {( Casters INT x 7 ) / 2 } x { 18 + ( Casters Job Level / 4 )] x ( 5 / ( 10 - Summon Flora Skill Level ))
md.damage = ( skill_lv * status_get_lv(src) * 10 ) + ( status_get_int(src) * 7 / 2 ) * ( 18 + (sd?sd->status.job_level:0) / 4 ) * ( 5 / (10 - ((sd) ? pc_checkskill(sd,AM_CANNIBALIZE) : skill_get_max(AM_CANNIBALIZE))) );
break;
case KO_MAKIBISHI:
md.damage = 20 * skill_lv;
break;
case RL_B_TRAP:
md.damage = (200 + status_get_int(src) + status_get_dex(src)) * skill_lv * 10; //(custom)
break;
@@ -6825,6 +6826,9 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
case ASC_METEORASSAULT:
case RG_RAID:
case MC_CARTREVOLUTION:
case HT_CLAYMORETRAP:
case RA_ICEBOUNDTRAP:
case RA_FIRINGTRAP:
#endif
state |= BCT_ENEMY;
strip_enemy = 0;
@@ -73,6 +73,12 @@ enum item_itemid {
ITEMID_PHRACON = 1010,
ITEMID_EMVERETARCON = 1011,
ITEMID_TRAP = 1065,
ITEMID_GHOSTRING_CARD = 4047,
ITEMID_PHREEONI_CARD = 4121,
ITEMID_MISTRESS_CARD = 4132,
ITEMID_ORC_LORD_CARD = 4135,
ITEMID_ORC_HERO_CARD = 4143,
ITEMID_TAO_GUNKA_CARD = 4302,
ITEMID_STRANGE_EMBRYO = 6415,
ITEMID_STONE = 7049,
ITEMID_FIRE_BOTTLE = 7135,

2 comments on commit e2d2494

@cydh
Copy link
Contributor

@cydh cydh commented on e2d2494 Apr 8, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@aleos89 next commit please also fix these

skill.c:16304:24: warning: unused variable 'su' [-Wunused-variable]
battle.c:3759:24: warning: unused variable 'tsc' [-Wunused-variable]

@aleos89
Copy link
Contributor Author

@aleos89 aleos89 commented on e2d2494 Apr 9, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 81ca299.

Please sign in to comment.