# module RPG class Skill#技能类 #类型: 0 是 正常技能(默认RPG MAKER 技能) # 1 是 SRPG技能 # 2 是 EFS技能 def type #定义类型 #类型=@名称。拆分(/,/)[1] type = @name.split(/;/)[1] # #返回类型!=无类型至i:0 return type != nil ? type.to_i : 0 end def name#定义名称 # 名称=@名称。拆分(/,/)[0] name = @name.split(/,/)[0] #返回名称!=无名称:“” return name != nil ? name : "" end def range##定义射程区域 #射程区域=@名称。拆分(/,/)[1] range = @name.split(/,/)[1] #返回射程区域!=无射程区域至i:2 return range != nil ? range.to_i : 2 end #---<范围魔法>--- def area#定义魔法范围 #魔法范围@名称。拆分(/,/)[2] area = @name.split(/,/)[2] #返回魔法范围!=魔法范围至i:2 return area != nil ? area.to_i : 2 end #---<范围魔法>--- # 0 : 使用后无法行动 # 1 : 使用后可以行动 # 2 : 行动后无法使用,且使用后无法行动 # 3 : 行动后无法使用,且使用后可以行动 def cost_type#定义成本类型 ##魔法范围@名称。拆分(/,/)[3] area = @name.split(/,/)[3] #返回魔法范围!=无?魔法范围至i:0 return area != nil ? area.to_i : 0 end def scope#定义能力范围 #如果元素集。包括(Wzj::技能用于敌方区域) if @element_set.include?(Wzj::SKILL_FOR_ENEMY_AREA) return 8 #返回 8 #否则元素集。包括(Wzj::我们的技能领域) elsif @element_set.include?(Wzj::SKILL_FOR_US_AREA) return 9 #返回 9 #否则元素集。包括(Wzj::我们区域的技能_HP0) elsif @element_set.include?(Wzj::SKILL_FOR_US_AREA_HP0) return 10#返回 10 else#否则 return @scope#返回@范围 end end end
class Scene_Map #======================================================= # SRPG技能关联 # 格式: 技能ID => 执行技能的名字 #======================================================= #,6,10,9技能_千和箭头(@攻击者,@技能,目标) SRPG_SKILLS = { 1 => "skill_ten_thousand_arrows(@attacker, @skill,target)", 2 => "skill_zhenfen_morale(@attacker, @skill,target)", 3 => "", 4 => "skill_distory_morale(@attacker, @skill,target)" } #======================================================= # SRPG技能发动条件 # 格式: 技能ID => 检查技能的method名字 # 如果空的,则可以使用 #======================================================= #,6,10,9 #SRPG_可使用SRPG技能 SRPG_SKILLS_CAN_USE = { 1 => "check_skill_ten_thousand_arrows(self.army)", 2 => "", 3 => "", 4 => "" } def get_srpg_skills_can_use_list#定义获取srpg技能可以使用列表 return SRPG_SKILLS_CAN_USE.clone#返回 SRPG技能可用。克隆 end #======================================================= # SRPG技能 1 : 万箭齐发 #======================================================= #定义技能_千和箭头(@攻击者,@技能,目标) def skill_ten_thousand_arrows(attacker,skill,target) #攻击者。事件转向xy(目标事件.x,目标。事件.y) attacker.event.turn_toward_xy(target.event.x,target.event.y) #目标事件转向方向xy(攻击者.事件.x,攻击者.事件.y) target.event.turn_toward_xy(attacker.event.x,attacker.event.y) #攻击者。事件伤害=“放箭!" attacker.event.damage = "放箭!" #攻击者。事件关键=错误 attacker.event.critical = false #攻击者。事件伤害弹出=真 attacker.event.damage_pop = true #播放动画(攻击者、攻击者、事件、角色名称+“-atk-1”) play_anime(attacker,attacker.event.character_name + "-atk-1") #目标列表=[] target_list = [] #目标成员。每个执行|组| target.member.each do|group| #组战士每个都做|f| group.fighter.each do|f| #下一个如果f死了? next if f.dead? # 目标列表.推送 f target_list.push f end end #全部阵亡=假 all_killed = false #数字位数=0 num_hit = 0 #总和=0.0 sum = 0.0 #攻击者。成员每个执行|组| attacker.member.each do|group| ##组战士每个都做|f| group.fighter.each do|f| if target_list.size == 0 all_killed = true break end next if f.dead? or f.is_a?(EFS_Infantry) or f.is_a?(EFS_Horseman) or f.is_a?(EFS_Hero) or f.is_a?(EFS_Object) Audio.se_play("Audio/SE/"+f.s_shoot_se+ (rand(f.s_shoot_se_num)+1).to_s,80, 100) wait_a_moment(true,4) Audio.se_play("Audio/SE/"+f.s_pass_by_se+ (rand(f.s_pass_by_se_num)+1).to_s,80, 100) wait_a_moment(true,4) #如果射中 if rand(101) <= f.accuracy #p attacker.event.x - target.event.x,attacker.event.y a = f.give_me_a_arrow_obj(attacker.event,target.event.x-attacker.event.x,target.event.y-attacker.event.y,true) $game_map.missiles.push a $scene.spriteset.add_missiles(a) target.event.animation_id = 153 Audio.se_play("Audio/SE/"+f.s_atk_se+ (rand(f.s_atk_se_num)+1).to_s,80, 100) wait_a_moment(true,4) num_hit += 1 t = target_list[rand(target_list.size)] damage = f.s_bro_atk + [f.s_base_atk - t.armor_hp_max,rand(5)+5].max t.recieve_damage(damage) if t.dead? target_list.delete(t) end sum += damage target.event.damage = damage target.event.critical = false target.event.damage_pop = true else #如果没射中 a = f.give_me_a_arrow_obj(attacker.event,target.event.x-attacker.event.x,target.event.y-attacker.event.y,false) $game_map.missiles.push a $scene.spriteset.add_missiles(a) target.event.damage = "Miss" target.event.critical = false target.event.damage_pop = true target.event.animation_id = 135 Audio.se_play("Audio/SE/"+f.s_drop_se+ (rand(f.s_drop_se_num)+1).to_s,80, 100) wait_a_moment(true,4) end #if zhong end #group break if all_killed end #attacker target.event.damage = sum.round target.event.critical = true target.event.damage_pop = true Notification.post("命中"+target.the_name+"中的"+num_hit.to_s+"人,共计造成"+sum.round.to_s+"点伤害。") if all_killed for id in @armies.keys if @armies[id].all_dead? next if @dealed_death_actors.include?(id) deaths_disappear(id) end end end target.delete_all_dead wait_a_moment(true) end #============================================== def check_skill_ten_thousand_arrows(attacker) sum = 0 attacker.member.each do|group| group.fighter.each do|f| next if f.dead? or f.is_a?(EFS_Infantry) or f.is_a?(EFS_Horseman) or f.is_a?(EFS_Hero) or f.is_a?(EFS_Object) sum += 1 end end return sum >=5 end #======================================================= # SRPG技能 2 : 振奋士气 #======================================================= #定义-skill振奋士气(攻击者、技能、目标) def skill_zhenfen_morale(attacker,skill,target) # 目标添加常量状态(10) target.add_const_state(10) end #======================================================= # SRPG技能 4 : 士气打击 #======================================================= #定义技能分散士气(攻击者、技能、目标) #def-skill distory士气(攻击者、技能、目标) def skill_distory_morale(attacker,skill,target) # 目标添加常量状态(5) target.add_const_state(5) end
技能.png (48.25 KB, 下载次数: 17)
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |