- Corrected the @follow timer not being deleted on logout.
- Applied the homunculus code fixes provided by Toms. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7820 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
e159e3dc6b
commit
4289e1c98d
@ -4,6 +4,8 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
|
|||||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||||
|
|
||||||
2006/07/21
|
2006/07/21
|
||||||
|
* Corrected the @follow timer not being deleted on logout. [Skotlex]
|
||||||
|
* Applied the homunculus code fixes provided by Toms. [Skotlex]
|
||||||
* battle_check_target will now tag homunculus as invalid target when the
|
* battle_check_target will now tag homunculus as invalid target when the
|
||||||
source is a skill-type object. [Skotlex]
|
source is a skill-type object. [Skotlex]
|
||||||
* Added a check on pc_equipitem so that when the client specifies to equip
|
* Added a check on pc_equipitem so that when the client specifies to equip
|
||||||
|
@ -3088,6 +3088,8 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
|
|||||||
return 0;
|
return 0;
|
||||||
//Just fallback on master.
|
//Just fallback on master.
|
||||||
t_bl=(struct block_list *)((TBL_HOMUNCULUS*)target)->master;
|
t_bl=(struct block_list *)((TBL_HOMUNCULUS*)target)->master;
|
||||||
|
if (((TBL_PC*)t_bl)->state.monster_ignore && t_bl != s_bl && flag&BCT_ENEMY)
|
||||||
|
return 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BL_SKILL: //Skill with no owner? Kinda odd... but.. let it through.
|
case BL_SKILL: //Skill with no owner? Kinda odd... but.. let it through.
|
||||||
|
@ -1471,6 +1471,8 @@ int clif_hominfo(struct map_session_data *sd, int flag)
|
|||||||
WBUFW(buf,0)=0x22e;
|
WBUFW(buf,0)=0x22e;
|
||||||
memcpy(WBUFP(buf,2),sd->homunculus.name,NAME_LENGTH);
|
memcpy(WBUFP(buf,2),sd->homunculus.name,NAME_LENGTH);
|
||||||
WBUFB(buf,26)=sd->homunculus.rename_flag * 2;
|
WBUFB(buf,26)=sd->homunculus.rename_flag * 2;
|
||||||
|
// Bit field, bit 0 : rename_flag (1 = already renamed), bit 1 : homunc vaporized (1 = true), bit 2 : homunc dead (1 = true)
|
||||||
|
WBUFB(buf,26)=sd->homunculus.rename_flag | (sd->homunculus.vaporize << 1) | (sd->homunculus.hp?0:4);
|
||||||
WBUFW(buf,27)=sd->homunculus.level;
|
WBUFW(buf,27)=sd->homunculus.level;
|
||||||
WBUFW(buf,29)=sd->homunculus.hunger;
|
WBUFW(buf,29)=sd->homunculus.hunger;
|
||||||
WBUFW(buf,31)=(unsigned short) (hd->master->homunculus.intimacy / 100) ;
|
WBUFW(buf,31)=(unsigned short) (hd->master->homunculus.intimacy / 100) ;
|
||||||
|
@ -54,14 +54,6 @@ void merc_load_exptables(void);
|
|||||||
int mercskill_castend_id( int tid, unsigned int tick, int id,int data );
|
int mercskill_castend_id( int tid, unsigned int tick, int id,int data );
|
||||||
static int merc_hom_hungry(int tid,unsigned int tick,int id,int data);
|
static int merc_hom_hungry(int tid,unsigned int tick,int id,int data);
|
||||||
|
|
||||||
int do_init_merc (void)
|
|
||||||
{
|
|
||||||
merc_load_exptables();
|
|
||||||
memset(homunculus_db,0,sizeof(homunculus_db)); //[orn]
|
|
||||||
read_homunculusdb(); //[orn]
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned long hexptbl[MAX_LEVEL+1];
|
static unsigned long hexptbl[MAX_LEVEL+1];
|
||||||
|
|
||||||
void merc_load_exptables(void)
|
void merc_load_exptables(void)
|
||||||
@ -1089,4 +1081,15 @@ int read_homunculusdb()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int do_init_merc (void)
|
||||||
|
{
|
||||||
|
merc_load_exptables();
|
||||||
|
memset(homunculus_db,0,sizeof(homunculus_db)); //[orn]
|
||||||
|
read_homunculusdb(); //[orn]
|
||||||
|
// Add homunc timer function to timer func list [Toms]
|
||||||
|
add_timer_func_list(merc_natural_heal, "merc_natural_heal");
|
||||||
|
add_timer_func_list(merc_hom_hungry, "merc_hom_hungry");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int do_final_merc (void);
|
int do_final_merc (void);
|
||||||
|
@ -5589,6 +5589,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
|||||||
{
|
{
|
||||||
if (sd && sd->hd && ( sd->hd->battle_status.hp >= (sd->hd->battle_status.max_hp * 80 / 100 ) ) ) {
|
if (sd && sd->hd && ( sd->hd->battle_status.hp >= (sd->hd->battle_status.max_hp * 80 / 100 ) ) ) {
|
||||||
sd->homunculus.vaporize = 1;
|
sd->homunculus.vaporize = 1;
|
||||||
|
clif_hominfo(sd, 0);
|
||||||
merc_hom_delete(sd->hd, 0) ;
|
merc_hom_delete(sd->hd, 0) ;
|
||||||
} else if ( sd )
|
} else if ( sd )
|
||||||
{
|
{
|
||||||
|
@ -1638,6 +1638,9 @@ int unit_free(struct block_list *bl) {
|
|||||||
status_change_end(bl,SC_EXPLOSIONSPIRITS,-1);
|
status_change_end(bl,SC_EXPLOSIONSPIRITS,-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (sd->followtimer != -1)
|
||||||
|
pc_stop_following(sd);
|
||||||
|
|
||||||
// Notify friends that this char logged out. [Skotlex]
|
// Notify friends that this char logged out. [Skotlex]
|
||||||
clif_foreachclient(clif_friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 0);
|
clif_foreachclient(clif_friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 0);
|
||||||
party_send_logout(sd);
|
party_send_logout(sd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user