From 04787d3f8e5502c2f33212f23ab6b549e8b953a3 Mon Sep 17 00:00:00 2001 From: skotlex Date: Sat, 21 Oct 2006 03:38:14 +0000 Subject: - Some minor cleanups - Fixed the Homunc not spawning next to you after receiving it's data from the char-server. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9035 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/char_sql/char.c | 3 +-- src/map/mercenary.c | 42 +++++++++++++++++++----------------------- 2 files changed, 20 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/char_sql/char.c b/src/char_sql/char.c index 83f3c93df..dd5b31770 100644 --- a/src/char_sql/char.c +++ b/src/char_sql/char.c @@ -3942,7 +3942,6 @@ void sql_config_read(const char *cfgName){ /* Kalaspuff, to get login_db */ }else if(strcmpi(w1,"lowest_gm_level")==0){ lowest_gm_level = atoi(w2); ShowStatus("set lowest_gm_level : %s\n",w2); - //support the import command, just like any other config #endif }else if(strcmpi(w1,"scdata_db")==0){ strcpy(scdata_db,w2); @@ -3997,8 +3996,8 @@ void sql_config_read(const char *cfgName){ /* Kalaspuff, to get login_db */ strcpy(item_db2_db,w2); } else if(strcmpi(w1,"connection_ping_interval")==0) { connection_ping_interval = config_switch(w2); - #endif + //support the import command, just like any other config }else if(strcmpi(w1,"import")==0){ sql_config_read(w2); } diff --git a/src/map/mercenary.c b/src/map/mercenary.c index f027d9234..32a2e9f97 100644 --- a/src/map/mercenary.c +++ b/src/map/mercenary.c @@ -537,9 +537,19 @@ int merc_hom_alloc(struct map_session_data *sd, struct s_homunculus *hom) return 1; } sd->hd = hd = aCalloc(1,sizeof(struct homun_data)); + hd->bl.subtype = MONS; + hd->bl.type = BL_HOM; + hd->bl.id = npc_get_new_npc_id(); + + hd->master = sd; hd->homunculusDB = &homunculus_db[i]; memcpy(&hd->homunculus, hom, sizeof(struct s_homunculus)); - hd->master = sd; + hd->exp_next = hexptbl[hd->homunculus.level - 1]; + + status_set_viewdata(&hd->bl, hd->homunculus.class_); + status_change_init(&hd->bl); + unit_dataset(&hd->bl); + hd->ud.dir = sd->ud.dir; // Find a random valid pos around the player hd->bl.m = sd->bl.m; @@ -550,18 +560,6 @@ int merc_hom_alloc(struct map_session_data *sd, struct s_homunculus *hom) map_random_dir(&hd->bl, &x, &y); hd->bl.x = x; hd->bl.y = y; - - hd->bl.subtype = MONS; - hd->bl.type = BL_HOM; - hd->bl.id = npc_get_new_npc_id(); - hd->bl.prev = NULL; - hd->bl.next = NULL; - hd->exp_next = hexptbl[hd->homunculus.level - 1]; - - status_set_viewdata(&hd->bl, hd->homunculus.class_); - status_change_init(&hd->bl); - unit_dataset(&hd->bl); - hd->ud.dir = sd->ud.dir; map_addiddb(&hd->bl); status_calc_homunculus(hd,1); @@ -644,17 +642,15 @@ int merc_hom_recv_data(int account_id, struct s_homunculus *sh, int flag) merc_hom_alloc(sd, sh); hd = sd->hd; - if(hd->homunculus.hp && !hd->homunculus.vaporize) + if(hd->homunculus.hp && !hd->homunculus.vaporize && hd->bl.prev == NULL) { - if (hd->bl.prev != NULL) { - map_addblock(&hd->bl); - clif_spawn(&hd->bl); - clif_hominfo(sd,hd,1); - clif_hominfo(sd,hd,0); // send this x2. dunno why, but kRO does that [blackhole89] - clif_homskillinfoblock(sd); - clif_hominfo(sd,hd,0); - clif_send_homdata(sd,SP_ACK,0); - } + map_addblock(&hd->bl); + clif_spawn(&hd->bl); + clif_hominfo(sd,hd,1); + clif_hominfo(sd,hd,0); // send this x2. dunno why, but kRO does that [blackhole89] + clif_homskillinfoblock(sd); + clif_hominfo(sd,hd,0); + clif_send_homdata(sd,SP_ACK,0); } return 1; } -- cgit v1.2.3-70-g09d2