* 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:
ai4rei 2010-11-28 22:43:10 +00:00
parent 5d1bbf6c2a
commit 93e376eac5
9 changed files with 117 additions and 33 deletions

View File

@ -1,6 +1,8 @@
Date Added Date Added
2010/11/28 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] * Added clr_type enumeration for vanish effect constants. [Ai4rei]
* Resolved multiple issues with the party booking system (bugreport:4573, since r14412). [Ai4rei] * Resolved multiple issues with the party booking system (bugreport:4573, since r14412). [Ai4rei]
- Fixed recruitments were limited to party leaders. - Fixed recruitments were limited to party leaders.

View File

@ -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) 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 (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); clif_skill_fail(sd, 1, 0, 1);
return; 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) sd->emotionlasttime = time(NULL) + 1; // not more than 1 per second (using /commands the client can spam it)
WBUFW(buf,0) = 0xc0; clif_emotion(&sd->bl, RFIFOB(fd,2));
WBUFL(buf,2) = sd->bl.id;
WBUFB(buf,6) = RFIFOB(fd,2);
clif_send(buf, packet_len(0xc0), &sd->bl, AREA);
} else } else
clif_skill_fail(sd, 1, 0, 1); clif_skill_fail(sd, 1, 0, 1);
} }

View File

@ -78,6 +78,93 @@ typedef enum send_target {
BG_AREA_WOS, BG_AREA_WOS,
} send_target; } 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 typedef enum clr_type
{ {
CLR_OUTSIGHT = 0, CLR_OUTSIGHT = 0,

View File

@ -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) //There's no intimacy penalties on death (from Tharis)
struct map_session_data *sd = hd->master; struct map_session_data *sd = hd->master;
clif_emotion(&hd->bl, 16) ; //wah clif_emotion(&hd->bl, E_WAH);
//Delete timers when dead. //Delete timers when dead.
merc_hom_hungry_timer_delete(hd); 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 if (!sd) //unit remove map will invoke unit free
return 3; 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) //Remove from map (if it has no intimacy, it is auto-removed from memory)
return 3; 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) 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 ; return 0 ;
} }
sd = hd->master; sd = hd->master;
@ -321,7 +321,7 @@ int merc_hom_evolution(struct homun_data *hd)
map_addblock(&hd->bl); map_addblock(&hd->bl);
clif_spawn(&hd->bl); clif_spawn(&hd->bl);
clif_emotion(&sd->bl, 21); //no1 clif_emotion(&sd->bl, E_NO1);
clif_misceffect2(&hd->bl,568); clif_misceffect2(&hd->bl,568);
//status_Calc flag&1 will make current HP/SP be reloaded from hom structure //status_Calc flag&1 will make current HP/SP be reloaded from hom structure
@ -448,33 +448,33 @@ int merc_hom_food(struct map_session_data *sd, struct homun_data *hd)
if ( hd->homunculus.hunger >= 91 ) { if ( hd->homunculus.hunger >= 91 ) {
merc_hom_decrease_intimacy(hd, 50); merc_hom_decrease_intimacy(hd, 50);
emotion = 16; emotion = E_WAH;
} else if ( hd->homunculus.hunger >= 76 ) { } else if ( hd->homunculus.hunger >= 76 ) {
merc_hom_decrease_intimacy(hd, 5); merc_hom_decrease_intimacy(hd, 5);
emotion = 19; emotion = E_SWT2;
} else if ( hd->homunculus.hunger >= 26 ) { } else if ( hd->homunculus.hunger >= 26 ) {
merc_hom_increase_intimacy(hd, 75); merc_hom_increase_intimacy(hd, 75);
emotion = 2; emotion = E_HO;
} else if ( hd->homunculus.hunger >= 11 ) { } else if ( hd->homunculus.hunger >= 11 ) {
merc_hom_increase_intimacy(hd, 100); merc_hom_increase_intimacy(hd, 100);
emotion = 2; emotion = E_HO;
} else { } else {
merc_hom_increase_intimacy(hd, 50); merc_hom_increase_intimacy(hd, 50);
emotion = 2; emotion = E_HO;
} }
hd->homunculus.hunger += 10; //dunno increase value for each food hd->homunculus.hunger += 10; //dunno increase value for each food
if(hd->homunculus.hunger > 100) if(hd->homunculus.hunger > 100)
hd->homunculus.hunger = 100; hd->homunculus.hunger = 100;
clif_emotion(&hd->bl,emotion) ; clif_emotion(&hd->bl,emotion);
clif_send_homdata(sd,SP_HUNGRY,hd->homunculus.hunger); clif_send_homdata(sd,SP_HUNGRY,hd->homunculus.hunger);
clif_send_homdata(sd,SP_INTIMATE,hd->homunculus.intimacy / 100); clif_send_homdata(sd,SP_INTIMATE,hd->homunculus.intimacy / 100);
clif_hom_food(sd,foodID,1); clif_hom_food(sd,foodID,1);
// Too much food :/ // Too much food :/
if(hd->homunculus.intimacy == 0) if(hd->homunculus.intimacy == 0)
return merc_hom_delete(sd->hd, 23); //omg return merc_hom_delete(sd->hd, E_OMG);
return 0; return 0;
} }
@ -500,18 +500,18 @@ static int merc_hom_hungry(int tid, unsigned int tick, int id, intptr data)
hd->homunculus.hunger-- ; hd->homunculus.hunger-- ;
if(hd->homunculus.hunger <= 10) { if(hd->homunculus.hunger <= 10) {
clif_emotion(&hd->bl, 6) ; //an clif_emotion(&hd->bl, E_AN);
} else if(hd->homunculus.hunger == 25) { } else if(hd->homunculus.hunger == 25) {
clif_emotion(&hd->bl, 20) ; //hmm clif_emotion(&hd->bl, E_HMM);
} else if(hd->homunculus.hunger == 75) { } else if(hd->homunculus.hunger == 75) {
clif_emotion(&hd->bl, 33) ; //ok clif_emotion(&hd->bl, E_OK);
} }
if(hd->homunculus.hunger < 0) { if(hd->homunculus.hunger < 0) {
hd->homunculus.hunger = 0; hd->homunculus.hunger = 0;
// Delete the homunculus if intimacy <= 100 // Delete the homunculus if intimacy <= 100
if ( !merc_hom_decrease_intimacy(hd, 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); clif_send_homdata(sd,SP_INTIMATE,hd->homunculus.intimacy / 100);
} }

View File

@ -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)) if (sd->catch_target_class == 0 && !(md->status.mode&MD_BOSS))
sd->catch_target_class = md->class_; sd->catch_target_class = md->class_;
if(i < 0 || 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); clif_pet_roulette(sd,0);
sd->catch_target_class = -1; sd->catch_target_class = -1;
return 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. //Detoxify is chosen for now.
clif_skill_nodamage(&pd->bl,&sd->bl,TF_DETOXIFY,1,1); clif_skill_nodamage(&pd->bl,&sd->bl,TF_DETOXIFY,1,1);
status_change_end(&sd->bl,pd->recovery->type,-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; pd->recovery->timer = INVALID_TIMER;

View File

@ -8693,7 +8693,7 @@ BUILDIN_FUNC(homunculus_evolution)
if (sd->hd->homunculus.intimacy > 91000) if (sd->hd->homunculus.intimacy > 91000)
merc_hom_evolution(sd->hd); merc_hom_evolution(sd->hd);
else else
clif_emotion(&sd->hd->bl, 4) ; //swt clif_emotion(&sd->hd->bl, E_SWT);
} }
return 0; return 0;
} }

