summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt2
-rw-r--r--src/map/clif.c11
-rw-r--r--src/map/clif.h87
-rw-r--r--src/map/homunculus.c30
-rw-r--r--src/map/pet.c4
-rw-r--r--src/map/script.c2
-rw-r--r--src/map/skill.c6
-rw-r--r--src/map/status.c6
-rw-r--r--src/map/unit.c2
9 files changed, 117 insertions, 33 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 9277b6267..2bad49567 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -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.
diff --git a/src/map/clif.c b/src/map/clif.c
index c99dab0b2..85b7d8667 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -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;
}
@@ -9077,11 +9075,8 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd)
return;
}
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);
}
diff --git a/src/map/clif.h b/src/map/clif.h
index e93291c9a..3f141e68d 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -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,
diff --git a/src/map/homunculus.c b/src/map/homunculus.c
index 6b31e2b6b..2cdce9fb6 100644
--- a/src/map/homunculus.c
+++ b/src/map/homunculus.c
@@ -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,33 +448,33 @@ 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
if(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_INTIMATE,hd->homunculus.intimacy / 100);
clif_hom_food(sd,foodID,1);
// 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);
}
diff --git a/src/map/pet.c b/src/map/pet.c
index d3758b9e5..843f1cc11 100644
--- a/src/map/pet.c
+++ b/src/map/pet.c
@@ -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;
diff --git a/src/map/script.c b/src/map/script.c
index c6c9c3591..abc183a6a 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -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;
}
diff --git a/src/map/skill.c b/src/map/skill.c
index 4db0b1e2b..6f34ae531 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -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);
}
}
}
diff --git a/src/map/status.c b/src/map/status.c
index 3b9213ca5..ac034c1b6 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -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;
diff --git a/src/map/unit.c b/src/map/unit.c
index a1e523fa1..d217177c4 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -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);