diff options
author | amber <amber@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2004-12-26 22:55:14 +0000 |
---|---|---|
committer | amber <amber@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2004-12-26 22:55:14 +0000 |
commit | 53fd71218c7c5da19c1bd3e77f7aba9add170b9f (patch) | |
tree | c7d369bafb9d62d4e83a89ee069aa4005814cdfc /src/map/pet.c | |
parent | dc1c7d89daaea595ce89f5197317c61ab292c7de (diff) | |
download | hercules-53fd71218c7c5da19c1bd3e77f7aba9add170b9f.tar.gz hercules-53fd71218c7c5da19c1bd3e77f7aba9add170b9f.tar.bz2 hercules-53fd71218c7c5da19c1bd3e77f7aba9add170b9f.tar.xz hercules-53fd71218c7c5da19c1bd3e77f7aba9add170b9f.zip |
updates
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@799 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/pet.c')
-rw-r--r-- | src/map/pet.c | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/src/map/pet.c b/src/map/pet.c index be077b84e..23620f486 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -49,6 +49,8 @@ static int calc_next_walk_step(struct pet_data *pd) { nullpo_retr(0, pd); + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + if(pd->walkpath.path_pos>=pd->walkpath.path_len) return -1; if(pd->walkpath.path[pd->walkpath.path_pos]&1) @@ -60,6 +62,8 @@ static int pet_performance_val(struct map_session_data *sd) { nullpo_retr(0, sd); + Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); + if(sd->pet.intimate > 900) return (sd->petDB->s_perfor > 0)? 4:3; else if(sd->pet.intimate > 750) @@ -72,6 +76,8 @@ int pet_hungry_val(struct map_session_data *sd) { nullpo_retr(0, sd); + Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); + if(sd->pet.hungry > 90) return 4; else if(sd->pet.hungry > 75) @@ -90,6 +96,8 @@ static int pet_can_reach(struct pet_data *pd,int x,int y) nullpo_retr(0, pd); + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + if( pd->bl.x==x && pd->bl.y==y ) // 同じマス return 1; @@ -107,6 +115,8 @@ static int pet_calc_pos(struct pet_data *pd,int tx,int ty,int dir) nullpo_retr(0, pd); + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + pd->to_x = tx; pd->to_y = ty; @@ -162,6 +172,8 @@ static int pet_attack(struct pet_data *pd,unsigned int tick,int data) nullpo_retr(0, pd); + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + pd->state.state=MS_IDLE; md=(struct mob_data *)map_id2bl(pd->target_id); @@ -208,6 +220,8 @@ static int pet_walk(struct pet_data *pd,unsigned int tick,int data) nullpo_retr(0, pd); + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + pd->state.state=MS_IDLE; if(pd->walkpath.path_pos >= pd->walkpath.path_len || pd->walkpath.path_pos != data) return 0; @@ -273,6 +287,8 @@ int pet_stopattack(struct pet_data *pd) { nullpo_retr(0, pd); + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + pd->target_id=0; if(pd->state.state == MS_ATTACK) pet_changestate(pd,MS_IDLE,0); @@ -290,6 +306,8 @@ int pet_target_check(struct map_session_data *sd,struct block_list *bl,int type) pd = sd->pd; + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + if(bl && pd && bl->type == BL_MOB && sd->pet.intimate > 900 && sd->pet.hungry > 0 && pd->class != battle_get_class(bl) && pd->state.state != MS_DELAY) { mode=mob_db[pd->class].mode; @@ -331,6 +349,8 @@ int pet_changestate(struct pet_data *pd,int state,int type) nullpo_retr(0, pd); + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + if(pd->timer != -1) delete_timer(pd->timer,pet_timer); pd->timer=-1; @@ -368,6 +388,8 @@ static int pet_timer(int tid,unsigned int tick,int id,int data) if(pd == NULL || pd->bl.type != BL_PET) return 1; + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + if(pd->timer != tid){ if(battle_config.error_log) printf("pet_timer %d != %d\n",pd->timer,tid); @@ -403,6 +425,8 @@ static int pet_walktoxy_sub(struct pet_data *pd) nullpo_retr(0, pd); + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + if(path_search(&wpd,pd->bl.m,pd->bl.x,pd->bl.y,pd->to_x,pd->to_y,0)) return 1; memcpy(&pd->walkpath,&wpd,sizeof(wpd)); @@ -422,6 +446,8 @@ int pet_walktoxy(struct pet_data *pd,int x,int y) nullpo_retr(0, pd); + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + if(pd->state.state == MS_WALK && path_search(&wpd,pd->bl.m,pd->bl.x,pd->bl.y,x,y,0)) return 1; @@ -441,6 +467,8 @@ int pet_stop_walking(struct pet_data *pd,int type) { nullpo_retr(0, pd); + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + if(pd->state.state == MS_WALK || pd->state.state == MS_IDLE) { pd->walkpath.path_len=0; pd->to_x=pd->bl.x; @@ -461,10 +489,13 @@ static int pet_hungry(int tid,unsigned int tick,int id,int data) struct map_session_data *sd; int interval,t; + sd=map_id2sd(id); if(sd==NULL) return 1; + Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); + if(sd->pet_hungry_timer != tid){ if(battle_config.error_log) printf("pet_hungry_timer %d != %d\n",sd->pet_hungry_timer,tid); @@ -556,6 +587,8 @@ int pet_remove_map(struct map_session_data *sd) { nullpo_retr(0, sd); + Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); + if(sd->status.pet_id && sd->pd) { struct pet_data *pd=sd->pd; // [Valaris] @@ -598,6 +631,8 @@ int pet_performance(struct map_session_data *sd) nullpo_retr(0, sd); nullpo_retr(0, pd=sd->pd); + Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); + pet_stop_walking(pd,2000<<8); clif_pet_performance(&pd->bl,rand()%pet_performance_val(sd) + 1); // ルートしたItemを落とさせる @@ -613,6 +648,8 @@ int pet_return_egg(struct map_session_data *sd) nullpo_retr(0, sd); + Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); + if(sd->status.pet_id && sd->pd) { struct pet_data *pd=sd->pd; pet_remove_map(sd); @@ -659,6 +696,8 @@ int pet_data_init(struct map_session_data *sd) nullpo_retr(1, sd); + Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); + if(sd->status.account_id != sd->pet.account_id || sd->status.char_id != sd->pet.char_id || sd->status.pet_id != sd->pet.pet_id) { sd->status.pet_id = 0; @@ -719,6 +758,8 @@ int pet_birth_process(struct map_session_data *sd) { nullpo_retr(1, sd); + Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); + if(sd->status.pet_id && sd->pet.incuvate == 1) { sd->status.pet_id = 0; return 1; @@ -747,6 +788,8 @@ int pet_birth_process(struct map_session_data *sd) clif_pet_equip(sd->pd,sd->pet.equip); clif_send_petstatus(sd); + Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); + return 0; } @@ -869,7 +912,7 @@ int pet_get_egg(int account_id,int pet_id,int flag) tmp_item.nameid = pet_db[i].EggID; tmp_item.identify = 1; tmp_item.card[0] = 0xff00; - *((long *)(&tmp_item.card[1])) = pet_id; + tmp_item.card[1] = pet_id; tmp_item.card[3] = sd->pet.rename_flag; if((ret = pc_additem(sd,&tmp_item,1))) { clif_additem(sd,0,0,ret); @@ -991,6 +1034,8 @@ int pet_food(struct map_session_data *sd) nullpo_retr(1, sd); + Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); + if(sd->petDB == NULL) return 1; i=pc_search_inventory(sd,sd->petDB->FoodID); @@ -1048,6 +1093,8 @@ static int pet_randomwalk(struct pet_data *pd,int tick) nullpo_retr(0, pd); + Assert((pd->msd == 0) || (pd->msd->pd == pd)); + speed = battle_get_speed(&pd->bl); if(DIFF_TICK(pd->next_walktime,tick) < 0){ @@ -1105,6 +1152,8 @@ static int pet_ai_sub_hard(struct pet_data *pd,unsigned int tick) sd = pd->msd; + Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); + if(pd->bl.prev == NULL || sd == NULL || sd->bl.prev == NULL) return 0; |