View File

@ -734,7 +734,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
case AM_ACIDTERROR: case AM_ACIDTERROR:
sc_start(bl,SC_BLEEDING,(skilllv*3),skilllv,skill_get_time2(skillid,skilllv)); 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)) 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; break;
case AM_DEMONSTRATION: case AM_DEMONSTRATION:
@ -3002,7 +3002,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
break; break;
case NPC_DARKBREATH: case NPC_DARKBREATH:
clif_emotion(src,7); clif_emotion(src,E_AG);
case SN_FALCONASSAULT: case SN_FALCONASSAULT:
case PA_PRESSURE: case PA_PRESSURE:
case CR_ACIDDEMONSTRATION: 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); clif_refine(sd->fd,1,idx,item->refine);
pc_delitem(sd,idx,1,0,2); pc_delitem(sd,idx,1,0,2);
clif_misceffect(&sd->bl,2); clif_misceffect(&sd->bl,2);
clif_emotion(&sd->bl, 23); clif_emotion(&sd->bl, E_OMG);
} }
} }
} }

View File

@ -1083,7 +1083,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
if (sc->data[SC_WINKCHARM] && target && !flag) if (sc->data[SC_WINKCHARM] && target && !flag)
{ //Prevents skill usage { //Prevents skill usage
clif_emotion(src, 3); clif_emotion(src, E_LV);
return 0; 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: case SC_SIGNUMCRUCIS:
val2 = 10 + 4*val1; //Def reduction val2 = 10 + 4*val1; //Def reduction
tick = -1; tick = -1;
clif_emotion(bl,4); clif_emotion(bl,E_SWT);
break; break;
case SC_MAXIMIZEPOWER: case SC_MAXIMIZEPOWER:
val2 = tick>0?tick:60000; 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; break;
case SC_CONFUSION: case SC_CONFUSION:
clif_emotion(bl,1); clif_emotion(bl,E_WHAT);
break; break;
case SC_BLEEDING: case SC_BLEEDING:
val4 = tick/10000; val4 = tick/10000;

View File

@ -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. 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( !hd->homunculus.intimacy && !(hd->master && !hd->master->state.active) )
{ //If logging out, this is deleted on unit_free { //If logging out, this is deleted on unit_free
clif_emotion(bl, 28) ; //sob clif_emotion(bl, E_SOB);
clif_clearunit_area(bl,clrtype); clif_clearunit_area(bl,clrtype);
map_delblock(bl); map_delblock(bl);
unit_free(bl,CLR_OUTSIGHT); unit_free(bl,CLR_OUTSIGHT);