diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/battle.c | 6 | ||||
-rw-r--r-- | src/map/clif.c | 17 | ||||
-rw-r--r-- | src/map/skill.c | 2 |
3 files changed, 14 insertions, 11 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index f1fdf3efa..87d4cd03a 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -267,8 +267,10 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i status_change_end(bl,SC_SAFETYWALL,-1); } } - if(sc_data[SC_PNEUMA].timer!=-1 && damage>0 && ((flag&BF_WEAPON && flag&BF_LONG && skill_num != NPC_GUIDEDATTACK) || - (flag&BF_MISC && (skill_num == HT_BLITZBEAT || skill_num == SN_FALCONASSAULT)))){ // [DracoRPG] + if(sc_data[SC_PNEUMA].timer!=-1 && damage>0 && + ((flag&BF_WEAPON && flag&BF_LONG && skill_num != NPC_GUIDEDATTACK) || + (flag&BF_MISC && (skill_num == HT_BLITZBEAT || skill_num == SN_FALCONASSAULT)) || + (flag&BF_MAGIC && skill_num == ASC_BREAKER))){ // [DracoRPG] // ニューマ damage=0; } diff --git a/src/map/clif.c b/src/map/clif.c index 23db11c50..93a84a9ea 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -7366,10 +7366,11 @@ void clif_parse_WantToConnection(int fd, struct map_session_data *sd) account_id = RFIFOL(fd,12); else if (RFIFOREST(fd) >= 32 && (RFIFOB(fd,31) == 0 || RFIFOB(fd,31) == 1)) // 00 = Female, 01 = Male account_id = RFIFOL(fd,10); - else { // 29 28 28 - /*if (RFIFOW(fd,1) == 0) // testing ^^; + else { // 29 28 28 // search correct value + // if account id and char id of version 14 + if (RFIFOL(fd,3) > 700000 && RFIFOL(fd,10) >= 150000 && RFIFOL(fd,10) < 5000000) // account id / char id (more than 5.000.000 characters?) [Yor] account_id = RFIFOL(fd,3); - else*/ + else account_id = RFIFOL(fd,5); } // 0x9B @@ -7427,7 +7428,8 @@ void clif_parse_WantToConnection(int fd, struct map_session_data *sd) sd->packet_ver = 11; // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 9aug04/16aug04/17aug04, 10: 6sept04, 11: 21sept04, 12: 18oct04, 13: 25oct04 (by [Yor]) pc_setnewpc(sd, account_id, RFIFOL(fd,17), RFIFOL(fd,23), RFIFOL(fd,27), RFIFOB(fd,31), fd); } else { // 29 - if (RFIFOW(fd,1) == 0) { + // if account id and char id of version 14 + if (RFIFOL(fd,3) > 700000 && RFIFOL(fd,10) >= 150000 && RFIFOL(fd,10) < 5000000) { // account id / char id (more than 5.000.000 characters?) sd->packet_ver = 15; // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 9aug04/16aug04/17aug04, 10: 6sept04, 11: 21sept04, 12: 18oct04, 13: 25oct04 (by [Yor]) pc_setnewpc(sd, account_id, RFIFOL(fd,10), RFIFOL(fd,20), RFIFOL(fd,24), RFIFOB(fd,28), fd); } else { @@ -10707,12 +10709,11 @@ static int clif_parse(int fd) { else if (RFIFOREST(fd) >= 32 && (RFIFOB(fd,31) == 0 || RFIFOB(fd,31) == 1)) // 00 = Female, 01 = Male packet_ver = 11; // 11: 21sept04 else if (RFIFOREST(fd) >= 29 && (RFIFOB(fd,28) == 0 || RFIFOB(fd,28) == 1)) { // 00 = Female, 01 = Male - /*if (RFIFOW(fd,1) == 0) // testing ^^; - packet_ver = 15; - else*/ + if (RFIFOL(fd,3) > 700000 && RFIFOL(fd,10) >= 150000 && RFIFOL(fd,10) < 5000000) // account id / char id (more than 5.000.000 characters?) [Yor] + packet_ver = 15; // 14: 6dec04 + else packet_ver = 13; // 13: 25oct04 (by [Yor]) } - // -- some way to identify version 14 and 15? -- // else probably incomplete packet else if (RFIFOREST(fd) < 29) return 0; diff --git a/src/map/skill.c b/src/map/skill.c index d0db25ddb..e21872fa1 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3499,7 +3499,7 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int { struct status_change *tsc_data = status_get_sc_data(bl); int sc=SkillStatusChangeTable[skillid]; - clif_skill_nodamage(src,bl,skillid,skilllv,1); + clif_skill_nodamage(src,bl,skillid,-1,1); if(tsc_data && tsc_data[sc].timer!=-1 ) /* 解除する */ status_change_end(bl, sc, -1); |