Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


-Mettez un titre clair et explicite, pas un titre vague.
-Fournissez le plus d'informations possible, soyez clair et concis.
-Pensez à éditer votre sujet afin d'ajouter [Résolu] dans le titre, lorsque votre demande est résolue.



Publier un nouveau sujet Répondre au sujet  [ 17 messages ]  Aller à la page 1, 2  Suivant
Auteur Message
 Sujet du message: Afiicher "Immunité" au lieu de "Manqué" en combat
MessagePublié: 26 Jan 2012, 22:41 
Villageois (Nv 3)
Avatar de l’utilisateur

Inscrit le: 18 Sep 2009, 19:20
Messages: 46
Niveau RPG Maker: Très correct
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Evénements et making. Nul en Ruby.
Points d'aide: 0/60

Créations :

Voir ses créations

Bonjour, je m'excuse d'avance si je n'ai pas posé ma question au bon endroit, car je ne sais pas si ma requête nécessite un nouveau script ou simplement la modification d'un de base.

Y a-t-il moyen de faire en sorte que si un monstre est immunisé à un statut (que le statut a donc F de coché dans la base de donnée), il y ait écrit "Immunité" au lieu de "Manqué" quand ce monstre endure ce statut en combat?
Le problème étant que si par exemple le joueur utilise la compétence "poison" et qu'il y a écrit "Manqué" sur la cible, il ne peut pas savoir si l'attaque a raté à cause d'une histoire de précision ou si c'est parce que le monstre ne peut pas être affecté par ce statut.

En espérant avoir été suffisamment clair, merci d'avance.


Dernière édition par Wingan le 01 Fév 2012, 08:45, édité 1 fois au total.

Haut
 Profil  
 
 Sujet du message: Re: Afiicher "Immunité" au lieu de "Manqué" en combat
MessagePublié: 26 Jan 2012, 23:16 
Membre VIP
Membre VIP
Avatar de l’utilisateur

Inscrit le: 06 Déc 2006, 01:00
Messages: 333
Niveau RPG Maker: Confirmé
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Les events et scénarios
Points d'aide: 39/60

Créations :

- Eude Tension


Voir ses créations

Sous quel RPG Maker tu veux faire cela et avec quel système de combat?
Ces informations pourraient t'aiguiller ou favoriser une éventuelle réponse.

_________________
Image
Faire, chercher, persévérer et s'appliquer sont les verbes du maker


Haut
 Profil  
 
 Sujet du message: Re: Afiicher "Immunité" au lieu de "Manqué" en combat
MessagePublié: 27 Jan 2012, 00:41 
Villageois (Nv 3)
Avatar de l’utilisateur

Inscrit le: 18 Sep 2009, 19:20
Messages: 46
Niveau RPG Maker: Très correct
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Evénements et making. Nul en Ruby.
Points d'aide: 0/60

Créations :

Voir ses créations

C'est sous RPG Maker XP, avec le système de combat de base :)


Haut
 Profil  
 
 Sujet du message: Re: Afiicher "Immunité" au lieu de "Manqué" en combat
MessagePublié: 27 Jan 2012, 12:53 
Membre VIP
Membre VIP
Avatar de l’utilisateur

Inscrit le: 06 Déc 2006, 01:00
Messages: 333
Niveau RPG Maker: Confirmé
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Les events et scénarios
Points d'aide: 39/60

Créations :

- Eude Tension


Voir ses créations

Si je ne dis pas de bêtises, l'ensemble des textes indiqué lors d'un coup raté est dans le script du Game_Battler 3

Il semblerait que, d'après mes observations,

La ligne 192 self.damage ="miss" soit celle qui détermine si le fait d'infliger un statut est réussit.

La ligne 198 self.damage ="miss" soit celle qui détermine le fait de savoir si le coup a touché ou pas.

Si quelqu'un connaissant le ruby pouvait confirmer. Mais je te conseille de faire des essais dans ce script sur les lignes self.damage="miss"

N'hésites pas à dire si l'effet voulu est réalisé.

_________________
Image
Faire, chercher, persévérer et s'appliquer sont les verbes du maker


Haut
 Profil  
 
 Sujet du message: Re: Afiicher "Immunité" au lieu de "Manqué" en combat
