#============================================================================== # ¡á CSSR1-«¢«Ó«ê«Æ«£«Ý«¤«ó«È«·«¹«Æ«à2 ver 1.0a # by Clum-Sea #------------------------------------------------------------------------------ # «¢«Ó«ê«Æ«£«Ý«¤«ó«È«·«¹«Æ«àªò÷³î°ª·ªÞª¹¡£¡¸2¡¹ªÊªÎªÇá´ª·ÞÂ?ª¬?ªïªÃªÆª¤ªÞª¹¡£ #============================================================================== # Óôìý«Õ«é«°ªòONªËª¹ªë $cssr_script["CSSR1"] = true #------------------------------------------------------------------------------ # ¡Ü ÞŪ¤Û° #------------------------------------------------------------------------------ =begin ÐÑüުΪÏ?àõªÇàâïÒªòª·ªÞª¹¡£Ù£îñª¸ªãª¢ªêªÞª»ªó¡£?ªïªêªËÜÜ?ʦÒöªÇª¹¡£ ª³ªÎ?Ù¥ªÏ?àõªËªÄª¤ªÆªÀª±ªÊªÎªÇ¡¢ª½ªÎöâªÎ?Ù¥ªÏÜÅ÷׫Ð?«¸«ç«óªÎ«Ú?«¸ªÇ ̸ªÆª¯ªÀªµª¤¡£ ì¤ù»ªÎ?àõªò¡¢ÙëÐïªÞª¿ªÏÛÁÎýªËÜõÊ¥ª·ªÞª¹¡£ AP«¹«­«ë(«¹«­«ëID),(ù±é©AP) ¡Ø ¡¸,¡¹ªÏÚâÊǪǪ¹¡£ñ¼ëòª·ªÆª¯ªÀªµª¤¡£ ÞÅéÄÖÇ£ºAP«¹«­«ë3,15 £ºID3ªÎ«¹«­«ëªò15APªÇã§Ô𪷪ު¹¡£ ÜÜ?ʦÒöªÊªÎªÇû¿ª­ªÊªÀª±ÜõÊ¥ª·ªÆª¯ªÀªµª¤¡£ ª¿ªÀª·¡¢ª¢ªÞªêªËªâÒýª¹ª®ªëªÈ¡¢ªâª·ª«ª·ª¿ªéñ쪯ªÊªëª«ªâª·ªìªÞª»ªó¡£ ªµªéªË«¢«¯«¿?ª´ªÈ¡¢ªâª·ª¯ªÏ«¯«é«¹ª´ªÈªËã§Ô𪹪뫹«­«ëªòàâïҪǪ­ªÞª¹¡£ ì¤ù»ªÎ?àõªò¡¢ÙëÐïªÞª¿ªÏÛÁÎýªËÜõÊ¥ª·ªÞª¹¡£ ?«¢«¯«¿? A(«¢«¯«¿?ID)AP«¹«­«ë(«¹«­«ëID),(ù±é©AP) ÞÅéÄÖÇ£ºA1AP«¹«­«ë3,15 £ºID1ªÎ«¢«¯«¿?ªÏID3ªÎ«¹«­«ëªò15APªÇã§Ô𪷪ު¹¡£ ?«¯«é«¹ C(«¯«é«¹ID)AP«¹«­«ë(«¹«­«ëID),(ù±é©AP) ÞÅéÄÖÇ£ºC1AP«¹«­«ë3,15 £ºID1ªÎ«¯«é«¹ªÎ«¢«¯«¿?ªÏID3ªÎ«¹«­«ëªò15APªÇã§Ô𪷪ު¹¡£ õÌý­ªËªâª¦ìéÓø?àõªÀª±ªòßöª¤ªÆªªª­ªÞª¹¡£ «««¹«¿«Þ«¤«ºú£ÙͪâØΪ쪺ªËàâïÒª·ªÆª¯ªÀªµª¤¡£ AP«¹«­«ë(«¹«­«ëID),(ù±é©AP) : ÜÅ÷תÎ?àõ A(«¢«¯«¿?ID)AP«¹«­«ë(«¹«­«ëID),(ù±é©AP) : «¢«¯«¿?ª´ªÈªËàâïҪǪ­ªë?àõ C(«¯«é«¹ID)AP«¹«­«ë(«¹«­«ëID),(ù±é©AP) : «¯«é«¹ª´ªÈªËàâïҪǪ­ªë?àõ =end #------------------------------------------------------------------------------ # «««¹«¿«Þ«¤«ºú£ÙÍ #------------------------------------------------------------------------------ # «¨«Í«ß?Ù£ªòݪ±ªëÙþí®Öª SPLIT = /,/ # ¡ÚÙëÐïªÏÍô?ªòª¹ªëª´ªÈªËAPªòüòÔ𪹪몫(ture = ª¹ªë,false = ª·ªÊª¤) WEAPON_ATTACK_GET_AP = false # ¡ÚÛÁÎýªÏÍô?ªòª¹ªëª´ªÈªËAPªòüòÔ𪹪몫 ARMOR_ATTACK_GET_AP = false # ¡ÚªÎªÉªÁªéª«(ªÞª¿ªÏ?Û°)ªòtrueªËª·ª¿íÞùê¡¢Íô?ªò«ß«¹ª·ªÆªâAPªòüòÔ𪹪몫 ATTACK_MISS_GET_AP = false # ¡ÚªÎªÉªÁªéª«(ªÞª¿ªÏ?Û°)ªòtrueªËª·ª¿íÞùêªÎüòÔðAPö· ATTACK_GET_AP = 1 # ¡ÚªÎªÉªÁªéª«(ªÞª¿ªÏ?Û°)ªòtrueªËª·ª¿ªÈª­Íô?ª·ª¿«¢«¯«¿?ªÎªßAPªòüòÔ𪹪몫 ATTACK_GET_AP_ACTOR = false # ÙëÐïªÏ«¨«Í«ß?ªòÓª¿ªÈª­ªËAPªòüòÔðªÇª­ªëª« ENEMY_BEATEN_GET_AP_WEAPON = true # ÛÁÎýªÏ«¨«Í«ß?ªòÓª¿ªÈª­ªËAPªòüòÔðªÇª­ªëª« ENEMY_BEATEN_GET_AP_ARMOR = true # «¨«Í«ß?ª«ªéªâªéª¨ªëAPªòàâïÒª·ªÆª¤ªÊª¤íÞùêªÎAP DEFAULT_AP = 1 #------------------------------------------------------------------------------ # ¡Ü ?àõàâïÒ #------------------------------------------------------------------------------ AP_ELEMENT = /AP«¹«­«ë([0-9]+),([0-9]+)/ AC_AP_ELEMENT = /([AC])([0-9]+)AP«¹«­«ë([0-9]+),([0-9]+)/ #============================================================================== # ¡á Game_Battler (ÝÂùÜïÒëù 3) #------------------------------------------------------------------------------ # «Ð«È«é?ªòÐ⪦«¯«é«¹ªÇª¹¡£ª³ªÎ«¯«é«¹ªÏ Game_Actor «¯«é«¹ªÈ Game_Enemy «¯«é # «¹ªÎ«¹?«Ñ?«¯«é«¹ªÈª·ªÆÞÅéĪµªìªÞª¹¡£ #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ¡Ü ÷×ßÈÍô?ªÎ?ÍýîêéÄ # attacker : Íô?íº («Ð«È«é?) #-------------------------------------------------------------------------- alias attack_effect_cssr1 attack_effect def attack_effect(attacker) # ð¯ìéÙ¤ñé÷÷ïÒ 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 if WEAPON_ATTACK_GET_AP attacker.weapon_ap[attacker.weapon_id] += ATTACK_GET_AP end if ARMOR_ATTACK_GET_AP for i in 1..4 next if eval("attacker.armor#{i}_id") == nil attacker.armor_ap[eval("attacker.armor#{i}_id")] end end unless ATTACK_GET_AP_ACTOR for actor in $game_party.actors if WEAPON_ATTACK_GET_AP actor.weapon_ap[actor.weapon_id] += ATTACK_GET_AP end if ARMOR_ATTACK_GET_AP for i in 1..4 next if eval("attacker.armor#{i}_id") == nil attacker.armor_ap[eval("attacker.armor#{i}_id")] end end end end # «ß«¹ª·ª¿íÞùê else if ATTACK_MISS_GET_AP if WEAPON_ATTACK_GET_AP attacker.weapon_ap[attacker.weapon_id] += ATTACK_GET_AP end if ARMOR_ATTACK_GET_AP for i in 1..4 next if eval("attacker.armor#{i}_id") == nil attacker.armor_ap[eval("attacker.armor#{i}_id")] end end end end unless ATTACK_GET_AP_ACTOR for actor in $game_party.actors if WEAPON_ATTACK_GET_AP actor.weapon_ap[actor.weapon_id] += ATTACK_GET_AP end if ARMOR_ATTACK_GET_AP for i in 1..4 next if eval("attacker.armor#{i}_id") == nil attacker.armor_ap[eval("attacker.armor#{i}_id")] end end end end # ꪪÎ?×âªò?ú¼ attack_effect_cssr1(attacker) end end #============================================================================== # ¡á Game_Actor #------------------------------------------------------------------------------ # «¢«¯«¿?ªòÐ⪦«¯«é«¹ªÇª¹¡£ª³ªÎ«¯«é«¹ªÏ Game_Actors «¯«é«¹ ($game_actors) # ªÎ?Ý»ªÇÞÅéĪµªì¡¢Game_Party «¯«é«¹ ($game_party) ª«ªéªâ?ðΪµªìªÞª¹¡£ #============================================================================== class Game_Actor < Game_Battler #---------------------------------------------------------------------------- # ¡Ü ÍëËÒ«¤«ó«¹«¿«ó«¹?? #---------------------------------------------------------------------------- attr_accessor :weapon_ap # ÙëÐïªÎAP attr_accessor :weapon_skills # úÞî¤?Ý᪷ªÆª¤ªëÙëÐïªÎ«¹«­«ë attr_accessor :armor_ap # ÛÁÎýªÎAP attr_accessor :armor_skills # úÞî¤?Ý᪷ªÆª¤ªëÛÁÎýªÎ«¹«­«ë #---------------------------------------------------------------------------- # ¡Ü «¤«ó«¯«ë?«É #---------------------------------------------------------------------------- include CSSR_ELEMENT #---------------------------------------------------------------------------- # ¡Ü «»«Ã«È«¢«Ã«× # actor_id : «¢«¯«¿? ID #---------------------------------------------------------------------------- alias setup_cssr1 setup def setup(actor_id) # ꪪÎ?×âªò?ú¼ setup_cssr1(actor_id) # õÚÊ¥?×â @weapon_ap = [] if @weapon_ap == nil for i in 1...$data_weapons.size @weapon_ap[i] = 0 if @weapon_ap[i] == nil end @armor_ap = [] if @armor_ap == nil for i in 1...$data_armors.size @armor_ap[i] = 0 if @armor_ap[i] == nil end end #---------------------------------------------------------------------------- # ¡Ü ÙëÐ﫹«­«ëªÎö¢Ôð # weapon : ÙëÐï #---------------------------------------------------------------------------- def weapon_skill(weapon) skills = [] if weapon != nil # ÊÀ?àõªòö¢Ôð ap_element = get_element_id(AP_ELEMENT) ac_ap_element = get_element_id(AC_AP_ELEMENT) # ap_element ªÎ ac_ap_element ªÈÔÒª¸?ö·ªòἪ¹ ap_element -= ac_ap_element # ?ßã for id in ap_element if weapon.element_set.include?(id) skills.push(get_element_number(AP_ELEMENT, id)) end end for id in ac_ap_element if weapon.element_set.include?(id) if $data_system.elements[id] =~ AC_AP_ELEMENT if $1 == "A" if @actor_id == get_element_number(AC_AP_ELEMENT, id, 2) skills.push(get_element_number(AC_AP_ELEMENT, id, 3)) end end if $1 == "C" if @class_id == get_element_number(AC_AP_ELEMENT, id, 2) skills.push(get_element_number(AC_AP_ELEMENT, id, 3)) end end end end end end return skills end #---------------------------------------------------------------------------- # ¡Ü ÛÁÎý«¹«­«ëªÎö¢Ôð # armor : ÛÁÎý #---------------------------------------------------------------------------- def armor_skill(armor) skills = [] if armor != nil # ÊÀ?àõªòö¢Ôð ap_element = get_element_id(AP_ELEMENT) ac_ap_element = get_element_id(AC_AP_ELEMENT) # ap_element ªÎ ac_ap_element ªÈÔÒª¸?ö·ªòἪ¹ ap_element -= ac_ap_element # ?ßã for id in ap_element if armor.guard_element_set.include?(id) skills.push(get_element_number(AP_ELEMENT, id)) end end for id in ac_ap_element if armor.guard_element_set.include?(id) if $data_system.elements[id] =~ AC_AP_ELEMENT if $1 == "A" if @actor_id == get_element_number(AC_AP_ELEMENT, id, 2) skills.push(get_element_number(AC_AP_ELEMENT, id, 3)) end end if $1 == "C" if @class_id == get_element_number(AC_AP_ELEMENT, id, 2) skills.push(get_element_number(AC_AP_ELEMENT, id, 3)) end end end end end end return skills end #---------------------------------------------------------------------------- # ¡Ü ÙëÐ﫹«­«ëªÎù±é©APªÎö¢Ôð # weapon : ÙëÐï #---------------------------------------------------------------------------- def weapon_need_ap(weapon) need_ap = [] if weapon != nil # ÊÀ?àõªòö¢Ôð ap_element = get_element_id(AP_ELEMENT) ac_ap_element = get_element_id(AC_AP_ELEMENT) # ap_element ªÎ ac_ap_element ªÈÔÒª¸?ö·ªòἪ¹ ap_element -= ac_ap_element # ?ßã for id in ap_element if weapon.element_set.include?(id) need_ap.push(get_element_number(AP_ELEMENT, id, 2)) end end for id in ac_ap_element if weapon.element_set.include?(id) if $data_system.elements[id] =~ AC_AP_ELEMENT if $1 == "A" if @actor_id == get_element_number(AC_AP_ELEMENT, id, 2) need_ap.push(get_element_number(AC_AP_ELEMENT, id, 4)) end end if $1 == "C" if @class_id == get_element_number(AC_AP_ELEMENT, id, 2) need_ap.push(get_element_number(AC_AP_ELEMENT, id, 4)) end end end end end end return need_ap end #---------------------------------------------------------------------------- # ¡Ü ÛÁÎý«¹«­«ëªÎù±é©APªÎö¢Ôð # armor : ÛÁÎý #---------------------------------------------------------------------------- def armor_need_ap(armor) need_ap = [] if armor != nil # ÊÀ?àõªòö¢Ôð ap_element = get_element_id(AP_ELEMENT) ac_ap_element = get_element_id(AC_AP_ELEMENT) # ap_element ªÎ ac_ap_element ªÈÔÒª¸?ö·ªòἪ¹ ap_element -= ac_ap_element # ?ßã for id in ap_element if armor.guard_element_set.include?(id) need_ap.push(get_element_number(AP_ELEMENT, id, 2)) end end for id in ac_ap_element if armor.guard_element_set.include?(id) if $data_system.elements[id] =~ AC_AP_ELEMENT if $1 == "A" if @actor_id == get_element_number(AC_AP_ELEMENT, id, 2) need_ap.push(get_element_number(AC_AP_ELEMENT, id, 4)) end end if $1 == "C" if @class_id == get_element_number(AC_AP_ELEMENT, id, 2) need_ap.push(get_element_number(AC_AP_ELEMENT, id, 4)) end end end end end end return need_ap end #---------------------------------------------------------------------------- # ¡Üã§Ô𫹫­«ëªÎö¢Ôð ¡Úî¢ïÒëù attr_accessor :sklls ªÎ«á«½«Ã«É #---------------------------------------------------------------------------- def skills # ?Ýáù¡ªÈ«¹«­«ëªÎö¢Ôð weapon = $data_weapons[@weapon_id] @weapon_skills = [] @weapon_skills = weapon_skill(weapon) if weapon != nil armor = [] @armor_skills = [] for i in 1..4 next if eval("@armor#{i}_id") == nil armor[i] = $data_armors[eval("@armor#{i}_id")] @armor_skills += armor_skill(armor[i]) end # ã§Ô𫹫­«ëªòö¢Ôð equip_learn_skill = [] if @weapon_skills != [] equip_learn_skill += @weapon_skills end if @armor_skills != [] equip_learn_skill += @armor_skills end # ù±é©APªòüòÔ𪷪ƪ¤ª¿ªé«¹«­«ëªòã§Ôð for i in 1...$data_weapons.size @weapon_skills = weapon_skill($data_weapons[i]) for j in 0...weapon_need_ap($data_weapons[i]).size if @weapon_ap[i] >= weapon_need_ap($data_weapons[i])[j] unless equip_learn_skill.include?(@weapon_skills[j]) equip_learn_skill.push(@weapon_skills[j]) end end end end for i in 1...$data_armors.size @armro_skills = armor_skill($data_armors[i]) for j in 0...armor_need_ap($data_armors[i]).size if @armor_ap[i] >= armor_need_ap($data_armors[i])[j] unless equip_learn_skill.include?(@armor_skills[j]) equip_learn_skill.push(@armor_skills[j]) end end end end # ã§Ô𫹫­«ëªòÚ÷ª¹ return (@skills + equip_learn_skill).sort.compact end #-------------------------------------------------------------------------- # ¡Ü «¹«­«ëªÎÞÅéÄʦÒö÷÷ïÒ # skill_id : «¹«­«ë ID #-------------------------------------------------------------------------- def skill_can_use?(skill_id) return super(skill_id) end end #============================================================================== # ¡á Window_Base #------------------------------------------------------------------------------ # «²?«àñéªÎª¹ªÙªÆªÎ«¦«£«ó«É«¦ªÎ«¹?«Ñ?«¯«é«¹ªÇª¹¡£ #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # ¡Ü «¢«¤«Æ«àÙ£ªÎÙÚ? ¡Úî¢ïÒëù # item : «¢«¤«Æ«à # x : ÙÚ?à» X ñ¨øö # y : ÙÚ?à» Y ñ¨øö #-------------------------------------------------------------------------- def draw_item_name(item, x, y) if item == nil return end bitmap = RPG::Cache.icon(item.icon_name) self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.font.color = normal_color if item.is_a?(RPG::Weapon) or item.is_a?(RPG::Armor) self.contents.draw_text(x + 28, y, 212, 32, item.name.split(SPLIT)[0]) else self.contents.draw_text(x + 28, y, 212, 32, item.name) end end end #============================================================================== # ¡á Window_Help #------------------------------------------------------------------------------ # «¹«­«ëªä«¢«¤«Æ«àªÎ?Ù¥¡¢«¢«¯«¿?ªÎ«¹«Æ?«¿«¹ªÊªÉªòøúãƪ¹ªë«¦«£«ó«É«¦ªÇª¹¡£ #============================================================================== class Window_Help < Window_Base #-------------------------------------------------------------------------- # ¡Ü «¨«Í«ß?àâïÒ ¡Úî¢ïÒëù # enemy : Ù£îñªÈ«¹«Æ?«Èªòøúãƪ¹ªë«¨«Í«ß? #-------------------------------------------------------------------------- def set_enemy(enemy) text = enemy.name.split(SPLIT)[0] state_text = make_battler_state_text(enemy, 112, false) if state_text != "" text += " " + state_text end set_text(text, 1) end end #============================================================================== # ¡á Window_EquipItem ¡Úî¢ïÒëù #------------------------------------------------------------------------------ # ?Ýá?ØüªÇ¡¢?Ýá?ÌÚªÎý¦ÜͪȪʪ뫢«¤«Æ«àªÎìé?ªòøúãƪ¹ªë«¦«£«ó«É«¦ªÇª¹¡£ #============================================================================== class Window_EquipItem < Window_Selectable #-------------------------------------------------------------------------- # ¡Ü ú£ÙͪÎÙÚ? # index : ú£ÙÍÛã? #-------------------------------------------------------------------------- def draw_item(index) item = @data[index] x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 case item when RPG::Weapon number = $game_party.weapon_number(item.id) when RPG::Armor number = $game_party.armor_number(item.id) end bitmap = RPG::Cache.icon(item.icon_name) self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.font.color = normal_color self.contents.draw_text(x + 28, y, 212, 32, item.name.split(SPLIT)[0], 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end end #============================================================================== # ¡á Scene_Battle (ÝÂùÜïÒëù 2) #------------------------------------------------------------------------------ # «Ð«È«ë?ØüªÎ?×âªòú¼ª¦«¯«é«¹ªÇª¹¡£ #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ¡Ü«¨«Í«ß?ªÎAPªÎö¢Ôð #-------------------------------------------------------------------------- def enemy_ap(enemy) return enemy.name.split(SPLIT)[1].to_i end #-------------------------------------------------------------------------- # ¡Ü «¢«Õ«¿?«Ð«È«ë«Õ«§?«ºËÒã· #-------------------------------------------------------------------------- alias start_phase5_cssr1 start_phase5 def start_phase5 # ꪪÎ?×âªò?ú¼ start_phase5_cssr1 # õÚÊ¥?×â get_ap = 0 # üòÔð AP ªÎö¢Ôð for enemy in $game_troop.enemies # ?ªìªÆª¤ªëíÞùêªÏüòÔ𪷪ʪ¤¡£ next if enemy.hidden get_ap += enemy_ap(enemy) != nil ? enemy_ap(enemy) : DEFAULT_AP end for actor in $game_party.actors # APªòüòÔð weapon_id = actor.weapon_id if ENEMY_BEATEN_GET_AP_WEAPON actor.weapon_ap[weapon_id] += get_ap unless weapon_id == 0 or weapon_id == nil end if ENEMY_BEATEN_GET_AP_ARMOR for i in 1..4 a = "actor.armor#{i}_id" actor.armor_ap[eval(a)] += get_ap unless eval(a) == 0 or eval(a) == nil end end end end end