Jump to content
  • 0
Sign in to follow this  
Helena

Disable pet hunger bar

Question

Can someone direct me to the right lines/files to edit?

 

I already messed some around in clif.c but I couldn't get it working, (I got the HP bar from monsters removed though... but that's not the bar I wanted xD)

 

Thanks in advance.

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

With this mods there will be no hunger, as far as I know there's no way to totally remove the hunger bar without having client-side modified. Haven't tested this changes in-game, but they built without showing any errors/warnings.

Open src/map/pet.c and search for:

	if( pd->petDB ) {		if( pd->petDB->equip_script )			status_calc_pc(sd,SCO_NONE);		if( battle_config.pet_hungry_delay_rate != 100 )			interval = (pd->petDB->hungry_delay*battle_config.pet_hungry_delay_rate)/100;		else			interval = pd->petDB->hungry_delay;	}		if( interval <= 0 )		interval = 1;	pd->pet_hungry_timer = timer->add(timer->gettick() + interval, pet->hungry, sd->bl.id, 0);	return 0;}
Change it to:
	if( pd->petDB ) {		if( pd->petDB->equip_script )			status_calc_pc(sd,SCO_NONE);//		if( battle_config.pet_hungry_delay_rate != 100 )//			interval = (pd->petDB->hungry_delay*battle_config.pet_hungry_delay_rate)/100;//		else//			interval = pd->petDB->hungry_delay;	}	//	if( interval <= 0 )//		interval = 1;//	pd->pet_hungry_timer = timer->add(timer->gettick() + interval, pet->hungry, sd->bl.id, 0);	pd->pet.hungry = 70; // Optimal hunger value	pd->pet.intimate = 1000; // Oh, so intimate	return 0;}
Now search for:
timer->add_func_list(pet->hungry,"pet_hungry");
Change it to:
//timer->add_func_list(pet->hungry,"pet_hungry");
Find:
int pet_hungry(int tid, int64 tick, int id, intptr_t data) {	struct map_session_data *sd;	struct pet_data *pd;	int interval;	sd=map->id2sd(id);	if(!sd)		return 1;	if(!sd->status.pet_id || !sd->pd)		return 1;	pd = sd->pd;	if(pd->pet_hungry_timer != tid){		ShowError("pet_hungry_timer %d != %dn",pd->pet_hungry_timer,tid);		return 0;	}	pd->pet_hungry_timer = INVALID_TIMER;	if (pd->pet.intimate <= 0)		return 1; //You lost the pet already, the rest is irrelevant.		pd->pet.hungry--;	if( pd->pet.hungry < 0 )	{		pet_stop_attack(pd);		pd->pet.hungry = 0;		pet->set_intimate(pd, pd->pet.intimate - battle_config.pet_hungry_friendly_decrease);		if( pd->pet.intimate <= 0 )		{			pd->pet.intimate = 0;			pd->status.speed = pd->db->status.speed;		}		status_calc_pet(pd, SCO_NONE);		clif->send_petdata(sd,pd,1,pd->pet.intimate);	}	clif->send_petdata(sd,pd,2,pd->pet.hungry);	if(battle_config.pet_hungry_delay_rate != 100)		interval = (pd->petDB->hungry_delay*battle_config.pet_hungry_delay_rate)/100;	else		interval = pd->petDB->hungry_delay;	if(interval <= 0)		interval = 1;	pd->pet_hungry_timer = timer->add(tick+interval,pet->hungry,sd->bl.id,0);	return 0;}
Replace it with:
int pet_hungry(int tid, int64 tick, int id, intptr_t data) {/**	struct map_session_data *sd;	struct pet_data *pd;	int interval;	sd=map->id2sd(id);	if(!sd)		return 1;	if(!sd->status.pet_id || !sd->pd)		return 1;	pd = sd->pd;	if(pd->pet_hungry_timer != tid){		ShowError("pet_hungry_timer %d != %dn",pd->pet_hungry_timer,tid);		return 0;	}	pd->pet_hungry_timer = INVALID_TIMER;	if (pd->pet.intimate <= 0)		return 1; //You lost the pet already, the rest is irrelevant.		pd->pet.hungry--;	if( pd->pet.hungry < 0 )	{		pet_stop_attack(pd);		pd->pet.hungry = 0;		pet->set_intimate(pd, pd->pet.intimate - battle_config.pet_hungry_friendly_decrease);		if( pd->pet.intimate <= 0 )		{			pd->pet.intimate = 0;			pd->status.speed = pd->db->status.speed;		}		status_calc_pet(pd, SCO_NONE);		clif->send_petdata(sd,pd,1,pd->pet.intimate);	}	clif->send_petdata(sd,pd,2,pd->pet.hungry);	if(battle_config.pet_hungry_delay_rate != 100)		interval = (pd->petDB->hungry_delay*battle_config.pet_hungry_delay_rate)/100;	else		interval = pd->petDB->hungry_delay;	if(interval <= 0)		interval = 1;	pd->pet_hungry_timer = timer->add(tick+interval,pet->hungry,sd->bl.id,0);**/	return 0;}
Find:
int pet_hungry_timer_delete(struct pet_data *pd){	nullpo_ret(pd);	if(pd->pet_hungry_timer != INVALID_TIMER) {		timer->delete(pd->pet_hungry_timer,pet->hungry);		pd->pet_hungry_timer = INVALID_TIMER;	}	return 1;}
Replace with:
int pet_hungry_timer_delete(struct pet_data *pd){	nullpo_ret(pd);/**	if(pd->pet_hungry_timer != INVALID_TIMER) {		timer->delete(pd->pet_hungry_timer,pet->hungry);		pd->pet_hungry_timer = INVALID_TIMER;	}**/	return 1;}
Search for:
int pet_food(struct map_session_data *sd, struct pet_data *pd){	int i,k;	k=pd->petDB->FoodID;	i=pc->search_inventory(sd,k);	if(i < 0) {		clif->pet_food(sd,k,0);		return 1;	}	pc->delitem(sd,i,1,0,0,LOG_TYPE_CONSUME);	if( pd->pet.hungry > 90 )		pet->set_intimate(pd, pd->pet.intimate - pd->petDB->r_full);	else	{		if( battle_config.pet_friendly_rate != 100 )			k = (pd->petDB->r_hungry * battle_config.pet_friendly_rate)/100;		else			k = pd->petDB->r_hungry;		if( pd->pet.hungry > 75 )		{			k = k >> 1;			if( k <= 0 )				k = 1;		}		pet->set_intimate(pd, pd->pet.intimate + k);	}	if( pd->pet.intimate <= 0 )	{		pd->pet.intimate = 0;		pet_stop_attack(pd);		pd->status.speed = pd->db->status.speed;	}	else if( pd->pet.intimate > 1000 )		pd->pet.intimate = 1000;	status_calc_pet(pd, SCO_NONE);	pd->pet.hungry += pd->petDB->fullness;	if( pd->pet.hungry > 100 )		pd->pet.hungry = 100;	clif->send_petdata(sd,pd,2,pd->pet.hungry);	clif->send_petdata(sd,pd,1,pd->pet.intimate);	clif->pet_food(sd,pd->petDB->FoodID,1);	return 0;}
Replace it with:
int pet_food(struct map_session_data *sd, struct pet_data *pd){/**	int i,k;	k=pd->petDB->FoodID;	i=pc->search_inventory(sd,k);	if(i < 0) {		clif->pet_food(sd,k,0);		return 1;	}	pc->delitem(sd,i,1,0,0,LOG_TYPE_CONSUME);	if( pd->pet.hungry > 90 )		pet->set_intimate(pd, pd->pet.intimate - pd->petDB->r_full);	else	{		if( battle_config.pet_friendly_rate != 100 )			k = (pd->petDB->r_hungry * battle_config.pet_friendly_rate)/100;		else			k = pd->petDB->r_hungry;		if( pd->pet.hungry > 75 )		{			k = k >> 1;			if( k <= 0 )				k = 1;		}		pet->set_intimate(pd, pd->pet.intimate + k);	}	if( pd->pet.intimate <= 0 )	{		pd->pet.intimate = 0;		pet_stop_attack(pd);		pd->status.speed = pd->db->status.speed;	}	else if( pd->pet.intimate > 1000 )		pd->pet.intimate = 1000;	status_calc_pet(pd, SCO_NONE);	pd->pet.hungry += pd->petDB->fullness;	if( pd->pet.hungry > 100 )		pd->pet.hungry = 100;**/	clif->send_petdata(sd,pd,2,pd->pet.hungry);	clif->send_petdata(sd,pd,1,pd->pet.intimate);//	clif->pet_food(sd,pd->petDB->FoodID,1);	return 0;}

Share this post


Link to post
Share on other sites
  • 0

Can't that also be done by simply setting a number in pet.conf on zero?

 

I appreciate your reply and attempt to help, but I still want pets to be hungry, just not have the bar.

Some of my monster/pet sprites are inaccurately positioned, and the hunger bar blocks a part of their sprite...  :(

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.