Procházet zdrojové kódy

Fixed Endow skills to match official behavior. (#2918)

* Endows are now interchangeable.
* No longer break the weapon on failure and now unequips instead.
Thanks to @Daegaladh!
Daegaladh před 7 roky
rodič
revize
1e2032cc21

+ 1 - 1
conf/msg_conf/map_msg.conf

@@ -690,7 +690,7 @@
 666: Pets are not allowed in Guild Wars.
 667: You're not dead.
 668: Your actual memo positions are:
-669: You broke the target's weapon.
+//669 free
 670: You can't leave battleground guilds.
 671: Friend already exists.
 672: Name not found in list.

+ 1 - 1
conf/msg_conf/map_msg_chn.conf

@@ -643,7 +643,7 @@
 666: 公會戰不允許有寵物
 667: 你沒死亡
 668: 你實際儲存點是:
-669: 你破壞目標的武器
+//669 free
 670: 你無法離開戰場公會
 671: 這朋友已存在
 672: 該名稱不在清單內

+ 1 - 1
conf/msg_conf/map_msg_frn.conf

@@ -655,7 +655,7 @@
 666: Pets non-autorisés lors d'une guerre entre guilde.
 667: Vous n'êtes pas mort(e).
 668: Votre position memo actuelle est:
-669: Vous brisez l'arme de la cible.
+//669 free
 670: Vous ne pouvez pas quitter votre guilde.
 671: Cette personne est déjà dans votre liste d'ami.
 672: Nom introuvable dans la liste.

+ 1 - 1
conf/msg_conf/map_msg_idn.conf

@@ -689,7 +689,7 @@
 666: Peliharaan tidak diperbolehkan di Guild Wars.
 667: Kamu tidak mati.
 668: Posisi memomu saat ini adalah:
-669: Kamu menghancurkan senajta lawan.
+//669 kosong
 670: Kamu tidak dapat meninggalkan guild battleground.
 671: Teman sudah ada.
 672: Nama tidak ditemukan di daftar.

+ 1 - 1
conf/msg_conf/map_msg_por.conf

@@ -635,7 +635,7 @@
 666: Bichinhos de estimação não são permitidos na Guerra de Clãs.
 667: Você não está morto.
 668: Seu ponto de retorno atual é:
-669: Você quebrou a arma de seu oponente.
+//669 livre
 670: Você não pode deixar os campos de batalha em uma guerra.
 671: Amigo já existente.
 672: Nome não encontrado na lista.

+ 1 - 1
conf/msg_conf/map_msg_rus.conf

@@ -655,7 +655,7 @@
 666: Питомцы запрещены во время Войны за Империум.
 667: Вы не мертвы.
 668: Ваши текущие точки сохранения:
-669: Вы сломали оружие цели.
+//669 НЕ ИСПОЛЬЗУЕТСЯ
 670: Вы не можете покинуть БГ.
 671: Друг уже добавлен.
 672: Имя не найдено в списке.

+ 1 - 1
conf/msg_conf/map_msg_spn.conf

@@ -690,7 +690,7 @@
 666: Las mascotas están prohibidas en la guerra de clanes.
 667: No estás muerto.
 668: Tus puntos de memorización actuales son los siguientes:
-669: Has roto el arma de tu enemigo.
+//669 vacío
 670: No puedes abandonar un clan especial de battleground.
 671: Ese jugador ya es amigo tuyo.
 672: No se ha encontrado el nombre que has introducido.

+ 1 - 1
conf/msg_conf/map_msg_tha.conf

@@ -649,7 +649,7 @@
 666: ��µ�לא��י�§ה�טה´י¶����÷�¹�­�µד�י¹�א¢י�ד¹¾�י¹·�ט Guild Wars.
 667: ¤�³ה�טה´יµ��.
 668: µ�ב�¹ט§·�ט¤�³ה´י÷�¹·��ה�י��´�§¹�י:
-669: ¤�³ה´י·��������¸¢�§א»י�����.
+//669 free
 670: ¤�³ה�ט�����¶���¨�� Guild ה´יד¹¢³����טד¹ battleground.
 671: א¾�ט�¹·�ט�����טב�י�.
 672: ה�ט¾÷×�ט�ד¹������.

+ 10 - 19
src/map/skill.cpp

@@ -6509,30 +6509,21 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 	case SA_FROSTWEAPON:
 	case SA_LIGHTNINGLOADER:
 	case SA_SEISMICWEAPON:
-		if (dstsd) {
-			if(dstsd->status.weapon == W_FIST ||
-				(dstsd->sc.count && !dstsd->sc.data[type] &&
-				(	//Allow re-enchanting to lenghten time. [Skotlex]
-					dstsd->sc.data[SC_FIREWEAPON] ||
-					dstsd->sc.data[SC_WATERWEAPON] ||
-					dstsd->sc.data[SC_WINDWEAPON] ||
-					dstsd->sc.data[SC_EARTHWEAPON] ||
-					dstsd->sc.data[SC_SHADOWWEAPON] ||
-					dstsd->sc.data[SC_GHOSTWEAPON] ||
-					dstsd->sc.data[SC_ENCPOISON]
-				))
-				) {
-				if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
-				clif_skill_nodamage(src,bl,skill_id,skill_lv,0);
-				break;
-			}
+		if (dstsd && dstsd->status.weapon == W_FIST) {
+			if (sd)
+				clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
+			clif_skill_nodamage(src,bl,skill_id,skill_lv,0);
+			break;
 		}
 		// 100% success rate at lv4 & 5, but lasts longer at lv5
 		if(!clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,(60+skill_lv*10),skill_lv, skill_get_time(skill_id,skill_lv)))) {
+			if (dstsd){
+				short index = dstsd->equip_index[EQI_HAND_R];
+				if (index&EQP_WEAPON && dstsd->inventory_data[index]->type == IT_WEAPON)
+					pc_unequipitem(dstsd, index, 3); //Must unequip the weapon instead of breaking it [Daegaladh]
+			}
 			if (sd)
 				clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
-			if (skill_break_equip(src,bl, EQP_WEAPON, 10000, BCT_PARTY) && sd && sd != dstsd)
-				clif_displaymessage(sd->fd, msg_txt(sd,669));
 		}
 		break;