summaryrefslogtreecommitdiff
path: root/src/map/script.c
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-08-15 21:12:45 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-08-15 21:12:45 +0000
commit9a309db58c70c994d7f937a243b52fe27a6c1f1d (patch)
treee3e40a7c60acb6a17687505da4197a77f355e1bf /src/map/script.c
parent4aacac823607e804583d401bc2e27e7ca94865b6 (diff)
downloadhercules-9a309db58c70c994d7f937a243b52fe27a6c1f1d.tar.gz
hercules-9a309db58c70c994d7f937a243b52fe27a6c1f1d.tar.bz2
hercules-9a309db58c70c994d7f937a243b52fe27a6c1f1d.tar.xz
hercules-9a309db58c70c994d7f937a243b52fe27a6c1f1d.zip
- Cleaned up some of the pet related @/# commands, same for some script commands.
- Moved s_pet structure from map_session_data to pet_data, this enabled the removal of a few redundant values in the pet_data structure (name, class, equip) - Pet offensive skills who's inf value is self will be casted on the pet now (for stuff like Grand Cross) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8301 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/script.c')
-rw-r--r--src/map/script.c73
1 files changed, 37 insertions, 36 deletions
diff --git a/src/map/script.c b/src/map/script.c
index 542c82546..f680ce297 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -9435,7 +9435,7 @@ int buildin_petskillbonus(struct script_state *st)
pd->state.skillbonus=0; // waiting state
// wait for timer to start
- if (battle_config.pet_equip_required && pd->equip == 0)
+ if (battle_config.pet_equip_required && pd->pet.equip == 0)
pd->bonus->timer=-1;
else
pd->bonus->timer=add_timer(gettick()+pd->bonus->delay*1000, pet_skill_bonus_timer, sd->bl.id, 0);
@@ -9760,7 +9760,7 @@ int buildin_petheal(struct script_state *st)
pd->s_skill->sp=conv_num(st,& (st->stack->stack_data[st->start+5]));
//Use delay as initial offset to avoid skill/heal exploits
- if (battle_config.pet_equip_required && pd->equip == 0)
+ if (battle_config.pet_equip_required && pd->pet.equip == 0)
pd->s_skill->timer=-1;
else
pd->s_skill->timer=add_timer(gettick()+pd->s_skill->delay*1000,pet_heal_timer,sd->bl.id,0);
@@ -9850,7 +9850,7 @@ int buildin_petskillsupport(struct script_state *st)
pd->s_skill->sp=conv_num(st,& (st->stack->stack_data[st->start+6]));
//Use delay as initial offset to avoid skill/heal exploits
- if (battle_config.pet_equip_required && pd->equip == 0)
+ if (battle_config.pet_equip_required && pd->pet.equip == 0)
pd->s_skill->timer=-1;
else
pd->s_skill->timer=add_timer(gettick()+pd->s_skill->delay*1000,pet_skill_support_timer,sd->bl.id,0);
@@ -10055,29 +10055,29 @@ int buildin_recovery(struct script_state *st)
int buildin_getpetinfo(struct script_state *st)
{
struct map_session_data *sd=script_rid2sd(st);
+ struct pet_data *pd;
int type=conv_num(st,& (st->stack->stack_data[st->start+2]));
- if(sd && sd->status.pet_id){
+ if(sd && sd->status.pet_id && sd->pd){
+ pd = sd->pd;
switch(type){
case 0:
push_val(st->stack,C_INT,sd->status.pet_id);
break;
case 1:
- push_val(st->stack,C_INT,sd->pet.class_);
+ push_val(st->stack,C_INT,pd->pet.class_);
break;
case 2:
- if(sd->pet.name)
- push_str(st->stack,C_CONSTSTR,(unsigned char *) sd->pet.name);
+ if(pd->pet.name)
+ push_str(st->stack,C_CONSTSTR,(unsigned char *) pd->pet.name);
else
push_str(st->stack,C_CONSTSTR, (unsigned char *) "null");
break;
case 3:
- //if(sd->pet.intimate)
- push_val(st->stack,C_INT,sd->pet.intimate);
+ push_val(st->stack,C_INT,pd->pet.intimate);
break;
case 4:
- //if(sd->pet.hungry)
- push_val(st->stack,C_INT,sd->pet.hungry);
+ push_val(st->stack,C_INT,pd->pet.hungry);
break;
default:
push_val(st->stack,C_INT,0);
@@ -11288,37 +11288,38 @@ int buildin_getd (struct script_state *st)
// Pet stat [Lance]
int buildin_petstat(struct script_state *st){
struct map_session_data *sd = NULL;
+ struct pet_data *pd;
char *tmp;
int flag = conv_num(st, & (st->stack->stack_data[st->start+2]));
sd = script_rid2sd(st);
- if(!sd || !sd->pet.pet_id){
+ if(!sd || !sd->status.pet_id || !sd->pd){
if(flag == 2)
push_str(st->stack, C_CONSTSTR, "");
else
push_val(st->stack, C_INT, 0);
+ return 0;
}
- else {
- switch(flag){
- case 1:
- push_val(st->stack, C_INT, (int)sd->pet.class_);
- break;
- case 2:
- tmp = aStrdup(sd->pet.name);
- push_str(st->stack, C_STR, tmp);
- break;
- case 3:
- push_val(st->stack, C_INT, (int)sd->pet.level);
- break;
- case 4:
- push_val(st->stack, C_INT, (int)sd->pet.hungry);
- break;
- case 5:
- push_val(st->stack, C_INT, (int)sd->pet.intimate);
- break;
- default:
- push_val(st->stack, C_INT, 0);
- break;
- }
+ pd = sd->pd;
+ switch(flag){
+ case 1:
+ push_val(st->stack, C_INT, (int)pd->pet.class_);
+ break;
+ case 2:
+ tmp = aStrdup(pd->pet.name);
+ push_str(st->stack, C_STR, tmp);
+ break;
+ case 3:
+ push_val(st->stack, C_INT, (int)pd->pet.level);
+ break;
+ case 4:
+ push_val(st->stack, C_INT, (int)pd->pet.hungry);
+ break;
+ case 5:
+ push_val(st->stack, C_INT, (int)pd->pet.intimate);
+ break;
+ default:
+ push_val(st->stack, C_INT, 0);
+ break;
}
return 0;
}
@@ -11681,7 +11682,7 @@ int buildin_rid2name(struct script_state *st){
push_str(st->stack,C_CONSTSTR,((struct npc_data *)bl)->exname);
break;
case BL_PET:
- push_str(st->stack,C_CONSTSTR,((struct pet_data *)bl)->name);
+ push_str(st->stack,C_CONSTSTR,((struct pet_data *)bl)->pet.name);
break;
case BL_HOM:
push_str(st->stack,C_CONSTSTR,((struct homun_data *)bl)->master->homunculus.name);
@@ -12112,7 +12113,7 @@ int buildin_unittalk(struct script_state *st)
memcpy(message, ((TBL_HOM *)bl)->master->homunculus.name, NAME_LENGTH);
break;
case BL_PET:
- memcpy(message, ((TBL_PET *)bl)->name, NAME_LENGTH);
+ memcpy(message, ((TBL_PET *)bl)->pet.name, NAME_LENGTH);
break;
default:
strcpy(message, "Unknown");