MessagePublié: 27 Jan 2012, 14:07 
Villageois (Nv 3)
Avatar de l’utilisateur

Inscrit le: 18 Sep 2009, 19:20
Messages: 46
Niveau RPG Maker: Très correct
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Evénements et making. Nul en Ruby.
Points d'aide: 0/60

Créations :

Voir ses créations

Ah, dommage, c'est presque ça. Le texte de la ligne 192 (189 dans mon logiciel) est bien celui qui gère ce qui est affiché quand un statut n'a pas pu être infligé. Mais si je le change en "Immunité", ce mot sera affiché dans les deux cas: si l'attaque a raté à cause d'un manque de précision, ou si le monstre est bel et bien immunisé face au statut en question.


Haut
 Profil  
 
 Sujet du message: Re: Afiicher "Immunité" au lieu de "Manqué" en combat
MessagePublié: 31 Jan 2012, 11:57 
Artisan (Nv 4)
Avatar de l’utilisateur

Inscrit le: 22 Nov 2011, 22:01
Messages: 167
Niveau RPG Maker: Moyen
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Scripts
Sexe: Masculin
Points d'aide: 17/60

Créations :

Voir ses créations

Salut Wingan,

la solution que t'as donné lidenvice est la bonne.
J'ai testé sur un projet vierge et ça fonctionne.

Code: Tout sélectionner
        if skill.power == 0
        self.damage = ""
        unless @state_changed
          self.damage = "Manqué!" # <--- Ici remplace Manqué par Immunisé
        end
      end
    else
      self.damage = "Manqué!" # <--- Ici faut pas toucher sinon c'est normal d'avoir tout
                              # le temps Immunisé
    end

_________________
--- Bad_maker ---
Projet: Gilgamesh's hope
Script: EasyWindowsCreator


Haut
 Profil  
 
 Sujet du message: Re: Afiicher "Immunité" au lieu de "Manqué" en combat
MessagePublié: 01 Fév 2012, 08:33 
Villageois (Nv 3)
Avatar de l’utilisateur

Inscrit le: 18 Sep 2009, 19:20
Messages: 46
Niveau RPG Maker: Très correct
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Evénements et making. Nul en Ruby.
Points d'aide: 0/60

Créations :

Voir ses créations

Salut, merci d'avoir essayé. Mais de mon côté, même sur un projet vierge, le problème est toujours là u( J'ai pris des screens pour montrer.

Donc, on le voit, le fantôme a 'C' de coché dans son affinité avec le statut 'Sommeil', il n'est donc pas censé être immunisé, et la probabilité qu'il soit affecté par ce statut est moyenne.

Image

Je lance en combat la compétence qui s'appelle par défaut 'Suppression réticulaire' (inflige 'Sommeil' à tous les ennemis), et comme on le voit, l'un des Fantômes arrive à se prendre le statut et s'endort. L'autre ne subit pas le Sommeil. Et vu que les Fantômes ne sont pas immunisés au Sommeil, ça veut dire que dans ce cas s'il ne s'est pas endormi, c'est parce que l'attaque ne l'a pas atteint. C'est une question de précision. Et pourtant il y a l'affichage de l'immunité :?

Image

Voilà, si ça se trouve ça vient de mon script Game_Battler 3, vu qu'il a l'air d'avoir quelques lignes en plus. On sait jamais, je vous le passe:

#==============================================================================
# ■ Game_Battler (分割定義 3)
#------------------------------------------------------------------------------
#  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
# スのスーパークラスとして使用されます。
#==============================================================================

