- Corrected Trim chars to block 'enter', as explained by the Ultra mage.
- When the client passes account version 0, the login server will set it to 1 now. - Corrected the HP bar scaling when HP is above Short Max. It should display fine for any HP value now. - Added a check when the mob's adelay is shorter than the amotion, in which case the adelay will be changed to the amotion value. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7742 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
b00e9d6e14
commit
c96212781f
@ -4,6 +4,14 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
|
|||||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||||
|
|
||||||
2006/07/19
|
2006/07/19
|
||||||
|
* Corrected Trim chars to block 'enter', as explained by the Ultra mage.
|
||||||
|
[Skotlex]
|
||||||
|
* When the client passes account version 0, the login server will set it to
|
||||||
|
1 now. [Skotlex]
|
||||||
|
* Corrected the HP bar scaling when HP is above Short Max. It should
|
||||||
|
display fine for any HP value now. [Skotlex]
|
||||||
|
* Added a check when the mob's adelay is shorter than the amotion, in which
|
||||||
|
case the adelay will be changed to the amotion value. [Skotlex]
|
||||||
* Some minor mapflag changes. [MasterOfMuppets]
|
* Some minor mapflag changes. [MasterOfMuppets]
|
||||||
2006/07/18
|
2006/07/18
|
||||||
* Added atcommand @partyoption, lets you alter the party item-distribution
|
* Added atcommand @partyoption, lets you alter the party item-distribution
|
||||||
|
@ -82,7 +82,7 @@ int subnet_count = 0;
|
|||||||
int name_ignoring_case = 0; // Allow or not identical name for characters but with a different case by [Yor]
|
int name_ignoring_case = 0; // Allow or not identical name for characters but with a different case by [Yor]
|
||||||
int char_name_option = 0; // Option to know which letters/symbols are authorised in the name of a character (0: all, 1: only those in char_name_letters, 2: all EXCEPT those in char_name_letters) by [Yor]
|
int char_name_option = 0; // Option to know which letters/symbols are authorised in the name of a character (0: all, 1: only those in char_name_letters, 2: all EXCEPT those in char_name_letters) by [Yor]
|
||||||
//The following are characters that are trimmed regardless because they cause confusion and problems on the servers. [Skotlex]
|
//The following are characters that are trimmed regardless because they cause confusion and problems on the servers. [Skotlex]
|
||||||
#define TRIM_CHARS "\032\t\n\013 "
|
#define TRIM_CHARS "\032\t\x0A\x0D "
|
||||||
char char_name_letters[1024] = ""; // list of letters/symbols authorised (or not) in a character name. by [Yor]
|
char char_name_letters[1024] = ""; // list of letters/symbols authorised (or not) in a character name. by [Yor]
|
||||||
|
|
||||||
int log_char = 1; // loggin char or not [devil]
|
int log_char = 1; // loggin char or not [devil]
|
||||||
|
@ -90,7 +90,7 @@ int name_ignoring_case = 0; // Allow or not identical name for characters but wi
|
|||||||
int char_name_option = 0; // Option to know which letters/symbols are authorised in the name of a character (0: all, 1: only those in char_name_letters, 2: all EXCEPT those in char_name_letters) by [Yor]
|
int char_name_option = 0; // Option to know which letters/symbols are authorised in the name of a character (0: all, 1: only those in char_name_letters, 2: all EXCEPT those in char_name_letters) by [Yor]
|
||||||
char char_name_letters[1024] = ""; // list of letters/symbols used to authorise or not a name of a character. by [Yor]
|
char char_name_letters[1024] = ""; // list of letters/symbols used to authorise or not a name of a character. by [Yor]
|
||||||
//The following are characters that are trimmed regardless because they cause confusion and problems on the servers. [Skotlex]
|
//The following are characters that are trimmed regardless because they cause confusion and problems on the servers. [Skotlex]
|
||||||
#define TRIM_CHARS "\032\t\n\013 "
|
#define TRIM_CHARS "\032\t\x0A\x0D "
|
||||||
int char_per_account = 0; //Maximum charas per account (default unlimited) [Sirius]
|
int char_per_account = 0; //Maximum charas per account (default unlimited) [Sirius]
|
||||||
|
|
||||||
int log_char = 1; // loggin char or not [devil]
|
int log_char = 1; // loggin char or not [devil]
|
||||||
|
@ -3114,6 +3114,7 @@ int parse_login(int fd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
account.version = RFIFOL(fd, 2); //for exe version check [Sirius]
|
account.version = RFIFOL(fd, 2); //for exe version check [Sirius]
|
||||||
|
if (!account.version) account.version = 1; //Force some version...
|
||||||
memcpy(account.userid,RFIFOP(fd,6),NAME_LENGTH);
|
memcpy(account.userid,RFIFOP(fd,6),NAME_LENGTH);
|
||||||
account.userid[23] = '\0';
|
account.userid[23] = '\0';
|
||||||
remove_control_chars((unsigned char *)account.userid);
|
remove_control_chars((unsigned char *)account.userid);
|
||||||
|
@ -1569,6 +1569,7 @@ int parse_login(int fd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
account.version = RFIFOL(fd, 2);
|
account.version = RFIFOL(fd, 2);
|
||||||
|
if (!account.version) account.version = 1; //Force some version...
|
||||||
memcpy(account.userid,RFIFOP(fd, 6),NAME_LENGTH);
|
memcpy(account.userid,RFIFOP(fd, 6),NAME_LENGTH);
|
||||||
account.userid[23] = '\0';
|
account.userid[23] = '\0';
|
||||||
memcpy(account.passwd,RFIFOP(fd, 30),NAME_LENGTH);
|
memcpy(account.passwd,RFIFOP(fd, 30),NAME_LENGTH);
|
||||||
|
@ -6121,8 +6121,8 @@ int clif_party_hp(struct map_session_data *sd)
|
|||||||
WBUFW(buf,0)=0x106;
|
WBUFW(buf,0)=0x106;
|
||||||
WBUFL(buf,2)=sd->status.account_id;
|
WBUFL(buf,2)=sd->status.account_id;
|
||||||
if (sd->battle_status.max_hp > SHRT_MAX) { //To correctly display the %hp bar. [Skotlex]
|
if (sd->battle_status.max_hp > SHRT_MAX) { //To correctly display the %hp bar. [Skotlex]
|
||||||
WBUFW(buf,6) = 10000*sd->battle_status.hp/sd->battle_status.max_hp;
|
WBUFW(buf,6) = sd->battle_status.hp/(sd->battle_status.max_hp/100);
|
||||||
WBUFW(buf,8) = 10000;
|
WBUFW(buf,8) = 100;
|
||||||
} else {
|
} else {
|
||||||
WBUFW(buf,6) = sd->battle_status.hp;
|
WBUFW(buf,6) = sd->battle_status.hp;
|
||||||
WBUFW(buf,8) = sd->battle_status.max_hp;
|
WBUFW(buf,8) = sd->battle_status.max_hp;
|
||||||
@ -6141,8 +6141,8 @@ static void clif_hpmeter_single(int fd, struct map_session_data *sd)
|
|||||||
WFIFOW(fd,0) = 0x106;
|
WFIFOW(fd,0) = 0x106;
|
||||||
WFIFOL(fd,2) = sd->status.account_id;
|
WFIFOL(fd,2) = sd->status.account_id;
|
||||||
if (sd->battle_status.max_hp > SHRT_MAX) { //To correctly display the %hp bar. [Skotlex]
|
if (sd->battle_status.max_hp > SHRT_MAX) { //To correctly display the %hp bar. [Skotlex]
|
||||||
WFIFOW(fd,6) = 10000*sd->battle_status.hp/sd->battle_status.max_hp;
|
WFIFOW(fd,6) = 100*sd->battle_status.hp/(sd->battle_status.max_hp/100);
|
||||||
WFIFOW(fd,8) = 10000;
|
WFIFOW(fd,8) = 100;
|
||||||
} else {
|
} else {
|
||||||
WFIFOW(fd,6) = sd->battle_status.hp;
|
WFIFOW(fd,6) = sd->battle_status.hp;
|
||||||
WFIFOW(fd,8) = sd->battle_status.max_hp;
|
WFIFOW(fd,8) = sd->battle_status.max_hp;
|
||||||
@ -6171,8 +6171,8 @@ int clif_hpmeter(struct map_session_data *sd)
|
|||||||
WBUFW(buf,0) = 0x106;
|
WBUFW(buf,0) = 0x106;
|
||||||
WBUFL(buf,2) = sd->status.account_id;
|
WBUFL(buf,2) = sd->status.account_id;
|
||||||
if (sd->battle_status.max_hp > SHRT_MAX) { //To correctly display the %hp bar. [Skotlex]
|
if (sd->battle_status.max_hp > SHRT_MAX) { //To correctly display the %hp bar. [Skotlex]
|
||||||
WBUFW(buf,6) = 10000*sd->battle_status.hp/sd->battle_status.max_hp;
|
WBUFW(buf,6) = 100*sd->battle_status.hp/(sd->battle_status.max_hp/100);
|
||||||
WBUFW(buf,8) = 10000;
|
WBUFW(buf,8) = 100;
|
||||||
} else {
|
} else {
|
||||||
WBUFW(buf,6) = sd->battle_status.hp;
|
WBUFW(buf,6) = sd->battle_status.hp;
|
||||||
WBUFW(buf,8) = sd->battle_status.max_hp;
|
WBUFW(buf,8) = sd->battle_status.max_hp;
|
||||||
|
@ -3225,6 +3225,9 @@ static int mob_readdb(void)
|
|||||||
status->adelay=atoi(str[27]);
|
status->adelay=atoi(str[27]);
|
||||||
status->amotion=atoi(str[28]);
|
status->amotion=atoi(str[28]);
|
||||||
status->dmotion=atoi(str[29]);
|
status->dmotion=atoi(str[29]);
|
||||||
|
//If the attack animation is longer than the delay, the client crops the attack animation!
|
||||||
|
if (status->adelay < status->amotion)
|
||||||
|
status->adelay = status->amotion;
|
||||||
if(battle_config.monster_damage_delay_rate != 100)
|
if(battle_config.monster_damage_delay_rate != 100)
|
||||||
status->dmotion = status->dmotion*battle_config.monster_damage_delay_rate/100;
|
status->dmotion = status->dmotion*battle_config.monster_damage_delay_rate/100;
|
||||||
|
|
||||||
@ -3904,6 +3907,9 @@ static int mob_read_sqldb(void)
|
|||||||
status->adelay = TO_INT(27);
|
status->adelay = TO_INT(27);
|
||||||
status->amotion = TO_INT(28);
|
status->amotion = TO_INT(28);
|
||||||
status->dmotion = TO_INT(29);
|
status->dmotion = TO_INT(29);
|
||||||
|
//If the attack animation is longer than the delay, the client crops the attack animation!
|
||||||
|
if (status->adelay < status->amotion)
|
||||||
|
status->adelay = status->amotion;
|
||||||
if(battle_config.monster_damage_delay_rate != 100)
|
if(battle_config.monster_damage_delay_rate != 100)
|
||||||
status->dmotion = status->dmotion*battle_config.monster_damage_delay_rate/100;
|
status->dmotion = status->dmotion*battle_config.monster_damage_delay_rate/100;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user