Bläddra i källkod

* Merged changes up to eAthena 15054. [ai4rei]
* clif cleanup: Changed argument types of some clif functions.
- Added enumeration for skill failure codes and made clif_skill_fail use it.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15472 54d463be-8e91-2dee-dedb-b68131a5f0ec

eathenabot 13 år sedan
förälder
incheckning
81523f57df
7 ändrade filer med 248 tillägg och 159 borttagningar
  1. 23 23
      src/map/clif.c
  2. 88 4
      src/map/clif.h
  3. 1 1
      src/map/guild.c
  4. 3 3
      src/map/pc.c
  5. 125 120
      src/map/skill.c
  6. 5 5
      src/map/unit.c
  7. 3 3
      src/map/vending.c

+ 23 - 23
src/map/clif.c

@@ -3200,7 +3200,7 @@ void clif_changeoption2(struct block_list* bl)
 /*==========================================
  *
  *------------------------------------------*/
-void clif_useitemack(struct map_session_data *sd,int index,int amount,int ok)
+void clif_useitemack(struct map_session_data *sd,int index,int amount,bool ok)
 {
 	nullpo_retv(sd);
 
@@ -4489,7 +4489,7 @@ void clif_skillcastcancel(struct block_list* bl)
 /// if(success!=0) doesn't display any of the previous messages
 /// Note: when this packet is received an unknown flag is always set to 0,
 /// suggesting this is an ACK packet for the UseSkill packets and should be sent on success too [FlavioJS]
-void clif_skill_fail(struct map_session_data *sd,int skill_id,int type,int btype)
+void clif_skill_fail(struct map_session_data *sd,int skill_id,enum useskill_fail_cause cause,int btype)
 {
 	int fd;
 
@@ -4504,7 +4504,7 @@ void clif_skill_fail(struct map_session_data *sd,int skill_id,int type,int btype
 	if(battle_config.display_skill_fail&1)
 		return; //Disable all skill failed messages
 
-	if(type==0x4 && !sd->state.showdelay)
+	if(cause==USESKILL_FAIL_SKILLINTERVAL && !sd->state.showdelay)
 		return; //Disable delay failed messages
 	
 	if(skill_id == RG_SNATCHER && battle_config.display_skill_fail&4)
@@ -4518,7 +4518,7 @@ void clif_skill_fail(struct map_session_data *sd,int skill_id,int type,int btype
 	WFIFOW(fd,2) = skill_id;
 	WFIFOL(fd,4) = btype;
 	WFIFOB(fd,8) = 0;// success
-	WFIFOB(fd,9) = type;
+	WFIFOB(fd,9) = cause;
 	WFIFOSET(fd,packet_len(0x110));
 }
 
@@ -5472,7 +5472,7 @@ void clif_item_repair_list(struct map_session_data *sd,struct map_session_data *
 		sd->menuskill_id = BS_REPAIRWEAPON;
 		sd->menuskill_val = dstsd->bl.id;
 	}else
-		clif_skill_fail(sd,sd->ud.skillid,0,0);
+		clif_skill_fail(sd,sd->ud.skillid,USESKILL_FAIL_LEVEL,0);
 }
 void clif_item_repaireffect(struct map_session_data *sd,int nameid,int flag)
 {
@@ -9072,13 +9072,13 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd)
 
 	if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_BASIC) >= 2) {
 		if (emoticon == E_MUTE) {// prevent use of the mute emote [Valaris]
-			clif_skill_fail(sd, 1, 0, 1);
+			clif_skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
 			return;
 		}
 		// fix flood of emotion icon (ro-proxy): flood only the hacker player
 		if (sd->emotionlasttime >= time(NULL)) {
 			sd->emotionlasttime = time(NULL) + 1; // not more than 1 per second (using /commands the client can spam it)
-			clif_skill_fail(sd, 1, 0, 1);
+			clif_skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
 			return;
 		}
 		sd->emotionlasttime = time(NULL) + 1; // not more than 1 per second (using /commands the client can spam it)
@@ -9090,7 +9090,7 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd)
 
 		clif_emotion(&sd->bl, emoticon);
 	} else
