* Added emotion_type enumeration for clif_emotion constants.
- Made clif_parse_Emotion use clif_emotion, rather than having it's code inlined. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14518 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
5d1bbf6c2a
commit
93e376eac5
@ -1,6 +1,8 @@
|
||||
Date Added
|
||||
|
||||
2010/11/28
|
||||
* Added emotion_type enumeration for clif_emotion constants. [Ai4rei]
|
||||
- Made clif_parse_Emotion use clif_emotion, rather than having it's code inlined.
|
||||
* Added clr_type enumeration for vanish effect constants. [Ai4rei]
|
||||
* Resolved multiple issues with the party booking system (bugreport:4573, since r14412). [Ai4rei]
|
||||
- Fixed recruitments were limited to party leaders.
|
||||
|
@ -9063,10 +9063,8 @@ void clif_parse_ChangeDir(int fd, struct map_session_data *sd)
|
||||
*------------------------------------------*/
|
||||
void clif_parse_Emotion(int fd, struct map_session_data *sd)
|
||||
{
|
||||
unsigned char buf[64];
|
||||
|
||||
if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_BASIC) >= 2) {
|
||||
if (RFIFOB(fd,2) == 34) {// prevent use of the mute emote [Valaris]
|
||||
if (RFIFOB(fd,2) == E_MUTE) {// prevent use of the mute emote [Valaris]
|
||||
clif_skill_fail(sd, 1, 0, 1);
|
||||
return;
|
||||
}
|
||||
@ -9078,10 +9076,7 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd)
|
||||
}
|
||||
sd->emotionlasttime = time(NULL) + 1; // not more than 1 per second (using /commands the client can spam it)
|
||||
|
||||
WBUFW(buf,0) = 0xc0;
|
||||
WBUFL(buf,2) = sd->bl.id;
|
||||
WBUFB(buf,6) = RFIFOB(fd,2);
|
||||
clif_send(buf, packet_len(0xc0), &sd->bl, AREA);
|
||||
clif_emotion(&sd->bl, RFIFOB(fd,2));
|
||||
} else
|
||||
clif_skill_fail(sd, 1, 0, 1);
|
||||
}
|
||||
|
@ -78,6 +78,93 @@ typedef enum send_target {
|
||||
BG_AREA_WOS,
|
||||
} send_target;
|
||||
|
||||
typedef enum emotion_type
|
||||
{
|
||||
E_GASP = 0, // /!
|
||||
E_WHAT, // /?
|
||||
E_HO,
|
||||
E_LV,
|
||||
E_SWT,
|
||||
E_IC,
|
||||
E_AN,
|
||||
E_AG,
|
||||
E_CASH, // /$
|
||||
E_DOTS, // /...
|
||||
E_SCISSORS, // /gawi --- 10
|
||||
E_ROCK, // /bawi
|
||||
E_PAPER, // /bo
|
||||
E_KOREA,
|
||||
E_LV2,
|
||||
E_THX,
|
||||
E_WAH,
|
||||
E_SRY,
|
||||
E_HEH,
|
||||
E_SWT2,
|
||||
E_HMM, // --- 20
|
||||
E_NO1,
|
||||
E_NO, // /??
|
||||
E_OMG,
|
||||
E_OH,
|
||||
E_X,
|
||||
E_HLP,
|
||||
E_GO,
|
||||
E_SOB,
|
||||
E_GG,
|
||||
E_KIS, // --- 30
|
||||
E_KIS2,
|
||||
E_PIF,
|
||||
E_OK,
|
||||
E_MUTE, // red /... used for muted characters
|
||||
E_INDONESIA,
|
||||
E_BZZ, // /bzz, /stare
|
||||
E_RICE,
|
||||
E_AWSM, // /awsm, /cool
|
||||
E_MEH,
|
||||
E_SHY, // --- 40
|
||||
E_PAT, // /pat, /goodboy
|
||||
E_MP, // /mp, /sptime
|
||||
E_SLUR,
|
||||
E_COM, // /com, /comeon
|
||||
E_YAWN, // /yawn, /sleepy
|
||||
E_GRAT, // /grat, /congrats
|
||||
E_HP, // /hp, /hptime
|
||||
E_PHILIPPINES,
|
||||
E_MALAYSIA,
|
||||
E_SINGAPORE, // --- 50
|
||||
E_BRAZIL,
|
||||
E_FLASH, // /fsh
|
||||
E_SPIN, // /spin
|
||||
E_SIGH,
|
||||
E_PROUD, // /dum
|
||||
E_LOUD, // /crwd
|
||||
E_OHNOES, // /desp, /otl
|
||||
E_DICE1,
|
||||
E_DICE2,
|
||||
E_DICE3, // --- 60
|
||||
E_DICE4,
|
||||
E_DICE5,
|
||||
E_DICE6,
|
||||
E_INDIA,
|
||||
E_LOOSER,
|
||||
E_RUSSIA,
|
||||
E_VIRGIN,
|
||||
E_PHONE,
|
||||
E_MAIL,
|
||||
E_CHINESE, // --- 70
|
||||
E_SIGNAL,
|
||||
E_SIGNAL2,
|
||||
E_SIGNAL3,
|
||||
E_HUM,
|
||||
E_ABS,
|
||||
E_OOPS,
|
||||
E_SPIT,
|
||||
E_ENE,
|
||||
E_PANIC,
|
||||
E_WHISP, // --- 80
|
||||
//
|
||||
E_MAX
|
||||
} emotion_type;
|
||||
|
||||
typedef enum clr_type
|
||||
{
|
||||
CLR_OUTSIGHT = 0,
|
||||
|
@ -68,7 +68,7 @@ int merc_hom_dead(struct homun_data *hd, struct block_list *src)
|
||||
//There's no intimacy penalties on death (from Tharis)
|
||||
struct map_session_data *sd = hd->master;
|
||||
|
||||
clif_emotion(&hd->bl, 16) ; //wah
|
||||
clif_emotion(&hd->bl, E_WAH);
|
||||
|
||||
//Delete timers when dead.
|
||||
merc_hom_hungry_timer_delete(hd);
|
||||
@ -77,7 +77,7 @@ int merc_hom_dead(struct homun_data *hd, struct block_list *src)
|
||||
if (!sd) //unit remove map will invoke unit free
|
||||
return 3;
|
||||
|
||||
clif_emotion(&sd->bl, 28) ; //sob
|
||||
clif_emotion(&sd->bl, E_SOB);
|
||||
//Remove from map (if it has no intimacy, it is auto-removed from memory)
|
||||
return 3;
|
||||
}
|
||||
@ -291,7 +291,7 @@ int merc_hom_evolution(struct homun_data *hd)
|
||||
|
||||
if(!hd->homunculusDB->evo_class || hd->homunculus.class_ == hd->homunculusDB->evo_class)
|
||||
{
|
||||
clif_emotion(&hd->bl, 4) ; //swt
|
||||
clif_emotion(&hd->bl, E_SWT);
|
||||
return 0 ;
|
||||
}
|
||||
sd = hd->master;
|
||||
@ -321,7 +321,7 @@ int merc_hom_evolution(struct homun_data *hd)
|
||||
map_addblock(&hd->bl);
|
||||
|
||||
clif_spawn(&hd->bl);
|
||||
clif_emotion(&sd->bl, 21); //no1
|
||||
clif_emotion(&sd->bl, E_NO1);
|
||||
clif_misceffect2(&hd->bl,568);
|
||||
|
||||
//status_Calc flag&1 will make current HP/SP be reloaded from hom structure
|
||||
@ -448,19 +448,19 @@ int merc_hom_food(struct map_session_data *sd, struct homun_data *hd)
|
||||
|
||||
if ( hd->homunculus.hunger >= 91 ) {
|
||||
merc_hom_decrease_intimacy(hd, 50);
|
||||
emotion = 16;
|
||||
emotion = E_WAH;
|
||||
} else if ( hd->homunculus.hunger >= 76 ) {
|
||||
merc_hom_decrease_intimacy(hd, 5);
|
||||
emotion = 19;
|
||||
emotion = E_SWT2;
|
||||
} else if ( hd->homunculus.hunger >= 26 ) {
|
||||
merc_hom_increase_intimacy(hd, 75);
|
||||
emotion = 2;
|
||||
emotion = E_HO;
|
||||
} else if ( hd->homunculus.hunger >= 11 ) {
|
||||
merc_hom_increase_intimacy(hd, 100);
|
||||
emotion = 2;
|
||||
emotion = E_HO;
|
||||
} else {
|
||||
merc_hom_increase_intimacy(hd, 50);
|
||||
emotion = 2;
|
||||
emotion = E_HO;
|
||||
}
|
||||
|
||||
hd->homunculus.hunger += 10; //dunno increase value for each food
|
||||
@ -474,7 +474,7 @@ int merc_hom_food(struct map_session_data *sd, struct homun_data *hd)
|
||||
|
||||
// Too much food :/
|
||||
if(hd->homunculus.intimacy == 0)
|
||||
return merc_hom_delete(sd->hd, 23); //omg
|
||||
return merc_hom_delete(sd->hd, E_OMG);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -500,18 +500,18 @@ static int merc_hom_hungry(int tid, unsigned int tick, int id, intptr data)
|
||||
|
||||
hd->homunculus.hunger-- ;
|
||||
if(hd->homunculus.hunger <= 10) {
|
||||
clif_emotion(&hd->bl, 6) ; //an
|
||||
clif_emotion(&hd->bl, E_AN);
|
||||
} else if(hd->homunculus.hunger == 25) {
|
||||
clif_emotion(&hd->bl, 20) ; //hmm
|
||||
clif_emotion(&hd->bl, E_HMM);
|
||||
} else if(hd->homunculus.hunger == 75) {
|
||||
clif_emotion(&hd->bl, 33) ; //ok
|
||||
clif_emotion(&hd->bl, E_OK);
|
||||
}
|
||||
|
||||
if(hd->homunculus.hunger < 0) {
|
||||
hd->homunculus.hunger = 0;
|
||||
// Delete the homunculus if intimacy <= 100
|
||||
if ( !merc_hom_decrease_intimacy(hd, 100) )
|
||||
return merc_hom_delete(hd, 23); //omg
|
||||
return merc_hom_delete(hd, E_OMG);
|
||||
clif_send_homdata(sd,SP_INTIMATE,hd->homunculus.intimacy / 100);
|
||||
}
|
||||
|
||||
|
@ -509,7 +509,7 @@ int pet_catch_process2(struct map_session_data* sd, int target_id)
|
||||
if (sd->catch_target_class == 0 && !(md->status.mode&MD_BOSS))
|
||||
sd->catch_target_class = md->class_;
|
||||
if(i < 0 || sd->catch_target_class != md->class_) {
|
||||
clif_emotion(&md->bl, 7); //mob will do /ag if wrong lure is used on them.
|
||||
clif_emotion(&md->bl, E_AG); //mob will do /ag if wrong lure is used on them.
|
||||
clif_pet_roulette(sd,0);
|
||||
sd->catch_target_class = -1;
|
||||
return 1;
|
||||
@ -1100,7 +1100,7 @@ int pet_recovery_timer(int tid, unsigned int tick, int id, intptr data)
|
||||
//Detoxify is chosen for now.
|
||||
clif_skill_nodamage(&pd->bl,&sd->bl,TF_DETOXIFY,1,1);
|
||||
status_change_end(&sd->bl,pd->recovery->type,-1);
|
||||
clif_emotion(&pd->bl, 33);
|
||||
clif_emotion(&pd->bl, E_OK);
|
||||
}
|
||||
|
||||
pd->recovery->timer = INVALID_TIMER;
|
||||
|
@ -8693,7 +8693,7 @@ BUILDIN_FUNC(homunculus_evolution)
|
||||
if (sd->hd->homunculus.intimacy > 91000)
|
||||
merc_hom_evolution(sd->hd);
|
||||
else
|
||||
clif_emotion(&sd->hd->bl, 4) ; //swt
|
||||
clif_emotion(&sd->hd->bl, E_SWT);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -734,7 +734,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
|
||||
case AM_ACIDTERROR:
|
||||
sc_start(bl,SC_BLEEDING,(skilllv*3),skilllv,skill_get_time2(skillid,skilllv));
|
||||
if (skill_break_equip(bl, EQP_ARMOR, 100*skill_get_time(skillid,skilllv), BCT_ENEMY))
|
||||
clif_emotion(bl,23);
|
||||
clif_emotion(bl,E_OMG);
|
||||
break;
|
||||
|
||||
case AM_DEMONSTRATION:
|
||||
@ -3002,7 +3002,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
|
||||
break;
|
||||
|
||||
case NPC_DARKBREATH:
|
||||
clif_emotion(src,7);
|
||||
clif_emotion(src,E_AG);
|
||||
case SN_FALCONASSAULT:
|
||||
case PA_PRESSURE:
|
||||
case CR_ACIDDEMONSTRATION:
|
||||
@ -9408,7 +9408,7 @@ void skill_weaponrefine (struct map_session_data *sd, int idx)
|
||||
clif_refine(sd->fd,1,idx,item->refine);
|
||||
pc_delitem(sd,idx,1,0,2);
|
||||
clif_misceffect(&sd->bl,2);
|
||||
clif_emotion(&sd->bl, 23);
|
||||
clif_emotion(&sd->bl, E_OMG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1083,7 +1083,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
|
||||
|
||||
if (sc->data[SC_WINKCHARM] && target && !flag)
|
||||
{ //Prevents skill usage
|
||||
clif_emotion(src, 3);
|
||||
clif_emotion(src, E_LV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -5266,7 +5266,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
|
||||
case SC_SIGNUMCRUCIS:
|
||||
val2 = 10 + 4*val1; //Def reduction
|
||||
tick = -1;
|
||||
clif_emotion(bl,4);
|
||||
clif_emotion(bl,E_SWT);
|
||||
break;
|
||||
case SC_MAXIMIZEPOWER:
|
||||
val2 = tick>0?tick:60000;
|
||||
@ -5483,7 +5483,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
|
||||
|
||||
break;
|
||||
case SC_CONFUSION:
|
||||
clif_emotion(bl,1);
|
||||
clif_emotion(bl,E_WHAT);
|
||||
break;
|
||||
case SC_BLEEDING:
|
||||
val4 = tick/10000;
|
||||
|
@ -1973,7 +1973,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file,
|
||||
ud->canact_tick = ud->canmove_tick; //It appears HOM do reset the can-act tick.
|
||||
if( !hd->homunculus.intimacy && !(hd->master && !hd->master->state.active) )
|
||||
{ //If logging out, this is deleted on unit_free
|
||||
clif_emotion(bl, 28) ; //sob
|
||||
clif_emotion(bl, E_SOB);
|
||||
clif_clearunit_area(bl,clrtype);
|
||||
map_delblock(bl);
|
||||
unit_free(bl,CLR_OUTSIGHT);
|
||||
|
Loading…
x
Reference in New Issue
Block a user