Random Homunculus cleanup
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7857 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
006fff9812
commit
d42fb96de3
@ -4,6 +4,12 @@ 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/24
|
2006/07/24
|
||||||
|
* Homuculus cleanup [DracoRPG]
|
||||||
|
- Replaced nullpo's in parse functions by silent checks
|
||||||
|
- Removed server-side effect for menu option 0 (view status window...
|
||||||
|
why does the client send us the packet since we don't care? -_-)
|
||||||
|
- Rewrote intimacy underflow checks so they are really effective (no
|
||||||
|
need to check if an unsigned is < 0, it won't work... check before!)
|
||||||
* fixed unban unblocking players as well. [Skotlex]
|
* fixed unban unblocking players as well. [Skotlex]
|
||||||
* Fixed Volcano/Deluge/Violent Gale increasing damage based on element of
|
* Fixed Volcano/Deluge/Violent Gale increasing damage based on element of
|
||||||
attack instead of defense element of attacker. [Skotlex]
|
attack instead of defense element of attacker. [Skotlex]
|
||||||
|
@ -40,6 +40,7 @@ Playtester
|
|||||||
Date Added
|
Date Added
|
||||||
======
|
======
|
||||||
07/24
|
07/24
|
||||||
|
* Tiny typo fix in a Rekenber Guard dialog [DracoRPG]
|
||||||
* Added temporary Rachel spawn file, commented for now [Playtester]
|
* Added temporary Rachel spawn file, commented for now [Playtester]
|
||||||
07/23
|
07/23
|
||||||
* Removed the regular Thanatos spawn, since the quest is now implemented. [MasterOfMuppets]
|
* Removed the regular Thanatos spawn, since the quest is now implemented. [MasterOfMuppets]
|
||||||
|
@ -2042,7 +2042,7 @@ s_Yes:
|
|||||||
mes "[Regenschirm Guard]";
|
mes "[Regenschirm Guard]";
|
||||||
mes "I'm sorry but I can't let";
|
mes "I'm sorry but I can't let";
|
||||||
mes "staff without proper autorization";
|
mes "staff without proper autorization";
|
||||||
mes "pass. Only staff memebers with";
|
mes "pass. Only staff members with";
|
||||||
mes "Laboratory Passports are allowed";
|
mes "Laboratory Passports are allowed";
|
||||||
mes "to enter the underground.";
|
mes "to enter the underground.";
|
||||||
close;
|
close;
|
||||||
|
@ -174,7 +174,7 @@ struct s_homunculus { //[orn]
|
|||||||
int char_id;
|
int char_id;
|
||||||
short class_;
|
short class_;
|
||||||
int hp,max_hp,sp,max_sp;
|
int hp,max_hp,sp,max_sp;
|
||||||
unsigned long intimacy; //[orn]
|
int intimacy; //[orn]
|
||||||
short hunger;
|
short hunger;
|
||||||
struct skill hskill[MAX_HOMUNSKILL]; //albator
|
struct skill hskill[MAX_HOMUNSKILL]; //albator
|
||||||
short skillpts;
|
short skillpts;
|
||||||
|
@ -105,7 +105,7 @@ static const int packet_len_table[MAX_PACKET_DB] = {
|
|||||||
//#0x200
|
//#0x200
|
||||||
26, -1, 26, 10, 18, 26, 11, 34, 14, 36, 10, 0, 0, -1, 32, 10, // 0x20c change to 0 (was 19)
|
26, -1, 26, 10, 18, 26, 11, 34, 14, 36, 10, 0, 0, -1, 32, 10, // 0x20c change to 0 (was 19)
|
||||||
22, 0, 26, 26, 42, -1, -1, 2, 2,282,282,10, 10, -1, -1, 66,
|
22, 0, 26, 26, 42, -1, -1, 2, 2,282,282,10, 10, -1, -1, 66,
|
||||||
10, -1, -1, 8, 10, 2,282, 18, 18, 15, 58, 57, 64, 5, 69, 5,
|
10, -1, -1, 8, 10, 2,282, 18, 18, 15, 58, 57, 64, 5, 71, 5,
|
||||||
12, 26, 9, 11, -1, -1, 10, 2, 282, 11, 4, 36, -1,-1, 4, 2,
|
12, 26, 9, 11, -1, -1, 10, 2, 282, 11, 4, 36, -1,-1, 4, 2,
|
||||||
-1, -1, -1, -1, -1, 3, 4, 8, -1, 3, 70, 4, 8,12, 4, 10,
|
-1, -1, -1, -1, -1, 3, 4, 8, -1, 3, 70, 4, 8,12, 4, 10,
|
||||||
3, 32, -1, 3, 3, 5, 5, 8, 2, 3, -1, -1, 4,-1, 4
|
3, 32, -1, 3, 3, 5, 5, 8, 2, 3, -1, -1, 4,-1, 4
|
||||||
@ -1463,11 +1463,8 @@ int clif_hominfo(struct map_session_data *sd, int flag)
|
|||||||
|
|
||||||
nullpo_retr(0, hd);
|
nullpo_retr(0, hd);
|
||||||
|
|
||||||
// if ( sd->hd )
|
|
||||||
// return 0 ;
|
|
||||||
|
|
||||||
status = &hd->battle_status;
|
status = &hd->battle_status;
|
||||||
memset(buf,0,71); //packet_len_table[0x22e]);
|
memset(buf,0,packet_len_table[0x22e]);
|
||||||
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;
|
||||||
@ -1476,7 +1473,7 @@ int clif_hominfo(struct map_session_data *sd, int flag)
|
|||||||
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) ;
|
||||||
WBUFW(buf,33)=0; // equip id
|
WBUFW(buf,33)=0; // equip id
|
||||||
WBUFW(buf,35)=status->rhw.atk2;
|
WBUFW(buf,35)=status->rhw.atk2;
|
||||||
WBUFW(buf,37)=status->matk_max;
|
WBUFW(buf,37)=status->matk_max;
|
||||||
WBUFW(buf,39)=status->hit;
|
WBUFW(buf,39)=status->hit;
|
||||||
@ -1492,17 +1489,14 @@ int clif_hominfo(struct map_session_data *sd, int flag)
|
|||||||
WBUFL(buf,59)=sd->homunculus.exp;
|
WBUFL(buf,59)=sd->homunculus.exp;
|
||||||
WBUFL(buf,63)=hd->exp_next;
|
WBUFL(buf,63)=hd->exp_next;
|
||||||
WBUFW(buf,67)=sd->homunculus.skillpts;
|
WBUFW(buf,67)=sd->homunculus.skillpts;
|
||||||
WBUFW(buf,69)=1; //hd->attackable; FIXME: Attackable? When exactly is a homun not attackable? [Skotlex]
|
WBUFW(buf,69)=1; // FIXME: Attackable? When exactly is a homun not attackable? [Skotlex]
|
||||||
clif_send(buf,/*packet_len_table[0x22e]*/71,&sd->bl,SELF);
|
clif_send(buf,packet_len_table[0x22e],&sd->bl,SELF);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
|
||||||
*
|
|
||||||
*------------------------------------------
|
|
||||||
*/
|
|
||||||
void clif_send_homdata(struct map_session_data *sd, int type, int param) { //[orn]
|
void clif_send_homdata(struct map_session_data *sd, int type, int param) { //[orn]
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
nullpo_retv(sd);
|
nullpo_retv(sd);
|
||||||
nullpo_retv(sd->hd);
|
nullpo_retv(sd->hd);
|
||||||
|
|
||||||
@ -1515,7 +1509,7 @@ void clif_send_homdata(struct map_session_data *sd, int type, int param) { //[or
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// like skillinfoblock, just for homunculi.
|
|
||||||
int clif_homskillinfoblock(struct map_session_data *sd) { //[orn]
|
int clif_homskillinfoblock(struct map_session_data *sd) { //[orn]
|
||||||
int fd;
|
int fd;
|
||||||
int i,j,c,len=4,id/*, inf2*/;
|
int i,j,c,len=4,id/*, inf2*/;
|
||||||
@ -1570,38 +1564,37 @@ void clif_homskillup(struct map_session_data *sd, int skill_num) { //[orn]
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Request a Homunculus name change
|
|
||||||
void clif_parse_ChangeHomunculusName(int fd, struct map_session_data *sd) { //[orn]
|
void clif_parse_ChangeHomunculusName(int fd, struct map_session_data *sd) { //[orn]
|
||||||
RFIFOHEAD(fd);
|
|
||||||
nullpo_retv(sd);
|
nullpo_retv(sd);
|
||||||
nullpo_retv(sd->hd);
|
|
||||||
|
if(sd->hd == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
RFIFOHEAD(fd);
|
||||||
memcpy(sd->homunculus.name,RFIFOP(fd,2),24);
|
memcpy(sd->homunculus.name,RFIFOP(fd,2),24);
|
||||||
sd->homunculus.rename_flag = 1 ;
|
sd->homunculus.rename_flag = 1;
|
||||||
clif_hominfo(sd,0);
|
clif_hominfo(sd,0);
|
||||||
clif_charnameack(sd->fd,&sd->hd->bl);
|
clif_charnameack(sd->fd,&sd->hd->bl);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Somebody who is less lazy than me rename this to ReturnToMaster or something
|
|
||||||
void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd) { //[orn]
|
void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd) { //[orn]
|
||||||
RFIFOHEAD(fd);
|
|
||||||
nullpo_retv(sd);
|
nullpo_retv(sd);
|
||||||
nullpo_retv(sd->hd);
|
|
||||||
|
|
||||||
if ( sd->hd && status_isdead(&sd->hd->bl) )
|
if(sd->hd == NULL || status_isdead(&sd->hd->bl) || sd->homunculus.vaporize)
|
||||||
return ;
|
return;
|
||||||
|
|
||||||
unit_walktoxy(&sd->hd->bl, sd->bl.x,sd->bl.y-1, 0); //move to master
|
unit_walktoxy(&sd->hd->bl, sd->bl.x,sd->bl.y-1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Request a Homunculus move-to-position
|
|
||||||
void clif_parse_HomMoveTo(int fd,struct map_session_data *sd) { //[orn]
|
void clif_parse_HomMoveTo(int fd,struct map_session_data *sd) { //[orn]
|
||||||
int x,y,cmd;
|
int x,y,cmd;
|
||||||
|
|
||||||
nullpo_retv(sd);
|
nullpo_retv(sd);
|
||||||
nullpo_retv(sd->hd);
|
|
||||||
|
|
||||||
if ( sd->hd && status_isdead(&sd->hd->bl) )
|
if(sd->hd == NULL || status_isdead(&sd->hd->bl) || sd->homunculus.vaporize)
|
||||||
return ;
|
return;
|
||||||
|
|
||||||
cmd = RFIFOW(fd,0);
|
cmd = RFIFOW(fd,0);
|
||||||
x = RFIFOB(fd,packet_db[sd->packet_ver][cmd].pos[0]) * 4 +
|
x = RFIFOB(fd,packet_db[sd->packet_ver][cmd].pos[0]) * 4 +
|
||||||
@ -1612,18 +1605,17 @@ void clif_parse_HomMoveTo(int fd,struct map_session_data *sd) { //[orn]
|
|||||||
unit_walktoxy(&(sd->hd->bl),x,y,0);
|
unit_walktoxy(&(sd->hd->bl),x,y,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Request the Homunculus attacking a bl
|
|
||||||
void clif_parse_HomAttack(int fd,struct map_session_data *sd) { //[orn]
|
void clif_parse_HomAttack(int fd,struct map_session_data *sd) { //[orn]
|
||||||
struct block_list *target;
|
struct block_list *target;
|
||||||
nullpo_retv(sd);
|
|
||||||
nullpo_retv(sd->hd);
|
|
||||||
|
|
||||||
target=map_id2bl(RFIFOL(fd,6));
|
|
||||||
|
|
||||||
if ( sd->hd && target && ( status_isdead(&sd->hd->bl) || status_isdead(target) ) )
|
|
||||||
return ;
|
|
||||||
|
|
||||||
if(sd->hd->bl.id != RFIFOL(fd,2)) return;
|
nullpo_retv(sd);
|
||||||
|
|
||||||
|
if(sd->hd == NULL || status_isdead(&sd->hd->bl) || sd->homunculus.vaporize || sd->hd->bl.id != RFIFOL(fd,2))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ((target = map_id2bl(RFIFOL(fd,6))) == NULL || status_isdead(target))
|
||||||
|
return;
|
||||||
|
|
||||||
merc_stop_walking(sd->hd, 1);
|
merc_stop_walking(sd->hd, 1);
|
||||||
merc_stop_attack(sd->hd);
|
merc_stop_attack(sd->hd);
|
||||||
if ( sd->hd && target ) {
|
if ( sd->hd && target ) {
|
||||||
@ -1634,10 +1626,13 @@ void clif_parse_HomAttack(int fd,struct map_session_data *sd) { //[orn]
|
|||||||
|
|
||||||
void clif_parse_HomMenu(int fd, struct map_session_data *sd) { //[orn]
|
void clif_parse_HomMenu(int fd, struct map_session_data *sd) { //[orn]
|
||||||
int cmd;
|
int cmd;
|
||||||
cmd = RFIFOW(fd,0);
|
|
||||||
RFIFOHEAD(fd);
|
RFIFOHEAD(fd);
|
||||||
if ( sd->hd && status_isdead(&sd->hd->bl) )
|
cmd = RFIFOW(fd,0);
|
||||||
return ;
|
|
||||||
|
if(sd->hd == NULL || status_isdead(&sd->hd->bl) || sd->homunculus.vaporize)
|
||||||
|
return;
|
||||||
|
|
||||||
merc_menu(sd,RFIFOB(fd,packet_db[sd->packet_ver][cmd].pos[0]));
|
merc_menu(sd,RFIFOB(fd,packet_db[sd->packet_ver][cmd].pos[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1657,27 +1652,6 @@ int clif_hom_food(struct map_session_data *sd,int foodid,int fail) //[orn]
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
|
||||||
* orn
|
|
||||||
*------------------------------------------
|
|
||||||
*/
|
|
||||||
int clif_hwalkok(struct homun_data *hd)
|
|
||||||
{
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
nullpo_retr(0, hd);
|
|
||||||
|
|
||||||
fd=hd->master->fd;
|
|
||||||
WFIFOHEAD(fd, packet_len_table[0x87]);
|
|
||||||
WFIFOW(fd,0)=0x87;
|
|
||||||
WFIFOL(fd,2)=gettick();
|
|
||||||
WFIFOPOS2(fd,6,hd->bl.x,hd->bl.y,hd->ud.to_x,hd->ud.to_y);
|
|
||||||
WFIFOB(fd,11)=0x88;
|
|
||||||
WFIFOSET(fd,packet_len_table[0x87]);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
*
|
*
|
||||||
*------------------------------------------
|
*------------------------------------------
|
||||||
@ -9678,7 +9652,8 @@ static void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_sess
|
|||||||
{
|
{
|
||||||
int lv;
|
int lv;
|
||||||
|
|
||||||
if (!hd) return;
|
if (!hd)
|
||||||
|
return;
|
||||||
|
|
||||||
if (skillnotok_hom(skillnum, hd)) //[orn]
|
if (skillnotok_hom(skillnum, hd)) //[orn]
|
||||||
return;
|
return;
|
||||||
|
@ -34,8 +34,6 @@
|
|||||||
#include "mercenary.h"
|
#include "mercenary.h"
|
||||||
#include "charsave.h"
|
#include "charsave.h"
|
||||||
|
|
||||||
typedef char char32[32];
|
|
||||||
|
|
||||||
static int dirx[8]={0,-1,-1,-1,0,1,1,1}; //[orn]
|
static int dirx[8]={0,-1,-1,-1,0,1,1,1}; //[orn]
|
||||||
static int diry[8]={1,1,0,-1,-1,-1,0,1}; //[orn]
|
static int diry[8]={1,1,0,-1,-1,-1,0,1}; //[orn]
|
||||||
|
|
||||||
@ -45,11 +43,6 @@ static int diry[8]={1,1,0,-1,-1,-1,0,1}; //[orn]
|
|||||||
struct homunculus_db homunculus_db[MAX_HOMUNCULUS_CLASS]; //[orn]
|
struct homunculus_db homunculus_db[MAX_HOMUNCULUS_CLASS]; //[orn]
|
||||||
struct skill_tree_entry hskill_tree[MAX_HOMUNCULUS_CLASS][MAX_SKILL_TREE];
|
struct skill_tree_entry hskill_tree[MAX_HOMUNCULUS_CLASS][MAX_SKILL_TREE];
|
||||||
|
|
||||||
char32 merc_skillname[20] = {"NULL","HLIF_HEAL","HLIF_AVOID","HLIF_BRAIN","HLIF_CHANGE",
|
|
||||||
"HAMI_CASTLE","HAMI_DEFENCE","HAMI_SKIN","HAMI_BLOODLUST",
|
|
||||||
"HFLI_MOON","HFLI_FLEET","HFLI_SPEED","HFLI_SBR44",
|
|
||||||
"HVAN_CAPRICE","HVAN_CHAOTIC","HVAN_INSTRUCT","HVAN_EXPLOSION"};
|
|
||||||
|
|
||||||
void merc_load_exptables(void);
|
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);
|
||||||
@ -111,11 +104,6 @@ void merc_load_exptables(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *merc_hom_skill_get_name(int id)
|
|
||||||
{
|
|
||||||
return merc_skillname[id-HM_SKILLBASE];
|
|
||||||
}
|
|
||||||
|
|
||||||
void merc_damage(struct homun_data *hd,struct block_list *src,int hp,int sp)
|
void merc_damage(struct homun_data *hd,struct block_list *src,int hp,int sp)
|
||||||
{
|
{
|
||||||
nullpo_retv(hd);
|
nullpo_retv(hd);
|
||||||
@ -150,6 +138,7 @@ int merc_hom_dead(struct homun_data *hd, struct block_list *src)
|
|||||||
int merc_hom_delete(struct homun_data *hd, int flag)
|
int merc_hom_delete(struct homun_data *hd, int flag)
|
||||||
{
|
{
|
||||||
nullpo_retr(0, hd);
|
nullpo_retr(0, hd);
|
||||||
|
|
||||||
// Delete homunculus
|
// Delete homunculus
|
||||||
if ( flag&1 ) { //sabbath
|
if ( flag&1 ) { //sabbath
|
||||||
intif_homunculus_requestdelete(hd->master->homunculus.hom_id) ;
|
intif_homunculus_requestdelete(hd->master->homunculus.hom_id) ;
|
||||||
@ -568,7 +557,6 @@ int merc_menu(struct map_session_data *sd,int menunum)
|
|||||||
|
|
||||||
switch(menunum) {
|
switch(menunum) {
|
||||||
case 0:
|
case 0:
|
||||||
merc_hom_food(sd, sd->hd);
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
merc_hom_food(sd, sd->hd);
|
merc_hom_food(sd, sd->hd);
|
||||||
@ -585,7 +573,7 @@ int merc_menu(struct map_session_data *sd,int menunum)
|
|||||||
|
|
||||||
int merc_hom_food(struct map_session_data *sd, struct homun_data *hd)
|
int merc_hom_food(struct map_session_data *sd, struct homun_data *hd)
|
||||||
{
|
{
|
||||||
int i, k, emotion;
|
int i, k, intimacy, emotion;
|
||||||
|
|
||||||
if(hd->master->homunculus.vaporize)
|
if(hd->master->homunculus.vaporize)
|
||||||
return 1 ;
|
return 1 ;
|
||||||
@ -599,27 +587,28 @@ int merc_hom_food(struct map_session_data *sd, struct homun_data *hd)
|
|||||||
pc_delitem(sd,i,1,0);
|
pc_delitem(sd,i,1,0);
|
||||||
|
|
||||||
if ( hd->master->homunculus.hunger >= 91 ) {
|
if ( hd->master->homunculus.hunger >= 91 ) {
|
||||||
hd->master->homunculus.intimacy -= 50 ;
|
intimacy = -50;
|
||||||
emotion = 16 ;
|
emotion = 16;
|
||||||
} else if ( hd->master->homunculus.hunger >= 76 ) {
|
} else if ( hd->master->homunculus.hunger >= 76 ) {
|
||||||
hd->master->homunculus.intimacy -= 30 ;
|
intimacy = -30;
|
||||||
emotion = 19 ;
|
emotion = 19;
|
||||||
} else if ( hd->master->homunculus.hunger >= 26 ) {
|
} else if ( hd->master->homunculus.hunger >= 26 ) {
|
||||||
hd->master->homunculus.intimacy += 80 ;
|
intimacy = 80;
|
||||||
emotion = 2 ;
|
emotion = 2;
|
||||||
} else if ( hd->master->homunculus.hunger >= 11 ) {
|
} else if ( hd->master->homunculus.hunger >= 11 ) {
|
||||||
hd->master->homunculus.intimacy += 100 ;
|
intimacy = 100;
|
||||||
emotion = 2 ;
|
emotion = 2;
|
||||||
} else {
|
} else {
|
||||||
hd->master->homunculus.intimacy += 50 ;
|
intimacy = 50;
|
||||||
emotion = 2 ;
|
emotion = 2;
|
||||||
}
|
}
|
||||||
|
hd->master->homunculus.intimacy += intimacy;
|
||||||
|
if(hd->master->homunculus.intimacy < 0)
|
||||||
|
hd->master->homunculus.intimacy = 0;
|
||||||
if(hd->master->homunculus.intimacy > 100000)
|
if(hd->master->homunculus.intimacy > 100000)
|
||||||
hd->master->homunculus.intimacy = 100000;
|
hd->master->homunculus.intimacy = 100000;
|
||||||
if(hd->master->homunculus.intimacy < 0)
|
|
||||||
hd->master->homunculus.intimacy = 0 ;
|
|
||||||
|
|
||||||
emotion = 5 ; // Thanks
|
//emotion = 5 ; // FIXME: why the code above and now always set emotion to Thanks?
|
||||||
hd->master->homunculus.hunger += 10; //dunno increase value for each food
|
hd->master->homunculus.hunger += 10; //dunno increase value for each food
|
||||||
if(hd->master->homunculus.hunger > 100)
|
if(hd->master->homunculus.hunger > 100)
|
||||||
hd->master->homunculus.hunger = 100;
|
hd->master->homunculus.hunger = 100;
|
||||||
@ -629,6 +618,13 @@ int merc_hom_food(struct map_session_data *sd, struct homun_data *hd)
|
|||||||
clif_send_homdata(sd,SP_INTIMATE,sd->homunculus.intimacy / 100);
|
clif_send_homdata(sd,SP_INTIMATE,sd->homunculus.intimacy / 100);
|
||||||
clif_hom_food(sd,hd->homunculusDB->foodID,1);
|
clif_hom_food(sd,hd->homunculusDB->foodID,1);
|
||||||
|
|
||||||
|
if(hd->master->homunculus.intimacy == 0) {
|
||||||
|
merc_stop_walking(hd, 1);
|
||||||
|
merc_stop_attack(hd);
|
||||||
|
clif_emotion(&hd->master->bl, 23) ; //omg
|
||||||
|
merc_hom_delete(hd,1) ;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -662,9 +658,11 @@ static int merc_hom_hungry(int tid,unsigned int tick,int id,int data)
|
|||||||
}
|
}
|
||||||
if(hd->master->homunculus.hunger < 0) {
|
if(hd->master->homunculus.hunger < 0) {
|
||||||
hd->master->homunculus.hunger = 0;
|
hd->master->homunculus.hunger = 0;
|
||||||
hd->master->homunculus.intimacy -= 100 ;
|
hd->master->homunculus.intimacy -= 100;
|
||||||
|
if(hd->master->homunculus.intimacy < 0)
|
||||||
|
hd->master->homunculus.intimacy = 0;
|
||||||
clif_send_homdata(sd,SP_INTIMATE,sd->homunculus.intimacy / 100);
|
clif_send_homdata(sd,SP_INTIMATE,sd->homunculus.intimacy / 100);
|
||||||
if ( hd->master->homunculus.intimacy <= 0 ) {
|
if(hd->master->homunculus.intimacy == 0) {
|
||||||
merc_stop_walking(hd, 1);
|
merc_stop_walking(hd, 1);
|
||||||
merc_stop_attack(hd);
|
merc_stop_attack(hd);
|
||||||
clif_emotion(&hd->master->bl, 23) ; //omg
|
clif_emotion(&hd->master->bl, 23) ; //omg
|
||||||
|
Loading…
x
Reference in New Issue
Block a user