-		clif_skill_fail(sd, 1, 0, 1);
+		clif_skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
 }
 
 /*==========================================
@@ -9139,7 +9139,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
 
 		if (!battle_config.sdelay_attack_enable && pc_checkskill(sd, SA_FREECAST) <= 0) {
 			if (DIFF_TICK(tick, sd->ud.canact_tick) < 0) {
-				clif_skill_fail(sd, 1, 4, 0);
+				clif_skill_fail(sd, 1, USESKILL_FAIL_SKILLINTERVAL, 0);
 				return;
 			}
 		}
@@ -9150,7 +9150,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
 	break;
 	case 0x02: // sitdown
 		if (battle_config.basic_skill_check && pc_checkskill(sd, NV_BASIC) < 3) {
-			clif_skill_fail(sd, 1, 0, 2);
+			clif_skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 2);
 			break;
 		}
 
@@ -9674,7 +9674,7 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd)
 	if (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOROOM)
 		return;
 	if(battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 4) {
-		clif_skill_fail(sd,1,0,3);
+		clif_skill_fail(sd,1,USESKILL_FAIL_LEVEL,3);
 		return;
 	}
 
@@ -9786,7 +9786,7 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd)
 
 	if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 1)
 	{
-		clif_skill_fail(sd,1,0,0);
+		clif_skill_fail(sd,1,USESKILL_FAIL_LEVEL,0);
 		return;
 	}
 	
@@ -9974,7 +9974,7 @@ static void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct
 		return;
 	if( DIFF_TICK(tick, md->ud.canact_tick) < 0 )
 	{
-		clif_skill_fail(md->master, skillnum, 4, 0);
+		clif_skill_fail(md->master, skillnum, USESKILL_FAIL_SKILLINTERVAL, 0);
 		return;
 	}
 
@@ -10044,7 +10044,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
 	{
 		if( sd->skillitem != skillnum )
 		{
-			clif_skill_fail(sd, skillnum, 4, 0);
+			clif_skill_fail(sd, skillnum, USESKILL_FAIL_SKILLINTERVAL, 0);
 			return;
 		}
 	}
@@ -10120,7 +10120,7 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, short skil
 	{
 		if( pc_issit(sd) )
 		{
-			clif_skill_fail(sd, skillnum, 0, 0);
+			clif_skill_fail(sd, skillnum, USESKILL_FAIL_LEVEL, 0);
 			return;
 		}
 		//You can't use Graffiti/TalkieBox AND have a vending open, so this is safe.
@@ -10134,7 +10134,7 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, short skil
 	{
 		if( sd->skillitem != skillnum )
 		{
-			clif_skill_fail(sd, skillnum, 4, 0);
+			clif_skill_fail(sd, skillnum, USESKILL_FAIL_SKILLINTERVAL, 0);
 			return;
 		}
 	}
@@ -10242,7 +10242,7 @@ void clif_parse_ProduceMix(int fd,struct map_session_data *sd)
 		return;
 	if (pc_istrading(sd)) {
 		//Make it fail to avoid shop exploits where you sell something different than you see.
-		clif_skill_fail(sd,sd->ud.skillid,0,0);
+		clif_skill_fail(sd,sd->ud.skillid,USESKILL_FAIL_LEVEL,0);
 		sd->menuskill_val = sd->menuskill_id = 0;
 		return;
 	}
@@ -10264,7 +10264,7 @@ void clif_parse_Cooking(int fd,struct map_session_data *sd)
 
 	if (pc_istrading(sd)) {
 		//Make it fail to avoid shop exploits where you sell something different than you see.
-		clif_skill_fail(sd,sd->ud.skillid,0,0);
+		clif_skill_fail(sd,sd->ud.skillid,USESKILL_FAIL_LEVEL,0);
 		sd->menuskill_val = sd->menuskill_id = 0;
 		return;
 	}
@@ -10280,7 +10280,7 @@ void clif_parse_RepairItem(int fd, struct map_session_data *sd)
 		return;
 	if (pc_istrading(sd)) {
 		//Make it fail to avoid shop exploits where you sell something different than you see.
-		clif_skill_fail(sd,sd->ud.skillid,0,0);
+		clif_skill_fail(sd,sd->ud.skillid,USESKILL_FAIL_LEVEL,0);
 		sd->menuskill_val = sd->menuskill_id = 0;
 		return;
 	}
@@ -10299,7 +10299,7 @@ void clif_parse_WeaponRefine(int fd, struct map_session_data *sd)
 		return;
 	if (pc_istrading(sd)) {
 		//Make it fail to avoid shop exploits where you sell something different than you see.
-		clif_skill_fail(sd,sd->ud.skillid,0,0);
+		clif_skill_fail(sd,sd->ud.skillid,USESKILL_FAIL_LEVEL,0);
 		sd->menuskill_val = sd->menuskill_id = 0;
 		return;
 	}
@@ -10400,7 +10400,7 @@ void clif_parse_SelectArrow(int fd,struct map_session_data *sd)
 {
 	if (pc_istrading(sd)) {
 	//Make it fail to avoid shop exploits where you sell something different than you see.
-		clif_skill_fail(sd,sd->ud.skillid,0,0);
+		clif_skill_fail(sd,sd->ud.skillid,USESKILL_FAIL_LEVEL,0);
 		sd->menuskill_val = sd->menuskill_id = 0;
 		return;
 	}
@@ -10627,7 +10627,7 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd)
 	}
 	if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 7 )
 	{
-		clif_skill_fail(sd,1,0,4);
+		clif_skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
 		return;
 	}
 
@@ -10648,7 +10648,7 @@ void clif_parse_CreateParty2(int fd, struct map_session_data *sd)
 	}
 	if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 7 )
 	{
-		clif_skill_fail(sd,1,0,4);
+		clif_skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
 		return;
 	}
 

+ 88 - 4
src/map/clif.h

@@ -215,6 +215,90 @@ enum map_type
 	MAPTYPE_UNUSED               = 29,
 };
 
+enum useskill_fail_cause
+{// clif_skill_fail
+	USESKILL_FAIL_LEVEL = 0,
+	USESKILL_FAIL_SP_INSUFFICIENT = 1,
+	USESKILL_FAIL_HP_INSUFFICIENT = 2,
+	USESKILL_FAIL_STUFF_INSUFFICIENT = 3,
+	USESKILL_FAIL_SKILLINTERVAL = 4,
+	USESKILL_FAIL_MONEY = 5,
+	USESKILL_FAIL_THIS_WEAPON = 6,
+	USESKILL_FAIL_REDJAMSTONE = 7,
+	USESKILL_FAIL_BLUEJAMSTONE = 8,
+	USESKILL_FAIL_WEIGHTOVER = 9,
+	USESKILL_FAIL = 10,
+	USESKILL_FAIL_TOTARGET = 11,
+	USESKILL_FAIL_ANCILLA_NUMOVER = 12,
+	USESKILL_FAIL_HOLYWATER = 13,
+	USESKILL_FAIL_ANCILLA = 14,
+	USESKILL_FAIL_DUPLICATE_RANGEIN = 15,
+	USESKILL_FAIL_NEED_OTHER_SKILL = 16,
+	USESKILL_FAIL_NEED_HELPER = 17,
+	USESKILL_FAIL_INVALID_DIR = 18,
+	USESKILL_FAIL_SUMMON = 19,
+	USESKILL_FAIL_SUMMON_NONE = 20,
+	USESKILL_FAIL_IMITATION_SKILL_NONE = 21,
+	USESKILL_FAIL_DUPLICATE = 22,
+	USESKILL_FAIL_CONDITION = 23,
+	USESKILL_FAIL_PAINTBRUSH = 24,
+	//XXX_USESKILL_FAIL_II_SURFACE_PAINTS = 25,
+	USESKILL_FAIL_POS = 26,
+	USESKILL_FAIL_HELPER_SP_INSUFFICIENT = 27,
+	//XXX_USESKILL_FAIL_II_NECK_CANDY = 28,
+	//XXX_USESKILL_FAIL_II_MISERABLE_TEAR = 29,
+	//XXX_USESKILL_FAIL_II_PROTECT_NECK_CANDY = 30,
+	USESKILL_FAIL_GC_WEAPONBLOCKING = 31,
+	USESKILL_FAIL_GC_POISONINGWEAPON = 32,
+	USESKILL_FAIL_MADOGEAR = 33,
+	//XXX_USESKILL_FAIL_II_VULCANBULLET = 34,
+	//XXX_USESKILL_FAIL_II_FUELGAS = 35,
+	//XXX_USESKILL_FAIL_II_COLDSLOWERBULLET = 36,
+	USESKILL_FAIL_CANONBALL = 37,
+	//XXX_USESKILL_FAIL_II_MADOGEAR_ACCELERATION = 38,
+	//XXX_USESKILL_FAIL_II_MADOGEAR_HOVERING_BOOSTER = 39,
+	USESKILL_FAIL_MADOGEAR_HOVERING = 40,
+	//XXX_USESKILL_FAIL_II_MADOGEAR_SELFDESTRUCTION_DEVICE = 41,
+	//XXX_USESKILL_FAIL_II_MADOGEAR_SHAPESHIFTER = 42,
+	USESKILL_FAIL_GUILLONTINE_POISON = 43,
+	//XXX_USESKILL_FAIL_II_MADOGEAR_COOLING_DEVICE = 44,
+	//XXX_USESKILL_FAIL_II_MADOGEAR_MAGNETICFIELD_GENERATOR = 45,
+	//XXX_USESKILL_FAIL_II_MADOGEAR_BARRIER_GENERATOR = 46,
+	//XXX_USESKILL_FAIL_II_MADOGEAR_OPTICALCAMOUFLAGE_GENERATOR = 47,
+	//XXX_USESKILL_FAIL_II_MADOGEAR_REPAIRKIT = 48,
+	//XXX_USESKILL_FAIL_II_MONKEY_SPANNER = 49,
+	USESKILL_FAIL_MADOGEAR_RIDE = 50,
+	USESKILL_FAIL_SPELLBOOK = 51,
+	USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP = 52,
+	USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT = 53,
+	USESKILL_FAIL_SPELLBOOK_READING = 54,
+	//XXX_USESKILL_FAIL_II_FACE_PAINTS = 55,
+	//XXX_USESKILL_FAIL_II_MAKEUP_BRUSH = 56,
+	USESKILL_FAIL_CART = 57,
+	//XXX_USESKILL_FAIL_II_THORNS_SEED = 58,
+	//XXX_USESKILL_FAIL_II_BLOOD_SUCKER_SEED = 59,
+	USESKILL_FAIL_NO_MORE_SPELL = 60,
+	//XXX_USESKILL_FAIL_II_BOMB_MUSHROOM_SPORE = 61,
+	//XXX_USESKILL_FAIL_II_GASOLINE_BOOMB = 62,
+	//XXX_USESKILL_FAIL_II_OIL_BOTTLE = 63,
+	//XXX_USESKILL_FAIL_II_EXPLOSION_POWDER = 64,
+	//XXX_USESKILL_FAIL_II_SMOKE_POWDER = 65,
+	//XXX_USESKILL_FAIL_II_TEAR_GAS = 66,
+	//XXX_USESKILL_FAIL_II_HYDROCHLORIC_ACID_BOTTLE = 67,
+	//XXX_USESKILL_FAIL_II_HELLS_PLANT_BOTTLE = 68,
+	//XXX_USESKILL_FAIL_II_MANDRAGORA_FLOWERPOT = 69,
+	USESKILL_FAIL_MANUAL_NOTIFY = 70,
+	USESKILL_FAIL_NEED_ITEM = 71,
+	USESKILL_FAIL_NEED_EQUIPMENT = 72,
+	USESKILL_FAIL_COMBOSKILL = 73,
+	USESKILL_FAIL_SPIRITS = 74,
+	USESKILL_FAIL_EXPLOSIONSPIRITS = 75,
+	USESKILL_FAIL_HP_TOOMANY = 76,
+	USESKILL_FAIL_NEED_ROYAL_GUARD_BANDING = 77,
+	USESKILL_FAIL_NEED_EQUIPPED_WEAPON_CLASS = 78,
+	USESKILL_FAIL_EL_SUMMON = 79,
+};
+
 int clif_setip(const char* ip);
 void clif_setbindip(const char* ip);
 void clif_setport(uint16 port);
@@ -272,7 +356,7 @@ void clif_unequipitemack(struct map_session_data *sd,int n,int pos,int ok);	// s
 void clif_misceffect(struct block_list* bl,int type);	// area
 void clif_changeoption(struct block_list* bl);	// area
 void clif_changeoption2(struct block_list* bl);	// area
-void clif_useitemack(struct map_session_data *sd,int index,int amount,int ok);	// self
+void clif_useitemack(struct map_session_data *sd,int index,int amount,bool ok);	// self
 void clif_GlobalMessage(struct block_list* bl, const char* message);
 void clif_createchat(struct map_session_data* sd, int flag);	// self
 void clif_dispchat(struct chat_data* cd, int fd);	// area or fd
@@ -327,12 +411,12 @@ void clif_class_change(struct block_list *bl,int class_,int type);
 void clif_skillinfoblock(struct map_session_data *sd);
 void clif_skillup(struct map_session_data *sd,int skill_num);
 void clif_skillinfo(struct map_session_data *sd,int skill, int inf);
-void clif_addskill(struct map_session_data *sd, int skill);
-void clif_deleteskill(struct map_session_data *sd, int skill);
+void clif_addskill(struct map_session_data *sd, int id);
+void clif_deleteskill(struct map_session_data *sd, int id);
 
 void clif_skillcasting(struct block_list* bl, int src_id, int dst_id, int dst_x, int dst_y, int skill_num, int property, int casttime);
 void clif_skillcastcancel(struct block_list* bl);
-void clif_skill_fail(struct map_session_data *sd,int skill_id,int type,int btype);
+void clif_skill_fail(struct map_session_data *sd,int skill_id,enum useskill_fail_cause cause,int btype);
 void clif_skill_cooldown(struct map_session_data *sd, int skillid, unsigned int tick);
 int clif_skill_damage(struct block_list *src,struct block_list *dst,unsigned int tick,int sdelay,int ddelay,int damage,int div,int skill_id,int skill_lv,int type);
 //int clif_skill_damage2(struct block_list *src,struct block_list *dst,unsigned int tick,int sdelay,int ddelay,int damage,int div,int skill_id,int skill_lv,int type);

+ 1 - 1
src/map/guild.c

@@ -1049,7 +1049,7 @@ int guild_change_emblem(struct map_session_data *sd,int len,const char *data)
 
 	if (battle_config.require_glory_guild &&
 		!((g = guild_search(sd->status.guild_id)) && guild_checkskill(g, GD_GLORYGUILD)>0)) {
-		clif_skill_fail(sd,GD_GLORYGUILD,0,0);
+		clif_skill_fail(sd,GD_GLORYGUILD,USESKILL_FAIL_LEVEL,0);
 		return 0;
 	}
 

+ 3 - 3
src/map/pc.c

@@ -3957,16 +3957,16 @@ int pc_useitem(struct map_session_data *sd,int n)
 	script = sd->inventory_data[n]->script;
 	//Check if the item is to be consumed immediately [Skotlex]
 	if( sd->inventory_data[n]->flag.delay_consume )
-		clif_useitemack(sd,n,amount,1);
+		clif_useitemack(sd,n,amount,true);
 	else
 	{
 		if( sd->status.inventory[n].expire_time == 0 )
 		{
-			clif_useitemack(sd,n,amount-1,1);
+			clif_useitemack(sd,n,amount-1,true);
 			pc_delitem(sd,n,1,1,0,LOG_TYPE_CONSUME); // Rental Usable Items are not deleted until expiration
 		}
 		else
-			clif_useitemack(sd,n,0,0);
+			clif_useitemack(sd,n,0,false);
 	}
 	if(sd->status.inventory[n].card[0]==CARD0_CREATE &&
 		pc_famerank(MakeDWord(sd->status.inventory[n].card[2],sd->status.inventory[n].card[3]), MAPID_ALCHEMIST))

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 125 - 120
src/map/skill.c


+ 5 - 5
src/map/unit.c

@@ -1058,7 +1058,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh
 				return 0;
 			target = (struct block_list*)map_charid2sd(sd->status.partner_id);
 			if (!target) {
-				clif_skill_fail(sd,skill_num,0,0);
+				clif_skill_fail(sd,skill_num,USESKILL_FAIL_LEVEL,0);
 				return 0;
 			}
 			break;
@@ -1110,7 +1110,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh
 		case BD_ENCORE:
 			//Prevent using the dance skill if you no longer have the skill in your tree. 
 			if(!sd->skillid_dance || pc_checkskill(sd,sd->skillid_dance)<=0){
-				clif_skill_fail(sd,skill_num,0,0);
+				clif_skill_fail(sd,skill_num,USESKILL_FAIL_LEVEL,0);
 				return 0;
 			}
 			sd->skillid_old = skill_num;
@@ -1126,7 +1126,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh
 		case CG_MOONLIT:
 			if (skill_check_pc_partner(sd, skill_num, &skill_lv, 1, 0) < 1)
 			{
-				clif_skill_fail(sd,skill_num,0,0);
+				clif_skill_fail(sd,skill_num,USESKILL_FAIL_LEVEL,0);
 				return 0;
 			}
 			break;
@@ -1356,7 +1356,7 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, sh
 
 	if( map_getcell(src->m, skill_x, skill_y, CELL_CHKWALL) )
 	{// can't cast ground targeted spells on wall cells
-		if (sd) clif_skill_fail(sd,skill_num,0,0);
+		if (sd) clif_skill_fail(sd,skill_num,USESKILL_FAIL_LEVEL,0);
 		return 0;
 	}
 
@@ -1691,7 +1691,7 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t
 	{ // attacking when under cast delay has restrictions:
 		if( tid == INVALID_TIMER )
 		{ //requested attack.
-			if(sd) clif_skill_fail(sd,1,4,0);
+			if(sd) clif_skill_fail(sd,1,USESKILL_FAIL_SKILLINTERVAL,0);
 			return 0;
 		}
 		//Otherwise, we are in a combo-attack, delay this until your canact time is over. [Skotlex]

+ 3 - 3
src/map/vending.c

@@ -254,14 +254,14 @@ void vending_openvending(struct map_session_data* sd, const char* message, bool
 	// skill level and cart check
 	if( !vending_skill_lvl || !pc_iscarton(sd) )
 	{
-		clif_skill_fail(sd, MC_VENDING, 0, 0);
+		clif_skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0);
 		return;
 	}
 
 	// check number of items in shop
 	if( count < 1 || count > MAX_VENDING || count > 2 + vending_skill_lvl )
 	{	// invalid item count
-		clif_skill_fail(sd, MC_VENDING, 0, 0);
+		clif_skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0);
 		return;
 	}
 
@@ -296,7 +296,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, bool
 
 	if( i == 0 )
 	{	// no valid item found
-		clif_skill_fail(sd, MC_VENDING, 0, 0); // custom reply packet
+		clif_skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0); // custom reply packet
 		return;
 	}
 	sd->state.prevend = 0;

Vissa filer visades inte eftersom för många filer har ändrats