Index: src/common/db.c
===================================================================
--- src/common/db.c (revision 16039)
+++ src/common/db.c (working copy)
@@ -2742,7 +2742,7 @@
while( node ) {
if( node->key == key ) {
if( node->prev && n > 5 ) {
- // øŠüPÌ×ÉheadÉÚ®³¹é
+ //Moving the head in order to improve processing efficiency
if(node->prev) node->prev->next = node->next;
if(node->next) node->next->prev = node->prev;
node->next = *head;
@@ -2789,7 +2789,7 @@
while( node ) {
if( node->key == key ) {
if( node->prev && n > 5 ) {
- // øŠüPÌ×ÉheadÉÚ®³¹é
+ //Moving the head in order to improve processing efficiency
if(node->prev) node->prev->next = node->next;
if(node->next) node->next->prev = node->prev;
node->next = *head;
@@ -2803,7 +2803,7 @@
node = node->next;
n++;
}
- // ©Â©çÈ¢ÌÅ}ü
+ //Insert because it can not find
linkdb_insert( head, key, data );
}
Index: src/common/strlib.c
===================================================================
--- src/common/strlib.c (revision 16039)
+++ src/common/strlib.c (working copy)
@@ -581,6 +581,8 @@
sv->done = true;
state = END;
break;
+ default: //do nothing
+ break;
}
}
if( IS_END() )
Index: src/common/nullpo.c
===================================================================
--- src/common/nullpo.c (revision 16039)
+++ src/common/nullpo.c (working copy)
@@ -12,7 +12,8 @@
const char *fmt, va_list ap);
/*======================================
- * Null`FbN yÑ îñoÍ
+ * Semble checker si le target est null et retourne 0 (false) dans ce cas
+ * Semble chek les arguments fournit egalement ??
*--------------------------------------*/
int nullpo_chk_f(const char *file, int line, const char *func, const void *target,
const char *fmt, ...)
Index: src/char/int_mercenary.c
===================================================================
--- src/char/int_mercenary.c (revision 16039)
+++ src/char/int_mercenary.c (working copy)
@@ -136,6 +136,7 @@
return true;
}
+
static void mapif_mercenary_send(int fd, struct s_mercenary *merc, unsigned char flag)
{
int size = sizeof(struct s_mercenary) + 5;
Index: src/char/int_party.c
===================================================================
--- src/char/int_party.c (revision 16039)
+++ src/char/int_party.c (working copy)
@@ -324,9 +324,10 @@
}
//-------------------------------------------------------------------
-// map serverÖÌÊM
+// Communication to the map server
-// p[eBì¬ÂÛ
+
+// Create a party whether or not
int mapif_party_created(int fd,int account_id,int char_id,struct party *p)
{
WFIFOHEAD(fd, 39);
@@ -348,7 +349,7 @@
return 0;
}
-// p[eBîñ©Â©çž
+//Party information not found
static void mapif_party_noinfo(int fd, int party_id, int char_id)
{
WFIFOHEAD(fd, 12);
@@ -359,7 +360,8 @@
WFIFOSET(fd,12);
ShowWarning("int_party: info not found (party_id=%d char_id=%d)\n", party_id, char_id);
}
-// p[eBîñÜÆßè
+
+//Digest party information
static void mapif_party_info(int fd, struct party* p, int char_id)
{
unsigned char buf[8 + sizeof(struct party)];
@@ -373,7 +375,8 @@
else
mapif_send(fd,buf,WBUFW(buf,2));
}
-// p[eBoÇÁÂÛ
+
+//Whether or not additional party members
int mapif_party_memberadded(int fd, int party_id, int account_id, int char_id, int flag) {
WFIFOHEAD(fd, 15);
WFIFOW(fd,0) = 0x3822;
@@ -386,7 +389,7 @@
return 0;
}
-// p[eBÝèÏXÊm
+// Party setting change notification
int mapif_party_optionchanged(int fd,struct party *p,int account_id,int flag)
{
unsigned char buf[16];
@@ -403,7 +406,7 @@
return 0;
}
-// p[eBEÞÊm
+//Withdrawal notification party
int mapif_party_withdraw(int party_id,int account_id, int char_id) {
unsigned char buf[16];
@@ -415,7 +418,7 @@
return 0;
}
-// p[eB}bvXVÊm
+//Party map update notification
int mapif_party_membermoved(struct party *p,int idx)
{
unsigned char buf[20];
@@ -431,7 +434,7 @@
return 0;
}
-// p[eBðUÊm
+//Dissolution party notification
int mapif_party_broken(int party_id,int flag)
{
unsigned char buf[16];
@@ -442,7 +445,8 @@
//printf("int_party: broken %d\n",party_id);
return 0;
}
-// p[eBàŸ
+
+//Remarks in the party
int mapif_party_message(int party_id,int account_id,char *mes,int len, int sfd)
{
unsigned char buf[512];
@@ -456,7 +460,7 @@
}
//-------------------------------------------------------------------
-// map server©çÌÊM
+// Communication from the map server
// Create Party
@@ -507,7 +511,8 @@
return 0;
}
-// p[eBîñv
+
+// Party information request
static void mapif_parse_PartyInfo(int fd, int party_id, int char_id)
{
struct party_data *p;
@@ -518,7 +523,8 @@
else
mapif_party_noinfo(fd, party_id, char_id);
}
-// p[eBÇÁv
+
+// Add request party
int mapif_parse_PartyAddMember(int fd, int party_id, struct party_member *member)
{
struct party_data *p;
@@ -556,7 +562,7 @@
return 0;
}
-// p[eB[ÝèÏXv
+//Party setting change request
int mapif_parse_PartyChangeOption(int fd,int party_id,int account_id,int exp,int item)
{
struct party_data *p;
@@ -576,7 +582,8 @@
inter_party_tosql(&p->party, PS_BASIC, 0);
return 0;
}
-// p[eBEÞv
+
+//Request leave party
int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
{
struct party_data *p;
@@ -684,7 +691,7 @@
return 0;
}
-// p[eBðUv
+//Request party dissolution
int mapif_parse_BreakParty(int fd,int party_id)
{
struct party_data *p;
@@ -697,7 +704,8 @@
mapif_party_broken(fd,party_id);
return 0;
}
-// p[eBbZ[WM
+
+//Party sending the message
int mapif_parse_PartyMessage(int fd,int party_id,int account_id,char *mes,int len)
{
return mapif_party_message(party_id,account_id,mes,len, fd);
@@ -727,11 +735,12 @@
return 1;
}
-// map server ©çÌÊM
-// EPpPbgÌÝðÍ·é±Æ
-// EpPbg·f[^Íinter.cÉZbgµÄš±Æ
-// EpPbg·`FbNâARFIFOSKIPÍÄÑoµ³ÅsíêéÌÅsÁÄÍÈçÈ¢
-// EG[Èç0(false)A»€ÅÈ¢Èç1(true)𩊳ȯêÎÈçÈ¢
+
+// Communication from the map server
+//-Analysis that only one packet
+// Data packet length is set to inter.c that you
+// Do NOT go and check the packet length, RFIFOSKIP is done by the caller
+// ? (False), must return 1 (true) if error, 0 if otherwise.
int inter_party_parse_frommap(int fd)
{
RFIFOHEAD(fd);
@@ -751,7 +760,7 @@
return 1;
}
-// T[o[©çEÞviLípj
+//Leave request from the server (for delete character)
int inter_party_leave(int party_id,int account_id, int char_id)
{
return mapif_parse_PartyLeave(-1,party_id,account_id, char_id);
Index: src/char/char.c
===================================================================
--- src/char/char.c (revision 16039)
+++ src/char/char.c (working copy)
@@ -1005,7 +1005,7 @@
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 26, SQLDT_INT, &p->guild_id, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 27, SQLDT_INT, &p->pet_id, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 28, SQLDT_INT, &p->hom_id, 0, NULL, NULL)
- || SQL_ERROR == SqlStmt_BindColumn(stmt, 29, SQLDT_INT, &p->ele_id, 0, NULL, NULL)
+ || SQL_ERROR == SqlStmt_BindColumn(stmt, 29, SQLDT_INT, &p->ele_id, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 30, SQLDT_SHORT, &p->hair, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 31, SQLDT_SHORT, &p->hair_color, 0, NULL, NULL)
|| SQL_ERROR == SqlStmt_BindColumn(stmt, 32, SQLDT_SHORT, &p->clothes_color, 0, NULL, NULL)
Index: src/char/int_guild.c
===================================================================
--- src/char/int_guild.c (revision 16039)
+++ src/char/int_guild.c (working copy)
@@ -1871,7 +1871,7 @@
return 1;
}
-// T[o[©çEÞviLípj
+// processes a mapserver connection event
int inter_guild_leave(int guild_id, int account_id, int char_id)
{
return mapif_parse_GuildLeave(-1, guild_id, account_id, char_id, 0, "** Character Deleted **");
Index: src/char/int_elemental.c
===================================================================
--- src/char/int_elemental.c (revision 16039)
+++ src/char/int_elemental.c (working copy)
@@ -20,9 +20,9 @@
if( ele->elemental_id == 0 ) { // Create new DB entry
if( SQL_ERROR == Sql_Query(sql_handle,
- "INSERT INTO `elemental` (`char_id`,`class`,`mode`,`hp`,`sp`,`max_hp`,`max_sp`,`str`,`agi`,`vit`,`int`,`dex`,`luk`,`life_time`)"
- "VALUES ('%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%u')",
- ele->char_id, ele->class_, ele->mode, ele->hp, ele->sp, ele->max_hp, ele->max_sp, ele->str, ele->agi, ele->vit, ele->int_, ele->dex, ele->luk, ele->life_time) )
+ "INSERT INTO `elemental` (`char_id`,`class`,`mode`,`hp`,`sp`,`max_hp`,`max_sp`,`str`,`agi`,`vit`,`int`,`dex`,`luk`,`life_time`)"
+ "VALUES ('%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%u')",
+ ele->char_id, ele->class_, ele->mode, ele->hp, ele->sp, ele->max_hp, ele->max_sp, ele->str, ele->agi, ele->vit, ele->int_, ele->dex, ele->luk, ele->life_time) )
{
Sql_ShowDebug(sql_handle);
flag = false;
@@ -30,11 +30,11 @@
else
ele->elemental_id = (int)Sql_LastInsertId(sql_handle);
} else if( SQL_ERROR == Sql_Query(sql_handle,
- "UPDATE `elemental` SET `char_id` = '%d', `class` = '%d', `mode` = '%d', `hp` = '%d', `sp` = '%d',"
- "`max_hp` = '%d', `max_sp` = '%d', `str` = '%d', `agi` = '%d', `vit` = '%d', `int` = '%d', `dex` = '%d',"
- "`luk` = '%d', `life_time` = '%u' WHERE `ele_id` = '%d'",
- ele->char_id, ele->class_, ele->mode, ele->hp, ele->sp, ele->max_hp, ele->max_sp, ele->str, ele->agi,
- ele->vit, ele->int_, ele->dex, ele->luk, ele->life_time, ele->elemental_id) )
+ "UPDATE `elemental` SET `char_id` = '%d', `class` = '%d', `mode` = '%d', `hp` = '%d', `sp` = '%d',"
+ "`max_hp` = '%d', `max_sp` = '%d', `str` = '%d', `agi` = '%d', `vit` = '%d', `int` = '%d', `dex` = '%d',"
+ "`luk` = '%d', `life_time` = '%u' WHERE `ele_id` = '%d'",
+ ele->char_id, ele->class_, ele->mode, ele->hp, ele->sp, ele->max_hp, ele->max_sp, ele->str, ele->agi,
+ ele->vit, ele->int_, ele->dex, ele->luk, ele->life_time, ele->elemental_id) )
{ // Update DB entry
Sql_ShowDebug(sql_handle);
flag = false;
@@ -44,23 +44,23 @@
bool mapif_elemental_load(int ele_id, int char_id, struct s_elemental *ele) {
char* data;
-
+
memset(ele, 0, sizeof(struct s_elemental));
ele->elemental_id = ele_id;
ele->char_id = char_id;
-
+
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `class`, `mode`, `hp`, `sp`, `max_hp`, `max_sp`, `str`, `agi`, `vit`, `int`, `dex`,"
- "`luk`, `life_time` FROM `elemental` WHERE `ele_id` = '%d' AND `char_id` = '%d'",
+ "`luk`, `life_time` FROM `elemental` WHERE `ele_id` = '%d' AND `char_id` = '%d'",
ele_id, char_id) ) {
Sql_ShowDebug(sql_handle);
return false;
}
-
+
if( SQL_SUCCESS != Sql_NextRow(sql_handle) ) {
Sql_FreeResult(sql_handle);
return false;
}
-
+
Sql_GetData(sql_handle, 0, &data, NULL); ele->class_ = atoi(data);
Sql_GetData(sql_handle, 1, &data, NULL); ele->mode = atoi(data);
Sql_GetData(sql_handle, 2, &data, NULL); ele->hp = atoi(data);
@@ -86,7 +86,7 @@
Sql_ShowDebug(sql_handle);
return false;
}
-
+
return true;
}
@@ -94,7 +94,7 @@
static void mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag) {
int size = sizeof(struct s_elemental) + 5;
-
+
WFIFOHEAD(fd,size);
WFIFOW(fd,0) = 0x387c;
WFIFOW(fd,2) = size;
@@ -150,7 +150,7 @@
*------------------------------------------*/
int inter_elemental_parse_frommap(int fd) {
unsigned short cmd = RFIFOW(fd,0);
-
+
switch( cmd ) {
case 0x307c: mapif_parse_elemental_create(fd, (struct s_elemental*)RFIFOP(fd,4)); break;
case 0x307d: mapif_parse_elemental_load(fd, (int)RFIFOL(fd,2), (int)RFIFOL(fd,6)); break;
Index: src/map/script.c
===================================================================
--- src/map/script.c (revision 16039)
+++ src/map/script.c (working copy)
@@ -5691,10 +5692,10 @@
*------------------------------------------*/
BUILDIN_FUNC(countitem2)
{
- int nameid, iden, ref, attr, c1, c2, c3, c4;
int count = 0;
int i;
struct item_data* id = NULL;
+ struct item tmp_it;
struct script_data* data;
TBL_PC* sd = script_rid2sd(st);
@@ -5722,22 +5723,19 @@
return 1;
}
- nameid = id->nameid;
- iden = script_getnum(st,3);
- ref = script_getnum(st,4);
- attr = script_getnum(st,5);
- c1 = (short)script_getnum(st,6);
- c2 = (short)script_getnum(st,7);
- c3 = (short)script_getnum(st,8);
- c4 = (short)script_getnum(st,9);
+ tmp_it.nameid = id->nameid;
+ tmp_it.identify = script_getnum(st,3);
+ tmp_it.refine = script_getnum(st,4);
+ tmp_it.attribute = script_getnum(st,5);
+ tmp_it.card[0] = (short)script_getnum(st,6);
+ tmp_it.card[1] = (short)script_getnum(st,7);
+ tmp_it.card[2] = (short)script_getnum(st,8);
+ tmp_it.card[3] = (short)script_getnum(st,9);
for(i = 0; i < MAX_INVENTORY; i++)
- if (sd->status.inventory[i].nameid > 0 && sd->inventory_data[i] != NULL &&
- sd->status.inventory[i].amount > 0 && sd->status.inventory[i].nameid == nameid &&
- sd->status.inventory[i].identify == iden && sd->status.inventory[i].refine == ref &&
- sd->status.inventory[i].attribute == attr && sd->status.inventory[i].card[0] == c1 &&
- sd->status.inventory[i].card[1] == c2 && sd->status.inventory[i].card[2] == c3 &&
- sd->status.inventory[i].card[3] == c4
+ if ( (&sd->status.inventory[i] != NULL)
+ && sd->status.inventory[i].amount > 0
+ && compare_item(&sd->status.inventory[i],&tmp_it,1)
)
count += sd->status.inventory[i].amount;
@@ -6608,7 +6606,7 @@
return 0;
}
/*==========================================
- *wèIDÌPTŒæŸ
+ * return the name of a partyid
*------------------------------------------*/
BUILDIN_FUNC(getpartyname)
{
@@ -9295,7 +9293,8 @@
}
/*==========================================
- * óÔÙíÏ«ðvZµœmŠðÔ·
+ * To get rate of a sc type, actually I don't really get it since we returning tick but oh well..
+ * @TODO that fonction doesn't take an consideration last status_change_start altering so...
*------------------------------------------*/
BUILDIN_FUNC(getscrate)
{
@@ -9838,7 +9837,9 @@
}
/*==========================================
- * RIDÌA^b`
+ * Attach un joueurs au script, st.rid
+ * Permet a un script d'executer des actions
+ * requierant un joueur autrement que par contact direct.
*------------------------------------------*/
BUILDIN_FUNC(attachrid)
{
Index: src/map/elemental.c
===================================================================
--- src/map/elemental.c (revision 16039)
+++ src/map/elemental.c (working copy)
@@ -255,7 +255,7 @@
if( bl ) status_change_end(bl,type,INVALID_TIMER);
break;
default:
- ShowWarning("Invalid SC=%d in elemental_clean_single_effect\n",type);
+ ShowWarning("Invalide SC=%d in elemental_clean_single_effect\n",type);
break;
}
}
@@ -349,7 +349,7 @@
if( elemental_skillnotok(skillnum, ed) )
return 0;
-
+
if( ed->ud.skilltimer != INVALID_TIMER )
return 0;
else if( DIFF_TICK(tick, ed->ud.canact_tick) < 0 )
@@ -413,7 +413,7 @@
if( elemental_skillnotok(skillnum, ed) )
return 0;
-
+
if( ed->ud.skilltimer != INVALID_TIMER )
return 0;
else if( DIFF_TICK(gettick(), ed->ud.canact_tick) < 0 )
@@ -566,10 +566,10 @@
return 0;
ed->last_thinktime = tick;
-
+
if( ed->ud.skilltimer != INVALID_TIMER )
return 0;
-
+
if( ed->ud.walktimer != INVALID_TIMER && ed->ud.walkpath.path_pos <= 2 )
return 0; //No thinking when you just started to walk.
@@ -612,7 +612,8 @@
return 1;
}
- if( battle_check_range(&ed->bl,target,ed->db->range2) && rnd()%100 < 2 ) { // 2% chance to cast attack skill.
+ if( battle_check_range(&ed->bl,target,view_range) && rnd()%100 < 2 ) // 2% chance to cast attack skill.
+ {
if( elemental_action(ed,target,tick) )
return 1;
}
@@ -643,7 +644,7 @@
return 0;
}
-static int elemental_ai_timer(int tid, unsigned int tick, int id, intptr data) {
+static int elemental_ai_timer(int tid, unsigned int tick, int id, intptr_t data) {
map_foreachpc(elemental_ai_sub_foreachclient,tick);
return 0;
Index: src/map/atcommand.h
===================================================================
--- src/map/atcommand.h (revision 16039)
+++ src/map/atcommand.h (working copy)
@@ -4,6 +4,7 @@
#ifndef _ATCOMMAND_H_
#define _ATCOMMAND_H_
+//#include "map.h"
struct map_session_data;
//This is the distance at which @autoloot works,
Index: src/map/battle.c
===================================================================
--- src/map/battle.c (revision 16039)
+++ src/map/battle.c (working copy)
@@ -105,6 +105,7 @@
case BL_HOM: return ((struct homun_data*)bl)->ud.target;
case BL_MER: return ((struct mercenary_data*)bl)->ud.target;
case BL_ELEM: return ((struct elemental_data*)bl)->ud.target;
+ default: break; //unhandled type
}
return 0;
}
@@ -145,6 +146,7 @@
c = 23;
return bl_list[rnd()%c];
}
+
static int battle_getenemyarea_sub(struct block_list *bl, va_list ap)
{
struct block_list **bl_list, *src;
@@ -183,7 +185,7 @@
return bl_list[rnd()%c];
}
-// _??[WÌx
+// ï¿œ_??[ï¿œWï¿œÌxᅵᅵ
struct delay_damage {
struct block_list *src;
int target;
@@ -266,6 +268,7 @@
return 0;
}
+
int battle_attr_ratio(int atk_elem,int def_type, int def_lv)
{
@@ -340,7 +343,8 @@
}
/*==========================================
- * _??[W??IvZ
+ * Main battle_calc function
+ * primary call
*------------------------------------------*/
int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int damage,int skill_num,int skill_lv)
{
@@ -394,7 +398,7 @@
(skill_num && skill_get_ele(skill_num, skill_lv) == ELE_GHOST) ||
(!skill_num && (status_get_status_data(src))->rhw.ele == ELE_GHOST)
)
- status_change_end(bl,SC_WHITEIMPRISON,INVALID_TIMER); // Those skills do damage and removes effect
+ status_change_end(bl,SC_WHITEIMPRISON, INVALID_TIMER); // Those skills do damage and removes effect
else
{
d->dmg_lv = ATK_BLOCK;
@@ -468,7 +472,7 @@
clif_millenniumshield(sd,sce->val2);
sce->val3 = 1000; // Next Shield
} else
- status_change_end(bl,SC_MILLENNIUMSHIELD,INVALID_TIMER); // All shields down
+ status_change_end(bl,SC_MILLENNIUMSHIELD, INVALID_TIMER); // All shields down
}
return 0;
}
@@ -533,9 +537,8 @@
}
//Now damage increasing effects
- if( sc->data[SC_AETERNA] && skill_num != PF_SOULBURN )
- {
- if( src->type != BL_MER || skill_num == 0 )
+ if (sc->data[SC_AETERNA] && skill_num != PF_SOULBURN) {
+ if (src->type != BL_MER || skill_num == 0)
damage <<= 1; // Lex Aeterna only doubles damage of regular attacks from mercenaries
if( skill_num != ASC_BREAKER || !(flag&BF_WEAPON) )
@@ -556,11 +559,11 @@
if( sc->data[SC_DEEPSLEEP] ) {
damage += damage / 2; // 1.5 times more damage while in Deep Sleep.
- status_change_end(bl,SC_DEEPSLEEP,INVALID_TIMER);
+ status_change_end(bl,SC_DEEPSLEEP, INVALID_TIMER);
}
if( sc->data[SC_VOICEOFSIREN] )
- status_change_end(bl,SC_VOICEOFSIREN,INVALID_TIMER);
+ status_change_end(bl,SC_VOICEOFSIREN, INVALID_TIMER);
}
@@ -900,7 +903,7 @@
}
/*==========================================
- * HP/SPzûÌvZ
+ * HP/SP drain calculation
*------------------------------------------*/
static int battle_calc_drain(int damage, int rate, int per)
{
@@ -919,7 +922,7 @@
}
/*==========================================
- * ?Cû_??[W
+ * Passif skill dammages increases
*------------------------------------------*/
int battle_addmastery(struct map_session_data *sd,struct block_list *target,int dmg,int type)
{
@@ -1024,6 +1027,7 @@
return damage;
}
+
/*==========================================
* Calculates the standard damage of a normal attack assuming it hits,
* it calculates nothing extra fancy, is needed for magnum break's WATK_ELEMENT bonus. [Skotlex]
@@ -1607,7 +1611,8 @@
sd->inventory_data[index] &&
sd->inventory_data[index]->type == IT_ARMOR)
ATK_ADD(sd->inventory_data[index]->weight/10);
- } else
+ }
+ else
ATK_ADD(sstatus->rhw.atk2); //Else use Atk2
break;
case HFLI_SBR44: //[orn]
@@ -2303,7 +2308,7 @@
case 13261: // Coconut Bomb
case 13262: // Melon Bomb
case 13263: // Pinapple Bomb
- skillratio += 400; // Unconfirded
+ skillratio += 400; // Unconfirmed
break;
case 13264: // Banana Bomb 2000%
skillratio += 1900;
@@ -3703,7 +3700,7 @@
}
/*==========================================
- * »ÌŒ_??[WvZ
+ * Calcule les degat d'une attaque Misc selon le skill
*------------------------------------------*/
struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *target,int skill_num,int skill_lv,int mflag)
{
@@ -4015,7 +4012,7 @@
return md;
}
/*==========================================
- * _??[WvZê??p
+ *
*------------------------------------------*/
struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct block_list *target,int skill_num,int skill_lv,int count)
{
@@ -4072,7 +4069,7 @@
rd1 = min(damage,status_get_max_hp(bl)) * sc->data[SC_DEATHBOUND]->val2 / 100; // Amplify damage.
*dmg = rd1 * 30 / 100; // Received damge = 30% of amplifly damage.
clif_skill_damage(src,bl,gettick(), status_get_amotion(src), 0, -30000, 1, RK_DEATHBOUND, sc->data[SC_DEATHBOUND]->val1,6);
- status_change_end(bl,SC_DEATHBOUND,INVALID_TIMER);
+ status_change_end(bl,SC_DEATHBOUND, INVALID_TIMER);
rdamage += rd1;
if (rdamage < 1) rdamage = 1;
}
@@ -4142,6 +4139,7 @@
if (rhp || rsp)
status_zap(tbl, rhp, rsp);
}
+
// Deals the same damage to targets in area. [pakpil]
int battle_damage_area( struct block_list *bl, va_list ap) {
unsigned int tick;
@@ -4172,8 +4170,9 @@
return 0;
}
+
/*==========================================
- * Ê??U??ÜÆß
+ *
*------------------------------------------*/
enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* target, unsigned int tick, int flag) {
struct map_session_data *sd = NULL, *tsd = NULL;
@@ -4240,13 +4239,13 @@
}
}
}
+ if(sc && sc->count){
+ if (sc->data[SC_CLOAKING] && !(sc->data[SC_CLOAKING]->val4&2))
+ status_change_end(src, SC_CLOAKING, INVALID_TIMER);
- if (sc && sc->data[SC_CLOAKING] && !(sc->data[SC_CLOAKING]->val4&2))
- status_change_end(src, SC_CLOAKING, INVALID_TIMER);
-
- if (sc && sc->data[SC_CLOAKINGEXCEED] && !(sc->data[SC_CLOAKINGEXCEED]->val4&2))
- status_change_end(src, SC_CLOAKINGEXCEED, INVALID_TIMER);
-
+ if (sc->data[SC_CLOAKINGEXCEED] && !(sc->data[SC_CLOAKINGEXCEED]->val4&2))
+ status_change_end(src,SC_CLOAKINGEXCEED,INVALID_TIMER);
+ }
if( tsc && tsc->data[SC_AUTOCOUNTER] && status_check_skilluse(target, src, KN_AUTOCOUNTER, 1) )
{
int dir = map_calc_dir(target,src->x,src->y);
@@ -4289,8 +4288,9 @@
return ATK_MISS;
}
}
-
- if (sc) {
+
+ if (sc && sc->count)
+ {
if (sc->data[SC_SACRIFICE]) {
int skilllv = sc->data[SC_SACRIFICE]->val1;
damage_lv ret_val;
@@ -4502,6 +4502,10 @@
status_change_end(target, SC_POISONREACT, INVALID_TIMER);
}
}
+ if (sc && sc->data[SC_CAMOUFLAGE] && !(sc->data[SC_CAMOUFLAGE]->val3&2)){ //moved so basic attack get critical bonus
+ status_change_end(src,SC_CAMOUFLAGE,INVALID_TIMER);
+ }
+
map_freeblock_unlock();
return wd.dmg_lv;
}
@@ -4554,6 +4558,7 @@
if (((TBL_SKILL*)src)->group && ((TBL_SKILL*)src)->group->src_id)
src = map_id2bl(((TBL_SKILL*)src)->group->src_id);
break;
+ default: break; //other type doesn't have master (recursive check so don't showwarning)
}
} while (src && src != prev);
return prev;
@@ -4695,9 +4700,9 @@
int inf2 = 0;
if (!su->group)
return 0;
+ inf2 = skill_get_inf2(su->group->skill_id);
if( battle_config.vs_traps_bctall && (target->type&battle_config.vs_traps_bctall) &&
- (inf2 = skill_get_inf2(su->group->skill_id))&INF2_TRAP &&
- map_flag_vs(src->m) )
+ inf2&INF2_TRAP && map_flag_vs(src->m) )
return 1;//traps may target everyone
if (su->group->src_id == target->id) {
if (inf2&INF2_NO_TARGET_SELF)
@@ -4707,6 +4712,7 @@
}
break;
}
+ default: break; //unhandle others
}
switch( s_bl->type )
@@ -4847,7 +4853,7 @@
return (flag&state)?1:-1;
}
/*==========================================
- * Ëö»è
+ * ï¿œËᅵᅵᅵᅵᅵ
*------------------------------------------*/
bool battle_check_range(struct block_list *src, struct block_list *bl, int range)
{
Index: src/map/skill.c
===================================================================
--- src/map/skill.c (revision 16039)
+++ src/map/skill.c (working copy)
@@ -781,7 +781,7 @@
rate += rate*sc->data[SC_SKILLRATE_UP]->val2/100;
status_change_end(src, SC_SKILLRATE_UP, INVALID_TIMER);
}
- sc_start4(src,SC_COMBO, rate, TK_COUNTER, bl->id,0,0,
+ sc_start2(src,SC_COMBO, rate, TK_COUNTER, bl->id,
(2000 - 4*sstatus->agi - 2*sstatus->dex));
}
}
@@ -795,7 +795,7 @@
skill_get_time2(AS_ENCHANTPOISON,sce->val1),0);
// Enchant Deadly Poison gives a chance to deadly poison attacked enemies
if((sce=sc->data[SC_EDP]))
- sc_start4(bl,SC_DPOISON,sce->val2, sce->val1,0,0,0,
+ sc_start(bl,SC_DPOISON,sce->val2, sce->val1,
skill_get_time2(ASC_EDP,sce->val1));
}
}
@@ -1268,7 +1268,7 @@
if( dstsd )
skill_addtimerskill(src,tick+status_get_amotion(src),bl->id,0,0,skillid,skilllv,BF_WEAPON,0);
else if( dstmd && !is_boss(bl) )
- sc_start(bl, SC_STUN, 100, skilllv, 1000 + 1000 * (rnd() %3));
+ sc_start(bl, SC_STUN, 100, skilllv, 1000 + 1000 * (rnd()%3));
break;
case SR_GENTLETOUCH_QUIET:
sc_start(bl, SC_SILENCE, 2 * skilllv, skilllv, skill_get_time(skillid, skilllv));
@@ -1331,7 +1331,7 @@
sc_start(bl, SC_MELON_BOMB, 100, skilllv, skill_get_time(GN_SLINGITEM, skilllv)); // Reduces ASPD and moviment speed
break;
case 13264:
- sc_start(bl, SC_BANANA_BOMB, 100, skilllv, skill_get_time(GN_SLINGITEM, skilllv)); // Reduces LUK À?Needed confirm it, may be it's bugged in kRORE?
+ sc_start(bl, SC_BANANA_BOMB, 100, skilllv, skill_get_time(GN_SLINGITEM, skilllv)); // Reduces LUK ᅵ?Needed confirm it, may be it's bugged in kRORE?
sc_start(bl, SC_BANANA_BOMB_SITDOWN, 75, skilllv, skill_get_time(GN_SLINGITEM_RANGEMELEEATK,skilllv)); // Sitdown for 3 seconds.
break;
}
@@ -2031,10 +2031,16 @@
break;
case BL_SKILL:
su = (struct skill_unit *)target;
- if( su && su->group && (su->group->unit_id == UNT_ANKLESNARE || su->group->unit_id == UNT_ELECTRICSHOCKER
- || su->group->unit_id == UNT_CLUSTERBOMB || su->group->unit_id == UNT_REVERBERATION) )
- return 0; // ankle snare, electricshocker, clusterbomb, reverberation cannot be knocked back
+ if( su && su->group)
+ switch(su->group->unit_id){ //defined trap that cannot be knocked back
+ case UNT_ANKLESNARE: //allow easier modification [Lighta], @TODO set up an flag on skill_unit_db for that
+ case UNT_ELECTRICSHOCKER:
+ // case UNT_CLUSTERBOMB: //http://irowiki.org/wiki/Bomb_Cluster
+ case UNT_REVERBERATION:
+ return 0;
+ }
break;
+ default : break; //unhandled type
}
if (direction == -1) // <optimized>: do the computation here instead of outside
@@ -2104,7 +2110,7 @@
struct map_session_data *sd, *tsd;
int type,damage,rdamage=0;
- if(skillid > 0 && skilllv <= 0) return 0;
+ if( skillid > 0 && skilllv <= 0 ) return 0; // Invalid skill id or level.
nullpo_ret(src); //Source is the master behind the attack (player/mob/pet)
nullpo_ret(dsrc); //dsrc is the actual originator of the damage, can be the same as src, or a skill casted by src.
@@ -2674,12 +2680,12 @@
}
/*==========================================
- * XLÍ??U?p(map_foreachinarea©çÄÎêé)
- * flagÉ¢Ä?F16?i?ðmF
+ * ï¿œXï¿œLᅵᅵᅵᅵ??U?ï¿œp(map_foreachinareaᅵᅵᅵᅵÄÎᅵᅵ)
+ * flagï¿œÉÂᅵᅵᅵ?F16?i?ᅵᅵᅵmï¿œF
* MSB <- 00fTffff ->LSB
- * T =^?QbgI?p(BCT_*)
- * ffff=©RÉgpÂ\
- * 0 =\ñ?B0ÉÅè
+ * T =ᅵ^?ᅵQᅵbᅵgᅵI?ᅵp(BCT_*)
+ * ffff=ᅵᅵᅵRï¿œÉgï¿œpï¿œÂ\
+ * 0 =ï¿œ\ᅵᅵ?B0ï¿œÉÅï¿œ
*------------------------------------------*/
typedef int (*SkillFunc)(struct block_list *, struct block_list *, int, int, unsigned int, int);
int skill_area_sub (struct block_list *bl, va_list ap)
@@ -2878,6 +2884,7 @@
{
case BL_HOM: sd = ((TBL_HOM*)bl)->master; break;
case BL_MER: sd = ((TBL_MER*)bl)->master; break;
+ default : break; //unhandled type
}
status = status_get_status_data(bl);
@@ -3104,10 +3111,10 @@
if( j )
{
i = applyeffects[rnd()%j];
- status_change_start(target, i, 10000, skl->skill_lv,
+ sc_start4(target, i, 100, skl->skill_lv,
(i == SC_BURNING ? 1000 : 0),
(i == SC_BURNING ? src->id : 0),
- 0, skill_get_time(WL_TETRAVORTEX,skl->skill_lv), 0);
+ 0, skill_get_time(WL_TETRAVORTEX,skl->skill_lv) );
}
}
}
@@ -3127,9 +3134,11 @@
break;
case LG_MOONSLASHER:
case SR_WINDMILL:
- if( target->type == BL_PC ) {
- struct map_session_data *tsd = NULL;
- if( (tsd = ((TBL_PC*)target)) && !pc_issit(tsd) ) {
+ if( target->type == BL_PC )
+ {
+ TBL_PC *tsd = BL_CAST(BL_PC,target);
+ if( tsd && !pc_issit(tsd) )
+ {
pc_setsit(tsd);
skill_sit(tsd,1);
clif_sitting(&tsd->bl);
@@ -3229,6 +3238,7 @@
}
return 1;
}
+
static int skill_ative_reverberation( struct block_list *bl, va_list ap) {
struct skill_unit *su = (TBL_SKILL*)bl;
struct skill_unit_group *sg;
@@ -4155,7 +4165,7 @@
if( j == 0 )
{ // No Spheres
- clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
+ clif_skill_fail(sd,skillid,USESKILL_FAIL_SUMMON_NONE,0);
break;
}
@@ -4241,6 +4251,7 @@
sc_start(bl, SC_INFRAREDSCAN, 10000, skilllv, skill_get_time(skillid, skilllv));
status_change_end(bl, SC_HIDING, INVALID_TIMER);
status_change_end(bl, SC_CLOAKING, INVALID_TIMER);
+ status_change_end(bl, SC_CHASEWALK, INVALID_TIMER);
status_change_end(bl, SC_CLOAKINGEXCEED, INVALID_TIMER); // Need confirm it.
}
else
@@ -4304,20 +4315,26 @@
break;
case SR_HOWLINGOFLION:
- status_change_end(bl, SC_SWINGDANCE, INVALID_TIMER);
- status_change_end(bl, SC_SYMPHONYOFLOVER, INVALID_TIMER);
- status_change_end(bl, SC_MOONLITSERENADE, INVALID_TIMER);
- status_change_end(bl, SC_RUSHWINDMILL, INVALID_TIMER);
- status_change_end(bl, SC_ECHOSONG, INVALID_TIMER);
- status_change_end(bl, SC_HARMONIZE, INVALID_TIMER);
- status_change_end(bl, SC_SIRCLEOFNATURE, INVALID_TIMER);
- status_change_end(bl, SC_SATURDAYNIGHTFEVER, INVALID_TIMER);
- status_change_end(bl, SC_DANCEWITHWUG, INVALID_TIMER);
- status_change_end(bl, SC_LERADSDEW, INVALID_TIMER);
- status_change_end(bl, SC_MELODYOFSINK, INVALID_TIMER);
- status_change_end(bl, SC_BEYONDOFWARCRY, INVALID_TIMER);
- status_change_end(bl, SC_UNLIMITEDHUMMINGVOICE, INVALID_TIMER);
+ {
+ struct status_change *tsc = status_get_sc(bl);
+ if(tsc && tsc->count){
+ int i=0;
+ const enum sc_type scs[] = {
+ SC_SWINGDANCE, SC_SYMPHONYOFLOVER,
+ SC_MOONLITSERENADE, SC_RUSHWINDMILL, SC_ECHOSONG, SC_HARMONIZE,
+ SC_DEEPSLEEP, SC_VOICEOFSIREN, SC_SATURDAYNIGHTFEVER, SC_GLOOMYDAY, //Group B
+ SC_UNLIMITEDHUMMINGVOICE, SC_SONGOFMANA, SC_DANCEWITHWUG,
+ SC_BEYONDOFWARCRY, SC_MELODYOFSINK, SC_LERADSDEW, SC_SIRCLEOFNATURE //Group B Wanderer
+ };
+
+ for (i = 0; i < ARRAYLENGTH(scs); i++){
+ if(i==SC_SATURDAYNIGHTFEVER) tsc->data[i]->val2=0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0.
+ if (tsc->data[scs[i]])
+ status_change_end(bl, scs[i], INVALID_TIMER);
+ }
+ }
skill_attack(BF_WEAPON, src, src, bl, skillid, skilllv, tick, flag);
+ }
break;
case SR_EARTHSHAKER:
@@ -4346,10 +4363,10 @@
struct status_change *tsc = status_get_sc(bl);
if( tsc && tsc->data[SC_POISON] ) {
skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag);
- status_change_end(bl, SC_POISON, INVALID_TIMER);
+ status_change_end(bl, SC_POISON, INVALID_TIMER);
}
else if( sd )
- clif_skill_fail(sd, skillid, 0, 0);
+ clif_skill_fail(sd, skillid, USESKILL_FAIL_LEVEL, 0);
}
break;
@@ -4417,7 +4434,7 @@
case EL_ROCK_CRUSHER:
clif_skill_nodamage(src,battle_get_master(src),skillid,skilllv,1);
clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6);
- if( rnd()%100 < 50 )
+ if( rnd()%100 < 50 )
skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
else
skill_attack(BF_WEAPON,src,src,bl,EL_ROCK_CRUSHER_ATK,skilllv,tick,flag);
@@ -4802,6 +4819,7 @@
else switch (src->type) {
case BL_MOB: target_id = ((TBL_MOB*)src)->target_id; break;
case BL_PET: target_id = ((TBL_PET*)src)->target_id; break;
+ default : break; //unhandled type
}
if (!target_id)
break;
@@ -7454,9 +7472,9 @@
if( (tsc && (tsc->data[SC_FREEZE] || tsc->data[SC_STONE] ||
tsc->data[SC_BLIND]))&& (rnd()%100 < 30+5*skilllv) )
{
- status_change_end(bl, SC_FREEZE, INVALID_TIMER);
- status_change_end(bl, SC_STONE, INVALID_TIMER);
- status_change_end(bl, SC_BLIND, INVALID_TIMER);
+ status_change_end(bl, SC_FREEZE, INVALID_TIMER);
+ status_change_end(bl, SC_STONE, INVALID_TIMER);
+ status_change_end(bl, SC_BLIND, INVALID_TIMER);
}
// Success rate only applies to the curing effect and not stat bonus.
clif_skill_nodamage(bl, bl, skillid, skilllv,
@@ -7740,7 +7758,7 @@
case RA_WUGDASH:
if( tsce ) {
- clif_skill_nodamage(src,bl,skillid,skilllv,status_change_end(bl, type, -1));
+ clif_skill_nodamage(src,bl,skillid,skilllv,status_change_end(bl, type, INVALID_TIMER));
map_freeblock_unlock();
return 0;
}
@@ -7830,7 +7848,7 @@
clif_skill_nodamage(src,bl,skillid,1,1);
}
else
- clif_skill_fail(sd,skillid,0x15,0);
+ clif_skill_fail(sd,skillid,USESKILL_FAIL_GC_WEAPONBLOCKING,0);
}
break;
@@ -7938,7 +7956,7 @@
clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6);
if( rate < brate )
map_foreachinrange(skill_area_sub,src,skill_get_splash(skillid,skilllv),BL_CHAR,src,skillid,skilllv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id);
- status_change_end(bl,SC_SHIELDSPELL_DEF,INVALID_TIMER);
+ status_change_end(bl,SC_SHIELDSPELL_DEF, INVALID_TIMER);
break;
case 2:
val = 10 * shield_data->def; // % Reflected damage.
@@ -8039,6 +8057,7 @@
clif_skill_nodamage(bl,src,skillid,skilllv,
sc_start(bl, type, 100, skilllv, skill_get_time(skillid, skilllv)));
break;
+
case SR_CURSEDCIRCLE:
if( flag&1 ) {
if( is_boss(bl) ) break;
@@ -8204,7 +8223,7 @@
status_fix_damage(src,bl,9999,clif_damage(src,bl,tick,0,0,9999,0,0,0));
} else if( sd ) {
if( !sd->status.party_id ) {
- clif_skill_fail(sd,skillid,0x11,0);
+ clif_skill_fail(sd,skillid,USESKILL_FAIL_NEED_HELPER,0);
break;
}
if( map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid,skilllv),
@@ -8281,6 +8300,7 @@
else switch (src->type) {
case BL_MOB: target_id = ((TBL_MOB*)src)->target_id; break;
case BL_PET: target_id = ((TBL_PET*)src)->target_id; break;
+ default : break; //unhandled type
}
if (!target_id)
break;
@@ -8355,12 +8375,12 @@
// Remove previous elemental fisrt.
if( sd->ed && elemental_delete(sd->ed,0) ) {
- clif_skill_fail(sd,skillid,0,0);
+ clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
break;
}
// Summoning the new one.
if( !elemental_create(sd,elemental_class,skill_get_time(skillid,skilllv)) ) {
- clif_skill_fail(sd,skillid,0,0);
+ clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
break;
}
clif_skill_nodamage(src,bl,skillid,skilllv,1);
@@ -8371,12 +8391,12 @@
if( sd ) {
int mode = EL_MODE_PASSIVE; // Standard mode.
if( !sd->ed ) {
- clif_skill_fail(sd,skillid,0,0);
+ clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
break;
}
if( skilllv == 4 ) {// At level 4 delete elementals.
if( elemental_delete(sd->ed, 0) )
- clif_skill_fail(sd,skillid,0,0);
+ clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
break;
}
switch( skilllv ) {// Select mode bassed on skill level used.
@@ -8385,7 +8405,7 @@
case 3: mode = EL_MODE_AGGRESSIVE; break;
}
if( !elemental_change_mode(sd->ed,mode) ) {
- clif_skill_fail(sd,skillid,0,0);
+ clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
break;
}
clif_skill_nodamage(src,bl,skillid,skilllv,1);
@@ -8407,11 +8427,11 @@
int s_hp = sd->battle_status.hp * 10 / 100, s_sp = sd->battle_status.sp * 10 / 100;
int e_hp, e_sp;
if( !ed ) {
- clif_skill_fail(sd,skillid,0,0);
+ clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
break;
}
if( !status_charge(&sd->bl,s_hp,s_sp) ) {
- clif_skill_fail(sd,skillid,0,0);
+ clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
break;
}
e_hp = ed->battle_status.max_hp * 10 / 100;
@@ -8434,7 +8454,7 @@
clif_skill_nodamage(src, bl, skillid, skilllv, 1);
sc_start2(bl, type, 100, skilllv, src->id, skill_get_time(skillid,skilllv));
} else if( sd ) {
- clif_skill_fail(sd, skillid, 0, 0);
+ clif_skill_fail(sd, skillid, USESKILL_FAIL_LEVEL, 0);
break;
}
break;
@@ -8466,7 +8486,7 @@
else
skill_attack(BF_WEAPON,src,src,bl,GN_SLINGITEM_RANGEMELEEATK,skilllv,tick,flag);
} else //Otherwise, it fails, shows animation and removes items.
- clif_skill_fail(sd,GN_SLINGITEM_RANGEMELEEATK,0xa,0);
+ clif_skill_fail(sd,GN_SLINGITEM_RANGEMELEEATK,USESKILL_FAIL,0);
} else {
struct script_code *script = sd->inventory_data[i]->script;
if( !script )
@@ -9617,7 +9637,7 @@
case LG_BANDING:
if( sc && sc->data[SC_BANDING] )
- status_change_end(src,SC_BANDING,INVALID_TIMER);
+ status_change_end(src,SC_BANDING, INVALID_TIMER);
else if( (sg = skill_unitsetting(src,skillid,skilllv,src->x,src->y,0)) != NULL ) {
sc_start4(src,SC_BANDING,100,skilllv,0,0,sg->group_id,skill_get_time(skillid,skilllv));
if( sd ) pc_banding(sd,skilllv);
@@ -9686,7 +9706,7 @@
}
}
break;
-
+
case SO_FIREWALK:
case SO_ELECTRICWALK:
if( sc && sc->data[type] )
@@ -11075,8 +11095,8 @@
// Reveal hidden players every 5 seconds.
if( sg->val2 % 5 == 0 ) {
// TODO: check if other hidden status can be removed.
- status_change_end(bl,SC_HIDING,INVALID_TIMER);
- status_change_end(bl,SC_CLOAKING,INVALID_TIMER);
+ status_change_end(bl,SC_HIDING, INVALID_TIMER);
+ status_change_end(bl,SC_CLOAKING, INVALID_TIMER);
}
}
/* Enable this if kRO fix the current skill. Currently no damage on undead and demon monster. [Jobbie]
@@ -12186,7 +12206,7 @@
case SC_MANHOLE:
case SC_DIMENSIONDOOR:
if( sc && sc->data[SC_MAGNETICFIELD] ) {
- clif_skill_fail(sd,skill,0,0);
+ clif_skill_fail(sd,skill,USESKILL_FAIL_LEVEL,0);
return 0;
}
break;
@@ -12194,7 +12214,7 @@
int count;
count = skill_check_pc_partner(sd, skill, &lv, skill_get_splash(skill,lv), 0);
if( count < 1 ) {
- clif_skill_fail(sd,skill,0x11,0);
+ clif_skill_fail(sd,skill,USESKILL_FAIL_NEED_HELPER,0);
return 0;
} else
require.sp -= require.sp * 20 * count / 100; // -20% each W/M in the party.
@@ -12204,19 +12224,19 @@
case SO_ELECTRICWALK: // Can't be casted until you've walked all cells.
if( sc && sc->data[SC_PROPERTYWALK] &&
sc->data[SC_PROPERTYWALK]->val3 < skill_get_maxcount(sc->data[SC_PROPERTYWALK]->val1,sc->data[SC_PROPERTYWALK]->val2) ) {
- clif_skill_fail(sd,skill,0x0,0);
+ clif_skill_fail(sd,skill,USESKILL_FAIL_LEVEL,0);
return 0;
}
break;
case SO_EL_CONTROL:
if( !sd->status.ele_id || !sd->ed ) {
- clif_skill_fail(sd,skill,0x00,0);
+ clif_skill_fail(sd,skill,USESKILL_FAIL_LEVEL,0);
return 0;
}
break;
case RETURN_TO_ELDICASTES:
if( sd->sc.option&OPTION_MADOGEAR ) { //Cannot be used if Mado is equipped.
- clif_skill_fail(sd,skill,0,0);
+ clif_skill_fail(sd,skill,USESKILL_FAIL_LEVEL,0);
return 0;
}
break;
@@ -14251,7 +14271,7 @@
struct status_change *sc = NULL;
if( (sc = status_get_sc(src)) != NULL && sc->data[SC_NEUTRALBARRIER_MASTER] ) {
sc->data[SC_NEUTRALBARRIER_MASTER]->val2 = 0;
- status_change_end(src,SC_NEUTRALBARRIER_MASTER,INVALID_TIMER);
+ status_change_end(src,SC_NEUTRALBARRIER_MASTER, INVALID_TIMER);
}
}
break;
@@ -14260,7 +14280,7 @@
struct status_change *sc = NULL;
if( (sc = status_get_sc(src)) != NULL && sc->data[SC_STEALTHFIELD_MASTER] ) {
sc->data[SC_STEALTHFIELD_MASTER]->val2 = 0;
- status_change_end(src,SC_STEALTHFIELD_MASTER,INVALID_TIMER);
+ status_change_end(src,SC_STEALTHFIELD_MASTER, INVALID_TIMER);
}
}
break;
@@ -14269,7 +14289,7 @@
struct status_change *sc = NULL;
if( (sc = status_get_sc(src)) && sc->data[SC_BANDING] ) {
sc->data[SC_BANDING]->val4 = 0;
- status_change_end(src,SC_BANDING,INVALID_TIMER);
+ status_change_end(src,SC_BANDING, INVALID_TIMER);
}
}
break;
@@ -15318,7 +15338,7 @@
break;
case GN_MAKEBOMB:
case GN_MIX_COOKING:
- clif_msg_skill(sd,skill_id,0x627);
+ clif_msg_skill(sd,skill_id,1);
break;
case GN_S_PHARMACY:
break; // No effects here.
@@ -15387,13 +15407,13 @@
clif_additem(sd,0,0,flag);
map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0);
}
- clif_msg_skill(sd,skill_id,0x628);
+ clif_msg_skill(sd,skill_id,2);
}
break;
case GN_S_PHARMACY:
break; // No effects here.
case GN_MAKEBOMB:
- clif_msg_skill(sd,skill_id,0x628);
+ clif_msg_skill(sd,skill_id,2);
break;
default:
if( skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20 )
@@ -15591,10 +15611,10 @@
return 1;
}
+
int skill_select_menu(struct map_session_data *sd,int flag,int skill_id) {
int id, lv, prob, aslvl = 0;
nullpo_ret(sd);
-
if (sd->sc.data[SC_STOP]) {
aslvl = sd->sc.data[SC_STOP]->val1;
status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
@@ -15612,6 +15632,7 @@
sc_start4(&sd->bl,SC__AUTOSHADOWSPELL,100,id,lv,prob,0,skill_get_time(SC_AUTOSHADOWSPELL,aslvl));
return 0;
}
+
int skill_elementalanalysis(struct map_session_data* sd, int n, int skill_lv, unsigned short* item_list) {
int i;
@@ -15631,7 +15652,7 @@
if( skill_lv == 2 )
del_amount -= (del_amount % 10);
add_amount = (skill_lv == 1) ? del_amount * (5 + rnd()%5) : del_amount / 10 ;
-
+
if( (nameid = sd->status.inventory[idx].nameid) <= 0 || del_amount > sd->status.inventory[idx].amount ) {
clif_skill_fail(sd,SO_EL_ANALYSIS,0,0);
return 1;
@@ -16631,6 +16652,7 @@
return true;
}
+
static bool skill_parse_row_spellbookdb(char* split[], int columns, int current)
{// SkillID,PreservePoints
@@ -16655,6 +16677,7 @@
return false;
}
+
static bool skill_parse_row_improvisedb(char* split[], int columns, int current)
{// SkillID
int i = atoi(split[0]);
Index: src/map/unit.c
===================================================================
--- src/map/unit.c (revision 16039)
+++ src/map/unit.c (working copy)
@@ -7,6 +7,7 @@
#include "../common/db.h"
#include "../common/malloc.h"
#include "../common/random.h"
+
#include "unit.h"
#include "map.h"
#include "path.h"
@@ -136,8 +137,7 @@
return 0;
}
ud->walktimer = INVALID_TIMER;
- if( bl->prev == NULL ) return 0; // block_list ©ç²¯Ä¢éÌÅÚ®â~·é
-
+ if( bl->prev == NULL ) return 0; // Stop moved because it is missing from the block_list
if(ud->walkpath.path_pos>=ud->walkpath.path_len)
return 0;
@@ -1010,8 +1008,8 @@
int temp = 0;
nullpo_ret(src);
- if(status_isdead(src))
- return 0; // ñŢȢ©
+ if( status_isdead(src) )
+ return 0; //Do not continue source is dead
sd = BL_CAST(BL_PC, src);
ud = unit_bl2ud(src);
@@ -1097,7 +1095,7 @@
return 0;
tstatus = status_get_status_data(target);
- //ŒOÌXLóµÌL^
+ //The previous record of skill status
if(sd) {
switch(skill_num){
case SA_CASTCANCEL:
@@ -1132,11 +1130,10 @@
break;
case WL_WHITEIMPRISON:
if( battle_check_target(src,target,BCT_SELF|BCT_ENEMY) < 0 ) {
- clif_skill_fail(sd,skill_num,0xb,0);
+ clif_skill_fail(sd,skill_num,USESKILL_FAIL_TOTARGET,0);
return 0;
}
break;
-
}
if (!skill_check_condition_castbegin(sd, skill_num, skill_lv))
return 0;
@@ -1259,6 +1256,7 @@
md->state.aggressive = (tstatus->mode&MD_ANGRY)?1:0;
md->min_chase = md->db->range3;
break;
+ default: break; //unhandled type
}
}
}
@@ -1295,11 +1293,11 @@
status_change_end(src,SC_CLOAKINGEXCEED, INVALID_TIMER);
if (!src->prev) return 0;
} else if( sc->data[SC_CAMOUFLAGE] && skill_num != RA_CAMOUFLAGE )
- status_change_end(src,SC_CAMOUFLAGE,INVALID_TIMER);
+ status_change_end(src,SC_CAMOUFLAGE, INVALID_TIMER);
if( sc->data[SC_CURSEDCIRCLE_ATKER] ) {
sc->data[SC_CURSEDCIRCLE_ATKER]->val3 = 1;
- status_change_end(src,SC_CURSEDCIRCLE_ATKER,INVALID_TIMER);
+ status_change_end(src,SC_CURSEDCIRCLE_ATKER, INVALID_TIMER);
}
}
@@ -1338,7 +1336,7 @@
nullpo_ret(src);
- if(!src->prev) return 0; // map ãɶݷé©
+ if(!src->prev) return 0; // Exists on the map
if(status_isdead(src)) return 0;
sd = BL_CAST(BL_PC, src);
@@ -1375,7 +1373,7 @@
return 0;
}
- /* ËöÆáQš`FbN */
+ /* Check range and obstacle */
bl.type = BL_NUL;
bl.m = src->m;
bl.x = skill_x;
@@ -1427,7 +1425,7 @@
if( sc->data[SC_CURSEDCIRCLE_ATKER] ) {
sc->data[SC_CURSEDCIRCLE_ATKER]->val3 = 1;
- status_change_end(src,SC_CURSEDCIRCLE_ATKER,INVALID_TIMER);
+ status_change_end(src,SC_CURSEDCIRCLE_ATKER, INVALID_TIMER);
}
}
@@ -1499,8 +1497,8 @@
}
/*==========================================
- * Uv
- * typeª1Èçp±U
+ * Attack request
+ * If type is an ongoing attack
*------------------------------------------*/
int unit_attack(struct block_list *src,int target_id,int continuous)
{
@@ -1581,7 +1579,7 @@
{
nullpo_retr(false, bl);
- if( bl->x==x && bl->y==y ) // ¯¶}X
+ if( bl->x==x && bl->y==y ) //Same place
return true;
return path_search(NULL,bl->m,bl->x,bl->y,x,y,easy,CELL_CHKNOREACH);
@@ -1625,7 +1623,7 @@
return path_search(NULL,bl->m,bl->x,bl->y,tbl->x-dx,tbl->y-dy,easy,CELL_CHKNOREACH);
}
/*==========================================
- * Calculates position of Pet/Mercenary/Homunculus
+ * Calculates position of Pet/Mercenary/Homunculus/Elemental
*------------------------------------------*/
int unit_calc_pos(struct block_list *bl, int tx, int ty, int dir)
{
@@ -1683,7 +1681,7 @@
}
/*==========================================
- * PCÌU (timerÖ)
+ * Attack of the PC (function timer)
*------------------------------------------*/
static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int tick)
{
@@ -1881,7 +1879,7 @@
return 1;
}
-// unit_data Ìú»
+// unit_data initialization process
void unit_dataset(struct block_list *bl)
{
struct unit_data *ud;
@@ -1922,7 +1920,7 @@
}
/*==========================================
- * ©œÚÌTCYðÏX·é
+ * To change the size of the object (player or mob only)
*------------------------------------------*/
int unit_changeviewsize(struct block_list *bl,short size)
{
@@ -2418,7 +2416,8 @@
elemental_summon_stop(ed);
break;
- }
+ }
+ default: break; //unhandled type
}
skill_clear_unitgroup(bl);
Index: src/map/battle.h
===================================================================
--- src/map/battle.h (revision 16039)
+++ src/map/battle.h (working copy)
@@ -14,7 +14,7 @@
ATK_DEF // attack connected
} damage_lv;
-// _[W
+// dammage structure
struct Damage {
int damage,damage2;
int type,div_;
@@ -47,7 +47,7 @@
int battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int damage,int div_,int skill_num,int skill_lv,int flag);
int battle_calc_bg_damage(struct block_list *src,struct block_list *bl,int damage,int div_,int skill_num,int skill_lv,int flag);
-enum { // ÅIvZÌtO
+enum { //Attack type for battle calc
BF_WEAPON = 0x0001,
BF_MAGIC = 0x0002,
BF_MISC = 0x0004,
Index: src/map/skill.h
===================================================================
--- src/map/skill.h (revision 16039)
+++ src/map/skill.h (working copy)
@@ -87,7 +87,7 @@
int itemid[MAX_SKILL_ITEM_REQUIRE],amount[MAX_SKILL_ITEM_REQUIRE];
};
-// XLf?^x?X
+// Database skills
struct s_skill_db {
char name[NAME_LENGTH];
char desc[40];
@@ -116,7 +116,7 @@
extern struct s_skill_db skill_db[MAX_SKILL_DB];
#define MAX_SKILL_UNIT_LAYOUT 50
-#define MAX_SQUARE_LAYOUT 5 // 11*11ÌjbgzuªÅå
+#define MAX_SQUARE_LAYOUT 5 // 11*11 Placement of a maximum unit
#define MAX_SKILL_UNIT_COUNT ((MAX_SQUARE_LAYOUT*2+1)*(MAX_SQUARE_LAYOUT*2+1))
struct s_skill_unit_layout {
int count;
@@ -194,7 +194,7 @@
UF_DUALMODE = 0x0800, // Spells should trigger both ontimer and onplace/onout/onleft effects.
};
-// ACeì¬f?^x?X
+// Create Database item
struct s_skill_produce_db {
int nameid, trigger;
int req_skill,req_skill_lv,itemlv;
@@ -202,14 +202,14 @@
};
extern struct s_skill_produce_db skill_produce_db[MAX_SKILL_PRODUCE_DB];
-// îì¬f?^x?X
+// Creating database arrow
struct s_skill_arrow_db {
int nameid, trigger;
int cre_id[MAX_ARROW_RESOURCE],cre_amount[MAX_ARROW_RESOURCE];
};
extern struct s_skill_arrow_db skill_arrow_db[MAX_SKILL_ARROW_DB];
-// AuJ_uf?^x?X
+// Abracadabra database
struct s_skill_abra_db {
int skillid;
int req_lv;
@@ -226,7 +226,8 @@
//Returns the cast type of the skill: ground cast, castend damage, castend no damage
enum { CAST_GROUND, CAST_DAMAGE, CAST_NODAMAGE };
int skill_get_casttype(int id); //[Skotlex]
-// XLf?^x?XÖÌANZT
+
+// Accessor to the skills database
//
int skill_get_index( int id );
int skill_get_type( int id );
@@ -276,13 +277,13 @@
int skill_cleartimerskill(struct block_list *src);
int skill_addtimerskill(struct block_list *src,unsigned int tick,int target,int x,int y,int skill_id,int skill_lv,int type,int flag);
-// ÇÁ?Ê
+// Results? Added
int skill_additional_effect( struct block_list* src, struct block_list *bl,int skillid,int skilllv,int attack_type,int dmg_lv,unsigned int tick);
int skill_counter_additional_effect( struct block_list* src, struct block_list *bl,int skillid,int skilllv,int attack_type,unsigned int tick);
int skill_blown(struct block_list* src, struct block_list* target, int count, int direction, int flag);
int skill_break_equip(struct block_list *bl, unsigned short where, int rate, int flag);
int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int lv, int time);
-// jbgXL
+// Skills unit
struct skill_unit_group* skill_id2group(int group_id);
struct skill_unit_group *skill_unitsetting(struct block_list* src, short skillid, short skilllv, short x, short y, int flag);
struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx, int x, int y, int val1, int val2);
@@ -317,7 +318,7 @@
// Guild skills [celest]
int skill_guildaura_sub (struct map_session_data* sd, int id, int strvit, int agidex);
-// r¥LZ
+// Chant canceled
int skill_castcancel(struct block_list *bl,int type);
int skill_sit (struct map_session_data *sd, int type);
@@ -331,7 +332,7 @@
bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce);
-// Xe?^XÙí
+// Abnormal status
int skill_enchant_elemental_end(struct block_list *bl, int type);
int skillnotok(int skillid, struct map_session_data *sd);
int skillnotok_hom(int skillid, struct homun_data *hd);
@@ -339,13 +340,13 @@
int skill_chastle_mob_changetarget(struct block_list *bl,va_list ap);
-// ACeì¬
+// Item creation
int skill_can_produce_mix( struct map_session_data *sd, int nameid, int trigger, int qty);
int skill_produce_mix( struct map_session_data *sd, int skill_id, int nameid, int slot1, int slot2, int slot3, int qty );
int skill_arrow_create( struct map_session_data *sd,int nameid);
-// mobXLÌœß
+// skills for the mob
int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int skillid,int skilllv,unsigned int tick,int flag );
int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int skillid,int skilllv,unsigned int tick,int flag );
int skill_castend_pos2( struct block_list *src, int x,int y,int skillid,int skilllv,unsigned int tick,int flag);
Index: src/map/unit.h
===================================================================
--- src/map/unit.h (revision 16039)
+++ src/map/unit.h (working copy)
@@ -68,61 +68,61 @@
unsigned dead_sit : 2;
};
-// PC, MOB, PET ɀʷéðPÂÉÜÆßévæ
+// PC, MOB, PET Planning process into one that is common to
-// àsJn
-// ßèlÍA0 ( ¬÷ ), 1 ( žs )
+// walk initiation
+// The return value is 0 (success), 1 (failure)
int unit_walktoxy( struct block_list *bl, short x, short y, int easy);
int unit_walktobl( struct block_list *bl, struct block_list *target, int range, int easy);
int unit_run(struct block_list *bl);
int unit_calc_pos(struct block_list *bl, int tx, int ty, int dir);
-// àsâ~
-// typeÍȺÌgÝí¹ :
-// 1: ÊuîñÌM( ±ÌÖÌãÉÊuîñðM·éêÍsv )
-// 2: _[WfBCLè
-// 4: sŸ(MOBÌÝH)
+// Stop walking
+// The combination of the following type:
+// 1: (If you want to send the location information after this function is not required) transmission of location information
+// 2: Damaged delay
+// 4: Unknown (only MOB?)
int unit_stop_walking(struct block_list *bl,int type);
int unit_can_move(struct block_list *bl);
int unit_is_walking(struct block_list *bl);
int unit_set_walkdelay(struct block_list *bl, unsigned int tick, int delay, int type);
int unit_escape(struct block_list *bl, struct block_list *target, short dist);
-// Êu̧ڮ(«òεÈÇ)
+// Position of forced move (such as a blow)
int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath);
int unit_warp(struct block_list *bl, short map, short x, short y, clr_type type);
int unit_setdir(struct block_list *bl,unsigned char dir);
uint8 unit_getdir(struct block_list *bl);
int unit_blown(struct block_list* bl, int dx, int dy, int count, int flag);
-// »±ÜÅàsÅœÇè
¯é©Ì»è
+// Determination of walking path until you reach in there
bool unit_can_reach_pos(struct block_list *bl,int x,int y,int easy);
bool unit_can_reach_bl(struct block_list *bl,struct block_list *tbl, int range, int easy, short *x, short *y);
-// UÖA
+// Attack-related
int unit_stop_attack(struct block_list *bl);
int unit_attack(struct block_list *src,int target_id,int continuous);
int unit_cancel_combo(struct block_list *bl);
-// XLgp
+// Using the skill
int unit_skilluse_id(struct block_list *src, int target_id, short skill_num, short skill_lv);
int unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, short skill_num, short skill_lv);
-// XLgp( â³ÏÝLXgÔALZsÂÝèt« )
+// Skill use (corrected cast time, not with setting Cancel)
int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, short skill_lv, int casttime, int castcancel);
int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, short skill_num, short skill_lv, int casttime, int castcancel);
-// r¥LZ
+// Chant canceled
int unit_skillcastcancel(struct block_list *bl,int type);
int unit_counttargeted(struct block_list *bl);
int unit_set_target(struct unit_data* ud, int target_id);
-// unit_data Ìú»
+// unit_data Initialization process
void unit_dataset(struct block_list *bl);
int unit_fixdamage(struct block_list *src,struct block_list *target,unsigned int tick,int sdelay,int ddelay,int damage,int div,int type,int damage2);
-// »ÌŒ
+// Other
struct unit_data* unit_bl2ud(struct block_list *bl);
void unit_remove_map_pc(struct map_session_data *sd, clr_type clrtype);
void unit_free_pc(struct map_session_data *sd);
@@ -131,7 +131,7 @@
int unit_free(struct block_list *bl, clr_type clrtype);
int unit_changeviewsize(struct block_list *bl,short size);
-// ú»[`
+// Initialization routine
int do_init_unit(void);
int do_final_unit(void);
/**
Index: src/map/mercenary.c
===================================================================
--- src/map/mercenary.c (revision 16039)
+++ src/map/mercenary.c (working copy)
@@ -371,7 +371,7 @@
const enum sc_type scs[] = { SC_MERC_FLEEUP, SC_MERC_ATKUP, SC_MERC_HPUP, SC_MERC_SPUP, SC_MERC_HITUP };
int index = rnd() % ARRAYLENGTH(scs);
- status_change_start(&md->bl, scs[index], 10000, rnd()%5, 0, 0, 0, 600000, 0);
+ sc_start(&md->bl, scs[index], 100, rnd()%5, 600000);
return 0;
}
Index: src/map/storage.c
===================================================================
--- src/map/storage.c (revision 16039)
+++ src/map/storage.c (working copy)
@@ -27,7 +27,7 @@
static DBMap* guild_storage_db; // int guild_id -> struct guild_storage*
/*==========================================
- * qÉàACe\[g
+ * Sort items in the warehouse
*------------------------------------------*/
static int storage_comp_item(const void *_i1, const void *_i2)
{
@@ -54,9 +54,9 @@
}
/*==========================================
- * ú»Æ©
+ * Init/Terminate
*------------------------------------------*/
-int do_init_storage(void) // map.c::do_init()©çÄÎêé
+int do_init_storage(void) // Called from map.c::do_init()
{
guild_storage_db=idb_alloc(DB_OPT_RELEASE_DATA);
return 1;
@@ -110,14 +110,18 @@
return 0;
}
-// helper function
-int compare_item(struct item *a, struct item *b)
+/* helper function
+ * checking if 2 item structure are identique
+ * flag :
+ * 1 = not checking expire_time
+ */
+int compare_item(struct item *a, struct item *b, short flag)
{
if( a->nameid == b->nameid &&
a->identify == b->identify &&
a->refine == b->refine &&
a->attribute == b->attribute &&
- a->expire_time == b->expire_time )
+ (flag&1 || (a->expire_time == b->expire_time) ))
{
int i;
for (i = 0; i < MAX_SLOTS && (a->card[i] == b->card[i]); i++);
@@ -150,7 +154,7 @@
{//Stackable
for( i = 0; i < MAX_STORAGE; i++ )
{
- if( compare_item(&stor->items[i], item_data) )
+ if( compare_item(&stor->items[i], item_data,0) )
{// existing items found, stack them
if( amount > MAX_AMOUNT - stor->items[i].amount )
return 1;
@@ -404,7 +408,7 @@
if(itemdb_isstackable2(data)){ //Stackable
for(i=0;i<MAX_GUILD_STORAGE;i++){
- if(compare_item(&stor->items[i], item_data)) {
+ if(compare_item(&stor->items[i], item_data, 0)) {
if(stor->items[i].amount+amount > MAX_AMOUNT)
return 1;
stor->items[i].amount+=amount;
Index: src/map/storage.h
===================================================================
--- src/map/storage.h (revision 16039)
+++ src/map/storage.h (working copy)
@@ -23,6 +23,7 @@
void do_reconnect_storage(void);
void storage_storage_quit(struct map_session_data *sd, int flag);
+int compare_item(struct item *a, struct item *b, short flag);
struct guild_storage* guild2storage(int guild_id);
int guild_storage_delete(int guild_id);
int storage_guild_storageopen(struct map_session_data *sd);
Index: src/map/buyingstore.c
===================================================================
--- src/map/buyingstore.c (revision 16039)
+++ src/map/buyingstore.c (working copy)
@@ -6,6 +6,7 @@
#include "../common/showmsg.h" // ShowWarning
#include "../common/socket.h" // RBUF*
#include "../common/strlib.h" // safestrncpy
+#include "../common/nullpo.h" //security check
#include "atcommand.h" // msg_txt
#include "battle.h" // battle_config.*
#include "buyingstore.h" // struct s_buyingstore
@@ -46,6 +47,8 @@
bool buyingstore_setup(struct map_session_data* sd, unsigned char slots)
{
+ nullpo_retr(sd,false);
+
if( !battle_config.feature_buying_store || sd->state.vending || sd->state.buyingstore || sd->state.trading || slots == 0 )
{
return false;
@@ -90,6 +93,7 @@
{// canceled, or no items
return;
}
+ nullpo_retv(sd);
if( !battle_config.feature_buying_store || pc_istrading(sd) || sd->buyingstore.slots == 0 || count > sd->buyingstore.slots || zenylimit <= 0 || zenylimit > sd->status.zeny || !storename[0] )
{// disabled or invalid input
Index: src/map/mob.c
===================================================================
--- src/map/mob.c (revision 16039)
+++ src/map/mob.c (working copy)
@@ -239,12 +239,12 @@
if( i )
{
- if( i&2 )
- data->state.size = SZ_MEDIUM;
- else if( i&4 )
- data->state.size = SZ_BIG;
- if( i&8 )
- data->state.ai = 1;
+ if (i&2)
+ data->state.size=SZ_MEDIUM;
+ else if (i&4)
+ data->state.size=SZ_BIG;
+ if (i&8)
+ data->state.ai=1;
}
data->eventname[0] = '\0'; //Clear event as it is not used.
}
@@ -2508,6 +2508,7 @@
case BL_PET: sd = ((TBL_PET*)src)->msd; break;
case BL_HOM: sd = ((TBL_HOM*)src)->master; break;
case BL_MER: sd = ((TBL_MER*)src)->master; break;
+ default : break; //unhandled type
}
if( sd && sd->md && src && src->type != BL_HOM && mob_db(md->class_)->lv > sd->status.base_level/2 )
@@ -2722,7 +2723,7 @@
}
/*==========================================
- * mobñ
+ * mob heal, permet d'update la barre d'hp d'un mob pour le joueur
*------------------------------------------*/
void mob_heal(struct mob_data *md,unsigned int heal)
{
@@ -2763,7 +2764,7 @@
}
/*==========================================
- * æÊàÌæ誫ÌvZp(foreachinarea)
+ * Permet de savoir si un mob est le slave d'un mobid
*------------------------------------------*/
int mob_countslave_sub(struct block_list *bl,va_list ap)
{
@@ -2778,7 +2779,7 @@
}
/*==========================================
- * æÊàÌæ誫ÌvZ
+ * Permet de compter le nombre de slave d'un mob sur la map
*------------------------------------------*/
int mob_countslave(struct block_list *bl)
{
@@ -2884,7 +2885,7 @@
}
/*==========================================
- *MOBskill©çYskillidÌskillidxðÔ·
+ * MOBskill lookup
*------------------------------------------*/
int mob_skillid2skillidx(int class_,int skillid)
{
@@ -3896,7 +3897,7 @@
class_=atoi(str[0]);
- if(mob_db(class_) == mob_dummy) // lªÙíÈçµÈ¢B
+ if(mob_db(class_) == mob_dummy) // invalid class (probably undefined in db)
{
ShowWarning("mob_readdb_mobavail: Unknown mob id %d.\n", class_);
return false;
Index: src/map/clif.c
===================================================================
--- src/map/clif.c (revision 16039)
+++ src/map/clif.c (working copy)
@@ -196,7 +196,7 @@
static int clif_parse (int fd);
/*==========================================
- * mapIÌipÝè
+ * map?¿œI?¿œ?¿œip?¿œÝï¿œ
*------------------------------------------*/
int clif_setip(const char* ip)
{
@@ -1358,9 +1358,9 @@
case BL_MOB:
{
TBL_MOB *md = ((TBL_MOB*)bl);
- if(md->special_state.size==2) // tiny/big mobs [Valaris]
+ if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris]
clif_specialeffect(&md->bl,423,AREA);
- else if(md->special_state.size==1)
+ else if(md->special_state.size==SZ_MEDIUM)
clif_specialeffect(&md->bl,421,AREA);
}
break;
@@ -1564,9 +1564,9 @@
case BL_MOB:
{
TBL_MOB *md = ((TBL_MOB*)bl);
- if(md->special_state.size==2) // tiny/big mobs [Valaris]
+ if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris]
clif_specialeffect(&md->bl,423,AREA);
- else if(md->special_state.size==1)
+ else if(md->special_state.size==SZ_MEDIUM)
clif_specialeffect(&md->bl,421,AREA);
}
break;
@@ -3161,7 +3161,7 @@
fd=sd->fd;
WFIFOHEAD(fd, packet_len(0x013c));
WFIFOW(fd,0)=0x013c;
- WFIFOW(fd,2)=val+2;//îÌACeID
+ WFIFOW(fd,2)=val+2;//Item ID of the arrow
WFIFOSET(fd,packet_len(0x013c));
}
@@ -15856,7 +15856,7 @@
sd->menuskill_id = SC_AUTOSHADOWSPELL;
sd->menuskill_val = c;
} else {
- status_change_end(&sd->bl,SC_STOP,-1);
+ status_change_end(&sd->bl,SC_STOP, INVALID_TIMER);
clif_skill_fail(sd,SC_AUTOSHADOWSPELL,0x15,0);
}
Index: src/map/chat.c
===================================================================
--- src/map/chat.c (revision 16039)
+++ src/map/chat.c (working copy)
@@ -156,11 +156,11 @@
pc_setchatid(sd,cd->bl.id);
- clif_joinchatok(sd,cd); // VœÉQÁµœlÉÍSõÌXg
- clif_addchat(cd,sd); // ùÉÉœlÉÍÇÁµœlÌñ
- clif_dispchat(cd,0); // üÍÌlÉÍlÏ»ñ
+ clif_joinchatok(sd,cd); //To the person who newly joined the list of all
+ clif_addchat(cd,sd); //Reports To the person who already in the chat
+ clif_dispchat(cd,0); //Reported number of changes to the people around
- chat_triggerevent(cd); // Cxg
+ chat_triggerevent(cd); //Event
return 0;
}
@@ -372,7 +372,7 @@
}
/*==========================================
- * KèlÈãÅCxgªè`³êÄéÈçÀs
+ * Trigger npc event when we enter the chatroom
*------------------------------------------*/
int chat_triggerevent(struct chat_data *cd)
{
Index: src/map/mob.h
===================================================================
--- src/map/mob.h (revision 16039)
+++ src/map/mob.h (working copy)
@@ -64,9 +64,9 @@
};
enum size {
- SZ_SMALL = 0,
- SZ_MEDIUM,
- SZ_BIG,
+ SZ_SMALL = 0,
+ SZ_MEDIUM,
+ SZ_BIG,
};
struct mob_skill {
Index: src/map/guild.c
===================================================================
--- src/map/guild.c (revision 16039)
+++ src/map/guild.c (working copy)
@@ -39,12 +39,12 @@
struct eventlist *next;
};
-// MhÌEXPLbV
ÌtbV
ÉÖA·éè
-#define GUILD_SEND_XY_INVERVAL 5000 // ÀWâgoMÌÔu
-#define GUILD_PAYEXP_INVERVAL 10000 // Ôu(LbV
ÌÅ嶶ÔA~b)
-#define GUILD_PAYEXP_LIST 8192 // LbV
ÌÅå
+//Constant related to the flash of the Guild EXP cache
+#define GUILD_SEND_XY_INVERVAL 5000 // Interval of sending coordinates and HP
+#define GUILD_PAYEXP_INVERVAL 10000 //Interval (maximum survival time of the cache, in milliseconds)
+#define GUILD_PAYEXP_LIST 8192 //The maximum number of cache
-// MhÌEXPLbV
+//Guild EXP cache
struct guild_expcache {
int guild_id, account_id, char_id;
uint64 exp;
@@ -91,7 +91,7 @@
return guild_skill_tree[id-GD_SKILLBASE].max;
}
-// MhXLª é©mF
+// Retrive skilllv learned by guild
int guild_checkskill(struct guild *g,int id)
{
int idx = id-GD_SKILLBASE;
@@ -110,8 +110,7 @@
skillid = atoi(split[0]);
id = skillid - GD_SKILLBASE;
- if( id < 0 || id >= MAX_GUILDSKILL )
- {
+ if (id < 0 || id >= MAX_GUILDSKILL) {
ShowWarning("guild_read_guildskill_tree_db: Invalid skill id %d.\n", skillid);
return false;
}
@@ -119,13 +118,12 @@
guild_skill_tree[id].id = skillid;
guild_skill_tree[id].max = atoi(split[1]);
- if( guild_skill_tree[id].id == GD_GLORYGUILD && battle_config.require_glory_guild && guild_skill_tree[id].max == 0 )
- {// enable guild's glory when required for emblems
+ if (guild_skill_tree[id].id == GD_GLORYGUILD && battle_config.require_glory_guild && guild_skill_tree[id].max == 0) {
+ // enable guild's glory when required for emblems
guild_skill_tree[id].max = 1;
}
- for( k = 0; k < MAX_GUILD_SKILL_REQUIRE; k++ )
- {
+ for (k = 0; k < MAX_GUILD_SKILL_REQUIRE; k++) {
guild_skill_tree[id].need[k].id = atoi(split[k*2+2]);
guild_skill_tree[id].need[k].lv = atoi(split[k*2+3]);
}
@@ -147,8 +145,7 @@
if (idx < 0 || idx >= MAX_GUILDSKILL)
return 0;
- for(i=0;i<MAX_GUILD_SKILL_REQUIRE;i++)
- {
+ for (i = 0; i < MAX_GUILD_SKILL_REQUIRE; i++) {
if(guild_skill_tree[idx].need[i].id == 0) break;
if(guild_skill_tree[idx].need[i].lv > guild_checkskill(g,guild_skill_tree[idx].need[i].id))
return 0;
@@ -261,7 +258,7 @@
return( i < g->max_member ) ? g->member[i].position : -1;
}
-// o[îñÌì¬
+//Creation of member information
void guild_makemember(struct guild_member *m,struct map_session_data *sd)
{
nullpo_retv(sd);
@@ -283,7 +280,7 @@
}
/**
- * MhÌEXPLbV
ðinterIÉtbV
·é
+ * Server cache to be flushed to inter the Guild EXP
* @see DBApply
*/
int guild_payexp_timer_sub(DBKey key, DBData *data, va_list ap) {
@@ -392,7 +389,7 @@
return 1;
}
-// ì¬ÂÛ
+//Whether or not to create guilde
int guild_created(int account_id,int guild_id)
{
struct map_session_data *sd=map_id2sd(account_id);
@@ -400,7 +397,7 @@
if(sd==NULL)
return 0;
if(!guild_id) {
- clif_guild_created(sd,2); // 쬞si¯ŒMh¶Ýj
+ clif_guild_created(sd,2); // Creation failure (presence of the same name Guild)
return 0;
}
//struct guild *g;
@@ -411,13 +408,13 @@
return 0;
}
-// îñv
+//Information request
int guild_request_info(int guild_id)
{
return intif_guild_request_info(guild_id);
}
-// Cxgt«îñv
+//Information request with event
int guild_npc_request_info(int guild_id,const char *event)
{
if( guild_search(guild_id) )
@@ -442,7 +439,7 @@
return guild_request_info(guild_id);
}
-// ®LÌmF
+//Confirmation of the character belongs to guild
int guild_check_member(struct guild *g)
{
int i;
@@ -469,7 +466,7 @@
return 0;
}
-// îñŸžsi»ÌIDÌLðS¢®É·éj
+//Delete association with guild_id for all characters
int guild_recv_noinfo(int guild_id)
{
struct map_session_data *sd;
@@ -486,7 +483,7 @@
return 0;
}
-// îñŸ
+//Get and display information for all member
int guild_recv_info(struct guild *sg)
{
struct guild *g,before;
@@ -504,7 +501,7 @@
idb_put(guild_db,sg->guild_id,g);
before=*sg;
- // ÅÌ[hÈÌÅ[U[Ì`FbNðs€
+ //Perform the check on the user because the first load
guild_check_member(sg);
if ((sd = map_nick2sd(sg->master)) != NULL)
{
@@ -539,32 +536,32 @@
bm++;
}
- for(i=0;i<g->max_member;i++){ // îñÌM
+ for(i=0;i<g->max_member;i++){ //Transmission of information at all members
sd = g->member[i].sd;
if( sd==NULL )
continue;
if( before.guild_lv!=g->guild_lv || bm!=m ||
before.max_member!=g->max_member ){
- clif_guild_basicinfo(sd); // î{îñM
- clif_guild_emblem(sd,g); // GuM
+ clif_guild_basicinfo(sd); //Submit basic information
+ clif_guild_emblem(sd,g); //Submit emblem
}
- if(bm!=m){ // o[îñM
+ if(bm!=m){ //Send members information
clif_guild_memberlist(g->member[i].sd);
}
if( before.skill_point!=g->skill_point)
- clif_guild_skillinfo(sd); // XLîñM
+ clif_guild_skillinfo(sd); //Submit information skills
- if( guild_new ){ // ¢MÈç®îñàé
+ if( guild_new ){ // Send information and affiliation if unsent
clif_guild_belonginfo(sd,g);
clif_guild_notice(sd,g);
sd->guild_emblem_id=g->emblem_id;
}
}
- // Cxg̶
+ //Occurrence of an event
if (guild_infoevent_db->remove(guild_infoevent_db, db_i2key(sg->guild_id), &data))
{
struct eventlist *ev = db_data2ptr(&data), *ev2;
@@ -579,8 +576,9 @@
return 0;
}
-
-// MhÖÌ©U
+/*=============================================
+ * Player sd send a guild invatation to player tsd to join his guild
+ *--------------------------------------------*/
int guild_invite(struct map_session_data *sd,struct map_session_data *tsd)
{
struct guild *g;
@@ -616,7 +614,7 @@
return 0;
}
- // èõmF
+ //search an empty spot in guild
ARR_FIND( 0, g->max_member, i, g->member[i].account_id == 0 );
if(i==g->max_member){
clif_guild_inviteack(sd,3);
@@ -714,7 +712,9 @@
g->member[i].sd = sd;
}
-// MhoªÇÁ³êœ
+/*==========================================
+ * Add a player to a given guild_id
+ *----------------------------------------*/
int guild_member_added(int guild_id,int account_id,int char_id,int flag)
{
struct map_session_data *sd= map_id2sd(account_id),*sd2;
@@ -724,7 +724,7 @@
return 0;
if(sd==NULL || sd->guild_invite==0){
- // L€Éo^Å«È©ÁœœßEÞvðo·
+ // cancel if player not present or invalide guild_id invitation
if (flag == 0) {
ShowError("guild: member added error %d is not online\n",account_id);
intif_guild_leave(guild_id,account_id,char_id,0,"** Data Error **");
@@ -735,13 +735,13 @@
sd->guild_invite = 0;
sd->guild_invite_account = 0;
- if(flag==1){ // žs
+ if(flag==1){ //failure
if( sd2!=NULL )
clif_guild_inviteack(sd2,3);
return 0;
}
- // ¬÷
+ //if all ok adding player to guild
sd->status.guild_id = g->guild_id;
sd->guild_emblem_id = g->emblem_id;
//Packets which were sent in the previous 'guild_sent' implementation.
@@ -759,7 +759,9 @@
return 0;
}
-// MhEÞv
+/*==========================================
+ * Player request leaving a given guild_id
+ *----------------------------------------*/
int guild_leave(struct map_session_data* sd, int guild_id, int account_id, int char_id, const char* mes)
{
struct guild *g;
@@ -780,7 +782,9 @@
return 0;
}
-// MhÇúv
+/*==========================================
+ * Request remove a player to a given guild_id
+ *----------------------------------------*/
int guild_expulsion(struct map_session_data* sd, int guild_id, int account_id, int char_id, const char* mes)
{
struct map_session_data *tsd;
@@ -917,7 +921,7 @@
}
if(idx == -1 || c == 0) {
- // MhÌo[OÈÌÅÇúµ¢·é
+ //Treat char_id who doesn't match guild_id (not found as member)
struct map_session_data *sd = map_id2sd(account_id);
if(sd && sd->status.char_id == char_id) {
sd->status.guild_id=0;
@@ -953,7 +957,10 @@
return 0;
}
-// MhïbM
+
+/*====================================================
+ * Send a message to whole guild
+ *---------------------------------------------------*/
int guild_send_message(struct map_session_data *sd,const char *mes,int len)
{
nullpo_ret(sd);
@@ -968,7 +975,10 @@
return 0;
}
-// MhïbóM
+
+/*====================================================
+ * Guild receive a message, will be displayed to whole member
+ *---------------------------------------------------*/
int guild_recv_message(int guild_id,int account_id,const char *mes,int len)
{
struct guild *g;
@@ -977,12 +987,18 @@
clif_guild_message(g,account_id,mes,len);
return 0;
}
-// MhoÌðEÏX
+
+/*====================================================
+ * Member changing position in guild
+ *---------------------------------------------------*/
int guild_change_memberposition(int guild_id,int account_id,int char_id,short idx)
{
return intif_guild_change_memberinfo(guild_id,account_id,char_id,GMI_POSITION,&idx,sizeof(idx));
}
-// MhoÌðEÏXÊm
+
+/*====================================================
+ * Notification of new position for member
+ *---------------------------------------------------*/
int guild_memberposition_changed(struct guild *g,int idx,int pos)
{
nullpo_ret(g);
@@ -995,7 +1011,10 @@
clif_charnameupdate(g->member[idx].sd);
return 0;
}
-// MhðEÏX
+
+/*====================================================
+ * Change guild title or member
+ *---------------------------------------------------*/
int guild_change_position(int guild_id,int idx,
int mode,int exp_mode,const char *name)
{
@@ -1009,7 +1028,10 @@
safestrncpy(p.name,name,NAME_LENGTH);
return intif_guild_position(guild_id,idx,&p);
}
-// MhðEÏXÊm
+
+/*====================================================
+ * Notification of member has changed his guild tiltle
+ *---------------------------------------------------*/
int guild_position_changed(int guild_id,int idx,struct guild_position *p)
{
struct guild *g=guild_search(guild_id);
@@ -1025,7 +1047,10 @@
clif_charnameupdate(g->member[i].sd);
return 0;
}
-// MhmÏX
+
+/*====================================================
+ * Change guild notice
+ *---------------------------------------------------*/
int guild_change_notice(struct map_session_data *sd,int guild_id,const char *mes1,const char *mes2)
{
nullpo_ret(sd);
@@ -1034,7 +1059,10 @@
return 0;
return intif_guild_notice(guild_id,mes1,mes2);
}
-// MhmÏXÊm
+
+/*====================================================
+ * Notification of guild has changed his notice
+ *---------------------------------------------------*/
int guild_notice_changed(int guild_id,const char *mes1,const char *mes2)
{
int i;
@@ -1052,7 +1080,10 @@
}
return 0;
}
-// MhGuÏX
+
+/*====================================================
+ * Change guild emblem
+ *---------------------------------------------------*/
int guild_change_emblem(struct map_session_data *sd,int len,const char *data)
{
struct guild *g;
@@ -1066,7 +1097,10 @@
return intif_guild_emblem(sd->status.guild_id,len,data);
}
-// MhGuÏXÊm
+
+/*====================================================
+ * Notification of guild emblem changed
+ *---------------------------------------------------*/
int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data)
{
int i;
@@ -1146,7 +1180,9 @@
return db_ptr2data(c);
}
-// MhÌEXPã[
+/*====================================================
+ * return Taxed experience from player sd to guild
+ *---------------------------------------------------*/
unsigned int guild_payexp(struct map_session_data *sd,unsigned int exp)
{
struct guild *g;
@@ -1178,7 +1214,11 @@
return exp;
}
-// Celest
+/*====================================================
+ * Player sd pay a tribue experience exp to his guild
+ * Add this experience to guild exp
+ * [Celest]
+ *---------------------------------------------------*/
int guild_getexp(struct map_session_data *sd,int exp)
{
struct guild_expcache *c;
@@ -1195,7 +1235,9 @@
return exp;
}
-// XL|CgèUè
+/*====================================================
+ * Ask to increase guildskill skill_num
+ *---------------------------------------------------*/
int guild_skillup(TBL_PC* sd, int skill_num)
{
struct guild* g;
@@ -1216,7 +1258,10 @@
return 0;
}
-// XL|CgèUèÊm
+
+/*====================================================
+ * Notification of guildskill skill_num increase request
+ *---------------------------------------------------*/
int guild_skillupack(int guild_id,int skill_num,int account_id)
{
struct map_session_data *sd=map_id2sd(account_id);
@@ -1263,7 +1308,14 @@
}
return;
}
-// Mh¯¿Ÿ
+
+
+/*====================================================
+ * Count number of relation the guild have
+ * flag :
+ * 0 = allied
+ * 1 = ennemy
+ *---------------------------------------------------*/
int guild_get_alliance_count(struct guild *g,int flag)
{
int i,c;
@@ -1302,7 +1354,9 @@
return( i < MAX_GUILDALLIANCE ) ? 1 : 0;
}
-// Mh¯¿v
+/*====================================================
+ * Player sd, asking player tsd an alliance between there 2 guild
+ *---------------------------------------------------*/
int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd)
{
struct guild *g[2];
@@ -1343,7 +1397,7 @@
return 0;
}
- for(i=0;i<MAX_GUILDALLIANCE;i++){ // ·Åɯ¿óÔ©mF
+ for(i=0;i<MAX_GUILDALLIANCE;i++){ // check if already allied
if( g[0]->alliance[i].guild_id==tsd->status.guild_id &&
g[0]->alliance[i].opposition==0){
clif_guild_allianceack(sd,0);
@@ -1357,7 +1411,10 @@
clif_guild_reqalliance(tsd,sd->status.account_id,g[0]->name);
return 0;
}
-// Mh©UÖÌÔ
+
+/*====================================================
+ * Player sd, awsser to player tsd (account_id) for an alliance request
+ *---------------------------------------------------*/
int guild_reply_reqalliance(struct map_session_data *sd,int account_id,int flag)
{
struct map_session_data *tsd;
@@ -1369,13 +1426,13 @@
return 0;
}
- if(sd->guild_alliance!=tsd->status.guild_id) // ©UÆMhIDªá€
+ if(sd->guild_alliance!=tsd->status.guild_id) // proposed guild_id alliance doesn't match tsd guildid
return 0;
- if(flag==1){ // ³ø
+ if(flag==1){ // consent
int i;
- struct guild *g,*tg; // ¯¿ÄmF
+ struct guild *g,*tg; // Reconfirm the number of alliance
g=guild_search(sd->status.guild_id);
tg=guild_search(tsd->status.guild_id);
@@ -1403,11 +1460,11 @@
tsd->status.account_id,sd->status.account_id,9 );
}
- // interIÖ¯¿v¿
+ // inform other servers
intif_guild_alliance( sd->status.guild_id,tsd->status.guild_id,
sd->status.account_id,tsd->status.account_id,0 );
return 0;
- }else{ // Û
+ }else{ // deny
sd->guild_alliance=0;
sd->guild_alliance_account=0;
if(tsd!=NULL)
@@ -1416,7 +1473,9 @@
return 0;
}
-// MhÖWðÁ
+/*====================================================
+ * Player sd asking to break alliance with guild guild_id
+ *---------------------------------------------------*/
int guild_delalliance(struct map_session_data *sd,int guild_id,int flag)
{
nullpo_ret(sd);
@@ -1430,7 +1489,10 @@
return 0;
}
-// MhGÎ
+
+/*====================================================
+ * Player sd, asking player tsd a formal ennemy relation between there 2 guild
+ *---------------------------------------------------*/
int guild_opposition(struct map_session_data *sd,struct map_session_data *tsd)
{
struct guild *g;
@@ -1451,9 +1513,9 @@
return 0;
}
- for(i=0;i<MAX_GUILDALLIANCE;i++){ // ·ÅÉÖWðÁÄ¢é©mF
+ for(i=0;i<MAX_GUILDALLIANCE;i++){ // checking relations
if(g->alliance[i].guild_id==tsd->status.guild_id){
- if(g->alliance[i].opposition==1){ // ·ÅÉGÎ
+ if(g->alliance[i].opposition==1){ // check if not already hostile
clif_guild_oppositionack(sd,2);
return 0;
}
@@ -1465,13 +1527,15 @@
}
}
- // interIÉGÎv¿
+ // inform other serv
intif_guild_alliance( sd->status.guild_id,tsd->status.guild_id,
sd->status.account_id,tsd->status.account_id,1 );
return 0;
}
-// Mh¯¿/GÎÊm
+/*====================================================
+ * Notification of a relationship between 2 guild
+ *---------------------------------------------------*/
int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id2,int flag,const char *name1,const char *name2)
{
struct guild *g[2];
@@ -1495,14 +1559,14 @@
sd[0]->guild_alliance_account=0;
}
- if(flag&0x70){ // žs
+ if(flag&0x70){ // failure
for(i=0;i<2-(flag&1);i++)
if( sd[i]!=NULL )
clif_guild_allianceack(sd[i],((flag>>4)==i+1)?3:4);
return 0;
}
- if(!(flag&0x08)){ // ÖWÇÁ
+ if(!(flag&0x08)){ // new relationship
for(i=0;i<2-(flag&1);i++)
{
if(g[i]!=NULL)
@@ -1516,7 +1580,7 @@
}
}
}
- }else{ // ÖWðÁ
+ }else{ // remove relationship
for(i=0;i<2-(flag&1);i++)
{
if(g[i]!=NULL)
@@ -1525,21 +1589,21 @@
if( j < MAX_GUILDALLIANCE )
g[i]->alliance[j].guild_id = 0;
}
- if( sd[i]!=NULL ) // ðÁÊm
+ if( sd[i]!=NULL ) // notify players
clif_guild_delalliance(sd[i],guild_id[1-i],(flag&1));
}
}
- if((flag&0x0f)==0){ // ¯¿Êm
+ if((flag&0x0f)==0){ // alliance notification
if( sd[1]!=NULL )
clif_guild_allianceack(sd[1],2);
- }else if((flag&0x0f)==1){ // GÎÊm
+ }else if((flag&0x0f)==1){ // ennemy notification
if( sd[0]!=NULL )
clif_guild_oppositionack(sd[0],0);
}
- for(i=0;i<2-(flag&1);i++){ // ¯¿/GÎXgÌÄM
+ for(i=0;i<2-(flag&1);i++){ // Retransmission of the relationship list to all members
struct map_session_data *sd;
if(g[i]!=NULL)
for(j=0;j<g[i]->max_member;j++)
@@ -1549,10 +1613,9 @@
return 0;
}
-/**
- * MhðUÊmp
- * @see DBApply
- */
+/*====================================================
+ * Notification for the guild disbanded
+ *---------------------------------------------------*/
int guild_broken_sub(DBKey key, DBData *data, va_list ap)
{
struct guild *g = db_data2ptr(data);
@@ -1562,7 +1625,7 @@
nullpo_ret(g);
- for(i=0;i<MAX_GUILDALLIANCE;i++){ // ÖWðjü
+ for(i=0;i<MAX_GUILDALLIANCE;i++){ // Destroy all relationships
if(g->alliance[i].guild_id==guild_id){
for(j=0;j<g->max_member;j++)
if( (sd=g->member[j].sd)!=NULL )
@@ -1608,7 +1671,7 @@
if(flag!=0 || g==NULL)
return 0;
- for(i=0;i<g->max_member;i++){ // MhðUðÊm
+ for(i=0;i<g->max_member;i++){ //Notification to disband the guild at all remaining member
if((sd=g->member[i].sd)!=NULL){
if(sd->state.storage_flag == 2)
storage_guild_storage_quit(sd,1);
@@ -1700,7 +1763,10 @@
return 1;
}
-// MhðU
+
+/*====================================================
+ * Guild disbanded
+ *---------------------------------------------------*/
int guild_break(struct map_session_data *sd,char *name)
{
struct guild *g;
@@ -1893,6 +1959,9 @@
return 0;
}
+/*====================================================
+ * Start normal woe and triggers all npc OnAgitStart
+ *---------------------------------------------------*/
int guild_agit_start(void)
{ // Run All NPC_Event[OnAgitStart]
int c = npc_event_doall("OnAgitStart");
@@ -1900,6 +1969,9 @@
return 0;
}
+/*====================================================
+ * End normal woe and triggers all npc OnAgitEnd
+ *---------------------------------------------------*/
int guild_agit_end(void)
{ // Run All NPC_Event[OnAgitEnd]
int c = npc_event_doall("OnAgitEnd");
@@ -1907,6 +1979,9 @@
return 0;
}
+/*====================================================
+ * Start woe2 and triggers all npc OnAgitStart2
+ *---------------------------------------------------*/
int guild_agit2_start(void)
{ // Run All NPC_Event[OnAgitStart2]
int c = npc_event_doall("OnAgitStart2");
@@ -1914,6 +1989,9 @@
return 0;
}
+/*====================================================
+ * End woe2 and triggers all npc OnAgitEnd2
+ *---------------------------------------------------*/
int guild_agit2_end(void)
{ // Run All NPC_Event[OnAgitEnd2]
int c = npc_event_doall("OnAgitEnd2");
Index: src/map/itemdb.c
===================================================================
--- src/map/itemdb.c (revision 16039)
+++ src/map/itemdb.c (working copy)
@@ -50,7 +50,7 @@
}
/*==========================================
- * ŒOÅõ
+ * Retourne l'item data a partir du nom de l'item.
*------------------------------------------*/
struct item_data* itemdb_searchname(const char *str)
{
@@ -135,7 +135,7 @@
/*==========================================
- * nACeõ
+ * Retourne un item id random appartenant au groupe.
*------------------------------------------*/
int itemdb_searchrandomid(int group)
{
@@ -584,7 +584,7 @@
}
/*==========================================
- * õ§Àt@CÇÝoµ
+ * Read item forbiden by mapflag restricted
*------------------------------------------*/
static bool itemdb_read_noequip(char* str[], int columns, int current)
{// <nameid>,<mode>
@@ -870,7 +870,8 @@
}
/*==========================================
- * ACef[^x[XÌÇÝÝ
+ * Reading item from item db
+ * item_db2 overwriting item_db
*------------------------------------------*/
static int itemdb_readdb(void)
{
Index: src/map/intif.c
===================================================================
--- src/map/intif.c (revision 16039)
+++ src/map/intif.c (working copy)
@@ -46,11 +46,11 @@
-1,-1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3890 Homunculus [albator]
};
-extern int char_fd; // inter serverÌfdÍchar_fdðg€
-#define inter_fd char_fd // GCAX
+extern int char_fd; // inter server Fd used for char_fd
+#define inter_fd char_fd // alias
//-----------------------------------------------------------------
-// inter serverÖÌM
+// Send to inter server
int CheckForCharServer(void)
{
@@ -136,7 +136,7 @@
return 0;
}
-// GMbZ[WðM
+// GM Send a message
int intif_broadcast(const char* mes, int len, int type)
{
int lp = type ? 4 : 0;
@@ -386,7 +386,7 @@
return 0;
}
-// p[eBì¬v
+// Party creation request
int intif_create_party(struct party_member *member,char *name,int item,int item2)
{
if (CheckForCharServer())
@@ -403,7 +403,8 @@
WFIFOSET(inter_fd,WFIFOW(inter_fd, 2));
return 0;
}
-// p[eBîñv
+
+// Party information request
int intif_request_partyinfo(int party_id, int char_id)
{
if (CheckForCharServer())
@@ -415,7 +416,8 @@
WFIFOSET(inter_fd,10);
return 0;
}
-// p[eBÇÁv
+
+// Request to add a member to party
int intif_party_addmember(int party_id,struct party_member *member)
{
if (CheckForCharServer())
@@ -428,7 +430,8 @@
WFIFOSET(inter_fd,WFIFOW(inter_fd, 2));
return 1;
}
-// p[eBÝèÏX
+
+// Request to change party configuration (exp,item share)
int intif_party_changeoption(int party_id,int account_id,int exp,int item)
{
if (CheckForCharServer())
@@ -442,7 +445,8 @@
WFIFOSET(inter_fd,14);
return 0;
}
-// p[eBEÞv
+
+// Request to leave party
int intif_party_leave(int party_id,int account_id, int char_id)
{
if (CheckForCharServer())
@@ -455,7 +459,8 @@
WFIFOSET(inter_fd,14);
return 0;
}
-// p[eBÚ®v
+
+// Request keeping party for new map ??
int intif_party_changemap(struct map_session_data *sd,int online)
{
int m, mapindex;
@@ -481,7 +486,8 @@
WFIFOSET(inter_fd,19);
return 1;
}
-// p[eB[ðUv
+
+// Request breaking party
int intif_break_party(int party_id)
{
if (CheckForCharServer())
@@ -492,7 +498,8 @@
WFIFOSET(inter_fd,6);
return 0;
}
-// p[eBïbM
+
+// Sending party chat
int intif_party_message(int party_id,int account_id,const char *mes,int len)
{
if (CheckForCharServer())
@@ -511,6 +518,7 @@
return 0;
}
+// Request a new leader for party
int intif_party_leaderchange(int party_id,int account_id,int char_id)
{
if (CheckForCharServer())
@@ -524,8 +532,7 @@
return 0;
}
-
-// Mhì¬v
+// Request a Guild creation
int intif_guild_create(const char *name,const struct guild_member *master)
{
if (CheckForCharServer())
@@ -541,7 +548,8 @@
WFIFOSET(inter_fd,WFIFOW(inter_fd,2));
return 0;
}
-// Mhîñv
+
+// Request Guild information
int intif_guild_request_info(int guild_id)
{
if (CheckForCharServer())
@@ -552,7 +560,8 @@
WFIFOSET(inter_fd,6);
return 0;
}
-// MhoÇÁv
+
+// Request to add member to the guild
int intif_guild_addmember(int guild_id,struct guild_member *m)
{
if (CheckForCharServer())
@@ -566,6 +575,7 @@
return 0;
}
+// Request a new leader for guild
int intif_guild_change_gm(int guild_id, const char* name, int len)
{
if (CheckForCharServer())
@@ -579,7 +589,7 @@
return 0;
}
-// MhoEÞ/Çúv
+// Request to leave guild
int intif_guild_leave(int guild_id,int account_id,int char_id,int flag,const char *mes)
{
if (CheckForCharServer())
@@ -594,7 +604,8 @@
WFIFOSET(inter_fd,55);
return 0;
}
-// MhoÌICóµ/LvXVv
+
+//Update request / Lv online status of the guild members
int intif_guild_memberinfoshort(int guild_id,int account_id,int char_id,int online,int lv,int class_)
{
if (CheckForCharServer())
@@ -610,7 +621,8 @@
WFIFOSET(inter_fd,19);
return 0;
}
-// MhðUÊm
+
+//Guild disbanded notification
int intif_guild_break(int guild_id)
{
if (CheckForCharServer())
@@ -621,7 +633,8 @@
WFIFOSET(inter_fd,6);
return 0;
}
-// MhïbM
+
+// Send a guild message
int intif_guild_message(int guild_id,int account_id,const char *mes,int len)
{
if (CheckForCharServer())
@@ -640,7 +653,8 @@
return 0;
}
-// Mhî{îñÏXv
+
+// Request a change of Guild basic information
int intif_guild_change_basicinfo(int guild_id,int type,const void *data,int len)
{
if (CheckForCharServer())
@@ -654,7 +668,8 @@
WFIFOSET(inter_fd,len+10);
return 0;
}
-// MhoîñÏXv
+
+// Request a change of Guild member information
int intif_guild_change_memberinfo(int guild_id,int account_id,int char_id,
int type,const void *data,int len)
{
@@ -671,7 +686,8 @@
WFIFOSET(inter_fd,len+18);
return 0;
}
-// MhðEÏXv
+
+// Request a change of Guild title
int intif_guild_position(int guild_id,int idx,struct guild_position *p)
{
if (CheckForCharServer())
@@ -685,7 +701,8 @@
WFIFOSET(inter_fd,WFIFOW(inter_fd,2));
return 0;
}
-// MhXLAbvv
+
+// Request an update of Guildskill skillnum
int intif_guild_skillup(int guild_id, int skill_num, int account_id, int max)
{
if( CheckForCharServer() )
@@ -699,7 +716,8 @@
WFIFOSET(inter_fd, 18);
return 0;
}
-// Mh¯¿/GÎv
+
+// Request a new guild relationship
int intif_guild_alliance(int guild_id1,int guild_id2,int account_id1,int account_id2,int flag)
{
if (CheckForCharServer())
@@ -714,7 +732,8 @@
WFIFOSET(inter_fd,19);
return 0;
}
-// MhmÏXv
+
+// Request to change guild notice
int intif_guild_notice(int guild_id,const char *mes1,const char *mes2)
{
if (CheckForCharServer())
@@ -727,7 +746,8 @@
WFIFOSET(inter_fd,186);
return 0;
}
-// MhGuÏXv
+
+// Request to change guild emblem
int intif_guild_emblem(int guild_id,int len,const char *data)
{
if (CheckForCharServer())
@@ -761,7 +781,8 @@
return 1;
}
-//MhéèÌMhÏXv
+
+// Request change castle guild owner and save data
int intif_guild_castle_datasave(int castle_id,int index, int value)
{
if (CheckForCharServer())
@@ -868,7 +889,7 @@
}
//Success to send whisper.
clif_wis_message(sd->fd, wisp_source, (char*)RFIFOP(fd,56),RFIFOW(fd,2)-56);
- intif_wis_replay(id,0); // M¬÷
+ intif_wis_replay(id,0); // succes
return 0;
}
@@ -925,7 +946,7 @@
return 0;
}
-// AJEgÏÊm
+// Request player registre
int intif_parse_Registers(int fd)
{
int j,p,len,max, flag;
@@ -1017,13 +1038,15 @@
storage_guild_storageopen(sd);
return 0;
}
+
+// ACK guild_storage saved
int intif_parse_SaveGuildStorage(int fd)
{
storage_guild_storagesaved(/*RFIFOL(fd,2), */RFIFOL(fd,6));
return 0;
}
-// p[eBì¬ÂÛ
+// ACK party creation
int intif_parse_PartyCreated(int fd)
{
if(battle_config.etc_log)
@@ -1031,7 +1054,8 @@
party_created(RFIFOL(fd,2), RFIFOL(fd,6),RFIFOB(fd,10),RFIFOL(fd,11), (char *)RFIFOP(fd,15));
return 0;
}
-// p[eBîñ
+
+// Receive party info
int intif_parse_PartyInfo(int fd)
{
if( RFIFOW(fd,2) == 12 ){
@@ -1045,7 +1069,8 @@
party_recv_info((struct party *)RFIFOP(fd,8), RFIFOL(fd,4));
return 0;
}
-// p[eBÇÁÊm
+
+// ACK adding party member
int intif_parse_PartyMemberAdded(int fd)
{
if(battle_config.etc_log)
@@ -1053,13 +1078,15 @@
party_member_added(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10), RFIFOB(fd, 14));
return 0;
}
-// p[eBÝèÏXÊm
+
+// ACK changing party option
int intif_parse_PartyOptionChanged(int fd)
{
party_optionchanged(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOW(fd,10),RFIFOW(fd,12),RFIFOB(fd,14));
return 0;
}
-// p[eBEÞÊm
+
+// ACK member leaving party
int intif_parse_PartyMemberWithdraw(int fd)
{
if(battle_config.etc_log)
@@ -1067,32 +1094,36 @@
party_member_withdraw(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10));
return 0;
}
-// p[eBðUÊm
+
+// ACK party break
int intif_parse_PartyBroken(int fd)
{
party_broken(RFIFOL(fd,2));
return 0;
}
-// p[eBÚ®Êm
+
+// ACK party on new map
int intif_parse_PartyMove(int fd)
{
party_recv_movemap(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOW(fd,14),RFIFOB(fd,16),RFIFOW(fd,17));
return 0;
}
-// p[eBbZ[W
+
+// ACK party messages
int intif_parse_PartyMessage(int fd)
{
party_recv_message(RFIFOL(fd,4),RFIFOL(fd,8),(char *) RFIFOP(fd,12),RFIFOW(fd,2)-12);
return 0;
}
-// Mhì¬ÂÛ
+// ACK guild creation
int intif_parse_GuildCreated(int fd)
{
guild_created(RFIFOL(fd,2),RFIFOL(fd,6));
return 0;
}
-// Mhîñ
+
+// ACK guild infos
int intif_parse_GuildInfo(int fd)
{
if(RFIFOW(fd,2) == 8) {
@@ -1100,12 +1131,14 @@
guild_recv_noinfo(RFIFOL(fd,4));
return 0;
}
+
if( RFIFOW(fd,2)!=sizeof(struct guild)+4 )
ShowError("intif: guild info : data size error Gid: %d recv size: %d Expected size: %d\n",RFIFOL(fd,4),RFIFOW(fd,2),sizeof(struct guild)+4);
guild_recv_info((struct guild *)RFIFOP(fd,4));
return 0;
}
-// MhoÇÁÊm
+
+// ACK adding guild member
int intif_parse_GuildMemberAdded(int fd)
{
if(battle_config.etc_log)
@@ -1113,20 +1146,22 @@
guild_member_added(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14));
return 0;
}
-// MhoEÞ/ÇúÊm
+
+// ACK member leaving guild
int intif_parse_GuildMemberWithdraw(int fd)
{
guild_member_withdraw(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14),(char *)RFIFOP(fd,55),(char *)RFIFOP(fd,15));
return 0;
}
-// MhoICóÔ/LvÏXÊm
+// ACK guild member basic info
int intif_parse_GuildMemberInfoShort(int fd)
{
guild_recv_memberinfoshort(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14),RFIFOW(fd,15),RFIFOW(fd,17));
return 0;
}
-// MhðUÊm
+
+// ACK guild break
int intif_parse_GuildBroken(int fd)
{
guild_broken(RFIFOL(fd,2),RFIFOB(fd,6));
@@ -1189,7 +1224,7 @@
return 0;
}
-// MhðEÏXÊm
+// ACK change of guild title
int intif_parse_GuildPosition(int fd)
{
if( RFIFOW(fd,2)!=sizeof(struct guild_position)+12 )
@@ -1197,54 +1232,61 @@
guild_position_changed(RFIFOL(fd,4),RFIFOL(fd,8),(struct guild_position *)RFIFOP(fd,12));
return 0;
}
-// MhXLèUèÊm
+
+// ACK change of guild skill update
int intif_parse_GuildSkillUp(int fd)
{
guild_skillupack(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10));
return 0;
}
-// Mh¯¿/GÎÊm
+
+// ACK change of guild relationship
int intif_parse_GuildAlliance(int fd)
{
guild_allianceack(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOL(fd,14),RFIFOB(fd,18),(char *) RFIFOP(fd,19),(char *) RFIFOP(fd,43));
return 0;
}
-// MhmÏXÊm
+
+// ACK change of guild notice
int intif_parse_GuildNotice(int fd)
{
guild_notice_changed(RFIFOL(fd,2),(char *) RFIFOP(fd,6),(char *) RFIFOP(fd,66));
return 0;
}
-// MhGuÏXÊm
+
+// ACK change of guild emblem
int intif_parse_GuildEmblem(int fd)
{
guild_emblem_changed(RFIFOW(fd,2)-12,RFIFOL(fd,4),RFIFOL(fd,8), (char *)RFIFOP(fd,12));
return 0;
}
-// MhïbóM
+
+// ACK guild message
int intif_parse_GuildMessage(int fd)
{
guild_recv_message(RFIFOL(fd,4),RFIFOL(fd,8),(char *) RFIFOP(fd,12),RFIFOW(fd,2)-12);
return 0;
}
-// Mhéf[^vÔM
+// Reply guild castle data request
int intif_parse_GuildCastleDataLoad(int fd)
{
return guild_castledataloadack(RFIFOW(fd,2), (struct guild_castle *)RFIFOP(fd,4));
}
+// ACK change of guildmaster
int intif_parse_GuildMasterChanged(int fd)
{
return guild_gm_changed(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10));
}
-// pet
+// Request pet creation
int intif_parse_CreatePet(int fd)
{
pet_get_egg(RFIFOL(fd,2),RFIFOL(fd,7),RFIFOB(fd,6));
return 0;
}
+// ACK pet data
int intif_parse_RecvPetData(int fd)
{
struct s_pet p;
@@ -1261,6 +1303,8 @@
return 0;
}
+
+// ACK pet save data
int intif_parse_SavePetOk(int fd)
{
if(RFIFOB(fd,6) == 1)
@@ -1269,6 +1313,7 @@
return 0;
}
+// ACK deleting pet
int intif_parse_DeletePetOk(int fd)
{
if(RFIFOB(fd,2) == 1)
@@ -1277,6 +1322,7 @@
return 0;
}
+// ACK changing name resquest, players,pets,hommon
int intif_parse_ChangeNameOk(int fd)
{
struct map_session_data *sd = NULL;
@@ -2112,19 +2158,19 @@
}
//-----------------------------------------------------------------
-// inter server©çÌÊM
-// G[ª êÎ0(false)ðÔ·±Æ
-// pPbgªÅ«êÎ1,pPbg·ª«èȯêÎ2ðÔ·±Æ
+// Communication from the inter server
+// Return a 0 (false) if there were any errors.
+// 1, 2 if there are not enough to return the length of the packet if the packet processing
int intif_parse(int fd)
{
int packet_len, cmd;
cmd = RFIFOW(fd,0);
- // pPbgÌIDmF
+ // Verify ID of the packet
if(cmd<0x3800 || cmd>=0x3800+(sizeof(packet_len_table)/sizeof(packet_len_table[0])) ||
packet_len_table[cmd-0x3800]==0){
return 0;
}
- // pPbgÌ·³mF
+ // Check the length of the packet
packet_len = packet_len_table[cmd-0x3800];
if(packet_len==-1){
if(RFIFOREST(fd)<4)
@@ -2134,7 +2180,7 @@
if((int)RFIFOREST(fd)<packet_len){
return 2;
}
- // ªò
+ // Processing branch
switch(cmd){
case 0x3800:
if (RFIFOL(fd,4) == 0xFF000000) //Normal announce.
@@ -2217,7 +2263,7 @@
ShowError("intif_parse : unknown packet %d %x\n",fd,RFIFOW(fd,0));
return 0;
}
- // pPbgÇÝòε
+ // Skip packet
RFIFOSKIP(fd,packet_len);
return 1;
}
Index: src/map/intif.h
===================================================================
--- src/map/intif.h (revision 16039)
+++ src/map/intif.h (working copy)
@@ -98,6 +98,7 @@
int intif_Auction_cancel(int char_id, unsigned int auction_id);
int intif_Auction_close(int char_id, unsigned int auction_id);
int intif_Auction_bid(int char_id, const char* name, unsigned int auction_id, int bid);
+
// ELEMENTAL SYSTEM
int intif_elemental_create(struct s_elemental *ele);
int intif_elemental_request(int ele_id, int char_id);
Index: src/map/npc.c
===================================================================
--- src/map/npc.c (revision 16039)
+++ src/map/npc.c (working copy)
@@ -127,9 +127,9 @@
}
/*==========================================
- * NPC̳ø»/Lø»
+ * NPC
* npc_enable
- * npc_enable_sub LøÉOnTouchCxgðÀs
+ * npc_enable_sub On Touch
*------------------------------------------*/
int npc_enable_sub(struct block_list *bl, va_list ap)
{
@@ -159,7 +159,6 @@
int npc_enable(const char* name, int flag)
{
struct npc_data* nd = npc_name2id(name);
-
if (nd==NULL)
{
ShowError("npc_enable: Attempted to %s a non-existing NPC '%s' (flag=%d).\n", (flag&3) ? "show" : "hide", name, flag);
@@ -194,7 +193,7 @@
}
/*==========================================
- * NPCðŒOÅT·
+ * NPC lookup
*------------------------------------------*/
struct npc_data* npc_name2id(const char* name)
{
@@ -434,7 +433,8 @@
}
/*==========================================
- * ^C}[CxgpxÌæèÝ
+ *
+ * npc_parse_script->strdb_foreach
* called from npc_parse_script
*------------------------------------------*/
int npc_timerevent_export(struct npc_data *nd, int i)
@@ -1060,7 +1060,7 @@
}
/*==========================================
- * NPCÌI[v`bgŸ
+ * NPC I guess something like npctalk
*------------------------------------------*/
int npc_globalmessage(const char* name, const char* mes)
{
@@ -1102,7 +1102,7 @@
}
/*==========================================
- * NbNÌNPC
+ * NPC 1st call when clicking on npc
*------------------------------------------*/
int npc_click(struct map_session_data* sd, struct npc_data* nd)
{
Index: src/map/status.c
===================================================================
--- src/map/status.c (revision 16039)
+++ src/map/status.c (working copy)
@@ -62,7 +62,7 @@
int randombonus_max[MAX_REFINE]; // cumulative maximum random bonus damage
} refine_info[REFINE_TYPE_MAX];
-static int atkmods[3][MAX_WEAPON_TYPE]; // íATKTCYC³(size_fix.txt)
+static int atkmods[3][MAX_WEAPON_TYPE]; // ᅵᅵᅵᅵATKᅵTᅵCᅵYᅵCᅵᅵ(size_fix.txt)
static char job_bonus[CLASS_COUNT][MAX_LEVEL];
#ifdef RENEWAL
enum {
@@ -1107,7 +1107,7 @@
status_change_end(target, SC_BERSERK, INVALID_TIMER);
if( sc->data[SC_RAISINGDRAGON] && status->hp <= 1000 )
status_change_end(target, SC_RAISINGDRAGON, INVALID_TIMER);
- if (sc->data[SC_SATURDAYNIGHTFEVER] && status->hp <= 100)
+ if( sc->data[SC_SATURDAYNIGHTFEVER] && status->hp <= 100 )
status_change_end(target, SC_SATURDAYNIGHTFEVER, INVALID_TIMER);
}
@@ -1118,6 +1118,8 @@
case BL_HOM: merc_damage((TBL_HOM*)target,src,hp,sp); break;
case BL_MER: mercenary_damage((TBL_MER*)target,src,hp,sp); break;
case BL_ELEM: elemental_damage((TBL_ELEM*)target,src,hp,sp); break;
+ default: //Unhandled case, do nothing to object.
+ break;
}
if( target->type == BL_PC && ((TBL_PC*)target)->disguise && src )
@@ -1282,6 +1284,9 @@
case BL_HOM: merc_hom_heal((TBL_HOM*)bl,hp,sp); break;
case BL_MER: mercenary_heal((TBL_MER*)bl,hp,sp); break;
case BL_ELEM: elemental_heal((TBL_ELEM*)bl,hp,sp); break;
+ default:
+ ShowWarning("Invalid bl type=%d in status_heal\n",bl->type);
+ break;
}
return hp+sp;
@@ -1388,6 +1393,9 @@
case BL_PC: pc_revive((TBL_PC*)bl, hp, sp); break;
case BL_MOB: mob_revive((TBL_MOB*)bl, hp); break;
case BL_HOM: merc_hom_revive((TBL_HOM*)bl, hp, sp); break;
+ default:
+ ShowWarning("Invalid bl type=%d in status_revive\n",bl->type);
+ break;
}
return 1;
}
@@ -1554,8 +1562,8 @@
}
}
-
- if (sc && sc->option)
+ // Check for src's status changes
+ if( sc && sc->option )
{
if (sc->option&OPTION_HIDE)
switch (skill_num) { //Usable skills while hiding.
@@ -1581,6 +1589,7 @@
tsc = status_get_sc(target);
+ // Check for target's status changes.
if(tsc && tsc->count) {
if( tsc->data[SC_INVINCIBLE] )
return 0;
@@ -1947,7 +1956,7 @@
if (flag&2)
{ // change for sized monsters [Valaris]
- if (md->special_state.size==1) {
+ if (md->special_state.size==SZ_MEDIUM) {
status->max_hp>>=1;
status->max_sp>>=1;
if (!status->max_hp) status->max_hp = 1;
@@ -1966,7 +1975,7 @@
if (!status->int_) status->int_ = 1;
if (!status->dex) status->dex = 1;
if (!status->luk) status->luk = 1;
- } else if (md->special_state.size==2) {
+ } else if (md->special_state.size==SZ_BIG) {
status->max_hp<<=1;
status->max_sp<<=1;
status->hp=status->max_hp;
@@ -2167,7 +2176,7 @@
b_weight = sd->weight;
b_max_weight = sd->max_weight;
- pc_calc_skilltree(sd); // XLc?ÌvZ
+ pc_calc_skilltree(sd); // ï¿œXï¿œLᅵᅵᅵcᅵᅵ?ï¿œÌvï¿œZ
sd->max_weight = max_weight_base[pc_class2idx(sd->status.class_)]+sd->status.str*300;
@@ -3703,6 +3712,9 @@
case BL_HOM: status_calc_homunculus_(BL_CAST(BL_HOM,bl), first); break;
case BL_MER: status_calc_mercenary_(BL_CAST(BL_MER,bl), first); break;
case BL_ELEM: status_calc_elemental_(BL_CAST(BL_ELEM,bl), first); break;
+ default:
+ ShowWarning("Invalid bl type=%d in status_calc_bl_ and flag&SCB_BASE\n",bl->type);
+ break;
}
}
@@ -5113,7 +5125,8 @@
static unsigned short status_calc_mode(struct block_list *bl, struct status_change *sc, int mode)
{
if(!sc || !sc->count)
- return mode;
+ return cap_value(mode,0,USHRT_MAX);
+
if(sc->data[SC_MODECHANGE]) {
if (sc->data[SC_MODECHANGE]->val2)
mode = sc->data[SC_MODECHANGE]->val2; //Set mode
@@ -5128,22 +5141,26 @@
const char* status_get_name(struct block_list *bl) {
nullpo_ret(bl);
switch (bl->type) {
- case BL_PC: return ((TBL_PC *)bl)->fakename[0] != '\0' ? ((TBL_PC*)bl)->fakename : ((TBL_PC*)bl)->status.name;
- case BL_MOB: return ((TBL_MOB*)bl)->name;
- case BL_PET: return ((TBL_PET*)bl)->pet.name;
- case BL_HOM: return ((TBL_HOM*)bl)->homunculus.name;
- case BL_NPC: return ((TBL_NPC*)bl)->name;
+ case BL_PC: return ((TBL_PC *)bl)->fakename[0] != '\0' ? ((TBL_PC*)bl)->fakename : ((TBL_PC*)bl)->status.name;
+ case BL_MOB: return ((TBL_MOB*)bl)->name;
+ case BL_PET: return ((TBL_PET*)bl)->pet.name;
+ case BL_HOM: return ((TBL_HOM*)bl)->homunculus.name;
+ case BL_NPC: return ((TBL_NPC*)bl)->name;
+ default:
+ ShowError("Invalide type=%d in status_get_name\n",bl->type);
}
return "Unknown";
}
/*==========================================
- * ÎÛÌClassðÔ·(Äp)
- * ßèÍ®Å0Èã
+ * Hookup de la class d'un bl.
+ * Donne l'id de la classe
*------------------------------------------*/
-int status_get_class(struct block_list *bl) {
+int status_get_class(struct block_list *bl)
+{
nullpo_ret(bl);
- switch( bl->type ) {
+ switch( bl->type )
+ {
case BL_PC: return ((TBL_PC*)bl)->status.class_;
case BL_MOB: return ((TBL_MOB*)bl)->vd->class_; //Class used on all code should be the view class of the mob.
case BL_PET: return ((TBL_PET*)bl)->pet.class_;
@@ -5151,14 +5168,17 @@
case BL_MER: return ((TBL_MER*)bl)->mercenary.class_;
case BL_NPC: return ((TBL_NPC*)bl)->class_;
case BL_ELEM: return ((TBL_ELEM*)bl)->elemental.class_;
+ default:
+ ShowError("Invalide type=%d in status_get_class\n",bl->type);
}
return 0;
}
/*==========================================
- * ÎÛÌxðÔ·(Äp)
- * ßèÍ®Å0Èã
+ * Avoir les battle_calc status d'un bl, hookup pour tous les type.
+ * Permet des fonction general sans extra switch
*------------------------------------------*/
-int status_get_lv(struct block_list *bl) {
+int status_get_lv(struct block_list *bl)
+{
nullpo_ret(bl);
switch (bl->type) {
case BL_PC: return ((TBL_PC*)bl)->status.base_level;
@@ -5167,6 +5187,8 @@
case BL_HOM: return ((TBL_HOM*)bl)->homunculus.level;
case BL_MER: return ((TBL_MER*)bl)->db->lv;
case BL_ELEM: return ((TBL_ELEM*)bl)->db->lv;
+ default:
+ ShowError("Invalide type=%d in status_get_lv\n",bl->type);
}
return 1;
}
@@ -5265,6 +5287,8 @@
if (((TBL_ELEM*)bl)->master)
return ((TBL_ELEM*)bl)->master->status.party_id;
break;
+ default:
+ ShowWarning("Invalid bl type=%x in status_get_party_id\n",bl->type);
}
return 0;
}
@@ -5305,6 +5329,9 @@
if (((TBL_ELEM*)bl)->master)
return ((TBL_ELEM*)bl)->master->status.guild_id;
break;
+ default:
+ ShowWarning("Invalid bl type=%x in status_get_guild_id\n",bl->type);
+
}
return 0;
}
@@ -5346,6 +5373,9 @@
if (((TBL_ELEM*)bl)->master)
return ((TBL_ELEM*)bl)->master->guild_emblem_id;
break;
+ default:
+ ShowWarning("Invalid bl type=%x in status_get_emblem_id\n",bl->type);
+
}
return 0;
}
@@ -5353,19 +5383,23 @@
int status_get_mexp(struct block_list *bl)
{
nullpo_ret(bl);
- if(bl->type==BL_MOB)
- return ((struct mob_data *)bl)->db->mexp;
- if(bl->type==BL_PET)
- return ((struct pet_data *)bl)->db->mexp;
+ switch(bl->type){
+ case BL_MOB: return ((struct mob_data *)bl)->db->mexp;
+ case BL_PET: return ((struct pet_data *)bl)->db->mexp;
+ default:
+ ShowWarning("Invalid bl type=%x in status_get_mexp\n",bl->type);
+ }
return 0;
}
int status_get_race2(struct block_list *bl)
{
nullpo_ret(bl);
- if(bl->type == BL_MOB)
- return ((struct mob_data *)bl)->db->race2;
- if(bl->type==BL_PET)
- return ((struct pet_data *)bl)->db->race2;
+ switch(bl->type){
+ case BL_MOB: return ((struct mob_data *)bl)->db->race2;
+ case BL_PET: return ((struct pet_data *)bl)->db->race2;
+ default:
+ ShowWarning("Invalid bl type=%x in status_get_race2\n",bl->type);
+ }
return 0;
}
@@ -5398,6 +5432,8 @@
case BL_HOM: return ((TBL_HOM*)bl)->vd;
case BL_MER: return ((TBL_MER*)bl)->vd;
case BL_ELEM: return ((TBL_ELEM*)bl)->vd;
+ default:
+ ShowWarning("Invalid bl type=%x in status_get_viewdata\n",bl->type);
}
return NULL;
}
@@ -5531,7 +5567,9 @@
else
ShowError("status_set_viewdata (ELEMENTAL): No view data for class %d\n", class_);
}
- break;
+ break;
+ default:
+ ShowWarning("Invalid bl type=%x in status_set_viewdata\n",bl->type);
}
vd = status_get_viewdata(bl);
if (vd && vd->cloth_color && (
@@ -5552,6 +5590,8 @@
case BL_HOM: return &((TBL_HOM*)bl)->sc;
case BL_MER: return &((TBL_MER*)bl)->sc;
case BL_ELEM: return &((TBL_ELEM*)bl)->sc;
+ default:
+ ShowWarning("invalide bl type=%x in status_get_sc\n");
}
return NULL;
}
@@ -5608,6 +5648,8 @@
case SC__UNLUCKY:
case SC__WEAKNESS:
return 0;
+ default: //let.s continue if not
+ break;
}
sd = BL_CAST(BL_PC,bl);
@@ -5735,8 +5777,9 @@
}
}
- if (sc) {
- if (sc->data[SC_SCRESIST])
+ if( sc && sc->count )
+ {
+ if( sc->data[SC_SCRESIST] )
sc_def += sc->data[SC_SCRESIST]->val1; //Status resist
else if (sc->data[SC_SIEGFRIED])
sc_def += sc->data[SC_SIEGFRIED]->val3; //Status resistance.
@@ -5842,6 +5885,7 @@
case SC_DEEPSLEEP:
case SC_MANDRAGORA:
return 0;
+ default: break; //continue
}
}
else if( sc->data[SC_INSPIRATION] ) {
@@ -5865,6 +5909,7 @@
case SC__BODYPAINT:
case SC__IGNORANCE:
return 0;
+ default: break; //continue
}
}
@@ -6174,6 +6219,7 @@
case SC_MAGNETICFIELD:
return 0;
+ default: break; //continue
}
}
@@ -6376,6 +6422,7 @@
if( type != SC_GT_CHANGE )
status_change_end(bl, SC_GT_CHANGE, INVALID_TIMER);
break;
+ default: break; //our status doesn't end another one continue
}
//Check for overlapping fails
@@ -6738,7 +6785,7 @@
status_zap(bl, diff, 0);
}
// fall through
- case SC_POISON: /* Å */
+ case SC_POISON: /* ᅵᅵ */
val3 = tick/1000; //Damage iterations
if(val3 < 1) val3 = 1;
tick_time = 1000; // [GodLesZ] tick time
@@ -6811,7 +6858,7 @@
else
val4 |= battle_config.monster_cloak_check_type&7;
break;
- case SC_SIGHT: /* TCg/At */
+ case SC_SIGHT: /* ᅵTᅵCᅵg/ᅵᅵᅵAᅵt */
case SC_RUWACH:
case SC_SIGHTBLASTER:
val3 = skill_get_splash(val2, val1); //Val2 should bring the skill-id.
@@ -7873,6 +7920,7 @@
if (battle_config.sc_castcancel&bl->type)
unit_skillcastcancel(bl, 0);
break;
+ default: break; //continue
}
// Set option as needed.
@@ -8149,6 +8197,7 @@
case SC_RAISINGDRAGON:
sce->val2 = status->max_hp / 100;// Officially tested its 1%hp drain. [Jobbie]
break;
+ default: break; //continue
}
if( opt_flag&2 && sd && sd->touching_id )
@@ -8157,7 +8206,8 @@
return 1;
}
/*==========================================
- * Xe[^XÙíSð
+ * Ending all status except those listed.
+ * @TODO maybe usefull for dispel instead reseting a liste there.
* type:
* 0 - ???
* 1 - ???
@@ -8246,7 +8296,7 @@
}
/*==========================================
- * Xe[^XÙíI¹
+ * Special condition we want to effectuate, check before ending a status.
*------------------------------------------*/
int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const char* file, int line)
{
@@ -8294,6 +8344,7 @@
sce->timer = add_timer(gettick()+10, status_change_timer, bl->id, type);
return 1;
}
+ default: break; //continue
}
}
@@ -8629,7 +8680,7 @@
struct unit_data *ud = unit_bl2ud(bl);
if (ud) {
ud->state.running = 0;
- if (ud->walktimer != -1)
+ if (ud->walktimer != INVALID_TIMER)
unit_stop_walking(bl,1);
}
}
@@ -8689,6 +8740,7 @@
case SC_CURSEDCIRCLE_TARGET:
clif_bladestop(bl, sce->val2, 0);
break;
+ default: break; //continue
}
opt_flag = 1;
@@ -8912,7 +8964,8 @@
}
/*==========================================
- * Xe[^XÙíI¹^C}[
+ * For recusive status, like for each 5s we drop sp etc.
+ * Reseting the end timer.
*------------------------------------------*/
int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
{
@@ -9108,7 +9161,7 @@
}
break;
- case SC_DANCING: //_XXLÌÔSPÁï
+ case SC_DANCING: //ï¿œ_ᅵᅵᅵXï¿œXï¿œLᅵᅵᅵÌᅵᅵᅵSPᅵᅵᅵᅵ
{
int s = 0;
int sp = 1;
@@ -9661,8 +9714,8 @@
{
struct block_list *s_bl = battle_get_master(bl);
if( s_bl )
- status_change_end(s_bl,type+1,INVALID_TIMER);
- status_change_end(bl,type,INVALID_TIMER);
+ status_change_end(s_bl,type+1, INVALID_TIMER);
+ status_change_end(bl,type, INVALID_TIMER);
break;
}
sc_timer_next(2000 + tick, status_change_timer, bl->id, data);
@@ -9690,6 +9743,7 @@
/* they only end by status_change_end */
sc_timer_next(600000 + tick, status_change_timer, bl->id, data);
return 0;
+ default: break; //continue
}
// default for all non-handled control paths is to end the status
@@ -9698,7 +9752,7 @@
}
/*==========================================
- * Xe[^XÙí^C}[ÍÍ
+ * ï¿œXï¿œeï¿œ[ï¿œ^ï¿œXï¿œÙï¿œ^ï¿œCï¿œ}ï¿œ[ï¿œÍÍᅵᅵᅵ
*------------------------------------------*/
int status_change_timer_sub(struct block_list* bl, va_list ap)
{
@@ -9715,7 +9769,7 @@
tsc = status_get_sc(bl);
switch( type ) {
- case SC_SIGHT: /* TCg */
+ case SC_SIGHT: /* Reveal hidden ennemy on 3*3 range */
case SC_CONCENTRATE:
status_change_end(bl, SC_HIDING, INVALID_TIMER);
status_change_end(bl, SC_CLOAKING, INVALID_TIMER);
@@ -9723,7 +9777,7 @@
status_change_end(bl, SC_CAMOUFLAGE, INVALID_TIMER);
status_change_end(bl, SC__INVISIBILITY, INVALID_TIMER);
break;
- case SC_RUWACH: /* At */
+ case SC_RUWACH: /* Reveal hidden target and deal little dammages if ennemy */
if (tsc && (tsc->data[SC_HIDING] || tsc->data[SC_CLOAKING] ||
tsc->data[SC_CAMOUFLAGE] || tsc->data[SC_CLOAKINGEXCEED] ||
tsc->data[SC__INVISIBILITY])) {
@@ -9756,6 +9810,8 @@
status_change_end(bl, type, INVALID_TIMER);
}
break;
+ default:
+ ShowWarning("Invalid statuc sc=%d in status_change_timer_sub\n",type);
}
return 0;
}
@@ -10203,8 +10259,7 @@
class_ = atoi(fields[0]);
- if(!pcdb_checkid(class_))
- {
+ if(!pcdb_checkid(class_)) {
ShowWarning("status_readdb_job1: Invalid job class %d specified.\n", class_);
return false;
}
@@ -10337,7 +10392,7 @@
}
/*==========================================
- * XLÖWú»
+ * Creation et destruction de la db des status.
*------------------------------------------*/
int do_init_status(void)
{
Index: src/map/status.h
===================================================================
--- src/map/status.h (revision 16039)
+++ src/map/status.h (working copy)
@@ -1279,7 +1279,7 @@
BREAK_SHOULDER = 0x08, // DEF reduced by 50%
BREAK_WAIST = 0x10, // DEF reduced by 25%, ATK reduced by 25%
BREAK_NECK = 0x20, // current attack does 2x damage, inflicts 'bleeding' for 30 seconds
- BREAK_FLAGS = BREAK_ANKLE | BREAK_WRIST | BREAK_KNEE | BREAK_SHOULDER | BREAK_WAIST | BREAK_NECK,
+ BREAK_FLAGS = (BREAK_ANKLE | BREAK_WRIST | BREAK_KNEE | BREAK_SHOULDER | BREAK_WAIST | BREAK_NECK),
};
extern int current_equip_item_index;
@@ -1388,8 +1388,8 @@
OPTION_DRAGON5 = 0x04000000,
OPTION_MOUNTING = 0x08000000,//dull name (cuz ind named it :/)
// compound constants
- OPTION_CART = OPTION_CART1|OPTION_CART2|OPTION_CART3|OPTION_CART4|OPTION_CART5,
- OPTION_DRAGON = OPTION_DRAGON1|OPTION_DRAGON2|OPTION_DRAGON3|OPTION_DRAGON4|OPTION_DRAGON5,
+ OPTION_CART = (OPTION_CART1|OPTION_CART2|OPTION_CART3|OPTION_CART4|OPTION_CART5),
+ OPTION_DRAGON = (OPTION_DRAGON1|OPTION_DRAGON2|OPTION_DRAGON3|OPTION_DRAGON4|OPTION_DRAGON5),
OPTION_MASK = ~OPTION_INVISIBLE,
};
Index: src/map/trade.c
===================================================================
--- src/map/trade.c (revision 16039)
+++ src/map/trade.c (working copy)
@@ -500,7 +500,7 @@
}
/*==========================================
- * æøø(tradeµ)
+ * Trading license (press trade)
*------------------------------------------*/
void trade_tradecommit(struct map_session_data *sd)
{
Index: src/map/pc.c
===================================================================
--- src/map/pc.c (revision 16039)
+++ src/map/pc.c (working copy)
@@ -47,7 +47,7 @@
#include <time.h>
-#define PVP_CALCRANK_INTERVAL 1000 // PVPÊvZÌÔu
+#define PVP_CALCRANK_INTERVAL 1000 // PVP calculation interval
static unsigned int exp_table[CLASS_COUNT][2][MAX_LEVEL];
static unsigned int max_level[CLASS_COUNT][2];
static unsigned int statp[MAX_LEVEL+1];
@@ -277,6 +277,7 @@
return 0;
}
+
int pc_banding(struct map_session_data *sd, short skill_lv) {
int c;
int b_sd[MAX_PARTY]; // In case of a full Royal Guard party.
@@ -558,7 +559,7 @@
}
/*==========================================
- * Ú?bÌú?
+ * Off init ? Connection?
*------------------------------------------*/
int pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int login_id1, unsigned int client_tick, int sex, int fd)
{
@@ -832,10 +833,15 @@
return false; // Job Change Fail
}
+/*=================================================
+* Can the player equip the item at index n in inventory
+* return
+* 0 = no
+* 1 = yes
+*------------------------------------------------*/
int pc_isequip(struct map_session_data *sd,int n)
{
struct item_data *item;
- //?¶â{qÌê̳ÌEÆðZo·é
nullpo_ret(sd);
@@ -865,8 +871,7 @@
return 0;
}
- if (sd->sc.count) {
-
+ if (sd->sc.count) {
if(item->equip & EQP_ARMS && item->type == IT_WEAPON && sd->sc.data[SC_STRIPWEAPON]) // Also works with left-hand weapons [DracoRPG]
return 0;
if(item->equip & EQP_SHIELD && item->type == IT_ARMOR && sd->sc.data[SC_STRIPSHIELD])
@@ -910,8 +915,8 @@
}
/*==========================================
- * session idÉâè³µ
- * charI©ççêÄ«œXe?^XðÝè
+ * No problem with the session id
+ * set the status that has been sent from char server
*------------------------------------------*/
bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_time, int group_id, struct mmo_charstatus *st, bool changing_mapservers)
{
@@ -1025,7 +1030,7 @@
for( i = 0; i < 3; i++ )
sd->hate_mob[i] = -1;
- // ÊuÌÝè
+ //warp player
if ((i=pc_setpos(sd,sd->status.last_point.map, sd->status.last_point.x, sd->status.last_point.y, CLR_OUTSIGHT)) != 0) {
ShowError ("Last_point_map %s - id %d not found (error code %d)\n", mapindex_id2name(sd->status.last_point.map), sd->status.last_point.map, i);
@@ -1195,6 +1200,7 @@
sd->status.skill[sd->reproduceskill_id].flag = SKILL_FLAG_PLAGIARIZED;
}
}
+
//Weird... maybe registries were reloaded?
if (sd->state.active)
return 0;
@@ -1265,7 +1271,7 @@
/*==========================================
- * ?ŠçêéXLÌvZ
+ * Calculation of Skills lvls
*------------------------------------------*/
int pc_calc_skilltree(struct map_session_data *sd)
{
@@ -1282,22 +1288,20 @@
}
c = pc_class2idx(c);
- for( i = 0; i < MAX_SKILL; i++ )
- {
- if( sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED ) //Don't touch plagiarized skills
+ for (i = 0; i < MAX_SKILL; i++) {
+ if (sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED) //Don't touch plagiarized skills
sd->status.skill[i].id = 0; //First clear skills.
}
- for( i = 0; i < MAX_SKILL; i++ )
- {
- if( sd->status.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED )
- { // Restore original level of skills after deleting earned skills.
+ for (i = 0; i < MAX_SKILL; i++) {
+ if (sd->status.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED) {
+ // Restore original level of skills after deleting earned skills.
sd->status.skill[i].lv = (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY) ? 0 : sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0;
sd->status.skill[i].flag = SKILL_FLAG_PERMANENT;
}
- if( sd->sc.count && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_BARDDANCER && i >= DC_HUMMING && i<= DC_SERVICEFORYOU )
- { //Enable Bard/Dancer spirit linked skills.
+ if (sd->sc.count && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_BARDDANCER && i >= DC_HUMMING && i<= DC_SERVICEFORYOU) {
+ //Enable Bard/Dancer spirit linked skills.
if( sd->status.sex )
{ //Link dancer skills to bard.
if( sd->status.skill[i-8].lv < 10 )
@@ -1368,8 +1372,7 @@
{
if (sd->status.skill[k].id == 0 || sd->status.skill[k].flag == SKILL_FLAG_TEMPORARY || sd->status.skill[k].flag == SKILL_FLAG_PLAGIARIZED)
k = 0; //Not learned.
- else
- if (sd->status.skill[k].flag >= SKILL_FLAG_REPLACED_LV_0) //Real lerned level
+ else if (sd->status.skill[k].flag >= SKILL_FLAG_REPLACED_LV_0) //Real learned level
k = sd->status.skill[skill_tree[c][i].need[j].id].flag - SKILL_FLAG_REPLACED_LV_0;
else
k = pc_checkskill(sd,k);
@@ -1448,6 +1451,7 @@
if(battle_config.skillfree)
return; //Function serves no purpose if this is set
+ nullpo_retv(sd);
i = pc_calc_skilltree_normalize_job(sd);
c = pc_mapid2jobid(i, sd->status.sex);
@@ -1471,8 +1475,7 @@
{
if( sd->status.skill[k].id == 0 || sd->status.skill[k].flag == SKILL_FLAG_TEMPORARY || sd->status.skill[k].flag == SKILL_FLAG_PLAGIARIZED )
k = 0; //Not learned.
- else
- if( sd->status.skill[k].flag >= SKILL_FLAG_REPLACED_LV_0) //Real lerned level
+ else if( sd->status.skill[k].flag >= SKILL_FLAG_REPLACED_LV_0) //Real learned level
k = sd->status.skill[skill_tree[c][i].need[j].id].flag - SKILL_FLAG_REPLACED_LV_0;
else
k = pc_checkskill(sd,k);
@@ -1513,9 +1516,7 @@
sd->status.skill[i].id = 0;
sd->status.skill[i].lv = 0;
sd->status.skill[i].flag = 0;
- }
- else
- if (sd->status.skill[i].flag >= SKILL_FLAG_REPLACED_LV_0){
+ } else if (sd->status.skill[i].flag >= SKILL_FLAG_REPLACED_LV_0) {
sd->status.skill[i].lv = sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0;
sd->status.skill[i].flag = 0;
}
@@ -3327,7 +3328,7 @@
return 1;
}
/*==========================================
- * J?h?ü
+ * Append a cart to an item ?
*------------------------------------------*/
int pc_insert_card(struct map_session_data* sd, int idx_card, int idx_equip)
{
@@ -3382,18 +3383,18 @@
}
//
-// ACeš
+// Items
//
/*==========================================
- * XLÉæé¢lC³
+ * Correction buying value by skills
*------------------------------------------*/
int pc_modifybuyvalue(struct map_session_data *sd,int orig_value)
{
int skill,val = orig_value,rate1 = 0,rate2 = 0;
- if((skill=pc_checkskill(sd,MC_DISCOUNT))>0) // fBXJEg
+ if((skill=pc_checkskill(sd,MC_DISCOUNT))>0) // merchant discount
rate1 = 5+skill*2-((skill==10)? 1:0);
- if((skill=pc_checkskill(sd,RG_COMPULSION))>0) // RpVfBXJEg
+ if((skill=pc_checkskill(sd,RG_COMPULSION))>0) // rogue discount
rate2 = 5+skill*4;
if(rate1 < rate2) rate1 = rate2;
if(rate1)
@@ -3405,12 +3406,12 @@
}
/*==========================================
- * XLÉæé?èlC³
+ * Correction selling value by skills
*------------------------------------------*/
int pc_modifysellvalue(struct map_session_data *sd,int orig_value)
{
int skill,val = orig_value,rate = 0;
- if((skill=pc_checkskill(sd,MC_OVERCHARGE))>0) // I?o?`?W
+ if((skill=pc_checkskill(sd,MC_OVERCHARGE))>0) //OverCharge ?
rate = 5+skill*2-((skill==10)? 1:0);
if(rate)
val = (int)((double)orig_value*(double)(100+rate)/100.);
@@ -3421,8 +3422,8 @@
}
/*==========================================
- * ACeðÁœbÉAVµ¢ACeðg€©A
- * 3§ÀÉ©©é©mF
+ * Checking if we have enough place on inventory for new item
+ * Make sure to take 30,000 limit
*------------------------------------------*/
int pc_checkadditem(struct map_session_data *sd,int nameid,int amount)
{
@@ -3449,7 +3450,8 @@
}
/*==========================================
- * ó«ACeÌÂ?
+ * Return number of available place in inventory
+ * Each non stackable item will reduce place by 1
*------------------------------------------*/
int pc_inventoryblank(struct map_session_data *sd)
{
@@ -3544,9 +3546,8 @@
ShowWarning("pc_getcash: Cash point overflow (cash=%d, have cash=%d, account_id=%d, char_id=%d).\n", cash, sd->cashPoints, sd->status.account_id, sd->status.char_id);
cash = MAX_ZENY-sd->cashPoints;
}
+ pc_setaccountreg(sd,"#CASHPOINTS",sd->cashPoints + cash);
- pc_setaccountreg(sd, "#CASHPOINTS", sd->cashPoints+cash);
-
if( battle_config.cashshop_show_points )
{
sprintf(output, msg_txt(505), cash, sd->cashPoints);
@@ -3609,7 +3610,7 @@
}
/*==========================================
- * ACeðTµÄACfbNXðÔ·
+ * Searching a specified itemid in inventory and return his stored index
*------------------------------------------*/
int pc_search_inventory(struct map_session_data *sd,int item_id)
{
@@ -3621,7 +3622,14 @@
}
/*==========================================
- * ACeÇÁBÂ?ÌÝitem\¢?Ì?ð³
+ * Attempt tp add a new item in inventory
+ * return
+ 0 = success
+ 1 = invalid itemid not found or negative amount
+ 2 = overweight
+ 4 = no free place found
+ 5 = max amount reached
+
*------------------------------------------*/
int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_log_pick_type log_type)
{
@@ -3692,7 +3700,10 @@
}
/*==========================================
- * ACeðžç·
+ * Remove an item at index n from inventory by amount
+ * return
+ * 0 = succes
+ * 1 = invalid itemid or negative amount
*------------------------------------------*/
int pc_delitem(struct map_session_data *sd,int n,int amount,int type, short reason, e_log_pick_type log_type)
{
@@ -3720,7 +3731,10 @@
}
/*==========================================
- * ACeð·
+ * Attempt to drop an item
+ * return
+ * 0 = fail
+ * 1 = success
*------------------------------------------*/
int pc_dropitem(struct map_session_data *sd,int n,int amount)
{
@@ -3761,7 +3775,10 @@
}
/*==========================================
- * ACeðE€
+ * Attempt to pickup an item
+ * return
+ * 0 = fail
+ * 1 = success
*------------------------------------------*/
int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem)
{
@@ -3774,7 +3791,7 @@
nullpo_ret(fitem);
if(!check_distance_bl(&fitem->bl, &sd->bl, 2) && sd->ud.skillid!=BS_GREED)
- return 0; // £ª¢
+ return 0; // Distance is too far
if (sd->status.party_id)
p = party_search(sd->status.party_id);
@@ -3828,6 +3845,12 @@
return 1;
}
+/*==========================================
+ * Can we use the item ?
+ * Return
+ * 0 = no
+ * 1 = yes
+ *------------------------------------------*/
int pc_isUseitem(struct map_session_data *sd,int n)
{
struct item_data *item;
@@ -3846,7 +3869,7 @@
if( !item->script ) //if it has no script, you can't really consume it!
return 0;
- switch( nameid )
+ switch( nameid ) //lot of harcoded nameid here, need to be removed [Lighta]
{
case 605: // Anodyne
if( map_flag_gvg(sd->bl.m) )
@@ -3983,7 +4006,10 @@
}
/*==========================================
- * ACeðg€
+ * Last checks et use item
+ * return
+ * 0 = fail
+ * 1 = success
*------------------------------------------*/
int pc_useitem(struct map_session_data *sd,int n)
{
@@ -4005,6 +4031,7 @@
)
return 0;
+ //Check if status forbid us
if( sd->sc.count && (
sd->sc.data[SC_BERSERK] ||
(sd->sc.data[SC_GRAVITATION] && sd->sc.data[SC_GRAVITATION]->val3 == BCT_SELF) ||
@@ -4102,7 +4129,10 @@
}
/*==========================================
- * J?gACeÇÁBÂ?ÌÝitem\¢?Ì?ð³
+ * Add item on cart for given index
+ * return
+ * 0 = success
+ * 1 = fail
*------------------------------------------*/
int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amount,e_log_pick_type log_type)
{
@@ -4162,7 +4192,10 @@
}
/*==========================================
- * J?gACeðžç·
+ * Delete item on cart for given index
+ * return
+ * 0 = success
+ * 1 = fail
*------------------------------------------*/
int pc_cart_delitem(struct map_session_data *sd,int n,int amount,int type,e_log_pick_type log_type)
{
@@ -4189,7 +4222,10 @@
}
/*==========================================
- * J?gÖACeÚ®
+ * Transfert item from inventory to cart
+ * return
+ * 0 = fail
+ * 1 = succes
*------------------------------------------*/
int pc_putitemtocart(struct map_session_data *sd,int idx,int amount)
{
@@ -4212,7 +4248,10 @@
}
/*==========================================
- * J?g?ÌACe?mF(Â?Ì·ªðÔ·)
+ * Get number of item on cart
+ * return
+ -1 = itemid not found or no amount found
+ x = remaining itemid on cart after get
*------------------------------------------*/
int pc_cartitem_amount(struct map_session_data* sd, int idx, int amount)
{
@@ -4228,7 +4267,10 @@
}
/*==========================================
- * J?g©çACeÚ®
+ * Retrieve an item at index idx from cart
+ * return
+ * 0 = player not found or (FIXME) succes (from pc_cart_delitem)
+ * 1 = failure
*------------------------------------------*/
int pc_getitemfromcart(struct map_session_data *sd,int idx,int amount)
{
@@ -4252,7 +4294,7 @@
}
/*==========================================
- * XeBiöJ
+ * Display item stolen msg to player sd
*------------------------------------------*/
int pc_show_steal(struct block_list *bl,va_list ap)
{
@@ -4274,7 +4316,10 @@
return 0;
}
/*==========================================
- *
+ * Stole an item from bl (mob)
+ * return
+ * 0 = fail
+ * 1 = succes
*------------------------------------------*/
int pc_steal_item(struct map_session_data *sd,struct block_list *bl, int lv)
{
@@ -4355,7 +4400,10 @@
}
/*==========================================
- *
+ * Stole zeny from bl (mob)
+ * return
+ * 0 = fail
+ * 1 = success
*------------------------------------------*/
int pc_steal_coin(struct map_session_data *sd,struct block_list *target)
{
@@ -4544,7 +4592,11 @@
}
/*==========================================
- * PCÌ_?v
+ * Warp player sd to random location on current map
+ * may fail if no Cell walkable found (1000 attempt)
+ * return
+ * 0 = fail or FIXME succes (from pc_setpos)
+ * x(1|2) = fail
*------------------------------------------*/
int pc_randomwarp(struct map_session_data *sd, clr_type type)
{
@@ -4555,7 +4607,7 @@
m=sd->bl.m;
- if (map[sd->bl.m].flag.noteleport) // e|?gÖ~
+ if (map[sd->bl.m].flag.noteleport) //Teleport forbiden
return 0;
do{
@@ -4619,14 +4671,16 @@
}
//
-// í??
-//
+// Skills
+//
/*==========================================
- * XLÌ?õ LµÄ¢œêLvªÔé
+ * Return player sd skilllv learned for given skill
*------------------------------------------*/
int pc_checkskill(struct map_session_data *sd,int skill_id)
{
- if(sd == NULL) return 0;
+ if( sd == NULL )
+ return 0;
+
if( skill_id >= GD_SKILLBASE && skill_id < GD_MAX )
{
struct guild *g;
@@ -4648,13 +4702,8 @@
}
/*==========================================
- * í?XÉæéXLÌ??`FbN
- * ø?F
- * struct map_session_data *sd ZbVf?^
- * int nameid ?õiID
- * ÔèlF
- * 0 ?Xȵ
- * -1 XLðð
+ * Checking if player match condition for given skill and kill status if not
+ * Status probably require for thoses skills (unsure)
*------------------------------------------*/
int pc_checkallowskill(struct map_session_data *sd)
{
@@ -4700,7 +4749,8 @@
}
/*==========================================
- * ? õiÌ`FbN
+ * Return equiped itemid? on player sd at pos
+ * if -1 mean nothing equiped
*------------------------------------------*/
int pc_checkequip(struct map_session_data *sd,int pos)
{
@@ -5370,7 +5420,7 @@
{
int bonus = 0;
struct status_data *status = status_get_status_data(src);
-
+ nullpo_retv(sd);
if (sd->expaddrace[status->race])
bonus += sd->expaddrace[status->race];
bonus += sd->expaddrace[status->mode&MD_BOSS?RC_BOSS:RC_NONBOSS];
@@ -5392,7 +5442,7 @@
return;
}
/*==========================================
- * ??læŸ
+ * Give x exp at sd player and calculate remaining exp for next lvl
*------------------------------------------*/
int pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned int base_exp,unsigned int job_exp,bool quest)
{
@@ -5485,8 +5535,10 @@
};
/*==========================================
- * base level€Kv??lvZ
+ * base level exp lookup.
*------------------------------------------*/
+
+///How much bexp do player need for next level
unsigned int pc_nextbaseexp(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -5497,6 +5549,7 @@
return exp_table[pc_class2idx(sd->status.class_)][0][sd->status.base_level-1];
}
+///How much bexp do player need for this level
unsigned int pc_thisbaseexp(struct map_session_data *sd)
{
if(sd->status.base_level>pc_maxbaselv(sd) || sd->status.base_level<=1)
@@ -5507,8 +5560,13 @@
/*==========================================
- * job level€Kv??lvZ
+ * job level exp lookup
+ * return
+ * 0 = not found
+ * x = exp for level
*------------------------------------------*/
+
+///How much jexp do player need for next level
unsigned int pc_nextjobexp(struct map_session_data *sd)
{
nullpo_ret(sd);
@@ -5518,6 +5576,7 @@
return exp_table[pc_class2idx(sd->status.class_)][1][sd->status.job_level-1];
}
+///How much jexp do player need for next level
unsigned int pc_thisjobexp(struct map_session_data *sd)
{
if(sd->status.job_level>pc_maxjoblv(sd) || sd->status.job_level<=1)
@@ -5687,7 +5746,8 @@
}
/*==========================================
- * XL|CgèUè
+ * Update skilllv for player sd
+ * Skill point allocation
*------------------------------------------*/
int pc_skillup(struct map_session_data *sd,int skill_num)
{
@@ -5749,6 +5809,7 @@
}
}
+ //pc_calc_skilltree takes care of setting the ID to valid skills. [Skotlex]
if (pc_has_permission(sd, PC_PERM_ALL_SKILL))
{ //Get ALL skills except npc/guild ones. [Skotlex]
//and except SG_DEVIL [Komurka] and MO_TRIPLEATTACK and RG_SNATCHER [ultramage]
@@ -6001,7 +6062,7 @@
if( i == NV_TRICKDEAD && (sd->class_&MAPID_UPPERMASK) != MAPID_NOVICE )
{
sd->status.skill[i].lv = 0;
- sd->status.skill[i].flag = 0;
+ sd->status.skill[i].flag = SKILL_FLAG_PERMANENT;
continue;
}
@@ -6176,6 +6237,9 @@
sd->canlog_tick = gettick();
}
+/*==========================================
+ * Invoked when a player have negative current hp
+ *------------------------------------------*/
int pc_dead(struct map_session_data *sd,struct block_list *src)
{
int i=0,j=0,k=0;
@@ -6278,6 +6342,8 @@
break;
case BL_MER:
src = &((TBL_MER*)src)->master->bl;
+ break;
+ default: //what should we do for other ??
break;
}
@@ -6498,10 +6564,11 @@
if(battle_config.pc_invincible_time > 0)
pc_setinvincibletimer(sd, battle_config.pc_invincible_time);
}
-// script? A
//
+// script
+//
/*==========================================
- * scriptpPCXe?^X?Ýoµ
+ * script reading pc status registry
*------------------------------------------*/
int pc_readparam(struct map_session_data* sd,int type)
{
@@ -6547,7 +6614,7 @@
}
/*==========================================
- * scriptpPCXe?^XÝè
+ * script set pc status registry
*------------------------------------------*/
int pc_setparam(struct map_session_data *sd,int type,int val)
{
@@ -6715,7 +6782,9 @@
}
/*==========================================
- * HP/SPñ
+ * HP/SP Recovery
+ * Heal player hp nad/or sp linearly
+ * Calculate bonus by status
*------------------------------------------*/
int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp)
{
@@ -6773,7 +6842,8 @@
}
/*==========================================
- * HP/SPñ
+ * HP/SP Recovery
+ * Heal player hp nad/or sp by rate
*------------------------------------------*/
int pc_percentheal(struct map_session_data *sd,int hp,int sp)
{
@@ -6811,9 +6881,7 @@
}
/*==========================================
- * E?X
- * ø? job EÆ 0`23
- * upper Êí 0, ?¶ 1, {q 2, »ÌÜÜ -1
+ * Called when player changing job
* Rewrote to make it tidider [Celest]
*------------------------------------------*/
int pc_jobchange(struct map_session_data *sd,int job, int upper)
@@ -6904,7 +6972,7 @@
for(i=0;i<EQI_MAX;i++) {
if(sd->equip_index[i] >= 0)
if(!pc_isequip(sd,sd->equip_index[i]))
- pc_unequipitem(sd,sd->equip_index[i],2); // ?õOµ
+ pc_unequipitem(sd,sd->equip_index[i],2); // ?ᅵᅵᅵOᅵᅵ
}
//Change look, if disguised, you need to undisguise
@@ -6970,7 +7038,7 @@
}
/*==========================================
- * ©œÚ?X
+ * Tell client player sd has change equipement
*------------------------------------------*/
int pc_equiplookall(struct map_session_data *sd)
{
@@ -6987,7 +7055,7 @@
}
/*==========================================
- * ©œÚ?X
+ * Tell client player sd has change look (hair,equip...)
*------------------------------------------*/
int pc_changelook(struct map_session_data *sd,int type,int val)
{
@@ -7047,7 +7115,7 @@
}
/*==========================================
- * t?i(é,yR,J?g)Ýè
+ * Give an option (type) to player (sd) and display it to client
*------------------------------------------*/
int pc_setoption(struct map_session_data *sd,int type)
{
@@ -7165,7 +7233,7 @@
}
/*==========================================
- * J?gÝè
+ * Give player a cart
*------------------------------------------*/
int pc_setcart(struct map_session_data *sd,int type)
{
@@ -7190,12 +7258,12 @@
}
/*==========================================
- * éÝè
+ * Give player a falcon
*------------------------------------------*/
int pc_setfalcon(TBL_PC* sd, int flag)
{
if( flag ){
- if( pc_checkskill(sd,HT_FALCON)>0 ) // t@R}X^?XL
+ if( pc_checkskill(sd,HT_FALCON)>0 ) // ᅵtᅵ@ᅵᅵᅵRᅵᅵᅵ}ᅵXᅵ^ᅵᅵ?ᅵXᅵLᅵᅵᅵᅵᅵᅵ
pc_setoption(sd,sd->sc.option|OPTION_FALCON);
} else if( pc_isfalcon(sd) ){
pc_setoption(sd,sd->sc.option&~OPTION_FALCON); // remove falcon
@@ -7205,12 +7273,12 @@
}
/*==========================================
- * yRyRÝè
+ * Give player a wug (wolf)
*------------------------------------------*/
int pc_setriding(TBL_PC* sd, int flag)
{
if( flag ){
- if( pc_checkskill(sd,KN_RIDING) > 0 ) // CfBOXL
+ if( pc_checkskill(sd,KN_RIDING) > 0 ) // ᅵᅵᅵCᅵfᅵBᅵᅵᅵOᅵXᅵLᅵᅵᅵᅵᅵᅵ
pc_setoption(sd, sd->sc.option|OPTION_RIDING);
} else if( pc_isriding(sd) ){
pc_setoption(sd, sd->sc.option&~OPTION_RIDING);
@@ -7220,7 +7288,7 @@
}
/*==========================================
- * ACehbvÂs»è
+ * Check if player can drop an item
*------------------------------------------*/
int pc_candrop(struct map_session_data *sd, struct item *item)
{
@@ -7232,7 +7300,8 @@
}
/*==========================================
- * scriptp??Ìlð?Þ
+ * Read ram register for player sd
+ * get val (int) from reg for player sd
*------------------------------------------*/
int pc_readreg(struct map_session_data* sd, int reg)
{
@@ -7244,7 +7313,8 @@
return ( i < sd->reg_num ) ? sd->reg[i].data : 0;
}
/*==========================================
- * scriptp??ÌlðÝè
+ * Set ram register for player sd
+ * memo val(int) at reg for player sd
*------------------------------------------*/
int pc_setreg(struct map_session_data* sd, int reg, int val)
{
@@ -7272,7 +7342,8 @@
}
/*==========================================
- * scriptp¶ñ??Ìlð?Þ
+ * Read ram register for player sd
+ * get val (str) from reg for player sd
*------------------------------------------*/
char* pc_readregstr(struct map_session_data* sd, int reg)
{
@@ -7284,7 +7355,8 @@
return ( i < sd->regstr_num ) ? sd->regstr[i].data : NULL;
}
/*==========================================
- * scriptp¶ñ??ÌlðÝè
+ * Set ram register for player sd
+ * memo val(str) at reg for player sd
*------------------------------------------*/
int pc_setregstr(struct map_session_data* sd, int reg, const char* str)
{
@@ -7564,7 +7636,7 @@
}
/*==========================================
- * Cxg^C}??
+ * Exec eventtimer for player sd (retrieved from map_session (id))
*------------------------------------------*/
static int pc_eventtimer(int tid, unsigned int tick, int id, intptr_t data)
{
@@ -7589,7 +7661,7 @@
}
/*==========================================
- * Cxg^C}?ÇÁ
+ * Add eventtimer for player sd ?
*------------------------------------------*/
int pc_addeventtimer(struct map_session_data *sd,int tick,const char *name)
{
@@ -7607,7 +7679,7 @@
}
/*==========================================
- * Cxg^C}?í
+ * Del eventtimer for player sd ?
*------------------------------------------*/
int pc_deleventtimer(struct map_session_data *sd,const char *name)
{
@@ -7637,7 +7709,7 @@
}
/*==========================================
- * Cxg^C}?JEglÇÁ
+ * Update eventtimer count for player sd
*------------------------------------------*/
int pc_addeventtimercount(struct map_session_data *sd,const char *name,int tick)
{
@@ -7656,7 +7728,7 @@
}
/*==========================================
- * Cxg^C}?Sí
+ * Remove all eventtimer for player sd
*------------------------------------------*/
int pc_cleareventtimer(struct map_session_data *sd)
{
@@ -7679,10 +7751,10 @@
}
//
-// ? õš
+// Equipment
//
/*==========================================
- * ACeð?õ·é
+ * Equip item on player sd at req_pos from inventory index n
*------------------------------------------*/
int pc_equipitem(struct map_session_data *sd,int n,int req_pos)
{
@@ -7865,7 +7937,7 @@
}
/*==========================================
- * ? õµœšðO·
+ * Called when attemting to unequip an item from player
* type:
* 0 - only unequip
* 1 - calculate status after unequipping
@@ -7994,8 +8066,8 @@
}
/*==========================================
- * ACeÌindexÔ?ðlßœè
- * ? õiÌ?õÂ\`FbNðsÈ€
+ * Checking if player (sd) have unauthorize, invalide item
+ * on inventory, cart, equiped for the map (item_noequip)
*------------------------------------------*/
int pc_checkitem(struct map_session_data *sd)
{
@@ -8075,7 +8147,7 @@
}
/*==========================================
- * PVPÊvZp(foreachinarea)
+ * Update PVP rank for sd1 to sd2
*------------------------------------------*/
int pc_calc_pvprank_sub(struct block_list *bl,va_list ap)
{
@@ -8094,7 +8166,8 @@
return 0;
}
/*==========================================
- * PVPÊvZ
+ * Calculate new rank beetween all present players (map_foreachinarea)
+ * and display result
*------------------------------------------*/
int pc_calc_pvprank(struct map_session_data *sd)
{
@@ -8109,7 +8182,7 @@
return sd->pvp_rank;
}
/*==========================================
- * PVPÊvZ(timer)
+ * Calculate next sd ranking calculation from config
*------------------------------------------*/
int pc_calc_pvprank_timer(int tid, unsigned int tick, int id, intptr_t data)
{
@@ -8131,7 +8204,10 @@
}
/*==========================================
- * sdÍ¥µÄ¢é©(?¥ÌêÍûÌchar_idðÔ·)
+ * Checking if sd is married
+ * Return
+ * partner_id = yes,
+ * 0 = no
*------------------------------------------*/
int pc_ismarried(struct map_session_data *sd)
{
@@ -8143,7 +8219,10 @@
return 0;
}
/*==========================================
- * sdªdstsdÆ¥(dstsdšsdÌ¥?à¯bÉs€)
+ * Marry player sd to player dstsd
+ * return
+ * -1 = fail
+ * 0 = success
*------------------------------------------*/
int pc_marriage(struct map_session_data *sd,struct map_session_data *dstsd)
{
@@ -8158,6 +8237,9 @@
/*==========================================
* Divorce sd from its partner
+ * return
+ * -1 = fail
+ * 0 = success
*------------------------------------------*/
int pc_divorce(struct map_session_data *sd)
{
@@ -8196,7 +8278,7 @@
}
/*==========================================
- * sdÌûÌmap_session_dataðÔ·
+ * Get sd partner charid. (Married partner)
*------------------------------------------*/
struct map_session_data *pc_get_partner(struct map_session_data *sd)
{
@@ -8207,6 +8289,9 @@
return NULL;
}
+/*==========================================
+ * Get sd father charid. (Need to be baby)
+ *------------------------------------------*/
struct map_session_data *pc_get_father (struct map_session_data *sd)
{
if (sd && sd->class_&JOBL_BABY && sd->status.father > 0)
@@ -8216,6 +8301,9 @@
return NULL;
}
+/*==========================================
+ * Get sd mother charid. (Need to be baby)
+ *------------------------------------------*/
struct map_session_data *pc_get_mother (struct map_session_data *sd)
{
if (sd && sd->class_&JOBL_BABY && sd->status.mother > 0)
@@ -8225,6 +8313,9 @@
return NULL;
}
+/*==========================================
+ * Get sd children charid. (Need to be married)
+ *------------------------------------------*/
struct map_session_data *pc_get_child (struct map_session_data *sd)
{
if (sd && pc_ismarried(sd) && sd->status.child > 0)
@@ -8234,6 +8325,9 @@
return NULL;
}
+/*==========================================
+ * Set player sd to bleed. (losing hp and/or sp each diff_tick)
+ *------------------------------------------*/
void pc_bleeding (struct map_session_data *sd, unsigned int diff_tick)
{
int hp = 0, sp = 0;
@@ -8295,7 +8389,7 @@
}
/*==========================================
- * Z?u|CgÌÛ¶
+ * Memo player sd savepoint. (map,x,y)
*------------------------------------------*/
int pc_setsavepoint(struct map_session_data *sd, short mapindex,int x,int y)
{
@@ -8309,7 +8403,7 @@
}
/*==========================================
- * ©®Z?u (timer??)
+ * Save 1 player data at autosave intervalle
*------------------------------------------*/
int pc_autosave(int tid, unsigned int tick, int id, intptr_t data)
{
@@ -8426,7 +8520,7 @@
skill = cap_value(pc_checkskill(sd,NC_MAINFRAME),0,4);
if( sd->sc.data[SC_OVERHEAT_LIMITPOINT] ) {
heat += sd->sc.data[SC_OVERHEAT_LIMITPOINT]->val1;
- status_change_end(&sd->bl,SC_OVERHEAT_LIMITPOINT,-1);
+ status_change_end(&sd->bl,SC_OVERHEAT_LIMITPOINT, INVALID_TIMER);
}
heat = max(0,heat); // Avoid negative HEAT
@@ -8599,7 +8693,7 @@
FILE *fp;
char line[24000],*p;
- // Kv??l?Ý?Ý
+ //reset
memset(exp_table,0,sizeof(exp_table));
memset(max_level,0,sizeof(max_level));
@@ -8684,12 +8778,12 @@
}
ShowStatus("Done reading '"CL_WHITE"%s"CL_RESET"'.\n","exp.txt");
- // XLc?
+ // ᅵXᅵLᅵᅵᅵcᅵᅵ?
memset(skill_tree,0,sizeof(skill_tree));
sv_readdb(db_path, DBPATH"skill_tree.txt", ',', 3+MAX_PC_SKILL_REQUIRE*2, 4+MAX_PC_SKILL_REQUIRE*2, -1, &pc_readdb_skilltree);
- // ?«C³e?u
+ // ?ᅵᅵᅵCᅵᅵᅵe?ᅵuᅵᅵ
for(i=0;i<4;i++)
for(j=0;j<ELE_MAX;j++)
for(k=0;k<ELE_MAX;k++)
@@ -8741,7 +8835,7 @@
fclose(fp);
ShowStatus("Done reading '"CL_WHITE"%s"CL_RESET"'.\n","attr_fix.txt");
- // XLc?
+ // reset statspoint
memset(statp,0,sizeof(statp));
i=1;
@@ -8872,7 +8966,7 @@
return;
}
/*==========================================
- * pc? Wú»
+ * pc Init/Terminate
*------------------------------------------*/
void do_final_pc(void) {
Index: src/map/map.c
===================================================================
--- src/map/map.c (revision 16039)
+++ src/map/map.c (working copy)
@@ -991,7 +991,7 @@
if(bl_list_count>=BL_LIST_MAX)
ShowWarning("map_foreachinmovearea: block count too many!\n");
- map_freeblock_lock(); // ©çÌðúðÖ~·é
+ map_freeblock_lock(); // Prohibit the release from memory
for(i=blockcount;i<bl_list_count;i++)
if(bl_list[i]->prev)
@@ -1002,7 +1002,7 @@
va_end(ap);
}
- map_freeblock_unlock(); // ðúð·é
+ map_freeblock_unlock(); // Allow Free
bl_list_count = blockcount;
return returnCount;
@@ -1469,10 +1469,13 @@
}
/*==========================================
- * (m,x,y)ðSÉ3x3È?É°ACeÝu
- *
- * item_dataÍamountÈOðcopy·é
- * type flag: &1 MVP item. &2 do stacking check.
+ * Rajoute un item sur la map au location (m,x,y)
+ * Parametres
+ * @item_data attribut de l'item
+ * @amount quantité
+ * @m, @x, @y index de la map et coordonnée en x,y
+ * @first_charid, @second_charid, @third_charid, champ pour les priorité de ramassage
+ * @flag: &1 MVP item. &2 do stacking check.
*------------------------------------------*/
int map_addflooritem(struct item *item_data,int amount,int m,int x,int y,int first_charid,int second_charid,int third_charid,int flags)
{
@@ -2489,7 +2492,7 @@
}
/*==========================================
- * (m,x,y)ÌóÔð²×é
+ * Confirme si le type de cell en (m,x,y) est celui passer en parametre
*------------------------------------------*/
int map_getcell(int m,int x,int y,cell_chk cellchk)
{
Index: src/map/map.h
===================================================================
--- src/map/map.h (revision 16039)
+++ src/map/map.h (working copy)
@@ -608,7 +608,7 @@
extern char wisp_server_name[];
-// ISÌîñ
+// users
void map_setusers(int);
int map_getusers(void);
int map_usercount(void);
Index: src/map/pet.c
===================================================================
--- src/map/pet.c (revision 16039)
+++ src/map/pet.c (working copy)
@@ -1031,7 +1031,7 @@
memset(pd->loot->item,0,pd->loot->max * sizeof(struct item));
pd->loot->count = 0;
pd->loot->weight = 0;
- pd->ud.canact_tick = gettick()+10000; // 10*1000msÌÔEíÈ¢
+ pd->ud.canact_tick = gettick()+10000; // Not picked up during the 10*1000ms
if (dlist->item)
add_timer(gettick()+540,pet_delay_item_drop,0,(intptr_t)dlist);
@@ -1195,7 +1195,7 @@
}
/*==========================================
- *ybgf[^ÇÝÝ
+ *Pet read db data
*------------------------------------------*/
int read_petdb()
{
@@ -1343,7 +1343,7 @@
}
/*==========================================
- * XLÖWú»
+ * Initialization process relationship skills
*------------------------------------------*/
int do_init_pet(void)
{
Index: src/map/path.c
===================================================================
--- src/map/path.c (revision 16039)
+++ src/map/path.c (working copy)
@@ -45,7 +45,7 @@
/*==========================================
* heap update (helper function)
- * costªžÁœÌŪÌûÖÚ®
+ * move toward the root Because cost has decreased
*------------------------------------------*/
static void update_heap_path(int *heap,struct tmp_path *tp,int index)
{
@@ -147,8 +147,7 @@
/*==========================================
* Find the closest reachable cell, 'count' cells away from (x0,y0) in direction (dx,dy).
- *
- * «òεœ ÆÌÀWðŸ
+ * Income after the coordinates of the blow
*------------------------------------------*/
int path_blownpos(int m,int x0,int y0,int dx,int dy,int count)
{
@@ -343,7 +342,7 @@
tp[i].flag=0;
heap[0]=0;
push_heap_path(heap,tp,calc_index(x0,y0));
- xs = md->xs-1; // 究ßPžZµÄš
+ xs = md->xs-1; // Place by subtracting a pre-
ys = md->ys-1;
for(;;)
@@ -361,10 +360,10 @@
if(x==x1 && y==y1)
break;
- // dc[0] : y++ ÌÌRXgª
- // dc[1] : x-- ÌÌRXgª
- // dc[2] : y-- ÌÌRXgª
- // dc[3] : x++ ÌÌRXgª
+ // dc[0] : y++ //Incremental cost at the time
+ // dc[1] : x--
+ // dc[2] : y--
+ // dc[3] : x++
if(y < ys && !map_getcellp(md,x ,y+1,cell)) {
f |= 1; dc[0] = (y >= y1 ? 20 : 0);
Index: athena-start
===================================================================
--- athena-start (revision 16039)
+++ athena-start (working copy)
@@ -50,6 +50,16 @@
echo "Now Started Athena."
;;
+ 'start2')
+ print_start
+ check_files
+
+ exec ./${L_SRV}&
+ exec ./${C_SRV}&
+ gdb -ex run ./${M_SRV}&
+
+ echo "Now Started Athena in debug mode."
+;;
'stop')
ps ax | grep -E "${L_SRV}|${C_SRV}|${M_SRV}" | awk '{print $1}' | xargs kill
;;