summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/char/int_pet.c139
-rw-r--r--src/char/mapif.c151
2 files changed, 140 insertions, 150 deletions
diff --git a/src/char/int_pet.c b/src/char/int_pet.c
index 6ba4c7bba..0a3a51b3a 100644
--- a/src/char/int_pet.c
+++ b/src/char/int_pet.c
@@ -156,72 +156,6 @@ int inter_pet_delete(int pet_id) {
return 0;
}
//------------------------------------------------------
-int mapif_pet_created(int fd, int account_id, struct s_pet *p)
-{
- WFIFOHEAD(fd, 12);
- WFIFOW(fd, 0) = 0x3880;
- WFIFOL(fd, 2) = account_id;
- if(p!=NULL){
- WFIFOW(fd, 6) = p->class_;
- WFIFOL(fd, 8) = p->pet_id;
- ShowInfo("int_pet: created pet %d - %s\n", p->pet_id, p->name);
- }else{
- WFIFOB(fd, 6) = 0;
- WFIFOL(fd, 8) = 0;
- }
- WFIFOSET(fd, 12);
-
- return 0;
-}
-
-int mapif_pet_info(int fd, int account_id, struct s_pet *p)
-{
- nullpo_ret(p);
- WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
- WFIFOW(fd, 0) =0x3881;
- WFIFOW(fd, 2) =sizeof(struct s_pet) + 9;
- WFIFOL(fd, 4) =account_id;
- WFIFOB(fd, 8)=0;
- memcpy(WFIFOP(fd, 9), p, sizeof(struct s_pet));
- WFIFOSET(fd, WFIFOW(fd, 2));
-
- return 0;
-}
-
-int mapif_pet_noinfo(int fd, int account_id)
-{
- WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
- WFIFOW(fd, 0) =0x3881;
- WFIFOW(fd, 2) =sizeof(struct s_pet) + 9;
- WFIFOL(fd, 4) =account_id;
- WFIFOB(fd, 8)=1;
- memset(WFIFOP(fd, 9), 0, sizeof(struct s_pet));
- WFIFOSET(fd, WFIFOW(fd, 2));
-
- return 0;
-}
-
-int mapif_save_pet_ack(int fd, int account_id, int flag)
-{
- WFIFOHEAD(fd, 7);
- WFIFOW(fd, 0) =0x3882;
- WFIFOL(fd, 2) =account_id;
- WFIFOB(fd, 6) =flag;
- WFIFOSET(fd, 7);
-
- return 0;
-}
-
-int mapif_delete_pet_ack(int fd, int flag)
-{
- WFIFOHEAD(fd, 3);
- WFIFOW(fd, 0) =0x3883;
- WFIFOB(fd, 2) =flag;
- WFIFOSET(fd, 3);
-
- return 0;
-}
-
struct s_pet *inter_pet_create(int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id,
short pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name)
{
@@ -279,79 +213,6 @@ struct s_pet *inter_pet_load(int account_id, int char_id, int pet_id)
return NULL;
}
-int mapif_save_pet(int fd, int account_id, const struct s_pet *data)
-{
- //here process pet save request.
- int len;
- nullpo_ret(data);
- RFIFOHEAD(fd);
- len=RFIFOW(fd, 2);
- if (sizeof(struct s_pet) != len-8) {
- ShowError("inter pet: data size mismatch: %d != %"PRIuS"\n", len-8, sizeof(struct s_pet));
- return 0;
- }
-
- inter_pet->tosql(data);
- mapif->save_pet_ack(fd, account_id, 0);
-
- return 0;
-}
-
-int mapif_delete_pet(int fd, int pet_id)
-{
- mapif->delete_pet_ack(fd, inter_pet->delete_(pet_id));
-
- return 0;
-}
-
-int mapif_parse_CreatePet(int fd)
-{
- int account_id;
- struct s_pet *pet;
-
- RFIFOHEAD(fd);
- account_id = RFIFOL(fd, 2);
- pet = inter_pet->create(account_id, RFIFOL(fd, 6), RFIFOW(fd, 10), RFIFOW(fd, 12), RFIFOW(fd, 14),
- RFIFOW(fd, 16), RFIFOW(fd, 18), RFIFOW(fd, 20), RFIFOB(fd, 22), RFIFOB(fd, 23), RFIFOP(fd, 24));
-
- if (pet != NULL)
- mapif->pet_created(fd, account_id, pet);
- else
- mapif->pet_created(fd, account_id, NULL);
-
- return 0;
-}
-
-int mapif_parse_LoadPet(int fd)
-{
- int account_id;
- struct s_pet *pet;
-
- RFIFOHEAD(fd);
- account_id = RFIFOL(fd, 2);
- pet = inter_pet->load(account_id, RFIFOL(fd, 6), RFIFOL(fd, 10));
-
- if (pet != NULL)
- mapif->pet_info(fd, account_id, pet);
- else
- mapif->pet_noinfo(fd, account_id);
- return 0;
-}
-
-int mapif_parse_SavePet(int fd)
-{
- RFIFOHEAD(fd);
- mapif->save_pet(fd, RFIFOL(fd, 4), RFIFOP(fd, 8));
- return 0;
-}
-
-int mapif_parse_DeletePet(int fd)
-{
- RFIFOHEAD(fd);
- mapif->delete_pet(fd, RFIFOL(fd, 2));
- return 0;
-}
-
int inter_pet_parse_frommap(int fd)
{
RFIFOHEAD(fd);
diff --git a/src/char/mapif.c b/src/char/mapif.c
index e2956af01..cba79de22 100644
--- a/src/char/mapif.c
+++ b/src/char/mapif.c
@@ -31,6 +31,7 @@
#include "char/int_mail.h"
#include "char/int_mercenary.h"
#include "char/int_party.h"
+#include "char/int_pet.h"
#include "char/int_rodex.h"
#include "char/inter.h"
#include "common/cbasetypes.h"
@@ -1416,17 +1417,145 @@ int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char
return 1;
}
-int mapif_pet_created(int fd, int account_id, struct s_pet *p);
-int mapif_pet_info(int fd, int account_id, struct s_pet *p);
-int mapif_pet_noinfo(int fd, int account_id);
-int mapif_save_pet_ack(int fd, int account_id, int flag);
-int mapif_delete_pet_ack(int fd, int flag);
-int mapif_save_pet(int fd, int account_id, const struct s_pet *data);
-int mapif_delete_pet(int fd, int pet_id);
-int mapif_parse_CreatePet(int fd);
-int mapif_parse_LoadPet(int fd);
-int mapif_parse_SavePet(int fd);
-int mapif_parse_DeletePet(int fd);
+int mapif_pet_created(int fd, int account_id, struct s_pet *p)
+{
+ WFIFOHEAD(fd, 12);
+ WFIFOW(fd, 0) = 0x3880;
+ WFIFOL(fd, 2) = account_id;
+ if (p != NULL){
+ WFIFOW(fd, 6) = p->class_;
+ WFIFOL(fd, 8) = p->pet_id;
+ ShowInfo("int_pet: created pet %d - %s\n", p->pet_id, p->name);
+ } else {
+ WFIFOB(fd, 6) = 0;
+ WFIFOL(fd, 8) = 0;
+ }
+ WFIFOSET(fd, 12);
+
+ return 0;
+}
+
+int mapif_pet_info(int fd, int account_id, struct s_pet *p)
+{
+ nullpo_ret(p);
+ WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
+ WFIFOW(fd, 0) = 0x3881;
+ WFIFOW(fd, 2) = sizeof(struct s_pet) + 9;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOB(fd, 8) = 0;
+ memcpy(WFIFOP(fd, 9), p, sizeof(struct s_pet));
+ WFIFOSET(fd, WFIFOW(fd, 2));
+
+ return 0;
+}
+
+int mapif_pet_noinfo(int fd, int account_id)
+{
+ WFIFOHEAD(fd, sizeof(struct s_pet) + 9);
+ WFIFOW(fd, 0) = 0x3881;
+ WFIFOW(fd, 2) = sizeof(struct s_pet) + 9;
+ WFIFOL(fd, 4) = account_id;
+ WFIFOB(fd, 8) = 1;
+ memset(WFIFOP(fd, 9), 0, sizeof(struct s_pet));
+ WFIFOSET(fd, WFIFOW(fd, 2));
+
+ return 0;
+}
+
+int mapif_save_pet_ack(int fd, int account_id, int flag)
+{
+ WFIFOHEAD(fd, 7);
+ WFIFOW(fd, 0) = 0x3882;
+ WFIFOL(fd, 2) = account_id;
+ WFIFOB(fd, 6) = flag;
+ WFIFOSET(fd, 7);
+
+ return 0;
+}
+
+int mapif_delete_pet_ack(int fd, int flag)
+{
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x3883;
+ WFIFOB(fd, 2) = flag;
+ WFIFOSET(fd, 3);
+
+ return 0;
+}
+
+int mapif_save_pet(int fd, int account_id, const struct s_pet *data)
+{
+ //here process pet save request.
+ int len;
+ nullpo_ret(data);
+ RFIFOHEAD(fd);
+ len = RFIFOW(fd, 2);
+ if (sizeof(struct s_pet) != len-8) {
+ ShowError("inter pet: data size mismatch: %d != %"PRIuS"\n", len-8, sizeof(struct s_pet));
+ return 0;
+ }
+
+ inter_pet->tosql(data);
+ mapif->save_pet_ack(fd, account_id, 0);
+
+ return 0;
+}
+
+int mapif_delete_pet(int fd, int pet_id)
+{
+ mapif->delete_pet_ack(fd, inter_pet->delete_(pet_id));
+
+ return 0;
+}
+
+int mapif_parse_CreatePet(int fd)
+{
+ int account_id;
+ struct s_pet *pet;
+
+ RFIFOHEAD(fd);
+ account_id = RFIFOL(fd, 2);
+ pet = inter_pet->create(account_id, RFIFOL(fd, 6), RFIFOW(fd, 10), RFIFOW(fd, 12), RFIFOW(fd, 14),
+ RFIFOW(fd, 16), RFIFOW(fd, 18), RFIFOW(fd, 20), RFIFOB(fd, 22), RFIFOB(fd, 23), RFIFOP(fd, 24));
+
+ if (pet != NULL)
+ mapif->pet_created(fd, account_id, pet);
+ else
+ mapif->pet_created(fd, account_id, NULL);
+
+ return 0;
+}
+
+int mapif_parse_LoadPet(int fd)
+{
+ int account_id;
+ struct s_pet *pet;
+
+ RFIFOHEAD(fd);
+ account_id = RFIFOL(fd, 2);
+ pet = inter_pet->load(account_id, RFIFOL(fd, 6), RFIFOL(fd, 10));
+
+ if (pet != NULL)
+ mapif->pet_info(fd, account_id, pet);
+ else
+ mapif->pet_noinfo(fd, account_id);
+ return 0;
+}
+
+int mapif_parse_SavePet(int fd)
+{
+ RFIFOHEAD(fd);
+ mapif->save_pet(fd, RFIFOL(fd, 4), RFIFOP(fd, 8));
+ return 0;
+}
+
+int mapif_parse_DeletePet(int fd)
+{
+ RFIFOHEAD(fd);
+ mapif->delete_pet(fd, RFIFOL(fd, 2));
+ return 0;
+}
+
struct quest *mapif_quests_fromsql(int char_id, int *count);
bool mapif_quest_delete(int char_id, int quest_id);
bool mapif_quest_add(int char_id, struct quest qd);