class Game_Battler
#--------------------------------------------------------------------------
# ● スキルの使用可能判定
# skill_id : スキル ID
#--------------------------------------------------------------------------
def skill_can_use?(skill_id)
# SP が足りない場合は使用不可
if $data_skills[skill_id].sp_cost > self.sp
return false
end
# 戦闘不能の場合は使用不可
if dead?
return false
end
# 沈黙状態の場合、物理スキル以外は使用不可
if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
return false
end
# 使用可能時を取得
occasion = $data_skills[skill_id].occasion
# 戦闘中の場合
if $game_temp.in_battle
# [常時] または [バトルのみ] なら使用可
return (occasion == 0 or occasion == 1)
# 戦闘中ではない場合
else
# [常時] または [メニューのみ] なら使用可
return (occasion == 0 or occasion == 2)
end
end
#--------------------------------------------------------------------------
# ● 通常攻撃の効果適用
# attacker : 攻撃者 (バトラー)
#--------------------------------------------------------------------------
def attack_effect(attacker)
# クリティカルフラグをクリア
self.critical = false
# 第一命中判定
hit_result = (rand(100) < attacker.hit)
# 命中の場合
if hit_result == true
# 基本ダメージを計算
atk = [attacker.atk - self.pdef / 2, 0].max
self.damage = atk * (20 + attacker.str) / 20
# 属性修正
self.damage *= elements_correct(attacker.element_set)
self.damage /= 100
# ダメージの符号が正の場合
if self.damage > 0
# クリティカル修正
if rand(100) < 4 * attacker.dex / self.agi
self.damage *= 2
self.critical = true
end
# 防御修正
if self.guarding?
self.damage /= 2
end
end
# 分散
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# 第二命中判定
eva = 8 * self.agi / attacker.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
end
# 命中の場合
if hit_result == true
# ステート衝撃解除
remove_states_shock
# HP からダメージを減算
self.hp -= self.damage
# ステート変化
@state_changed = false
states_plus(attacker.plus_state_set)
states_minus(attacker.minus_state_set)
# ミスの場合
else
# ダメージに "Miss" を設定
self.damage = "Manqué!"
# クリティカルフラグをクリア
self.critical = false
end
# メソッド終了
return true
end
#--------------------------------------------------------------------------
# ● スキルの効果適用
# user : スキルの使用者 (バトラー)
# skill : スキル
#--------------------------------------------------------------------------
def skill_effect(user, skill)
# クリティカルフラグをクリア
self.critical = false
# スキルの効果範囲が HP 1 以上の味方で、自分の HP が 0、
# またはスキルの効果範囲が HP 0 の味方で、自分の HP が 1 以上の場合
if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
# メソッド終了
return false
end
# 有効フラグをクリア
effective = false
# コモンイベント ID が有効の場合は有効フラグをセット
effective |= skill.common_event_id > 0
# 第一命中判定
hit = skill.hit
if skill.atk_f > 0
hit *= user.hit / 100
end
hit_result = (rand(100) < hit)
# 不確実なスキルの場合は有効フラグをセット
effective |= hit < 100
# 命中の場合
if hit_result == true
# 威力を計算
power = skill.power + user.atk * skill.atk_f / 100
if power > 0
power -= self.pdef * skill.pdef_f / 200
power -= self.mdef * skill.mdef_f / 200
power = [power, 0].max
end
# 倍率を計算
rate = 20
rate += (user.str * skill.str_f / 100)
rate += (user.dex * skill.dex_f / 100)
rate += (user.agi * skill.agi_f / 100)
rate += (user.int * skill.int_f / 100)
# 基本ダメージを計算
self.damage = power * rate / 20
# 属性修正
self.damage *= elements_correct(skill.element_set)
self.damage /= 100
# ダメージの符号が正の場合
if self.damage > 0
# 防御修正
if self.guarding?
self.damage /= 2
end
end
# 分散
if skill.variance > 0 and self.damage.abs > 0
amp = [self.damage.abs * skill.variance / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# 第二命中判定
eva = 8 * self.agi / user.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
# 不確実なスキルの場合は有効フラグをセット
effective |= hit < 100
end
# 命中の場合
if hit_result == true
# 威力 0 以外の物理攻撃の場合
if skill.power != 0 and skill.atk_f > 0
# ステート衝撃解除
remove_states_shock
# 有効フラグをセット
effective = true
end
# HP からダメージを減算
last_hp = self.hp
self.hp -= self.damage
effective |= self.hp != last_hp
# ステート変化
@state_changed = false
effective |= states_plus(skill.plus_state_set)
effective |= states_minus(skill.minus_state_set)
# 威力が 0 の場合
if skill.power == 0
# ダメージに空文字列を設定
self.damage = ""
# ステートに変化がない場合
unless @state_changed
# ダメージに "Miss" を設定
self.damage = "Immu"
end
end
# ミスの場合
else
# ダメージに "Miss" を設定
self.damage = "Manqué!"
end
# 戦闘中でない場合
unless $game_temp.in_battle
# ダメージに nil を設定
self.damage = nil
end
# メソッド終了
return effective
end
#--------------------------------------------------------------------------
# ● アイテムの効果適用
# item : アイテム
#--------------------------------------------------------------------------
def item_effect(item)
# クリティカルフラグをクリア
self.critical = false
# アイテムの効果範囲が HP 1 以上の味方で、自分の HP が 0、
# またはアイテムの効果範囲が HP 0 の味方で、自分の HP が 1 以上の場合
if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
((item.scope == 5 or item.scope == 6) and self.hp >= 1)
# メソッド終了
return false
end
# 有効フラグをクリア
effective = false
# コモンイベント ID が有効の場合は有効フラグをセット
effective |= item.common_event_id > 0
# 命中判定
hit_result = (rand(100) < item.hit)
# 不確実なスキルの場合は有効フラグをセット
effective |= item.hit < 100
# 命中の場合
if hit_result == true
# 回復量を計算
recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
if recover_hp < 0
recover_hp += self.pdef * item.pdef_f / 20
recover_hp += self.mdef * item.mdef_f / 20
recover_hp = [recover_hp, 0].min
end
# 属性修正
recover_hp *= elements_correct(item.element_set)
recover_hp /= 100
recover_sp *= elements_correct(item.element_set)
recover_sp /= 100
# 分散
if item.variance > 0 and recover_hp.abs > 0
amp = [recover_hp.abs * item.variance / 100, 1].max
recover_hp += rand(amp+1) + rand(amp+1) - amp
end
if item.variance > 0 and recover_sp.abs > 0
amp = [recover_sp.abs * item.variance / 100, 1].max
recover_sp += rand(amp+1) + rand(amp+1) - amp
end
# 回復量の符号が負の場合
if recover_hp < 0
# 防御修正
if self.guarding?
recover_hp /= 2
end
end
# HP 回復量の符号を反転し、ダメージの値に設定
self.damage = -recover_hp
# HP および SP を回復
last_hp = self.hp
last_sp = self.sp
self.hp += recover_hp
self.sp += recover_sp
effective |= self.hp != last_hp
effective |= self.sp != last_sp
# ステート変化
@state_changed = false
effective |= states_plus(item.plus_state_set)
effective |= states_minus(item.minus_state_set)
# パラメータ上昇値が有効の場合
if item.parameter_type > 0 and item.parameter_points != 0
# パラメータで分岐
case item.parameter_type
when 1 # MaxHP
@maxhp_plus += item.parameter_points
when 2 # MaxSP
@maxsp_plus += item.parameter_points
when 3 # 腕力
@str_plus += item.parameter_points
when 4 # 器用さ
@dex_plus += item.parameter_points
when 5 # 素早さ
@agi_plus += item.parameter_points
when 6 # 魔力
@int_plus += item.parameter_points
end
# 有効フラグをセット
effective = true
end
# HP 回復率と回復量が 0 の場合
if item.recover_hp_rate == 0 and item.recover_hp == 0
# ダメージに空文字列を設定
self.damage = ""
# SP 回復率と回復量が 0、パラメータ上昇値が無効の場合
if item.recover_sp_rate == 0 and item.recover_sp == 0 and
(item.parameter_type == 0 or item.parameter_points == 0)
# ステートに変化がない場合
unless @state_changed
# ダメージに "Miss" を設定
self.damage = "Manqué!"
end
end
end
# ミスの場合
else
# ダメージに "Miss" を設定
self.damage = "Manqué!"
end
# 戦闘中でない場合
unless $game_temp.in_battle
# ダメージに nil を設定
self.damage = nil
end
# メソッド終了
return effective
end
#--------------------------------------------------------------------------
# ● スリップダメージの効果適用
#--------------------------------------------------------------------------
def slip_damage_effect
# ダメージを設定
self.damage = self.maxhp / 10
# 分散
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# HP からダメージを減算
self.hp -= self.damage
# メソッド終了
return true
end
#--------------------------------------------------------------------------
# ● 属性修正の計算
# element_set : 属性
#--------------------------------------------------------------------------
def elements_correct(element_set)
# 無属性の場合
if element_set == []
# 100 を返す
return 100
end
# 与えられた属性の中で最も弱いものを返す
# ※メソッド element_rate は、このクラスから継承される Game_Actor
# および Game_Enemy クラスで定義される
weakest = -100
for i in element_set
weakest = [weakest, self.element_rate(i)].max
end
return weakest
end
end


En tout cas merci pour vos réponses! J'espère qu'on trouvera une solution, ça corrigerait un bon truc.

Edition: J'ai édité mon 1er post. Un ennemi est immunisé à un statut uniquement quand c'est le F qui est coché. Si c'est E, la probabilité qu'il en soit affecté est très faible mais néanmoins existante. Donc on ne peut pas dire qu'il s'agit d'immunité avec le E.


Haut
 Profil  
 
 Sujet du message: Re: Afiicher "Immunité" au lieu de "Manqué" en combat
MessagePublié: 01 Fév 2012, 11:03 
Membre VIP
Membre VIP
Avatar de l’utilisateur

Inscrit le: 06 Déc 2006, 01:00
Messages: 333
Niveau RPG Maker: Confirmé
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Les events et scénarios
Points d'aide: 39/60

Créations :

- Eude Tension


Voir ses créations

Est ce que ton attaque inflige des dégâts?

_________________
Image
Faire, chercher, persévérer et s'appliquer sont les verbes du maker


Haut
 Profil  
 
 Sujet du message: Re: Afiicher "Immunité" au lieu de "Manqué" en combat
MessagePublié: 01 Fév 2012, 11:05 
Artisan (Nv 4)
Avatar de l’utilisateur

Inscrit le: 22 Nov 2011, 22:01
Messages: 167
Niveau RPG Maker: Moyen
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Scripts
Sexe: Masculin
Points d'aide: 17/60

Créations :

Voir ses créations

Salut,

Tu pourrais envoyer le script indenté (entre les balises [codde] et [/code]) et
supprimer tout les commentaires(lignes vertes) après "class"? Et je modifierais le code
quand j'aurais le temps.

_________________
--- Bad_maker ---
Projet: Gilgamesh's hope
Script: EasyWindowsCreator


Haut
 Profil  
 
 Sujet du message: Re: Afiicher "Immunité" au lieu de "Manqué" en combat
MessagePublié: 01 Fév 2012, 17:46 
Villageois (Nv 3)
Avatar de l’utilisateur

Inscrit le: 18 Sep 2009, 19:20
Messages: 46
Niveau RPG Maker: Très correct
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Evénements et making. Nul en Ruby.
Points d'aide: 0/60

Créations :

Voir ses créations

@ lidenvice:
Non, cette compétence n'inflige que des statuts, pas le moindre dégât.

@Bad_maker: Ok, j'espère que j'ai bien compris ce que tu demandais. Bon courage et merci encore!

Code: Tout sélectionner
#==============================================================================
# ■ Game_Battler (分割定義 3)
#------------------------------------------------------------------------------
#  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
# スのスーパークラスとして使用されます。
#==============================================================================

class Game_Battler
  def skill_can_use?(skill_id)
    if $data_skills[skill_id].sp_cost > self.sp
      return false
    end
    if dead?
      return false
    end
    if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
      return false
    end
    occasion = $data_skills[skill_id].occasion
    if $game_temp.in_battle
      return (occasion == 0 or occasion == 1)
    else
      return (occasion == 0 or occasion == 2)
    end
  end
  def attack_effect(attacker)
    self.critical = false
    hit_result = (rand(100) < attacker.hit)
    if hit_result == true
      atk = [attacker.atk - self.pdef / 2, 0].max
      self.damage = atk * (20 + attacker.str) / 20
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      if self.damage > 0
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
        if self.guarding?
          self.damage /= 2
        end
      end
      if self.damage.abs > 0
        amp = [self.damage.abs * 15 / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      eva = 8 * self.agi / attacker.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
    end
    if hit_result == true
      remove_states_shock
      self.hp -= self.damage
      @state_changed = false
      states_plus(attacker.plus_state_set)
      states_minus(attacker.minus_state_set)
    else
      self.damage = "Manqué!"
      self.critical = false
    end
    return true
  end
  def skill_effect(user, skill)
    self.critical = false
    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
      return false
    end
    effective = false
    effective |= skill.common_event_id > 0
    hit = skill.hit
    if skill.atk_f > 0
      hit *= user.hit / 100
    end
    hit_result = (rand(100) < hit)
    effective |= hit < 100
    if hit_result == true
      power = skill.power + user.atk * skill.atk_f / 100
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      rate = 20
      rate += (user.str * skill.str_f / 100)
      rate += (user.dex * skill.dex_f / 100)
      rate += (user.agi * skill.agi_f / 100)
      rate += (user.int * skill.int_f / 100)
      self.damage = power * rate / 20
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      if self.damage > 0
        if self.guarding?
          self.damage /= 2
        end
      end
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      eva = 8 * self.agi / user.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
      effective |= hit < 100
    end
    if hit_result == true
      if skill.power != 0 and skill.atk_f > 0
        remove_states_shock
        effective = true
      end
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      if skill.power == 0
        self.damage = ""
        unless @state_changed
          self.damage = "Manqué!"
        end
      end
    else
      self.damage = "Manqué!"
    end
    unless $game_temp.in_battle
      self.damage = nil
    end
    return effective
  end
  def item_effect(item)
    self.critical = false
    if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
       ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
      return false
    end
    effective = false
    effective |= item.common_event_id > 0
    hit_result = (rand(100) < item.hit)
    effective |= item.hit < 100
    if hit_result == true
      recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
      recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
      if recover_hp < 0
        recover_hp += self.pdef * item.pdef_f / 20
        recover_hp += self.mdef * item.mdef_f / 20
        recover_hp = [recover_hp, 0].min
      end
      recover_hp *= elements_correct(item.element_set)
      recover_hp /= 100
      recover_sp *= elements_correct(item.element_set)
      recover_sp /= 100
      if item.variance > 0 and recover_hp.abs > 0
        amp = [recover_hp.abs * item.variance / 100, 1].max
        recover_hp += rand(amp+1) + rand(amp+1) - amp
      end
      if item.variance > 0 and recover_sp.abs > 0
        amp = [recover_sp.abs * item.variance / 100, 1].max
        recover_sp += rand(amp+1) + rand(amp+1) - amp
      end
      if recover_hp < 0
        if self.guarding?
          recover_hp /= 2
        end
      end
      self.damage = -recover_hp
      last_hp = self.hp
      last_sp = self.sp
      self.hp += recover_hp
      self.sp += recover_sp
      effective |= self.hp != last_hp
      effective |= self.sp != last_sp
      @state_changed = false
      effective |= states_plus(item.plus_state_set)
      effective |= states_minus(item.minus_state_set)
      if item.parameter_type > 0 and item.parameter_points != 0
        case item.parameter_type
        when 1
          @maxhp_plus += item.parameter_points
        when 2 
          @maxsp_plus += item.parameter_points
        when 3
          @str_plus += item.parameter_points
        when 4
          @dex_plus += item.parameter_points
        when 5
          @agi_plus += item.parameter_points
        when 6
          @int_plus += item.parameter_points
        end
        effective = true
      end
      if item.recover_hp_rate == 0 and item.recover_hp == 0
        self.damage = ""
        if item.recover_sp_rate == 0 and item.recover_sp == 0 and
           (item.parameter_type == 0 or item.parameter_points == 0)
          unless @state_changed
            self.damage = "Manqué!"
          end
        end
      end
    else
      self.damage = "Manqué!"
    end
    unless $game_temp.in_battle
      self.damage = nil
    end
    return effective
  end
  def slip_damage_effect
    self.damage = self.maxhp / 10
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    self.hp -= self.damage
    return true
  end
  def elements_correct(element_set)
    if element_set == []
      return 100
    end
    weakest = -100
    for i in element_set
      weakest = [weakest, self.element_rate(i)].max
    end
    return weakest
  end
end


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 17 messages ]  Aller à la page 1, 2  Suivant

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728