Cleaned up Camouflage to work as originally intended
Fixed offensive healing and cleaned up skill_calc_heal - Fixes bugreport:7317 Fixed Poison Mist to accurately display and damage correct area - Fixes bugreport:7600 Cleaning channel system update from r17284 and r17285 (lighta) Updated CHN, SPN, IDN, FRN map_msg translations (Goddameit, Tragedy, Cydh, Capuche) Follow up to r17228 - Removed map_msg lines related to deprecated @main chat Fixed issues with clif_maptypeproperty2 and clif_dropfloorite (lighta) bugreport:7602 - bugreport:7603 git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17296 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
a15cee063d
commit
380bf896f0
@ -98,15 +98,15 @@ save_clothcolor: yes
|
||||
wedding_ignorepalette: no
|
||||
|
||||
// Do not display cloth colors for the Xmas class?
|
||||
// Set this to yes if your cloth palettes pack doesn't has Xmas palettes (or has less than the other jobs)
|
||||
// Set this to yes if your cloth palettes pack doesn't have Xmas palettes (or has less than the other jobs)
|
||||
xmas_ignorepalette: no
|
||||
|
||||
// Do not display cloth colors for the Summer class?
|
||||
// Set this to yes if your cloth palettes pack doesn't has Summer palettes (or has less than the other jobs)
|
||||
// Set this to yes if your cloth palettes pack doesn't have Summer palettes (or has less than the other jobs)
|
||||
summer_ignorepalette: no
|
||||
|
||||
// Do not display cloth colors for the Hanbok class?
|
||||
// Set this to yes if your cloth palettes pack doesn't has Hanbok palettes (or has less than the other jobs)
|
||||
// Set this to yes if your cloth palettes pack doesn't have Hanbok palettes (or has less than the other jobs)
|
||||
hanbok_ignorepalette: no
|
||||
|
||||
// Set this to 1 if your clients have langtype problems and can't display motd properly
|
||||
|
@ -386,16 +386,7 @@
|
||||
375: <- Player %s has left the duel --
|
||||
376: -> Player %s has accepted the duel --
|
||||
377: -- Player %s has rejected the duel --
|
||||
// Main chat
|
||||
380: Main chat has been activated.
|
||||
381: Main chat already activated.
|
||||
382: Main chat has been disabled.
|
||||
383: Main chat already disabled.
|
||||
384: Main chat is currently enabled. Usage: @main <on|off>, @main <message>.
|
||||
385: Main chat is currently disabled. Usage: @main <on|off>, @main <message>.
|
||||
386: %s :Main: %s
|
||||
387: You cannot use Main chat while muted.
|
||||
388: You should enable main chat with "@main on" command.
|
||||
//378-389 free
|
||||
//NoAsk
|
||||
390: Autorejecting is activated.
|
||||
391: Autorejecting is deactivated.
|
||||
@ -456,7 +447,7 @@
|
||||
// Messages of others (not for GM commands)
|
||||
// ----------------------------------------
|
||||
|
||||
//500: FREE
|
||||
//500 free
|
||||
501: Your account time limit is: %d-%m-%Y %H:%M:%S.
|
||||
502: Day Mode is activated
|
||||
503: Night Mode is activated
|
||||
@ -471,7 +462,7 @@
|
||||
// Trade Spoof Messages
|
||||
507: This player has been banned for %d minute(s).
|
||||
508: This player hasn't been banned (Ban option is disabled).
|
||||
//509 Available....
|
||||
//509 free
|
||||
|
||||
// mail system
|
||||
//----------------------
|
||||
@ -569,8 +560,8 @@
|
||||
616: Taekwon
|
||||
617: Star Gladiator
|
||||
618: Soul Linker
|
||||
//619: FREE
|
||||
//620: FREE
|
||||
//619 free
|
||||
//620 free
|
||||
621: Summer
|
||||
622: Gangsi
|
||||
623: Death Knight
|
||||
@ -1421,10 +1412,10 @@
|
||||
1398: -- Displaying first %d partial matches:
|
||||
|
||||
// @channel
|
||||
1399: Unknown Channel (usage: %s <#channel_name>)
|
||||
1400: Unknown Channel '%s' (usage: %s <#channel_name>)
|
||||
1401: '%s' Channel is password protected (usage: %s <#channel_name> <password>)
|
||||
1402: You're not in that channel, type '@join <#channel_name>'
|
||||
1399: Unknown channel (usage: %s <#channel_name>).
|
||||
1400: Unknown channel '%s' (usage: %s <#channel_name>).
|
||||
1401: Channel '%s' is password-protected (usage: %s <#channel_name> <password>).
|
||||
1402: You're not in that channel (use '@join <#channel_name>').
|
||||
1403: You're now in the '%s' channel.
|
||||
1404: %s failed.
|
||||
1405: Channel name must start with '#'.
|
||||
@ -1458,48 +1449,47 @@
|
||||
1433: Your global chat is now unbinded from the '#%s' channel.
|
||||
1434: You're already in the '%s' channel.
|
||||
1435: You're now in the '#%s' channel for '%s'.
|
||||
1436: Channel password can't be higher then %d.
|
||||
1437: Player '%s' has now been banned from '%s' channel
|
||||
1438: You cannot join the '%s' channel because you've been banned from it
|
||||
1439: Channel '%s' has no banned players
|
||||
1440: Player '%s' is not banned from this channel
|
||||
1441: Player '%s' has now been unbanned from the '%s' channel
|
||||
1442: Removed all bans from '%s' channel
|
||||
1443: -- '%s' ban list
|
||||
1444: - %d: %s
|
||||
1436: Channel password can't be over %d characters.
|
||||
1437: Player '%s' is banned from the '%s' channel.
|
||||
1438: You're currently banned from the '%s' channel.
|
||||
1439: Channel '%s' contains no banned players.
|
||||
1440: Player '%s' is not banned from this channel.
|
||||
1441: Player '%s' is unbanned from the '%s' channel.
|
||||
1442: Cleared all bans from the '%s' channel.
|
||||
1443: ---- '#%s' Ban List:
|
||||
//1444 free
|
||||
1445: - %s
|
||||
1446: You need to input a option
|
||||
1447: '%s' is not a known channel option
|
||||
1448: -- Available options
|
||||
1449: option '%s' is already enabled, if you'd like to disable it type '@channel setopt %s 0'
|
||||
1450: option '%s' is now enabled for channel '%s'
|
||||
1451: value '%d' for option '%s' is out of range (limit is 0-10)
|
||||
1452: option '%s' is now enabled for channel '%s' with %d seconds
|
||||
1453: option '%s' is now disabled for channel '%s'
|
||||
1454: option '%s' is now enabled for channel '%s'
|
||||
1446: You need to input an option.
|
||||
1447: Unknown channel option '%s'.
|
||||
1448: Channel '%s' deleted.
|
||||
1449: Option '%s' is already enabled (use '@channel setopt %s 0' to disable).
|
||||
1450: Option '%s' is enabled for channel '%s'.
|
||||
1451: Value '%d' for option '%s' is out of range (limit 0-10).
|
||||
1452: Option '%s' is enabled for channel '%s' at %d seconds.
|
||||
1453: Option '%s' is disabled for channel '%s'.
|
||||
//1454 free
|
||||
1455: You're talking too fast!
|
||||
1456: -- %s ban <channel name> <character name>
|
||||
1457: - bans <character name> from <channel name> channel
|
||||
1458: -- %s banlist <channel name>
|
||||
1459: - lists all banned characters from <channel name> channel
|
||||
1460: -- %s unban <channel name> <character name>
|
||||
1461: - unban <character name> from <channel name> channel
|
||||
1462: -- %s setopt <channel name> <option name> <option value>
|
||||
1463: - adds or removes <option name> with <option value> to <channel name> channel
|
||||
1464: Ban failed, not possible to ban/unban this user.
|
||||
1465: Player '%s' is already banned from this channel
|
||||
1466: For '%s' you need the amount of seconds (from 0 to 10)
|
||||
1467: -- %s unbanall <channel name>
|
||||
1468: - unbans everyone from <channel name>
|
||||
1469: * %s delete <channel_name>
|
||||
1470: -- Force people leave and destroy the specified channel
|
||||
1456: * %s ban <#channel_name> <player>
|
||||
1457: -- Bans the specified player from the channel.
|
||||
1458: * %s banlist <#channel_name>
|
||||
1459: -- Lists all players banned from the specified channel.
|
||||
1460: * %s unban <#channel_name> <player>
|
||||
1461: -- Unbans the specified player from the channel.
|
||||
1462: * %s setopt <#channel_name> <option> <value>
|
||||
1463: -- Sets an option and value for the specified channel.
|
||||
1464: Ban failed for player '%s'.
|
||||
1465: Player '%s' is already banned from this channel.
|
||||
1466: Input the number of seconds (0-10) for the '%s' option.
|
||||
1467: * %s unbanall <#channel_name>
|
||||
1468: -- Clears all bans from the specified channel.
|
||||
1469: * %s delete <#channel_name>
|
||||
1470: -- Destroys the specified channel.
|
||||
1471: * %s list mine
|
||||
1472: -- List all your joined channel
|
||||
1473: * %s join <channel_name> <channel_password>
|
||||
1474: -- join specified channel
|
||||
1475: ---- Joined Channels ----
|
||||
1476: You have not joined any channel yet
|
||||
1477: Channel %s deleted
|
||||
1472: -- Lists all channels you have joined.
|
||||
1473: * %s join <#channel_name> <channel_password>
|
||||
1474: -- Joins the specified channel.
|
||||
1475: ---- My Channels ----
|
||||
1476: You have not joined any channels.
|
||||
|
||||
//Custom translations
|
||||
//import: conf/msg_conf/import/map_msg_eng_conf.txt
|
||||
|
@ -1,7 +1,7 @@
|
||||
// rAthena map_msg_chn.conf
|
||||
// Message Configuration
|
||||
// For translation, just change msg here (second line), no need to modify source code,
|
||||
// or alternatively, use conf/import/msg_conf.txt
|
||||
// or alternatively, use conf/msg_conf/import/map_msg_chn_conf.txt
|
||||
// Format:
|
||||
// // English message
|
||||
// msg_number: translated message
|
||||
@ -348,7 +348,7 @@
|
||||
332: 32個城堡
|
||||
333: 33個城堡
|
||||
// 334: Thirty-Four Castles
|
||||
324: 完全統治
|
||||
334: 完全統治
|
||||
|
||||
// Templates for @who output
|
||||
343: 名字: %s
|
||||
@ -386,16 +386,7 @@
|
||||
375: <- 玩家 %s 已經離開決鬥 --
|
||||
376: -> 玩家 %s 已經接受決鬥 --
|
||||
377: -- 玩家 %s 已經拒絕決鬥 --
|
||||
// Main chat
|
||||
380: 主聊天功能正在啟動
|
||||
381: 主聊天功能已經啟動
|
||||
382: 主聊天功能正在被禁止
|
||||
383: 主聊天功能已經被禁止
|
||||
384: 當前可以使用主聊天功能用法: @main <on|off>, @main <訊息>.
|
||||
385: 當前不能使用主聊天功能用法: @main <on|off>, @main <訊息>.
|
||||
386: %s :Main: %s
|
||||
387: 禁言時不能使用主聊天功能
|
||||
388: 請使用 "@main on" 打開主聊天功能
|
||||
//378-389 free
|
||||
//NoAsk
|
||||
390: 自動拒絕功能啟動
|
||||
391: 自動拒絕功能關閉
|
||||
@ -443,10 +434,20 @@
|
||||
// Homunculus messages
|
||||
450: 你已經擁有一個人工生命體了
|
||||
|
||||
// Return pet to egg message
|
||||
451: 你無法收回寵物,因為你身上沒有空間了
|
||||
|
||||
// Message System
|
||||
460: 請輸入合法的語言 (usage: @langtype <language>).
|
||||
461: 語言現在被設定為 %s
|
||||
462: 這語言不被允許
|
||||
463: 訊息組態已被重新載入
|
||||
464: ---- 允許的語言:
|
||||
|
||||
// Messages of others (not for GM commands)
|
||||
// ----------------------------------------
|
||||
|
||||
//500: FREE
|
||||
//500 free
|
||||
501: 您上次登入時間是: %d-%m-%Y %H:%M:%S
|
||||
502: 白晝到來了
|
||||
503: 夜晚降臨了
|
||||
@ -455,8 +456,8 @@
|
||||
504: 使用了%d卡普拉點數(%s)和%d現金點數(%s)。剩餘%d卡普拉點數和%d現金點數。
|
||||
505: 得到了%d現金點數。總共%d點數。
|
||||
506: 得到了%d卡普拉點數。總共%d點數。
|
||||
505: 失去了%d現金點數。總共%d點數。
|
||||
506: 失去了%d卡普拉點數。總共%d點數。
|
||||
410: 失去了%d現金點數。總共%d點數。
|
||||
411: 失去了%d卡普拉點數。總共%d點數。
|
||||
|
||||
// Trade Spoof Messages
|
||||
507: 此玩家被禁止發言 %d 分鐘
|
||||
@ -559,10 +560,10 @@
|
||||
616: 跆拳少年/少女
|
||||
617: 拳聖
|
||||
618: 悟靈士
|
||||
//619: FREE
|
||||
//620: FREE
|
||||
620: 忍者
|
||||
621: 夏裝
|
||||
//619 free
|
||||
//620 free
|
||||
621: 忍者
|
||||
622: 夏裝
|
||||
623: Death Knight
|
||||
624: Dark Collector
|
||||
625: 盧恩騎士
|
||||
@ -758,28 +759,28 @@
|
||||
1009: Please enter a status type/flag (用法: @displaystatus <status type> <flag> <tick> {<val1> {<val2> {<val3>}}}).
|
||||
|
||||
// @stpoint
|
||||
1010: Please enter a number (用法: @stpoint <number of points>).
|
||||
1010: 請輸入有效數字 (用法: @stpoint <number of points>).
|
||||
|
||||
// @skpoint
|
||||
1011: Please enter a number (用法: @skpoint <number of points>).
|
||||
1011: 請輸入有效數字 (用法: @skpoint <number of points>).
|
||||
|
||||
// @zeny
|
||||
1012: 請輸入數量 (用法: @zeny <amount>).
|
||||
|
||||
// @param
|
||||
1013: Please enter a valid value (用法: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>).
|
||||
1013: 請輸入有效數值 (用法: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>).
|
||||
|
||||
// @guildlevelup
|
||||
1014: Please enter a valid level (用法: @guildlvup/@guildlvlup <# of levels>).
|
||||
1014: 請輸入有效等級 (用法: @guildlvup/@guildlvlup <# of levels>).
|
||||
|
||||
// @makeeg
|
||||
1015: Please enter a monster/egg name/ID (用法: @makeegg <pet>).
|
||||
1015: 請輸入魔物\寵物蛋的名稱\ID (用法: @makeegg <pet>).
|
||||
|
||||
// @petfriendly
|
||||
1016: Please enter a valid value (用法: @petfriendly <0-1000>).
|
||||
1016: 請輸入有效數值 (用法: @petfriendly <0-1000>).
|
||||
|
||||
// @pethungry
|
||||
1017: Please enter a valid number (用法: @pethungry <0-100>).
|
||||
1017: 請輸入有效數字 (用法: @pethungry <0-100>).
|
||||
|
||||
// @recall
|
||||
1018: 請輸入角色名稱 (用法: @recall <char name/ID>).
|
||||
@ -805,7 +806,7 @@
|
||||
1026: 請輸入角色名稱 (用法: @kick <char name/ID>).
|
||||
|
||||
// @questskill / @lostskill
|
||||
1027: Please enter a quest skill number.
|
||||
1027: 請輸入任務技能的編號
|
||||
|
||||
// @spiritball
|
||||
1028: 請輸入數量 (用法: @spiritball <number: 0-%d>).
|
||||
@ -817,11 +818,11 @@
|
||||
1030: 請輸入公會名稱 (用法: @guild <guild_name>).
|
||||
|
||||
// @idsearch
|
||||
1031: Please enter part of an 物品名稱 (用法: @idsearch <part_of_item_name>).
|
||||
1031: 請輸入部分的物品名稱 (用法: @idsearch <part_of_item_name>).
|
||||
|
||||
// @recallall / @guildrecall / @partyrecall
|
||||
1032: You are not authorized to warp somenone to your current map.
|
||||
1033: Because you are not authorized to warp from some maps, %d player(s) have not been recalled.
|
||||
1032: 你不被允許移動某人到你當前的地圖
|
||||
1033: 因為你不被允許移動某人到某地圖 %d 名玩家沒有被召回
|
||||
|
||||
// @guildrecall
|
||||
1034: 請輸入公會名稱/ID (用法: @guildrecall <guild_name/ID>).
|
||||
|
@ -386,16 +386,7 @@
|
||||
375: <- Joueur %s quitte le duel --
|
||||
376: -> Joueur %s accepte le duel --
|
||||
377: -- Joueur %s rejete la demande de duel --
|
||||
// Main chat
|
||||
380: Chat principal activé.
|
||||
381: Chat principal déjà activé.
|
||||
382: Chat principal désactivé.
|
||||
383: Chat principal déjà désactivé.
|
||||
384: Chat principal activé. Usage: @main <on|off>, @main <message>.
|
||||
385: Chat principal désactivé. Usage: @main <on|off>, @main <message>.
|
||||
386: %s :Main: %s
|
||||
387: Vous ne pouvez pas utiliser le chat principal en étant mute.
|
||||
388: Activer le chat principal avec la commande "@main on".
|
||||
//378-389 free
|
||||
//NoAsk
|
||||
390: Rejet automatique activé.
|
||||
391: Rejet automatique désactivé.
|
||||
@ -429,20 +420,23 @@
|
||||
419: Serveur bloqué à cause de la surpopulation.
|
||||
420: Votre compte n'est plus autorisé.
|
||||
421: Votre compte est totallement supprimé.
|
||||
423: Compte bannie jusqu'à
|
||||
423: Compte banni jusqu'à
|
||||
424: Login-server demande de %s le Joueur '%.*s'.
|
||||
425: Le Joueur '%.*s' n'existe pas.
|
||||
426: Votre niveau de GM ne vous autorise pas à %s le Joueur '%.*s'.
|
||||
427: Login-server est déconnecté. Impossible de %s le Joueur '%.*s'.
|
||||
428: bloqué
|
||||
429: bannie
|
||||
429: banni
|
||||
430: débloqué
|
||||
431: débannie
|
||||
431: débanni
|
||||
432: change le genre de
|
||||
|
||||
// Homunculus messages
|
||||
450: Vous possédez déjà un homunculus
|
||||
|
||||
// Return pet to egg message
|
||||
451: Vous ne pouvez pas remettre votre pet dans son oeuf car votre inventaire est plein.
|
||||
|
||||
// Message System
|
||||
460: Entrez une langue (usage: @langtype <langue>).
|
||||
461: La langue est maintenant en %s.
|
||||
@ -453,7 +447,7 @@
|
||||
// Autres Messages ( != GM commands)
|
||||
// ----------------------------------------
|
||||
|
||||
//500: FREE
|
||||
//500 free
|
||||
501: La date limite de votre compte est: %d-%m-%Y %H:%M:%S.
|
||||
502: Le Mode Jour s'est activé
|
||||
503: Le Mode Nuit s'est activé
|
||||
@ -466,9 +460,9 @@
|
||||
411: Supprimé %d kafra points. Total: %d points.
|
||||
|
||||
// Trade Spoof Messages
|
||||
507: Joueur bannie pendant %d minute(s).
|
||||
508: Joueur non-bannie (Option Ban désactivée).
|
||||
//509 Available....
|
||||
507: Joueur banni pendant %d minute(s).
|
||||
508: Joueur non-banni (Option Ban désactivée).
|
||||
//509 free
|
||||
|
||||
// mail system
|
||||
//----------------------
|
||||
@ -566,8 +560,8 @@
|
||||
616: Taekwon
|
||||
617: Star Gladiator
|
||||
618: Soul Linker
|
||||
//619: FREE
|
||||
//620: FREE
|
||||
//619 free
|
||||
//620 free
|
||||
621: Summer
|
||||
622: Gangsi
|
||||
623: Death Knight
|
||||
@ -1417,14 +1411,12 @@
|
||||
// @skillid (extension)
|
||||
1398: -- Affichage des premiers %d de la recherche:
|
||||
|
||||
// @join
|
||||
1399: Canal ('Channel') inconnu (usage: %s <#nom_canal>)
|
||||
1400: Canal ('Channel') inconnu '%s' (usage: %s <#nom_canal>)
|
||||
1401: Le Canal '%s' est protégé par un mot de passe (usage: %s <#nom_canal> <mot_de_passe>)
|
||||
1402: Vous n'êtes pas sur ce canal, taper '@join <#nom_canal>'
|
||||
1403: Vous êtes connecté(e) sur le Canal '%s'.
|
||||
|
||||
// @channel
|
||||
1399: Canal ('Channel') inconnu (usage: %s <#nom_canal>).
|
||||
1400: Canal ('Channel') inconnu '%s' (usage: %s <#nom_canal>).
|
||||
1401: Le Canal '%s' est protégé par un mot de passe (usage: %s <#nom_canal> <mot_de_passe>).
|
||||
1402: Vous n'êtes pas sur ce canal, taper '@join <#nom_canal>'.
|
||||
1403: Vous êtes connecté(e) sur le Canal '%s'.
|
||||
1404: %s échoué.
|
||||
1405: Le nom du Canal doit commencer par '#'.
|
||||
1406: La longueur du nom du Canal doit être comprise entre 3 et %d.
|
||||
@ -1456,7 +1448,48 @@
|
||||
1432: Votre chat global n'est relié à aucun canal.
|
||||
1433: Votre chat global est maintenant délié du Canal '#%s'.
|
||||
1434: Vous êtes déjà sur le canal '%s'.
|
||||
1435: Vous entrez sur le Canal '#%s' de '%s'.
|
||||
1435: Vous êtes sur le Canal '#%s' à '%s'.
|
||||
1436: Le Mot de passe du Canal ne peut pas dépasser %d caractères.
|
||||
1437: Le Joueur '%s' est banni du canal '%s'.
|
||||
1438: Vous ne pouvez pas rejoindre le canal '%s', vous en êtes banni.
|
||||
1439: Le canal '%s' n'a aucun joueur banni.
|
||||
1440: Le joueur '%s' n'est pas banni de ce canal.
|
||||
1441: Le joueur '%s' n'est plus banni du canal '%s'
|
||||
1442: Liste des bannis du canal '%s' supprimée.
|
||||
1443: ---- liste des bannis de '#%s':
|
||||
//1444 free
|
||||
1445: - %s
|
||||
1446: Veuillez entrer une option.
|
||||
1447: Option de canal '%s' inconnue.
|
||||
1448: Canal %s supprimé,
|
||||
1449: L'option '%s' est déjà activée, si vous souhaitez la désactiver entrez: '@channel setopt %s 0'.
|
||||
1450: Option '%s' maintenant activée sur le canal '%s'.
|
||||
1451: La valeur '%d' pour l'option '%s' est incorrecte (doit être comprise entre 0-10).
|
||||
1452: Option '%s' maintenant activée sur le canal '%s' avec %d secondes.
|
||||
1453: Option '%s' maintenant désactivée sur le canal '%s'.
|
||||
//1454 free
|
||||
1455: Vous parlez trop rapidement!
|
||||
1456: * %s ban <#nom_canal> <nom du personnage>
|
||||
1457: -- Banni <nom du personnage> du canal <#nom_canal>
|
||||
1458: * %s banlist <#nom_canal>
|
||||
1459: -- Listes de tous les personnages bannis du canal <#nom_canal>
|
||||
1460: * %s unban <#nom_canal> <nom du personnage>
|
||||
1461: -- Débanni <nom du personnage> du canal <#nom_canal>
|
||||
1462: * %s setopt <#nom_canal> <nom de l'option> <valeur de l'option>
|
||||
1463: -- Ajoute ou supprime <nom option> avec <valeur de l'option> du canal <#nom_canal>
|
||||
1464: Ban échoué, impossible de bannir/débannir cet utilisateur.
|
||||
1465: Le joueur '%s' est déjà banni de ce canal.
|
||||
1466: Pour '%s' vous avez besoin de la quantité de secondes (0 à 10 secs)
|
||||
1467: * %s unbanall <#nom_canal>
|
||||
1468: -- Débanni tous les bannis du canal <#nom_canal>
|
||||
1469: * %s delete <#nom_canal>
|
||||
1470: -- Force les utilisateurs à sortir du canal et supprime le canal spécifié
|
||||
1471: * %s list mine
|
||||
1472: -- Liste tous les canaux rejoins
|
||||
1473: * %s join <#nom_canal> <mot de passe du canal>
|
||||
1474: -- joindre le canal spécifié
|
||||
1475: ---- Canaux rejoins ----
|
||||
1476: Vous n'avez rejoins aucun canal.
|
||||
|
||||
//Custom translations
|
||||
//import: conf/msg_conf/import/map_msg_frn_conf.txt
|
||||
|
@ -1,19 +1,19 @@
|
||||
// rAthena map_msg_idn.conf
|
||||
// Pengaturan pesan
|
||||
// Diterjemahkan oleh [Cydh] dan [nanakiwurtz]
|
||||
// Untuk terjemahan, cukup ubah pesan di sini (pada baris ke-2), tidak perlu mengubah source code,
|
||||
// atau dapat dilakukan dengan cara lain, menggunakan conf/import/msg_conf.txt
|
||||
// Pengaturan pesan. Diterjemahkan oleh [Cydh] dan [nanakiwurtz]
|
||||
// Untuk terjemahan, cukup ubah pesan di sini (pada baris setelah pesan asli), tidak perlu mengubah source code,
|
||||
// atau dapat dilakukan dengan cara lain, gunakan conf/msg_conf/import/map_msg_idn_conf.txt
|
||||
// Format penulisan:
|
||||
// //nomor_pesan: pesan asli
|
||||
// nomor_pesan: pesan yang diterjemahkan
|
||||
|
||||
// 0-410: untuk perintah GM
|
||||
// 500-900 untuk lainnya
|
||||
// 0-410: digunakan untuk perintah GM
|
||||
// 500-900: digunakan untuk pesan lainnya
|
||||
// 900-1300: @atcommand
|
||||
|
||||
// Untuk meniadakan sebuah string (%s), maka jadikan maks. panjang string tersebut menjadi 0.
|
||||
// Untuk meniadakan sebuah string (%s), maka jadikan panjang string maksimal tersebut menjadi 0.
|
||||
// contoh:
|
||||
// 270: *%s %s* (@me format)
|
||||
// 270: *%.0s%s* (menghilangkan nama karakter dari pesan tersebut)
|
||||
// 270: *%.0s%s* (menghilangkan nama karakter dari @me)
|
||||
|
||||
// Pesan dari perintah GM
|
||||
// -----------------------
|
||||
@ -349,14 +349,14 @@
|
||||
// 334: Tigapuluh Empat Kastil
|
||||
334: Mendominasi Total!
|
||||
|
||||
// Contoh untuk keluaran @who
|
||||
// Contoh untuk hasil @who
|
||||
343: Nama: %s
|
||||
344: (%s)
|
||||
345: | Party: '%s'
|
||||
346: | Guild: '%s'
|
||||
//Kamu mungkin menghilangkan %s terakhir, kemudian kamu tidak akan melihat nama job pemain.
|
||||
//Kamu mungkin menghilangkan '%s' terakhir, hasilnya kamu tidak akan melihat nama job pemain.
|
||||
347: | Lv:%d/%d | Job: %s
|
||||
//Kamu mungkin menghilangkan %d terakhir, kemudian kamu tidak akan koordinat pemain, hanya nama map.
|
||||
//Kamu mungkin menghilangkan 2 '%d' terakhir, hasilnya tidak akan koordinat pemain, hanya nama map.
|
||||
348: | Lokasi: %s %d %d
|
||||
|
||||
// @duel (bagian 1)
|
||||
@ -385,16 +385,7 @@
|
||||
375: <- Pemain %s meninggalkan duel --
|
||||
376: -> Pemain %s telah menerima permintaan duel --
|
||||
377: -- Pemain %s telah menolak permintaan duel --
|
||||
// Main chat
|
||||
380: Main chat telah diaktifkan.
|
||||
381: Main chat sudah aktif..
|
||||
382: Main chat telah dimatikan..
|
||||
383: Main chat sudah dimatikan.
|
||||
384: Main chat saat ini tersedia. Penggunaan: @main <on|off>, @main <pesan>.
|
||||
385: Main chat saat ini dimatikan. Penggunaan: @main <on|off>, @main <pesan>.
|
||||
386: %s :Main: %s
|
||||
387: Kamu tidak dapat menggunakan obrolan 'Main' ketika bisu.
|
||||
388: Kamu sebaiknya mengaktifkan obrolan utama dengan perintah "@main on".
|
||||
//378-389 kosong
|
||||
//NoAsk
|
||||
390: Penolakan otomatis diaktifkan.
|
||||
391: Penolakan otomatis ditidakaktifkan.
|
||||
@ -442,6 +433,9 @@
|
||||
// Pesan-pesan untuk Homunculus
|
||||
450: Kamu sudah memiliki homunculus
|
||||
|
||||
// Pesan tentang mengembalikan peliharaan ke telur
|
||||
451: Kamu tidak dapat mengembalikan peliharaan kamu karena inventory penuh.
|
||||
|
||||
// Sistem Pesan
|
||||
460: Harap masukkan tipe bahasa yang valid. (Penggunaan: @langtype <bahasa>).
|
||||
461: Bahasa saat ini dipilih menjadi %s.
|
||||
@ -452,7 +446,7 @@
|
||||
// Pesan-pesan untuk keperluan lain (Bukan untuk perintah GM)
|
||||
// ----------------------------------------
|
||||
|
||||
//500: KOSONG
|
||||
//500: kosong
|
||||
501: Batas akun kamu adalah: %d-%m-%Y %H:%M:%S.
|
||||
502: Mode siang diaktifkan.
|
||||
503: Mode malam diaktifkan.
|
||||
@ -564,8 +558,8 @@
|
||||
616: Taekwon
|
||||
617: Star Gladiator
|
||||
618: Soul Linker
|
||||
//619: KOSONG
|
||||
//620: KOSONG
|
||||
//619: kosong
|
||||
//620: kosong
|
||||
621: Summer
|
||||
622: Gangsi
|
||||
623: Death Knight
|
||||
@ -700,7 +694,7 @@
|
||||
// @jobchange
|
||||
922: Harap masukkan ID Job.
|
||||
923: Kamu tidak bisa berganti job menggunakan perintah ini.
|
||||
//924-979 KOSONG (Masih kosong, dipakai untuk job-job berikutnya)
|
||||
//924-979 kosong (Masih kosong, dipakai untuk job-job berikutnya)
|
||||
|
||||
// @kami
|
||||
980: Harap masukkan pesan (Penggunaan: @kami <pesan>).
|
||||
@ -1361,19 +1355,19 @@
|
||||
|
||||
// @accinfo
|
||||
1365: Penggunaan: @accinfo/@accountinfo <id_akun/nama karakter>
|
||||
1366: Kamu diperbolehkan mencari bagian nama dengan menggunakan '%' dalam pencarian, misal. "@accinfo %Mario%" akan menampilkan daftar semua karakter dengan nama "Mario".
|
||||
1366: Kamu boleh mencari bagian nama dengan menggunakan '%' dalam pencarian, misal "@accinfo %Mario%" akan menampilkan daftar semua karakter dengan nama "Mario".
|
||||
|
||||
// @set
|
||||
1367: Penggunaan: @set <nama variable> <nilai>
|
||||
1368: Penggunaan: ex. "@set PoringCharVar 50"
|
||||
1369: Penggunaan: ex. "@set PoringCharVarSTR$ Super Duper String"
|
||||
1370: Penggunaan: ex. "@set PoringCharVarSTR$" menghasilkan nilainya, Super Duper String.
|
||||
1371: Variabel pada NPC tidak mungkin digunakan dengan @set.
|
||||
1372: Variabel instanis tidak mungkin digunakan dengan @set.
|
||||
1373: Nilai %s saat ini :%d
|
||||
1374: Nilai %s saat ini :%s
|
||||
1368: Contoh penggunaan: "@set PoringCharVar 50"
|
||||
1369: Contoh penggunaan: "@set PoringCharVarSTR$ Super Duper String"
|
||||
1370: Contoh penggunaan: "@set PoringCharVarSTR$" menampilkan nilainya, Super Duper String.
|
||||
1371: Variabel pada NPC tidak boleh digunakan dengan @set.
|
||||
1372: Variabel instansi tidak boleh digunakan dengan @set.
|
||||
1373: Nilai %s saat ini: %d
|
||||
1374: Nilai %s saat ini: %s
|
||||
1375: %s kosong
|
||||
1376: Jenis data %s tidak didukung :%u
|
||||
1376: Jenis data %s tidak didukung: %u
|
||||
|
||||
// @reloadquestdb
|
||||
1377: Database Quest sudah dimuat ulang.
|
||||
@ -1415,14 +1409,12 @@
|
||||
// @skillid (tambahan)
|
||||
1398: -- Menampilkan %d bagian pertama yang cocok:
|
||||
|
||||
// @join
|
||||
// @channel
|
||||
1399: Channel tidak diketahui. (Penggunaan: %s <#nama_channel>)
|
||||
1400: Channel '%s' tidak diketahui. (Penggunaan: %s <#nama_channel>)
|
||||
1401: Channel '%s' menggunakan password. (Penggunaan: %s <#nama_channel> <password>)
|
||||
1402: kamu tidak berada di channel tersebut, ketikkan '@join <#nama_channel>'
|
||||
1403: Kamu sekarang berada di channel '%s'.
|
||||
|
||||
// @channel
|
||||
1404: %s gagal.
|
||||
1405: Nama Channel harus dimulai dengan '#'.
|
||||
1406: Panjang nama channel harus di antara 3 dan %d.
|
||||
@ -1446,7 +1438,7 @@
|
||||
1424: -- Meninggalkan channel yang ditentukan.
|
||||
1425: Kamu bukan bagian dari channel '%s'.
|
||||
1426: Kamu meninggalkan channel '%s'.
|
||||
1427: * %s bindto <#name_channel>
|
||||
1427: * %s bindto <#nama_channel>
|
||||
1428: -- Mengikat chat globalmu ke channel yang ditentukan, mengirim semua pesan global ke channel tersebut.
|
||||
1429: * %s unbind
|
||||
1430: -- Melepaskan chat globalmu dari channel yang diikuti, jika ada.
|
||||
@ -1455,6 +1447,47 @@
|
||||
1433: Chat globalmu sudah dilepaskan dari channel '#%s'.
|
||||
1434: Kamu telah berada di channel '%s'.
|
||||
1435: Kamu sekarang berada di channel '#%s' untuk '%s'.
|
||||
1436: Password channel tidak dapat lebih banyak dari %d.
|
||||
1437: Pemain '%s' sekarang telah diban dari channel '%s'.
|
||||
1438: Kamu tidak dapat bergabung di channel '%s' karena kamu telah diban dari channel tersebut.
|
||||
1439: Channel '%s' tidak memiliki pemain yang diban.
|
||||
1440: Pemain '%s' tidak diban dari channel ini.
|
||||
1441: Pemain '%s' sudah diunban dari channel '%s' saat ini.
|
||||
1442: Menghilangkan semua 'ban' dari channel '%s'.
|
||||
1443: ---- Daftar 'ban' '#%s':
|
||||
//1444 kosong
|
||||
1445: - %s
|
||||
1446: Kamu butuh untuk memasukkan pilihan.
|
||||
1447: '%s' adalah pilihan channel yang tidak diketahui.
|
||||
1448: Channel %s dihapus.
|
||||
1449: Pilihan '%s' sudah diaktifkan, jika kamu ingin mematikannya ketik '@channel setopt %s 0'.
|
||||
1450: Pilihan '%s' saat ini diaktifkan untuk channel '%s'.
|
||||
1451: Nilai '%d' keluar dari batas untuk option '%s' (batasnya 0-10).
|
||||
1452: Pilihan '%s' sekarang diaktifkan untuk channel '%s' dalam %d detik.
|
||||
1453: Pilihan '%s' sekarang dimatikan untuk channel '%s'.
|
||||
//1454 kosong
|
||||
1455: Kamu berbicara terlalu cepat!
|
||||
1456: * %s ban <#nama_channel> <nama karakter>
|
||||
1457: -- ban <nama karakter> dari channel <#nama_channel>
|
||||
1458: * %s banlist <#nama_channel>
|
||||
1459: -- daftar semua pemain yang diban dari channel <#nama_channel>
|
||||
1460: * %s unban <#nama_channel> <nama karakter>
|
||||
1461: -- unban <nama karakter> dari channel <#nama_channel>
|
||||
1462: * %s setopt <#nama_channel> <nama pilihan> <nilai pilihan>
|
||||
1463: -- menambahkan atau mengurangi <nama pilihan> dengan <nilai pilihan> untuk channel <#nama_channel>
|
||||
1464: 'Ban' gagal, tidak mungkin untuk 'ban'/'unban' pengguna ini.
|
||||
1465: Pemain '%s' sudah diban dari channel ini.
|
||||
1466: Untuk '%s' kamu membutuhkan jumlah dalam detik (dari 0 sampai 10)
|
||||
1467: * %s unbanall <#nama_channel>
|
||||
1468: -- 'unban' semua orang dari <#nama_channel>
|
||||
1469: * %s delete <#nama_channel>
|
||||
1470: -- Memaksa pemain meninggalkan channel dan menghilangkan channel yang ditentukan.
|
||||
1471: * %s list mine
|
||||
1472: -- Daftar semua channel yang kamu ikuti.
|
||||
1473: * %s join <#nama_channel> <password_channel>
|
||||
1474: -- bergabung ke channel yang ditentukan
|
||||
1475: ---- Channel yang diikuti ----
|
||||
1476: Kamu tidak bergabung ke channel manapun saat ini.
|
||||
|
||||
//Bila ada terjemahan lain, cukup tulis di file conf/import/msg_conf.txt
|
||||
//Bila ada terjemahan lain
|
||||
//import: conf/msg_conf/import/map_msg_idn_conf.txt
|
||||
|
@ -391,16 +391,7 @@
|
||||
375: <- Jogador %s abandonou o duelo --
|
||||
376: -> Jogador %s aceitou o desafio --
|
||||
377: -- Jogador %s não aceitou o desafio --
|
||||
// Chat principal
|
||||
380: Chat principal ativado.
|
||||
381: Chat principal já está ativado.
|
||||
382: Chat principal desativado.
|
||||
383: Chat principal já está desativado.
|
||||
384: Chat principal atualmente ativado. Uso: @main <on|off>, @main <mensagem>.
|
||||
385: Chat principal atualmente desativado. Uso: @main <on|off>, @main <mensagem>.
|
||||
386: %s :Main: %s
|
||||
387: Você não pode usar o Chat principal enquanto estiver mutado.
|
||||
388: Você pode habilitar o chat principal pelo comando "@main on".
|
||||
//378-389 livre
|
||||
//NoAsk
|
||||
390: Autorejeição ativada.
|
||||
391: Autorejeição desativada.
|
||||
@ -461,7 +452,7 @@
|
||||
// Mensagens para outros (não para comandos de Game Master)
|
||||
// ----------------------------------------
|
||||
|
||||
//500: LIVRE
|
||||
//500 livre
|
||||
501: A sua conta expira em: %d-%m-%Y %H:%M:%S.
|
||||
502: Está de dia
|
||||
503: Está de noite
|
||||
@ -570,8 +561,8 @@
|
||||
616: Taekwon
|
||||
617: Mestre Taekwon
|
||||
618: Espiritualista
|
||||
//619: LIVRE
|
||||
//620: LIVRE
|
||||
//619 livre
|
||||
//620 livre
|
||||
621: Praia
|
||||
622: Gangsi
|
||||
623: Cavaleiro Sombrio
|
||||
@ -637,7 +628,7 @@
|
||||
678: Você não é mais o líder do clã.
|
||||
679: Você se tornou o líder do clã!
|
||||
680: Você recuperou-se!
|
||||
//681-899 free
|
||||
//681-899 livre
|
||||
|
||||
681: Cavaleiro Rúnico T
|
||||
682: Arcano T
|
||||
|
@ -390,16 +390,7 @@
|
||||
376: -> Игрок %s принял приглашение --
|
||||
377: -- Игрок %s отверг приглашение --
|
||||
|
||||
// Сообщения команд Общего чата
|
||||
380: Общий чат включен.
|
||||
381: Общий чат уже включен.
|
||||
382: Общий чат выключен.
|
||||
383: Общий чат уже выключен.
|
||||
384: Общий чат включен. Использование: @main <on|off>, @main <сообщение>.
|
||||
385: Общий чат выключен. Использование: @main <on|off>, @main <сообщение>.
|
||||
386: %s :Общий: %s
|
||||
387: Вы не можете использовать Общий чат, когда вы безмолвны.
|
||||
388: Вы должны включить Общий чат через команду "@main on".
|
||||
//378-389 НЕ ИСПОЛЬЗУЕТСЯ
|
||||
|
||||
// Сообщения команды @NoAsk
|
||||
390: Автоматический отказ включен.
|
||||
@ -459,7 +450,7 @@
|
||||
// ----------------------------------------
|
||||
// Остальные сообщения
|
||||
// ----------------------------------------
|
||||
//500: НЕ ИСПОЛЬЗУЕТСЯ
|
||||
//500 НЕ ИСПОЛЬЗУЕТСЯ
|
||||
501: Срок действия вашего аккаунта: %d-%m-%Y %H:%M:%S.
|
||||
502: Наступил день
|
||||
503: Наступила ночь
|
||||
@ -571,8 +562,8 @@
|
||||
616: Taekwon
|
||||
617: Star Gladiator
|
||||
618: Soul Linker
|
||||
//619: НЕ ИСПОЛЬЗУЕТСЯ
|
||||
//620: НЕ ИСПОЛЬЗУЕТСЯ
|
||||
//619 НЕ ИСПОЛЬЗУЕТСЯ
|
||||
//620 НЕ ИСПОЛЬЗУЕТСЯ
|
||||
621: Summer
|
||||
622: Gangsi
|
||||
623: Death Knight
|
||||
|
@ -1,7 +1,7 @@
|
||||
// rAthena map_msg_spn.conf
|
||||
// Message Configuration
|
||||
// For translation, just change msg here (second line), no need to modify source code,
|
||||
// or alternatively, use conf/import/msg_conf.txt
|
||||
// or alternatively, use conf/import/map_msg_spn_conf.txt
|
||||
// Format:
|
||||
// // English message
|
||||
// msg_number: translated message
|
||||
@ -392,16 +392,7 @@
|
||||
375: <- El jugador %s ha abandonado el duelo --
|
||||
376: -> El jugador %s ha aceptado el duelo --
|
||||
377: -- El jugador %s ha rechazado el duelo --
|
||||
// Main chat
|
||||
380: Se ha activado el Main chat.
|
||||
381: El Main chat ya está activo.
|
||||
382: Se ha desactivado el Main chat.
|
||||
383: El Main chat ya está desactivado.
|
||||
384: El Main chat está activado en estos instantes. Uso: @main <on|off>, @main <mensaje>.
|
||||
385: El Main chat está desactivado en estos instantes. Uso: @main <on|off>, @main <mensaje>.
|
||||
386: %s :Main: %s
|
||||
387: No puedes usar el Main chat mientras estás muteado.
|
||||
388: Deberías activar el Main chat usando el comando "@main on".
|
||||
//378-389 free
|
||||
//NoAsk
|
||||
390: Se ha activado el autoreject.
|
||||
391: Se ha desactivado el autoreject.
|
||||
@ -434,7 +425,7 @@
|
||||
417: Tu archivo EXE del juego no es el de la última versión.
|
||||
418: Se ha prohibido el log in de tu cuenta.
|
||||
419: El servidor está sobrecargado por sobrepoblación.
|
||||
//para 420: No sé si esta traducción refleja lo que se quería decir. Vaya inglés...
|
||||
//NdT 420: No sé si esta traducción refleja lo que se quería decir. Vaya inglés...
|
||||
420: Tu cuenta no tiene más autorización.
|
||||
421: Tu cuenta ha sido totalmente borrada.
|
||||
423: Tu cuenta ha sido baneada hasta el
|
||||
@ -451,8 +442,8 @@
|
||||
// Homunculus messages
|
||||
450: Ya tienes un homúnculo.
|
||||
|
||||
// Return pet to egg message
|
||||
451: No puedes retornar tu pet porque tu inventory está llena.
|
||||
// Return pet to egg message
|
||||
451: No puedes devolver tu pet al huevo porque tu inventario está lleno.
|
||||
|
||||
// Message System
|
||||
460: Por favor, especifica una lengua válida (uso: @langtype <lengua>).
|
||||
@ -464,7 +455,7 @@
|
||||
// Messages of others (not for GM commands)
|
||||
// ----------------------------------------
|
||||
|
||||
//500: FREE
|
||||
//500 free
|
||||
501: El límite de tiempo de tu cuenta es: %d-%m-%Y %H:%M:%S.
|
||||
502: El Modo Día está activo
|
||||
503: El Modo Noche está activo
|
||||
@ -578,8 +569,8 @@
|
||||
616: Taekwon
|
||||
617: Star Gladiator
|
||||
618: Soul Linker
|
||||
//619: FREE
|
||||
//620: FREE
|
||||
//619 free
|
||||
//620 free
|
||||
621: Summer
|
||||
622: Gangsi
|
||||
623: Death Knight
|
||||
@ -1044,7 +1035,8 @@
|
||||
|
||||
// @skilltree
|
||||
1167: Uso: @skilltree <ID skill> <objetivo>
|
||||
1168: El jugador está usando el árbol de skills de %s (%d puntos de basic skill).
|
||||
//NdT 1168: No estoy seguro de que sea correcta
|
||||
1168: El jugador está usando el skill tree de %s (%d puntos de basic skill).
|
||||
1169: El jugador no puede usar la skill indicada.
|
||||
1170: El jugador necesita el nivel %d de la skill %s.
|
||||
1171: El jugador tiene todos los requisitos para la skill indicada.
|
||||
@ -1432,14 +1424,12 @@
|
||||
// @skillid (extension)
|
||||
1398: -- Se muestran las primeras %d coincidencias parciales:
|
||||
|
||||
// @join
|
||||
1399: Canal Desconocido (uso: %s <#nombre_canal>)
|
||||
1400: Se desconoce el canal '%s' (uso: %s <#nombre_canal>)
|
||||
1401: El canal '%s' está protegido por contraseña (uso: %s <#nombre_canal> <contraseña>)
|
||||
1402: No estás en ese canal. Para entrar, escribe '@join <#nombre_canal>'
|
||||
1403: Estás ahora en el canal '%s'.
|
||||
|
||||
// @channel
|
||||
1399: Canal Desconocido (uso: %s <#nombre_canal>).
|
||||
1400: Se desconoce el canal '%s' (uso: %s <#nombre_canal>).
|
||||
1401: El canal '%s' está protegido por contraseña (uso: %s <#nombre_canal> <contraseña>).
|
||||
1402: No estás en ese canal. Para entrar, escribe '@join <#nombre_canal>'.
|
||||
1403: Estás ahora en el canal '%s'.
|
||||
1404: %s fallido.
|
||||
1405: El nombre del canal debe empezar por '#'.
|
||||
1406: El nombre del canal debe tener entre 3 y %d caracteres.
|
||||
@ -1472,6 +1462,47 @@
|
||||
1433: Tu chat global ya no está unido al canal '%s'.
|
||||
1434: Ya estás en el canal '%s'.
|
||||
1435: Estás ahora en el canal '#%s' gracias a '%s'.
|
||||
1436: La contraseña del canal no puede ser mas grande que %d.
|
||||
1437: El jugador '%s' ha sido banneado del canal '%s'
|
||||
1438: No puedes ingresar al canal '%s' por que estás banneado.
|
||||
1439: El canal '%s' no tiene ningún jugador banneado.
|
||||
1440: El jugador '%s' no esta banneado de este canal.
|
||||
1441: El jugador '%s' ha sido desbanneado del canal '%s'
|
||||
1442: Removidos todos los banneados del canal '%s'
|
||||
1443: ---- '#%s' Lista de banneados:
|
||||
//1444 free
|
||||
1445: - %s
|
||||
1446: Necesitas ingresar una opción.
|
||||
1447: '%s' Es una opción invalida.
|
||||
1448: Canal %s eliminado.
|
||||
1449: Opción '%s' está activada, si deseas desactivarla escribe '@channel setopt %s 0'.
|
||||
1450: Opción '%s' está activada para el canal '%s'.
|
||||
1451: Valores '%d' de la opción '%s' está fuera del rango (El limite es 0-10).
|
||||
1452: Opción '%s' está activada para el canal '%s' con %d segundos.
|
||||
1453: Opción '%s' está desactivada para el canal '%s'.
|
||||
//1454 free
|
||||
1455: Estás hablando muy rápido!
|
||||
1456: * %s ban <#nombre_canal> <character name>
|
||||
1457: -- Bans <character name> del canal <#nombre_canal>
|
||||
1458: * %s banlist <#nombre_canal>
|
||||
1459: -- Lista de todos los jugadores banneados del canal <#nombre_canal>
|
||||
1460: * %s desbannear <#nombre_canal> <character name>
|
||||
1461: -- Desbannear <character name> del canal <channel name>
|
||||
1462: * %s setopt <#nombre_canal> <option name> <option value>
|
||||
1463: -- Añade o remueve <option name> con <option value> del canal <#nombre_canal>
|
||||
1464: No es posible banear o desbannear a este jugador
|
||||
1465: El jugador '%s' ya esta banneado de este canal
|
||||
1466: Para '%s' necesitas una cantidad de segundos (De 0 a 10)
|
||||
1467: * %s unbanall <#nombre_canal>
|
||||
1468: -- Desbaneados todos del canal <#nombre_canal>
|
||||
1469: * %s delete <#nombre_canal>
|
||||
1470: -- Fuerza a los jugadores para dejar y destruir un canal especific.
|
||||
1471: * %s list mine
|
||||
1472: -- Lista de todos tus canales ingresados
|
||||
1473: * %s ingresa <#nombre_canal> <channel_password>
|
||||
1474: -- Ingresado a un canal especifico.
|
||||
1475: ---- Canales ingresados ----
|
||||
1476: No has entrado a ningún canal todavía.
|
||||
|
||||
//Custom translations
|
||||
//import: conf/msg_conf/import/map_msg_spn_conf.txt
|
||||
|
@ -160,7 +160,7 @@
|
||||
3020,0xf8, , 0, 3, 100,all, 0x018 //KO_ZENKAI
|
||||
3010,0xfc, , 0, 1,1000,enemy, 0x020 //KO_MAKIBISHI
|
||||
|
||||
8020,0xf5, , 0, 3,2300:2100:1900:1700:1500,enemy, 0x018 //MH_POISON_MIST
|
||||
8020,0xf5, , 3, 0,2300:2100:1900:1700:1500,enemy, 0x018 //MH_POISON_MIST
|
||||
8033,0x7e, , 0, 0, -1,all, 0x003 //MH_STEINWAND
|
||||
8025,0x86, , 0, 2:2:3:3:4,1000,enemy, 0x018 //MH_XENO_SLASHER
|
||||
8041,0xf6, , 1:1:2:2:3, 0,2000,enemy, 0x01A //MH_LAVA_SLIDE
|
||||
|
@ -1482,8 +1482,10 @@ ACMD_FUNC(pvpoff)
|
||||
|
||||
map[sd->bl.m].flag.pvp = 0;
|
||||
|
||||
if (!battle_config.pk_mode)
|
||||
if (!battle_config.pk_mode){
|
||||
clif_map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING);
|
||||
clif_maptypeproperty2(&sd->bl,ALL_SAMEMAP);
|
||||
}
|
||||
map_foreachinmap(atcommand_pvpoff_sub,sd->bl.m, BL_PC);
|
||||
map_foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0);
|
||||
clif_displaymessage(fd, msg_txt(sd,31)); // PvP: Off.
|
||||
@ -1518,9 +1520,9 @@ ACMD_FUNC(pvpon)
|
||||
|
||||
map[sd->bl.m].flag.pvp = 1;
|
||||
|
||||
if (!battle_config.pk_mode)
|
||||
{// display pvp circle and rank
|
||||
if (!battle_config.pk_mode) {// display pvp circle and rank
|
||||
clif_map_property_mapall(sd->bl.m, MAPPROPERTY_FREEPVPZONE);
|
||||
clif_maptypeproperty2(&sd->bl,ALL_SAMEMAP);
|
||||
map_foreachinmap(atcommand_pvpon_sub,sd->bl.m, BL_PC);
|
||||
}
|
||||
|
||||
@ -1543,6 +1545,7 @@ ACMD_FUNC(gvgoff)
|
||||
|
||||
map[sd->bl.m].flag.gvg = 0;
|
||||
clif_map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING);
|
||||
clif_maptypeproperty2(&sd->bl,ALL_SAMEMAP);
|
||||
map_foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0);
|
||||
clif_displaymessage(fd, msg_txt(sd,33)); // GvG: Off.
|
||||
|
||||
@ -1563,6 +1566,7 @@ ACMD_FUNC(gvgon)
|
||||
|
||||
map[sd->bl.m].flag.gvg = 1;
|
||||
clif_map_property_mapall(sd->bl.m, MAPPROPERTY_AGITZONE);
|
||||
clif_maptypeproperty2(&sd->bl,ALL_SAMEMAP);
|
||||
clif_displaymessage(fd, msg_txt(sd,34)); // GvG: On.
|
||||
|
||||
return 0;
|
||||
@ -8765,7 +8769,7 @@ ACMD_FUNC(join){
|
||||
char chname[CHAN_NAME_LENGTH], pass[CHAN_NAME_LENGTH];
|
||||
|
||||
if( !message || !*message || sscanf(message, "%s %s", chname, pass) < 1 ) {
|
||||
sprintf(atcmd_output, msg_txt(sd,1399),command); // Unknown Channel (usage: %s <#channel_name>)
|
||||
sprintf(atcmd_output, msg_txt(sd,1399),command); // Unknown channel (usage: %s <#channel_name>).
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
return -1;
|
||||
}
|
||||
@ -8791,9 +8795,9 @@ static inline void atcmd_channel_help(struct map_session_data *sd, const char *c
|
||||
|
||||
//option delete
|
||||
if(can_delete){
|
||||
sprintf(atcmd_output, msg_txt(sd,1469),command);// * %s delete <channel_name>
|
||||
sprintf(atcmd_output, msg_txt(sd,1469),command);// * %s delete <#channel_name>
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
clif_displaymessage(fd, msg_txt(sd,1470)); // -- Force people leave and destroy the specified channel
|
||||
clif_displaymessage(fd, msg_txt(sd,1470)); // -- Destroys the specified channel.
|
||||
}
|
||||
|
||||
//option list
|
||||
@ -8802,7 +8806,7 @@ static inline void atcmd_channel_help(struct map_session_data *sd, const char *c
|
||||
clif_displaymessage(fd, msg_txt(sd,1418));// -- Lists all public channels.
|
||||
sprintf(atcmd_output, msg_txt(sd,1471),command);// * %s list mine
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
clif_displaymessage(fd, msg_txt(sd,1472));
|
||||
clif_displaymessage(fd, msg_txt(sd,1472));// -- Lists all channels you have joined.
|
||||
if( can_create ) {
|
||||
sprintf(atcmd_output, msg_txt(sd,1419),command);// * %s list colors
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
@ -8817,9 +8821,9 @@ static inline void atcmd_channel_help(struct map_session_data *sd, const char *c
|
||||
}
|
||||
|
||||
//option join
|
||||
sprintf(atcmd_output, msg_txt(sd,1473),command);// * %s join <channel_name>
|
||||
sprintf(atcmd_output, msg_txt(sd,1473),command);// * %s join <#channel_name> <channel_password>
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
clif_displaymessage(fd, msg_txt(sd,1474));
|
||||
clif_displaymessage(fd, msg_txt(sd,1474));// -- Joins the specified channel.
|
||||
|
||||
//option leave
|
||||
sprintf(atcmd_output, msg_txt(sd,1423),command);// * %s leave <#channel_name>
|
||||
@ -8838,25 +8842,25 @@ static inline void atcmd_channel_help(struct map_session_data *sd, const char *c
|
||||
|
||||
//option ban/unban/banlist
|
||||
if( can_create ) {
|
||||
sprintf(atcmd_output, msg_txt(sd,1456),command);// -- %s ban <channel name> <character name>
|
||||
sprintf(atcmd_output, msg_txt(sd,1456),command);// * %s ban <#channel_name> <player>
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
clif_displaymessage(fd, msg_txt(sd,1457));// - bans <character name> from <channel name> channel
|
||||
sprintf(atcmd_output, msg_txt(sd,1458),command);// -- %s banlist <channel name>
|
||||
clif_displaymessage(fd, msg_txt(sd,1457));// -- Bans the specified player from the channel.
|
||||
sprintf(atcmd_output, msg_txt(sd,1458),command);// * %s banlist <#channel_name>
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
clif_displaymessage(fd, msg_txt(sd,1459));// - lists all banned characters from <channel name> channel
|
||||
sprintf(atcmd_output, msg_txt(sd,1460),command);// -- %s unban <channel name> <character name>
|
||||
clif_displaymessage(fd, msg_txt(sd,1459));// -- Lists all players banned from the specified channel.
|
||||
sprintf(atcmd_output, msg_txt(sd,1460),command);// * %s unban <#channel_name> <player>
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
clif_displaymessage(fd, msg_txt(sd,1461));// - unban <character name> from <channel name> channel
|
||||
sprintf(atcmd_output, msg_txt(sd,1467),command);// -- %s unbanall <channel name>
|
||||
clif_displaymessage(fd, msg_txt(sd,1461));// -- Unbans the specified player from the channel.
|
||||
sprintf(atcmd_output, msg_txt(sd,1467),command);// * %s unbanall <#channel_name>
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
clif_displaymessage(fd, msg_txt(sd,1468));// - unbans everyone from <channel name>
|
||||
clif_displaymessage(fd, msg_txt(sd,1468));// -- Clears all bans from the specified channel.
|
||||
}
|
||||
|
||||
//option setopt
|
||||
if(can_create){
|
||||
sprintf(atcmd_output, msg_txt(sd,1462),command);// -- %s setopt <channel name> <option name> <option value>
|
||||
sprintf(atcmd_output, msg_txt(sd,1462),command);// * %s setopt <#channel_name> <option> <value>
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
clif_displaymessage(fd, msg_txt(sd,1463));// - adds or removes <option name> with <option value> to <channel name> channel
|
||||
clif_displaymessage(fd, msg_txt(sd,1463));// -- Sets an option and value for the specified channel.
|
||||
}
|
||||
|
||||
sprintf(atcmd_output, msg_txt(sd,1404),command); // %s failed.
|
||||
@ -8874,7 +8878,7 @@ ACMD_FUNC(channel) {
|
||||
|
||||
if( strcmpi(key,"create") == 0 && ( Channel_Config.user_chenable || pc_has_permission(sd, PC_PERM_CHANNEL_ADMIN) ) ) {
|
||||
if(sub3[0] != '\0'){
|
||||
clif_displaymessage(fd, msg_txt(sd,1408)); // Channel password may not contain spaces
|
||||
clif_displaymessage(fd, msg_txt(sd,1408)); // Channel password may not contain spaces.
|
||||
return -1;
|
||||
}
|
||||
return channel_pccreate(sd,sub1,sub2);
|
||||
@ -8894,6 +8898,8 @@ ACMD_FUNC(channel) {
|
||||
return channel_pcunbind(sd);
|
||||
} else if ( strcmpi(key,"ban") == 0 ) {
|
||||
return channel_pcban(sd,sub1,map_nick2sd(sub2),0);
|
||||
} else if ( strcmpi(key,"banlist") == 0 ) {
|
||||
return channel_pcban(sd,sub1,NULL,3);
|
||||
} else if ( strcmpi(key,"unban") == 0 ) {
|
||||
return channel_pcban(sd,sub1,map_nick2sd(sub2),1);
|
||||
} else if ( strcmpi(key,"unbanall") == 0 ) {
|
||||
|
@ -1924,7 +1924,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
|
||||
cri += sd->bonus.arrow_cri;
|
||||
}
|
||||
if( sc && sc->data[SC_CAMOUFLAGE] )
|
||||
cri += 10 * (10-sc->data[SC_CAMOUFLAGE]->val4);
|
||||
cri += 10 * sc->data[SC_CAMOUFLAGE]->val3;
|
||||
//The official equation is *2, but that only applies when sd's do critical.
|
||||
//Therefore, we use the old value 3 on cases when an sd gets attacked by a mob
|
||||
cri -= tstatus->luk*(!sd&&tsd?3:2);
|
||||
@ -3232,7 +3232,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
|
||||
def2 += 2 * tsc->data[SC_GT_REVITALIZE]->val4;
|
||||
|
||||
if( tsc && tsc->data[SC_CAMOUFLAGE] ){
|
||||
i = 5 * (10-tsc->data[SC_CAMOUFLAGE]->val4);
|
||||
i = 5 * tsc->data[SC_CAMOUFLAGE]->val3;
|
||||
def1 -= def1 * i / 100;
|
||||
def2 -= def2 * i / 100;
|
||||
}
|
||||
@ -3349,7 +3349,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
|
||||
}
|
||||
|
||||
if(sc->data[SC_CAMOUFLAGE])
|
||||
ATK_ADD(30 * (10-sc->data[SC_CAMOUFLAGE]->val4) );
|
||||
ATK_ADD(30 * sc->data[SC_CAMOUFLAGE]->val3 );
|
||||
}
|
||||
|
||||
//Refine bonus
|
||||
|
@ -20,6 +20,11 @@
|
||||
static DBMap* channel_db; // channels
|
||||
DBMap* channel_get_db(void){ return channel_db; }
|
||||
|
||||
struct chan_banentry {
|
||||
int char_id;
|
||||
char char_name[NAME_LENGTH];
|
||||
} chan_banentry;
|
||||
|
||||
/*
|
||||
* Create *channel
|
||||
* - will then add it in channel_db if type not map or ally
|
||||
@ -37,7 +42,7 @@ struct Channel* channel_create(char *name, char *pass, unsigned char color, enum
|
||||
|
||||
CREATE( channel, struct Channel, 1 ); //will exit on fail allocation
|
||||
channel->users = idb_alloc(DB_OPT_BASE);
|
||||
channel->banned = idb_alloc(DB_OPT_BASE);
|
||||
channel->banned = idb_alloc(DB_OPT_BASE|DB_OPT_RELEASE_DATA);
|
||||
channel->opt = CHAN_OPT_BASE;
|
||||
channel->type = chantype;
|
||||
channel->color = color;
|
||||
@ -62,7 +67,7 @@ struct Channel* channel_create(char *name, char *pass, unsigned char color, enum
|
||||
* Delete channel *channel
|
||||
* - check if there is any user in channel and make them all quit
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : invalid channel
|
||||
*/
|
||||
int channel_delete(struct Channel *channel) {
|
||||
@ -98,13 +103,13 @@ int channel_delete(struct Channel *channel) {
|
||||
}
|
||||
|
||||
/*
|
||||
* Make player *sd join an channel *channel
|
||||
* Make player *sd join a channel *channel
|
||||
* - add charid to channel user list
|
||||
* - add *channel to user channel list
|
||||
* return
|
||||
* 0 : success
|
||||
* -1 : invalid channel or sd
|
||||
* -2 : already in here
|
||||
* -2 : sd already in channel
|
||||
* -3 : sd banned
|
||||
*/
|
||||
int channel_join(struct Channel *channel, struct map_session_data *sd) {
|
||||
@ -112,11 +117,11 @@ int channel_join(struct Channel *channel, struct map_session_data *sd) {
|
||||
|
||||
if(!channel || !sd)
|
||||
return -1;
|
||||
if(channel_haspc(channel,sd)==1) //already in here
|
||||
if(channel_haspc(channel,sd)==1)
|
||||
return -2;
|
||||
|
||||
if(channel_haspcbanned(channel,sd)==1){ //banned ?
|
||||
sprintf(output, msg_txt(sd,1438),channel->name); //You cannot join the '%s' channel because you've been banned from it
|
||||
if(channel_haspcbanned(channel,sd)==1){
|
||||
sprintf(output, msg_txt(sd,1438),channel->name); //You're currently banned from the '%s' channel.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return -3;
|
||||
}
|
||||
@ -146,7 +151,7 @@ int channel_join(struct Channel *channel, struct map_session_data *sd) {
|
||||
* create the map_channel if not exist
|
||||
* return
|
||||
* -1 : invalid sd
|
||||
* -2 : already in here (channel_join)
|
||||
* -2 : sd already in channel (channel_join)
|
||||
* -3 : sd banned (channel_join)
|
||||
*/
|
||||
int channel_mjoin(struct map_session_data *sd) {
|
||||
@ -169,8 +174,8 @@ int channel_mjoin(struct map_session_data *sd) {
|
||||
* Make all ally member of guild *g join our guild chan
|
||||
* nb : they only join if they are into their own guild channel (if they not they probably left it)
|
||||
* return
|
||||
* 0 : succes
|
||||
* -1 : invalide guild or no channel for guild
|
||||
* 0 : success
|
||||
* -1 : invalid guild or no channel for guild
|
||||
*/
|
||||
int channel_ajoin(struct guild *g){
|
||||
int i;
|
||||
@ -183,7 +188,7 @@ int channel_ajoin(struct guild *g){
|
||||
if(ga->guild_id && (ga->opposition==0) && (ag=guild_search(ga->guild_id))){
|
||||
for (i = 0; i < ag->max_member; i++){ //load all guildmember
|
||||
pl_sd = ag->member[i].sd;
|
||||
if(channel_haspc(ag->channel,pl_sd)==1) //only if they are in there own guildchan
|
||||
if(channel_haspc(ag->channel,pl_sd)==1) //only if they are in their own guildchan
|
||||
channel_join(g->channel,pl_sd);
|
||||
}
|
||||
}
|
||||
@ -195,9 +200,9 @@ int channel_ajoin(struct guild *g){
|
||||
* Make *sd join the guild channel
|
||||
* create a chan guild if not exist
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : invalid sd
|
||||
* -2 : sd have no guild attach
|
||||
* -2 : sd has no guild attached
|
||||
*/
|
||||
int channel_gjoin(struct map_session_data *sd, int flag){
|
||||
struct Channel *channel;
|
||||
@ -321,7 +326,7 @@ int channel_pcquit(struct map_session_data *sd, int type){
|
||||
* Format *msg from *sd to send it in *channel
|
||||
* Also truncate extra char if msg too long (max=RACHSYS_MSG_LENGTH)
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : invalid sd, channel, or msg
|
||||
* -2 : delay msg too low since last talk
|
||||
*/
|
||||
@ -342,36 +347,35 @@ int channel_send(struct Channel *channel, struct map_session_data *sd, const cha
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Chk parameter for channel creation
|
||||
* Check parameters for channel creation
|
||||
* @type (bitflag)
|
||||
* 1 : check name # + lenght
|
||||
* 1 : check name # + length
|
||||
* 2 : check if already exist, need 1
|
||||
* 4 : check pass lenght
|
||||
* 4 : check password length
|
||||
* return
|
||||
* 0 : success
|
||||
* -1 : bad chan name
|
||||
* -2 : bad chan name lenght
|
||||
* -2 : bad chan name length
|
||||
* -3 : pass given too long
|
||||
* -4 : chan already exist
|
||||
* -4 : chan already exists
|
||||
*/
|
||||
int channel_chk(char *chname, char *chpass, int type){
|
||||
if(type&1){ //check name
|
||||
if( chname[0] != '#' ) return -1; // Channel name must start with '#'
|
||||
if( chname[0] != '#' )
|
||||
return -1;
|
||||
if ( strlen(chname) < 3 || strlen(chname) > CHAN_NAME_LENGTH )
|
||||
return -2; // Channel length must be between 3 and %d.
|
||||
return -2;
|
||||
if( (type&2) && (
|
||||
strcmpi(chname + 1,Channel_Config.map_chname) == 0
|
||||
|| strcmpi(chname + 1,Channel_Config.ally_chname) == 0
|
||||
|| strdb_exists(channel_db, chname + 1) )
|
||||
) {
|
||||
return -4; // Channel '%s' already exist
|
||||
return -4;
|
||||
}
|
||||
}
|
||||
if (type&4 && (chpass != '\0' && strlen(chpass) > CHAN_NAME_LENGTH ) ) {
|
||||
return -3; // Channel pass can't be higher then %d.
|
||||
return -3;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -414,7 +418,7 @@ struct Channel* channel_name2channel(char *chname, struct map_session_data *sd,
|
||||
/*
|
||||
* Channel check if he has *sd in his user list
|
||||
* return
|
||||
* -1 : invalide sd or channel
|
||||
* -1 : invalid sd or channel
|
||||
* 0 : not found
|
||||
* 1 : has pc
|
||||
*/
|
||||
@ -426,7 +430,7 @@ int channel_haspc(struct Channel *channel,struct map_session_data *sd){
|
||||
/*
|
||||
* Channel check if *sd is banned from channel (banned ?)
|
||||
* return
|
||||
* -1 : invalide sd or channel
|
||||
* -1 : invalid sd or channel
|
||||
* 0 : not found
|
||||
* 1 : has pc
|
||||
*/
|
||||
@ -458,7 +462,7 @@ int channel_pc_haschan(struct map_session_data *sd, struct Channel *channel){
|
||||
* mine : list of chan *sd is in + nb of user
|
||||
* void : list of public chan + map + guild + nb of user
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : fail
|
||||
*/
|
||||
int channel_display_list(struct map_session_data *sd, char *options){
|
||||
@ -469,8 +473,6 @@ int channel_display_list(struct map_session_data *sd, char *options){
|
||||
if(!sd || !options)
|
||||
return -1;
|
||||
|
||||
|
||||
|
||||
//display availaible colors
|
||||
if( options[0] != '\0' && strcmpi(options,"colors") == 0 ) {
|
||||
char msg[40];
|
||||
@ -480,9 +482,9 @@ int channel_display_list(struct map_session_data *sd, char *options){
|
||||
}
|
||||
}
|
||||
else if( options[0] != '\0' && strcmpi(options,"mine") == 0 ) { //display chan I'm into
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,1475)); // ---- Joined Channels ----
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,1475)); // ---- My Channels ----
|
||||
if(!sd->channel_count)
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,1476)); //You have not joined any channel yet
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,1476)); // You have not joined any channels.
|
||||
else {
|
||||
for(k=0; k<sd->channel_count; k++){
|
||||
channel = sd->channels[k];
|
||||
@ -497,13 +499,13 @@ int channel_display_list(struct map_session_data *sd, char *options){
|
||||
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,1410)); // ---- Public Channels ----
|
||||
if( Channel_Config.map_enable ) {
|
||||
sprintf(output, msg_txt(sd,1409), Channel_Config.map_chname, map[sd->bl.m].channel ? db_size(map[sd->bl.m].channel->users) : 0);// - #%s ( %d users )
|
||||
sprintf(output, msg_txt(sd,1409), Channel_Config.map_chname, map[sd->bl.m].channel ? db_size(map[sd->bl.m].channel->users) : 0);// - #%s (%d users)
|
||||
clif_displaymessage(sd->fd, output);
|
||||
}
|
||||
if( Channel_Config.ally_enable && sd->status.guild_id ) {
|
||||
struct guild *g = sd->guild;
|
||||
if( !g ) return -1; //how can this happen if status.guild_id true ?
|
||||
sprintf(output, msg_txt(sd,1409), Channel_Config.ally_chname, db_size(((struct Channel *)g->channel)->users));// - #%s ( %d users )
|
||||
sprintf(output, msg_txt(sd,1409), Channel_Config.ally_chname, db_size(((struct Channel *)g->channel)->users));// - #%s (%d users)
|
||||
clif_displaymessage(sd->fd, output);
|
||||
}
|
||||
iter = db_iterator(channel_db);
|
||||
@ -519,12 +521,10 @@ int channel_display_list(struct map_session_data *sd, char *options){
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* An user *sd is attempting to create a channel named *chname with pass *chpass
|
||||
* A user *sd is attempting to create a channel named *chname with pass *chpass
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : fail
|
||||
*/
|
||||
int channel_pccreate(struct map_session_data *sd, char *chname, char *chpass){
|
||||
@ -536,7 +536,7 @@ int channel_pccreate(struct map_session_data *sd, char *chname, char *chpass){
|
||||
return 0;
|
||||
|
||||
res = channel_chk(chname,chpass,7);
|
||||
if(res==0){ //succes
|
||||
if(res==0){ //success
|
||||
channel = channel_create(chname + 1,chpass,0,CHAN_TYPE_PRIVATE,sd->status.char_id);
|
||||
channel_join(channel,sd);
|
||||
if( !( channel->opt & CHAN_OPT_ANNOUNCE_JOIN ) ) {
|
||||
@ -547,7 +547,7 @@ int channel_pccreate(struct map_session_data *sd, char *chname, char *chpass){
|
||||
switch(res){
|
||||
case -1: sprintf(output, msg_txt(sd,1405), CHAN_NAME_LENGTH); break;// Channel name must start with '#'.
|
||||
case -2: sprintf(output, msg_txt(sd,1406), CHAN_NAME_LENGTH); break;// Channel length must be between 3 and %d.
|
||||
case -3: sprintf(output, msg_txt(sd,1436), CHAN_NAME_LENGTH); break;// Channel pass can't be higher then %d.
|
||||
case -3: sprintf(output, msg_txt(sd,1436), CHAN_NAME_LENGTH); break;// Channel password can't be over %d characters.
|
||||
case -4: sprintf(output, msg_txt(sd,1407), chname);// Channel '%s' is not available.
|
||||
}
|
||||
clif_displaymessage(sd->fd, output);
|
||||
@ -557,9 +557,9 @@ int channel_pccreate(struct map_session_data *sd, char *chname, char *chpass){
|
||||
}
|
||||
|
||||
/*
|
||||
* An user *sd is attempting to delete a channel named *chname
|
||||
* A user *sd is attempting to delete a channel named *chname
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : fail
|
||||
*/
|
||||
int channel_pcdelete(struct map_session_data *sd, char *chname){
|
||||
@ -581,16 +581,16 @@ int channel_pcdelete(struct map_session_data *sd, char *chname){
|
||||
}
|
||||
channel_delete(channel);
|
||||
|
||||
sprintf(output, msg_txt(sd,1477),chname); //Channel %s deleted
|
||||
sprintf(output, msg_txt(sd,1448),chname); // Channel '%s' deleted.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* An user *sd is attempting to leave a channel named *chname
|
||||
* A user *sd is attempting to leave a channel named *chname
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : fail
|
||||
*/
|
||||
int channel_pcleave(struct map_session_data *sd, char *chname){
|
||||
@ -630,9 +630,9 @@ int channel_pcleave(struct map_session_data *sd, char *chname){
|
||||
}
|
||||
|
||||
/*
|
||||
* An user *sd is attempting to join a channel named *chname
|
||||
* A user *sd is attempting to join a channel named *chname
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : fail
|
||||
*/
|
||||
int channel_pcjoin(struct map_session_data *sd, char *chname, char *pass){
|
||||
@ -659,7 +659,7 @@ int channel_pcjoin(struct map_session_data *sd, char *chname, char *pass){
|
||||
if( pc_has_permission(sd, PC_PERM_CHANNEL_ADMIN) ) {
|
||||
sd->stealth = true;
|
||||
} else {
|
||||
sprintf(output, msg_txt(sd,1401),chname,"@Join"); // '%s' Channel is password protected (usage: %s <#channel_name> <password>)
|
||||
sprintf(output, msg_txt(sd,1401),chname,"@join"); // Channel '%s' is password-protected (usage: %s <#channel_name> <password>).
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return -1;
|
||||
}
|
||||
@ -667,7 +667,7 @@ int channel_pcjoin(struct map_session_data *sd, char *chname, char *pass){
|
||||
}
|
||||
}
|
||||
else {
|
||||
sprintf(output, msg_txt(sd,1400),chname,"@Join"); // Unknown Channel '%s' (usage: %s <#channel_name>)
|
||||
sprintf(output, msg_txt(sd,1400),chname,"@join"); // Unknown channel '%s' (usage: %s <#channel_name>).
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return -1;
|
||||
}
|
||||
@ -688,9 +688,9 @@ int channel_pcjoin(struct map_session_data *sd, char *chname, char *pass){
|
||||
}
|
||||
|
||||
/*
|
||||
* An user *sd is attempting to change color with *color of a channel named *chname
|
||||
* A user *sd is attempting to change color with *color of a channel named *chname
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : fail
|
||||
*/
|
||||
int channel_pccolor(struct map_session_data *sd, char *chname, char *color){
|
||||
@ -733,10 +733,10 @@ int channel_pccolor(struct map_session_data *sd, char *chname, char *color){
|
||||
}
|
||||
|
||||
/*
|
||||
* An user *sd is attempting to bind (make default message output display chan talk)
|
||||
* A user *sd is attempting to bind (make default message output display chan talk)
|
||||
* from a channel named *chname
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : fail
|
||||
*/
|
||||
int channel_pcbind(struct map_session_data *sd, char *chname){
|
||||
@ -764,9 +764,9 @@ int channel_pcbind(struct map_session_data *sd, char *chname){
|
||||
}
|
||||
|
||||
/*
|
||||
* An user *sd is attempting to unbind
|
||||
* A user *sd is attempting to unbind
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : fail
|
||||
*/
|
||||
int channel_pcunbind(struct map_session_data *sd){
|
||||
@ -786,13 +786,13 @@ int channel_pcunbind(struct map_session_data *sd){
|
||||
}
|
||||
|
||||
/*
|
||||
* An user *sd is attempting to do something with the banlist
|
||||
* A user *sd is attempting to do something with the banlist
|
||||
* @flag == 0 : ban
|
||||
* @flag == 1 : unban
|
||||
* @flag == 2 : unbanall
|
||||
* @flag == 3 : banlist
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : fail
|
||||
*/
|
||||
int channel_pcban(struct map_session_data *sd, char *chname, struct map_session_data *tsd, int flag){
|
||||
@ -820,25 +820,26 @@ int channel_pcban(struct map_session_data *sd, char *chname, struct map_session_
|
||||
if(flag != 2 && flag != 3){
|
||||
char banned;
|
||||
if(!tsd || pc_has_permission(tsd, PC_PERM_CHANNEL_ADMIN) ) {
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,1464)); // Ban failed, not possible to ban/unban this user.
|
||||
sprintf(output, msg_txt(sd,1464), tsd->status.name);// Ban failed for player '%s'.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return -1;
|
||||
}
|
||||
|
||||
banned = channel_haspcbanned(channel,tsd);
|
||||
if(!flag && banned==1) {
|
||||
sprintf(output, msg_txt(sd,1465), tsd->status.name);// Player '%s' is already banned from this channel
|
||||
sprintf(output, msg_txt(sd,1465), tsd->status.name);// Player '%s' is already banned from this channel.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return -1;
|
||||
}
|
||||
else if(flag==1 && banned==0) {
|
||||
sprintf(output, msg_txt(sd,1440), tsd->status.name);// 1440: Player '%s' is not banned from this channel
|
||||
sprintf(output, msg_txt(sd,1440), tsd->status.name);// Player '%s' is not banned from this channel.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if( !db_size(channel->banned) ) {
|
||||
sprintf(output, msg_txt(sd,1439), chname);// Channel '%s' has no banned players
|
||||
sprintf(output, msg_txt(sd,1439), chname);// Channel '%s' contains no banned players.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return -1;
|
||||
}
|
||||
@ -846,31 +847,36 @@ int channel_pcban(struct map_session_data *sd, char *chname, struct map_session_
|
||||
|
||||
//let properly alter the list now
|
||||
switch(flag){
|
||||
case 0:
|
||||
idb_put(channel->banned, tsd->status.char_id, tsd);
|
||||
case 0: {
|
||||
struct chan_banentry *cbe;
|
||||
CREATE(cbe, struct chan_banentry, 1);
|
||||
cbe->char_id = tsd->status.char_id;
|
||||
strcpy(cbe->char_name,tsd->status.name);
|
||||
idb_put(channel->banned, tsd->status.char_id, cbe);
|
||||
channel_clean(channel,tsd,0);
|
||||
sprintf(output, msg_txt(sd,1437),tsd->status.name,chname); // Player '%s' has now been banned from '%s' channel
|
||||
sprintf(output, msg_txt(sd,1437),tsd->status.name,chname); // Player '%s' is banned from the '%s' channel.
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
idb_remove(channel->banned, tsd->status.char_id);
|
||||
sprintf(output, msg_txt(sd,1441),tsd->status.name,chname); // Player '%s' has now been unbanned from the '%s' channel
|
||||
sprintf(output, msg_txt(sd,1441),tsd->status.name,chname); // Player '%s' is unbanned from the '%s' channel.
|
||||
break;
|
||||
case 2:
|
||||
db_clear(channel->banned);
|
||||
sprintf(output, msg_txt(sd,1442),chname); // Removed all bans from '%s' channel
|
||||
sprintf(output, msg_txt(sd,1442),chname); // Cleared all bans from the '%s' channel.
|
||||
break;
|
||||
case 3: {
|
||||
DBIterator *iter = db_iterator(channel->banned);
|
||||
struct map_session_data *pl_sd;
|
||||
sprintf(output, msg_txt(sd,1443), channel->name);// -- '%s' ban list
|
||||
struct chan_banentry *cbe;
|
||||
sprintf(output, msg_txt(sd,1443), channel->name);// ---- '#%s' Ban List:
|
||||
clif_displaymessage(sd->fd, output);
|
||||
for( pl_sd = dbi_first(iter); dbi_exists(iter); pl_sd = dbi_next(iter) ) { //for all users
|
||||
sprintf(output, msg_txt(sd,1444),pl_sd->status.char_id,pl_sd->status.name); // %d: %s
|
||||
for( cbe = dbi_first(iter); dbi_exists(iter); cbe = dbi_next(iter) ) { //for all users
|
||||
sprintf(output, "%d: %s",cbe->char_id,cbe->char_name);
|
||||
clif_displaymessage(sd->fd, output);
|
||||
}
|
||||
dbi_destroy(iter);
|
||||
}
|
||||
break;
|
||||
return 0;
|
||||
}
|
||||
clif_displaymessage(sd->fd, output);
|
||||
|
||||
@ -878,12 +884,12 @@ int channel_pcban(struct map_session_data *sd, char *chname, struct map_session_
|
||||
}
|
||||
|
||||
/*
|
||||
* An user *sd is attempting to set an option on channel named *chname
|
||||
* A user *sd is attempting to set an option on channel named *chname
|
||||
* @chname = channel name
|
||||
* @option = available = opt_str
|
||||
* @val = value to assign to option
|
||||
* return
|
||||
* 0 : succes
|
||||
* 0 : success
|
||||
* -1 : fail
|
||||
*/
|
||||
int channel_pcsetopt(struct map_session_data *sd, char *chname, const char *option, const char *val){
|
||||
@ -916,16 +922,16 @@ int channel_pcsetopt(struct map_session_data *sd, char *chname, const char *opti
|
||||
|
||||
|
||||
if( option == '\0' ) {
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,1446));// You need to input a option
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,1446));// You need to input an option.
|
||||
return -1;
|
||||
}
|
||||
|
||||
s = ARRAYLENGTH(opt_str);
|
||||
ARR_FIND(1,s,k,( strncmpi(option,opt_str[k],3) == 0 )); //we only cmp 3 letter atm
|
||||
if( k == 3 ) {
|
||||
sprintf(output, msg_txt(sd,1447), option);// '%s' is not a known channel option
|
||||
sprintf(output, msg_txt(sd,1447), option);// Unknown channel option '%s'.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,1448)); // -- Available options
|
||||
clif_displaymessage(sd->fd, msg_txt(sd,1414));// ---- Available options:
|
||||
for( k = 1; k < s; k++ ) {
|
||||
sprintf(output, msg_txt(sd,1445), opt_str[k]);// - '%s'
|
||||
clif_displaymessage(sd->fd, output);
|
||||
@ -935,16 +941,16 @@ int channel_pcsetopt(struct map_session_data *sd, char *chname, const char *opti
|
||||
|
||||
if( val[0] == '\0' ) {
|
||||
if ( k == CHAN_OPT_MSG_DELAY ) {
|
||||
sprintf(output, msg_txt(sd,1466), opt_str[k]);// For '%s' you need the amount of seconds (from 0 to 10)
|
||||
sprintf(output, msg_txt(sd,1466), opt_str[k]);// Input the number of seconds (0-10) for the '%s' option.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return -1;
|
||||
} else if( channel->opt & k ) {
|
||||
sprintf(output, msg_txt(sd,1449), opt_str[k],opt_str[k]); // option '%s' is already enabled, if you'd like to disable it type '@channel setopt %s 0'
|
||||
sprintf(output, msg_txt(sd,1449), opt_str[k],opt_str[k]); // Option '%s' is already enabled (use '@channel setopt %s 0' to disable).
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return -1;
|
||||
} else {
|
||||
channel->opt |= k;
|
||||
sprintf(output, msg_txt(sd,1450), opt_str[k],channel->name);//option '%s' is now enabled for channel '%s'
|
||||
sprintf(output, msg_txt(sd,1450), opt_str[k],channel->name);// Option '%s' is enabled for channel '%s'.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return 0;
|
||||
}
|
||||
@ -952,42 +958,42 @@ int channel_pcsetopt(struct map_session_data *sd, char *chname, const char *opti
|
||||
int v = atoi(val);
|
||||
if( k == CHAN_OPT_MSG_DELAY ) {
|
||||
if( v < 0 || v > 10 ) {
|
||||
sprintf(output, msg_txt(sd,1451), v, opt_str[k]);// value '%d' for option '%s' is out of range (limit is 0-10)
|
||||
sprintf(output, msg_txt(sd,1451), v, opt_str[k]);// Value '%d' for option '%s' is out of range (limit 0-10).
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return false;
|
||||
}
|
||||
if( v == 0 ) {
|
||||
channel->opt &=~ k;
|
||||
channel->msg_delay = 0;
|
||||
sprintf(output, msg_txt(sd,1453), opt_str[k],channel->name,v);// option '%s' is now disabled for channel '%s'
|
||||
sprintf(output, msg_txt(sd,1453), opt_str[k],channel->name,v);// Option '%s' is disabled for channel '%s'.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return true;
|
||||
} else {
|
||||
channel->opt |= k;
|
||||
channel->msg_delay = v;
|
||||
sprintf(output, msg_txt(sd,1452), opt_str[k],channel->name,v);// option '%s' is now enabled for channel '%s' with %d seconds
|
||||
sprintf(output, msg_txt(sd,1452), opt_str[k],channel->name,v);// Option '%s' is enabled for channel '%s' at %d seconds.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if( v ) {
|
||||
if( channel->opt & k ) {
|
||||
sprintf(output, msg_txt(sd,1449), opt_str[k],opt_str[k]); // option '%s' is already enabled, if you'd like to disable it type '@channel opt %s 0'
|
||||
sprintf(output, msg_txt(sd,1449), opt_str[k],opt_str[k]); // Option '%s' is already enabled (use '@channel setopt %s 0' to disable).
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return false;
|
||||
} else {
|
||||
channel->opt |= k;
|
||||
sprintf(output, msg_txt(sd,1454), opt_str[k],channel->name);//option '%s' is now enabled for channel '%s'
|
||||
sprintf(output, msg_txt(sd,1450), opt_str[k],channel->name);// Option '%s' is enabled for channel '%s'.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
}
|
||||
} else {
|
||||
if( !(channel->opt & k) ) {
|
||||
sprintf(output, msg_txt(sd,1454), opt_str[k],channel->name); // option '%s' is not enabled on channel '%s'
|
||||
sprintf(output, msg_txt(sd,1450), opt_str[k],channel->name); // Option '%s' is enabled for channel '%s'.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return false;
|
||||
} else {
|
||||
channel->opt &=~ k;
|
||||
sprintf(output, msg_txt(sd,1453), opt_str[k],channel->name);// option '%s' is now disabled for channel '%s'
|
||||
sprintf(output, msg_txt(sd,1453), opt_str[k],channel->name);// Option '%s' is disabled for channel '%s'.
|
||||
clif_displaymessage(sd->fd, output);
|
||||
return true;
|
||||
}
|
||||
|
@ -729,7 +729,7 @@ void clif_dropflooritem(struct flooritem_data* fitem)
|
||||
uint32 header=0x84b;
|
||||
#else
|
||||
uint8 buf[17];
|
||||
uint32 header=0x09b;
|
||||
uint32 header=0x09e;
|
||||
#endif
|
||||
int view, offset=0;
|
||||
|
||||
@ -9159,9 +9159,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
|
||||
sd->pvp_lost = 0;
|
||||
}
|
||||
clif_map_property(sd, MAPPROPERTY_FREEPVPZONE);
|
||||
} else
|
||||
// set flag, if it's a duel [LuzZza]
|
||||
if(sd->duel_group)
|
||||
} else if(sd->duel_group) // set flag, if it's a duel [LuzZza]
|
||||
clif_map_property(sd, MAPPROPERTY_FREEPVPZONE);
|
||||
|
||||
if (map[sd->bl.m].flag.gvg_dungeon)
|
||||
|
@ -368,13 +368,13 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
|
||||
struct status_change* sc;
|
||||
|
||||
switch( skill_id ) {
|
||||
case BA_APPLEIDUN:
|
||||
#ifdef RENEWAL
|
||||
hp = 100+5*skill_lv+5*(status_get_vit(src)/10); // HP recovery
|
||||
#else
|
||||
hp = 30+5*skill_lv+5*(status_get_vit(src)/10); // HP recovery
|
||||
#endif
|
||||
if( sd )
|
||||
case BA_APPLEIDUN:
|
||||
#ifdef RENEWAL
|
||||
hp = 100+5*skill_lv+5*(status_get_vit(src)/10); // HP recovery
|
||||
#else
|
||||
hp = 30+5*skill_lv+5*(status_get_vit(src)/10); // HP recovery
|
||||
#endif
|
||||
if( sd )
|
||||
hp += 5*pc_checkskill(sd,BA_MUSICALLESSON);
|
||||
break;
|
||||
case PR_SANCTUARY:
|
||||
@ -386,23 +386,27 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
|
||||
default:
|
||||
if (skill_lv >= battle_config.max_heal_lv)
|
||||
return battle_config.max_heal;
|
||||
#ifdef RENEWAL
|
||||
/**
|
||||
* Renewal Heal Formula
|
||||
* Formula: ( [(Base Level + INT) / 5] x 30 ) x (Heal Level / 10) x (Modifiers) + MATK
|
||||
**/
|
||||
hp = (status_get_lv(src) + status_get_int(src)) / 5 * 30 * skill_lv / 10;
|
||||
#else
|
||||
hp = ( status_get_lv(src) + status_get_int(src) ) / 8 * (4 + ( skill_id == AB_HIGHNESSHEAL ? ( sd ? pc_checkskill(sd,AL_HEAL) : 10 ) : skill_lv ) * 8);
|
||||
#endif
|
||||
#ifdef RENEWAL
|
||||
/**
|
||||
* Renewal Heal Formula
|
||||
* Formula: ( [(Base Level + INT) / 5] x 30 ) x (Heal Level / 10) x (Modifiers) + MATK
|
||||
**/
|
||||
hp = (status_get_lv(src) + status_get_int(src)) / 5 * 30 * (skill_id == AB_HIGHNESSHEAL ? (sd ? pc_checkskill(sd,AL_HEAL) : 10 ) : skill_lv) / 10;
|
||||
#else
|
||||
hp = (status_get_lv(src) + status_get_int(src)) / 8 * (4 + ( (skill_id == AB_HIGHNESSHEAL ? (sd ? pc_checkskill(sd,AL_HEAL) : 10 ) : skill_lv) * 8));
|
||||
#endif
|
||||
if (skill_id == AB_HIGHNESSHEAL)
|
||||
hp *= ( 17 + 3 * skill_lv ) / 10;
|
||||
if( sd && ((skill = pc_checkskill(sd, HP_MEDITATIO)) > 0) )
|
||||
hp += hp * skill * 2 / 100;
|
||||
else if( src->type == BL_HOM && (skill = merc_hom_checkskill(((TBL_HOM*)src), HLIF_BRAIN)) > 0 )
|
||||
hp += hp * skill * 2 / 100;
|
||||
if( sd && tsd && sd->status.partner_id == tsd->status.char_id && (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && sd->status.sex == 0 )
|
||||
hp *= 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if( ( (target && target->type == BL_MER) || !heal ) && skill_id != NPC_EVILLAND )
|
||||
if( (!heal || (target && target->type == BL_MER)) && skill_id != NPC_EVILLAND )
|
||||
hp >>= 1;
|
||||
|
||||
if( sd && (skill = pc_skillheal_bonus(sd, skill_id)) )
|
||||
@ -413,9 +417,9 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
|
||||
|
||||
sc = status_get_sc(target);
|
||||
if( sc && sc->count ) {
|
||||
if( sc->data[SC_CRITICALWOUND] && heal ) // Critical Wound has no effect on offensive heal. [Inkfish]
|
||||
if( heal && sc->data[SC_CRITICALWOUND] ) // Critical Wound has no effect on offensive heal. [Inkfish]
|
||||
hp -= hp * sc->data[SC_CRITICALWOUND]->val2/100;
|
||||
if( sc->data[SC_DEATHHURT] && heal )
|
||||
if( heal && sc->data[SC_DEATHHURT] )
|
||||
hp -= hp * 20/100;
|
||||
if( sc->data[SC_INCHEALRATE] && skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN )
|
||||
hp += hp * sc->data[SC_INCHEALRATE]->val1/100; // Only affects Heal, Sanctuary and PotionPitcher.(like bHealPower) [Inkfish]
|
||||
@ -424,8 +428,8 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
|
||||
}
|
||||
|
||||
#ifdef RENEWAL
|
||||
// MATK part of the RE heal formula [malufett]
|
||||
// Note: in this part matk bonuses from items or skills are not applied
|
||||
// MATK part of the RE heal formula [malufett]
|
||||
// Note: in this part matk bonuses from items or skills are not applied
|
||||
switch( skill_id ) {
|
||||
case BA_APPLEIDUN: case PR_SANCTUARY:
|
||||
case NPC_EVILLAND: break;
|
||||
@ -434,6 +438,7 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
|
||||
struct status_data *status = status_get_status_data(src);
|
||||
int min, max;
|
||||
|
||||
sc = status_get_sc(src);
|
||||
min = max = status_base_matk(status, status_get_lv(src));
|
||||
if( status->rhw.matk > 0 ){
|
||||
int wMatk, variance;
|
||||
@ -4974,24 +4979,15 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
**/
|
||||
case AB_HIGHNESSHEAL:
|
||||
{
|
||||
int heal = skill_calc_heal(src, bl, (skill_id == AB_HIGHNESSHEAL)?AL_HEAL:skill_id, (skill_id == AB_HIGHNESSHEAL)?10:skill_lv, true);
|
||||
int heal = skill_calc_heal(src, bl, skill_id, skill_lv, true);
|
||||
int heal_get_jobexp;
|
||||
//Highness Heal: starts at 1.7 boost + 0.3 for each level
|
||||
if( skill_id == AB_HIGHNESSHEAL ) {
|
||||
heal = heal * ( 17 + 3 * skill_lv ) / 10;
|
||||
}
|
||||
if( status_isimmune(bl) ||
|
||||
(dstmd && (dstmd->class_ == MOBID_EMPERIUM || mob_is_battleground(dstmd))) ||
|
||||
(dstsd && pc_ismadogear(dstsd)) )//Mado is immune to heal
|
||||
heal=0;
|
||||
|
||||
if( sd && dstsd && sd->status.partner_id == dstsd->status.char_id && (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && sd->status.sex == 0 )
|
||||
heal = heal*2;
|
||||
|
||||
if( tsc && tsc->count )
|
||||
{
|
||||
if( tsc->data[SC_KAITE] && !(sstatus->mode&MD_BOSS) )
|
||||
{ //Bounce back heal
|
||||
if( tsc && tsc->count ) {
|
||||
if( tsc->data[SC_KAITE] && !(sstatus->mode&MD_BOSS) ) { //Bounce back heal
|
||||
if (--tsc->data[SC_KAITE]->val2 <= 0)
|
||||
status_change_end(bl, SC_KAITE, INVALID_TIMER);
|
||||
if (src == bl)
|
||||
@ -17425,7 +17421,6 @@ void skill_init_unit_layout (void) {
|
||||
memcpy(skill_unit_layout[pos].dy,dy,sizeof(dy));
|
||||
}
|
||||
break;
|
||||
case MH_POISON_MIST:
|
||||
case AS_VENOMDUST: {
|
||||
static const int dx[] = {-1, 0, 0, 0, 1};
|
||||
static const int dy[] = { 0,-1, 0, 1, 0};
|
||||
@ -17721,7 +17716,7 @@ int skill_disable_check(struct status_change *sc, uint16 skill_id)
|
||||
case RA_WUGDASH:
|
||||
case RA_CAMOUFLAGE:
|
||||
if( sc->data[status_skill2sc(skill_id)] )
|
||||
return 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -598,7 +598,7 @@ void initChangeTables(void) {
|
||||
set_sc( RA_FEARBREEZE , SC_FEARBREEZE , SI_FEARBREEZE , SCB_NONE );
|
||||
set_sc( RA_ELECTRICSHOCKER , SC_ELECTRICSHOCKER , SI_ELECTRICSHOCKER , SCB_NONE );
|
||||
set_sc( RA_WUGDASH , SC_WUGDASH , SI_WUGDASH , SCB_SPEED );
|
||||
set_sc( RA_CAMOUFLAGE , SC_CAMOUFLAGE , SI_CAMOUFLAGE , SCB_CRI|SCB_SPEED|SCB_WATK|SCB_DEF );
|
||||
set_sc( RA_CAMOUFLAGE , SC_CAMOUFLAGE , SI_CAMOUFLAGE , SCB_SPEED );
|
||||
add_sc( RA_MAGENTATRAP , SC_ELEMENTALCHANGE );
|
||||
add_sc( RA_COBALTTRAP , SC_ELEMENTALCHANGE );
|
||||
add_sc( RA_MAIZETRAP , SC_ELEMENTALCHANGE );
|
||||
@ -10494,23 +10494,8 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
case SC_CAMOUFLAGE:
|
||||
if (!status_charge(bl, 0, 7 - sce->val1))
|
||||
break;
|
||||
if (sd && --sce->val4 >= 0) {
|
||||
if (!(sce->val2 & 1)) {
|
||||
status->cri += sd->base_status.cri * 1 / 10; //+10% per second
|
||||
if (status->cri > 1000) { //max 100%
|
||||
status->cri = 1000;
|
||||
sce->val2 |= 1;
|
||||
}
|
||||
}
|
||||
if (!(sce->val2 & 2)) {
|
||||
status->def2 -= sd->base_status.def2 * 1 / 20; //-5% per second
|
||||
if (status->def2 < 0) { //min 0
|
||||
status->def2 = 0;
|
||||
sce->val2 |= 2;
|
||||
}
|
||||
}
|
||||
status->rhw.atk += 30; //+30 per second
|
||||
}
|
||||
if (--sce->val4 >= 0)
|
||||
sce->val3++;
|
||||
sc_timer_next(1000 + tick, status_change_timer, bl->id, data);
|
||||
return 0;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user