summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/atcommand.c40
-rw-r--r--src/map/pet.c80
-rw-r--r--src/map/pet.h2
-rw-r--r--src/map/skill.c9
4 files changed, 41 insertions, 90 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 045448888..8a23c9d05 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -201,7 +201,6 @@ ACMD_FUNC(uptime); // by MC Cameri
ACMD_FUNC(changesex); // by MC Cameri
ACMD_FUNC(mute); // celest
ACMD_FUNC(refresh); // by MC Cameri
-ACMD_FUNC(petid); // by MC Cameri
ACMD_FUNC(identify); // by MC Cameri
ACMD_FUNC(gmotd); // Added by MC Cameri, created by davidsiaw
ACMD_FUNC(misceffect); // by MC Cameri
@@ -486,7 +485,6 @@ static AtCommandInfo atcommand_info[] = {
{ AtCommand_Mute, "@mute", 80, atcommand_mute }, // [celest]
{ AtCommand_WhoZeny, "@whozeny", 20, atcommand_whozeny }, // [Valaris]
{ AtCommand_Refresh, "@refresh", 1, atcommand_refresh }, // by MC Cameri
- { AtCommand_PetId, "@petid", 40, atcommand_petid }, // by MC Cameri
{ AtCommand_Identify, "@identify", 40, atcommand_identify }, // by MC Cameri
{ AtCommand_Gmotd, "@gmotd", 20, atcommand_gmotd }, // Added by MC Cameri, created by davidsiaw
{ AtCommand_MiscEffect, "@misceffect", 50, atcommand_misceffect }, // by MC Cameri
@@ -7592,44 +7590,6 @@ int atcommand_refresh(const int fd, struct map_session_data* sd, const char* com
}
/*==========================================
- * @petid <part of pet name>
- * => Displays a list of matching pets.
- *------------------------------------------*/
-int atcommand_petid(const int fd, struct map_session_data* sd, const char* command, const char* message)
-{
- char searchtext[100];
- char temp0[100];
- int cnt = 0, i = 0;
-
- nullpo_retr(-1, sd);
-
- if (!message || !*message || sscanf(message, "%99s", searchtext) < 1)
- {
- clif_displaymessage(fd, "Please, enter a pet name (usage: @petid <part of pet name>).");
- return -1;
- }
-
- snprintf(temp0, sizeof(temp0), "First %i search results for: %s", MAX_SEARCH, searchtext);
- clif_displaymessage(fd,temp0);
-
- for (i = 0; i < MAX_PET_DB; i++)
- {
- if (stristr(pet_db[i].name, searchtext) || stristr(pet_db[i].jname, searchtext))
- {
- cnt++;
- if (cnt <= MAX_SEARCH) { // limits the number of search results
- snprintf(temp0, sizeof(temp0), "ID: %i -- Name: %s", pet_db[i].class_, pet_db[i].jname);
- clif_displaymessage(fd, temp0);
- }
- }
- }
-
- snprintf(temp0, sizeof(temp0), "%i pets have '%s' in their name.", cnt, searchtext);
- clif_displaymessage(fd, temp0);
- return 0;
-}
-
-/*==========================================
* @identify
* => GM's magnifier.
*------------------------------------------*/
diff --git a/src/map/pet.c b/src/map/pet.c
index 302669632..606e29d31 100644
--- a/src/map/pet.c
+++ b/src/map/pet.c
@@ -6,6 +6,7 @@
#include "../common/nullpo.h"
#include "../common/malloc.h"
#include "../common/showmsg.h"
+#include "../common/strlib.h"
#include "../common/utils.h"
#include "../common/ers.h"
@@ -23,7 +24,7 @@
#include "script.h"
#include "skill.h"
#include "unit.h"
-#include "atcommand.h"
+#include "atcommand.h" // msg_txt()
#include <stdio.h>
#include <stdlib.h>
@@ -279,30 +280,16 @@ int search_petDB_index(int key,int type)
{
int i;
- for(i=0;i<MAX_PET_DB;i++) {
+ for( i = 0; i < MAX_PET_DB; i++ )
+ {
if(pet_db[i].class_ <= 0)
continue;
switch(type) {
- case PET_CLASS:
- if(pet_db[i].class_ == key)
- return i;
- break;
- case PET_CATCH:
- if(pet_db[i].itemID == key)
- return i;
- break;
- case PET_EGG:
- if(pet_db[i].EggID == key)
- return i;
- break;
- case PET_EQUIP:
- if(pet_db[i].AcceID == key)
- return i;
- break;
- case PET_FOOD:
- if(pet_db[i].FoodID == key)
- return i;
- break;
+ case PET_CLASS: if(pet_db[i].class_ == key) return i; break;
+ case PET_CATCH: if(pet_db[i].itemID == key) return i; break;
+ case PET_EGG: if(pet_db[i].EggID == key) return i; break;
+ case PET_EQUIP: if(pet_db[i].AcceID == key) return i; break;
+ case PET_FOOD: if(pet_db[i].FoodID == key) return i; break;
default:
return -1;
}
@@ -1252,40 +1239,46 @@ int pet_skill_support_timer(int tid,unsigned int tick,int id,int data)
*------------------------------------------*/
int read_petdb()
{
+ char* filename[] = {"pet_db.txt","pet_db2.txt"};
FILE *fp;
- char line[1024];
- int nameid,i,k;
- int j=0;
- int lines;
- char *filename[]={"pet_db.txt","pet_db2.txt"};
- char *str[32],*p,*np;
-
+ int nameid,i,j,k;
-//Remove any previous scripts in case reloaddb was invoked.
- for(j =0; j < MAX_PET_DB; j++)
+ // Remove any previous scripts in case reloaddb was invoked.
+ for( j = 0; j < MAX_PET_DB; j++ )
if (pet_db[j].script) {
aFree(pet_db[j].script);
pet_db[j].script = NULL;
}
- j = 0;
+
+ // clear database
memset(pet_db,0,sizeof(pet_db));
- for(i=0;i<2;i++){
+
+ j = 0; // entry counter
+ for( i = 0; i < ARRAYLENGTH(filename); i++ )
+ {
+ char line[1024];
+ int lines;
+
sprintf(line, "%s/%s", db_path, filename[i]);
fp=fopen(line,"r");
- if(fp==NULL){
- if(i>0)
- continue;
- ShowError("can't read %s\n",line);
- return -1;
+ if( fp == NULL )
+ {
+ if( i == 0 )
+ ShowError("can't read %s\n",line);
+ continue;
}
+
lines = 0;
- while(fgets(line, sizeof(line), fp) && j < MAX_PET_DB)
+ while( fgets(line, sizeof(line), fp) && j < MAX_PET_DB )
{
+ char *str[32],*p,*np;
+
lines++;
if(line[0] == '/' && line[1] == '/')
continue;
+ // split string into table columns
for(k=0,p=line;k<20;k++){
if((np=strchr(p,','))!=NULL){
str[k]=p;
@@ -1307,8 +1300,8 @@ int read_petdb()
}
pet_db[j].class_ = nameid;
- strncpy(pet_db[j].name,str[1],NAME_LENGTH);
- strncpy(pet_db[j].jname,str[2],NAME_LENGTH);
+ safestrncpy(pet_db[j].name,str[1],NAME_LENGTH);
+ safestrncpy(pet_db[j].jname,str[2],NAME_LENGTH);
pet_db[j].itemID=atoi(str[3]);
pet_db[j].EggID=atoi(str[4]);
pet_db[j].AcceID=atoi(str[5]);
@@ -1334,7 +1327,8 @@ int read_petdb()
pet_db[j].script = parse_script(np, filename[i], lines, 0);
j++;
}
- if (j >= MAX_PET_DB)
+
+ if( j >= MAX_PET_DB )
ShowWarning("read_petdb: Reached max number of pets [%d]. Remaining pets were not read.\n ", MAX_PET_DB);
fclose(fp);
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' pets in '"CL_WHITE"%s"CL_RESET"'.\n",j,filename[i]);
@@ -1367,7 +1361,7 @@ int do_init_pet(void)
int do_final_pet(void) {
int i;
- for(i = 0;i < MAX_PET_DB; i++) {
+ for( i = 0; i < MAX_PET_DB; i++ ) {
if(pet_db[i].script) {
script_free_code(pet_db[i].script);
pet_db[i].script = NULL;
diff --git a/src/map/pet.h b/src/map/pet.h
index 8ecf94d93..c1c27b105 100644
--- a/src/map/pet.h
+++ b/src/map/pet.h
@@ -5,7 +5,7 @@
#define _PET_H_
#define MAX_PET_DB 300
-#define MAX_PETLOOT_SIZE 30 // [Valaris] - Changed to MAX_PETLOOT_SIZE [Skotlex]
+#define MAX_PETLOOT_SIZE 30
struct s_pet_db {
short class_;
diff --git a/src/map/skill.c b/src/map/skill.c
index d9518d9bf..98db18af9 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -3772,12 +3772,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case SA_TAMINGMONSTER:
clif_skill_nodamage(src,bl,skillid,skilllv,1);
if (sd && dstmd) {
- for (i = 0; i < MAX_PET_DB; i++) {
- if (dstmd->class_ == pet_db[i].class_) {
- pet_catch_process1 (sd, dstmd->class_);
- break;
- }
- }
+ ARR_FIND( 0, MAX_PET_DB, i, dstmd->class_ == pet_db[i].class_ );
+ if( i < MAX_PET_DB )
+ pet_catch_process1(sd, dstmd->class_);
}
break;