设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1333|回复: 4
打印 上一主题 下一主题

[已经过期] 如果是当前领导者=无 将画面聚焦=map.x值最大的同伴上

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7714
在线时间
1332 小时
注册时间
2015-8-15
帖子
749
跳转到指定楼层
1
发表于 2023-4-10 09:04:17 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 金芒芒 于 2023-4-10 09:06 编辑

@current_leader.kds if @current_leader != nil

Lv4.逐梦者

梦石
0
星屑
7714
在线时间
1332 小时
注册时间
2015-8-15
帖子
749
5
 楼主| 发表于 2023-4-10 14:31:39 | 只看该作者
纯属小虫 发表于 2023-4-10 14:19
@current_leader 貌似又是一个非原XP默认变量,把mod脚本发出来吧

https://pan.baidu.com/s/1i4tdmXB
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7714
在线时间
1332 小时
注册时间
2015-8-15
帖子
749
4
 楼主| 发表于 2023-4-10 14:27:27 | 只看该作者
本帖最后由 金芒芒 于 2023-4-10 14:29 编辑
纯属小虫 发表于 2023-4-10 14:19
@current_leader 貌似又是一个非原XP默认变量,把mod脚本发出来吧


https://pan.baidu.com/s/1i4tdmXB
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7714
在线时间
1332 小时
注册时间
2015-8-15
帖子
749
3
 楼主| 发表于 2023-4-10 14:22:32 | 只看该作者
纯属小虫 发表于 2023-4-10 14:19
@current_leader 貌似又是一个非原XP默认变量,把mod脚本发出来吧
  1. class Scene_Map
  2.   #=======================================================
  3.   # EFS 战斗模式
  4.   # 1 : 混战 (阵形不可用,默认全军冲锋,默认出生点)
  5.   # 2 : 正常阵形状 (正常有阵形,默认推进,默认出生点)
  6.   # 3 : 伏击战 (守军士气大跌,被夹击包围,伏击出生点)
  7.   # 4 : 攻城战  (守军站在墙上指定位置,攻方默认出生点,守军城墙点)
  8.   # 5 : 巷战    (有居民助战和乱窜,攻方默认出生点,守方分队出生点)
  9.   # 6 : 扫荡战  (抽取部分攻方打守方(每队5人内),混战,默认出生点)
  10.   
  11.   #=======================================================
  12.   attr_accessor :player_controll
  13.   attr_accessor :lisenter
  14.   attr_accessor :group_lisenter
  15.   attr_accessor :current_leader
  16.   attr_accessor :efs_mode
  17.   #attr_accessor :efs_winner
  18.   attr_reader  :efs_after_battle_level
  19.   #--------------------------------------------------------
  20.   # 开始EFS   _update_efs
  21.   #--------------------------------------------------------   
  22.   def start_efs(attacker,defender,mode = 1)
  23.     #$game_system.bgm_memorize
  24.    
  25.      
  26.     $game_screen.start_tone_change(Tone.new(-255,-255,-255), 20)
  27.    
  28.     play_anime(attacker,attacker.event.character_name + "-atk-1")
  29.     play_anime(defender,defender.event.character_name + "-def")
  30.    
  31.     @efs_mode = mode
  32.     @attacker = attacker
  33.     @defender = defender
  34.     #等待一会儿
  35.     wait_a_moment(true)
  36.    
  37.     # 设置主角的透明状态
  38.     $game_player.transparent = true

  39.     #清除地图切换状态
  40.     @map_changed = false
  41.     #战略界面
  42.     $game_switches[3] = false
  43.     #刷新板子
  44.     @winstatus.clean_my_actor
  45.    
  46.     update_windows
  47.    
  48.    
  49. =begin
  50.     #交战(切换地图)
  51.     load_or_map_data #记录旧的地图信息
  52.     set_new_map_info(attacker,map_id)
  53.     change_map   #开始切换地图


  54. =end
  55.    
  56.     #交战(切换地图)
  57.     engage(attacker,defender)
  58.     #更新直到切换地图
  59.     $game_system.update
  60.     $game_screen.update
  61.     $game_map.update
  62.      change_map
  63.     #切换地图
  64.     transfer_player
  65.    
  66.    
  67.     #设置对手
  68.     attacker.set_target(defender)
  69.     defender.set_target(attacker)
  70.     #开始初始化
  71.     #如果地图更改,则efs主初始化(攻击者、防御者、@efs模式)
  72.     efs_main_initialize(attacker,defender,@efs_mode) if @map_changed
  73.    
  74.     #是否由玩家控制
  75.     @player_controll =  check_player_controll
  76.    
  77.    
  78.     #根据战斗模式设置
  79.    
  80.    
  81.     #初始队列 将它们分组
  82.     group_them_up

  83.    
  84.     #各种刷新
  85.     Graphics.update
  86.     Input.update
  87.     _update_efs
  88.     #将画面聚焦到领导者
  89.    # @现任领导人。kds如果是当前领导者!=无
  90.     @current_leader.kds if @current_leader != nil
  91.     #改变画面颜色
  92.     $game_screen.start_tone_change(Tone.new(@efs_tone_R,@efs_tone_G,@efs_tone_B), 20)
  93.     #等待一会儿   
  94.     wait_a_moment(true)
  95.     #开启消息
  96.     Notification.show
  97.     #显示提示
  98.     Graphics.tips("消灭敌人!")
  99.     #$game_switches[10] = true

  100.     #角色信息
  101.     #@efs_character_bar.visible = true
  102.     #@efs_character_bar.display_or_not
  103.     #@efs_item_bar.visible = true
  104.    
  105.     #主循环Main loop for efs
  106.     loop do  #===============================↑战斗前
  107.       #提示消息更新
  108.       Notification.update
  109.       #画面与输入的更新
  110.       Graphics.update                        
  111.       Input.update
  112.       #更新EFS系统
  113.       _update_efs                           #←战斗中
  114.       #如果不在EFS就中断循环
  115.       break unless $game_temp.inefs
  116.     end    #================================ ↓战斗后
  117.    

  118.    # @efs_character_bar.visible = false
  119.    # @efs_item_bar.visible = false
  120.    
  121.     #改变画面颜色
  122.     $game_screen.start_tone_change(Tone.new(@efs_tone_R,@efs_tone_G,@efs_tone_B), 20)
  123.    
  124.     #$game_system.bgm_restore
  125.    
  126.      #等待一会儿
  127.     wait_a_moment(true)
  128.    
  129.    
  130.     #战斗结束总评
  131.     p "战斗结束总评 to be added"
  132.    
  133.     #@efs_winner =
  134.    
  135.    
  136.     $game_system.bgm_play($game_system.battle_bgm)
  137.    
  138.    
  139.     #清除双方的死亡士兵
  140.     attacker.delete_all_dead
  141.     defender.delete_all_dead
  142.     #玩家控制 = false
  143.     @player_controll = false
  144.     #清空对手
  145.     attacker.set_target(nil)
  146.     defender.set_target(nil)
  147.    
  148.     # 设置主角的透明状态
  149.     $game_player.transparent = false
  150.     #开启战略菜单
  151.     $game_switches[3] = true
  152.     #更新窗口
  153.     update_windows
  154.     #更新画面
  155.     Graphics.update
  156.     $game_system.update
  157.     $game_screen.update
  158.     $game_map.update
  159.    
  160.     # 演奏战斗 BGM
  161.     #$game_system.bgm_play($game_system.battle_bgm)
  162.    
  163.   end  
  164.   #--------------------------------------------------------
  165.   # 开始EFS 在非SLG情况下   _update_efs
  166.   #--------------------------------------------------------   
  167.   def start_efs_nonslg(attacker,defender,map_id,mode = 2,bool = false,for_titile = false)
  168.     @efs_story_mode = bool
  169.     if bool
  170.       $game_switches[3] = false
  171.       $game_switches[6] = true
  172.       $game_switches[10] = false
  173.       #Notification.pause = true
  174.     end  

  175.        # 记忆主角行走图
  176.     @role_walk_graphic = $game_player.character_name
  177.     # 生成光标
  178.     $game_player.character_name = Wzj::CURSOR
  179.    
  180.    
  181.     $game_screen.start_tone_change(Tone.new(-255,-255,-255), 20)
  182.     @efs_mode = mode
  183.     @attacker = attacker
  184.     @defender = defender
  185.    
  186.     # 设置主角的透明状态
  187.     $game_player.transparent = true
  188.    
  189.     #清除地图切换状态
  190.     @map_changed = false

  191.     #交战(切换地图)
  192.     load_or_map_data #记录旧的地图信息
  193.     set_new_map_info(attacker,map_id)
  194.     change_map   #开始切换地图
  195.     #更新直到切换地图
  196.     $game_system.update
  197.     $game_screen.update
  198.     $game_map.update
  199.     change_map
  200.     #切换地图
  201.     transfer_player
  202.     #设置对手
  203.     attacker.set_target(defender)
  204.     defender.set_target(attacker)
  205.     #开始初始化
  206.     efs_main_initialize(attacker,defender,@efs_mode) if @map_changed
  207.    
  208.     #是否由玩家控制
  209.     @player_controll =  check_player_controll
  210.     group_them_up #注意是否是战斗移动部分

  211.     #各种刷新
  212.     Graphics.update
  213.     Input.update
  214.     _update_efs
  215.     #将画面聚焦到领导者
  216.     @current_leader.kds if @current_leader != nil
  217.     #改变画面颜色
  218.     $game_screen.start_tone_change(Tone.new(@efs_tone_R,@efs_tone_G,@efs_tone_B), 20)
  219.     #等待一会儿   
  220.     wait_a_moment(true)
  221.     #开启消息
  222.     Notification.hide if @efs_story_mode


  223.    
  224.     #主循环Main loop for efs
  225.     loop do  #===============================↑战斗前
  226.       #提示消息更新
  227.       Notification.update
  228.       #画面与输入的更新
  229.       Graphics.update                        
  230.       Input.update
  231.       #更新EFS系统
  232.       _update_efs                           #←战斗中
  233.       #如果不在EFS就中断循环
  234.       break if ! $game_temp.inefs or $scene != self  
  235.     end    #================================ ↓战斗后
  236.    
  237.    
  238.     #改变画面颜色
  239.     $game_screen.start_tone_change(Tone.new(@efs_tone_R,@efs_tone_G,@efs_tone_B), 20)
  240.    
  241.     #等待一会儿
  242.     wait_a_moment(true)
  243.    

  244.     #清除双方的死亡士兵
  245.     attacker.delete_all_dead
  246.     defender.delete_all_dead
  247.     #玩家控制 = false
  248.     @player_controll = false
  249.     #清空对手
  250.     attacker.set_target(nil)
  251.     defender.set_target(nil)
  252.    
  253.     # 设置主角的透明状态
  254.     $game_player.transparent = false
  255.    
  256.     $game_player.character_name = @role_walk_graphic
  257.    
  258.    
  259.     #更新画面
  260.     Graphics.update
  261.     $game_system.update
  262.     $game_screen.update
  263.     $game_map.update
  264.   
  265.     @efs_story_mode = false

  266.    
  267.   end
  268.   #--------------------------------------------------------
  269.   # 设置新地图信息
  270.   #--------------------------------------------------------
  271.   def set_new_map_info(attacker,new_map)
  272.     #计算各种坐标
  273.     b = load_data("Data/MapInfos.rxdata")[new_map].name.split(";")
  274.     o0 = [b[1].split(",")[0].to_i,b[1].split(",")[1].to_i]
  275.     o1 = [b[2].split(",")[0].to_i,b[2].split(",")[1].to_i]   
  276.     e0 = [b[3].split(",")[0].to_i,b[3].split(",")[1].to_i]
  277.     e1 = [b[4].split(",")[0].to_i,b[4].split(",")[1].to_i]
  278.     if attacker.player_team
  279.     @target_x = (o0[0]+o1[0])/2
  280.     @target_y = (o0[1]+o1[1])/2
  281.     @e_target_x = (e0[0]+e1[0])/2
  282.     @e_target_y = (e0[1]+e1[1])/2
  283.     else
  284.     @e_target_x = (o0[0]+o1[0])/2
  285.     @e_target_y = (o0[1]+o1[1])/2
  286.     @target_x = (e0[0]+e1[0])/2
  287.     @target_y = (e0[1]+e1[1])/2
  288.     end
  289.     #目标地图
  290.     @target_map_id = new_map
  291.     #计算方向
  292.    
  293.    
  294.     @target_d = get_d_toward(@target_x,@target_y,@e_target_x,@e_target_y)
  295.     @e_target_d = get_d_toward(@e_target_x,@e_target_y,@target_x,@target_y)
  296.    
  297.    
  298.   end
  299.   #--------------------------------------------------------
  300.   # EFS系统:刷新游戏
  301.   #--------------------------------------------------------
  302.   def _update_efs   
  303.     #-----------------------------------------------
  304.     #UI更新
  305.     #@efs_character_bar.update
  306.     #@efs_item_bar.update
  307.    
  308.     #画面、地图刷新
  309.     $game_system.update
  310.     $game_screen.update
  311.     $game_map.update
  312.     #各种刷新
  313.     @spriteset.update
  314.     @message_window.update
  315.    

  316.     #各种场合
  317.     if @efs_victory or @efs_all_dead or @efs_escape
  318.       efs_battle_end
  319.       return
  320.     end
  321.    
  322.     #---------------------------------------------------
  323.     # @@@@↓主内容↓@@@@@
  324.     #---------------------------------------------------
  325.    
  326.     @group_think_counter += 1
  327.     #我军群组s思考
  328.     efs_team_think
  329.     #敌军群组s思考
  330.     efs_enermy_think
  331.    
  332.    
  333.    
  334.    
  335.    
  336.     #---------------------------------------------------
  337.     #如果有窗户显示啥也不做
  338.     return if $game_temp.message_window_showing or $game_temp.inefs == false
  339.     # 事件解释器在执行则返回
  340.    # return if @xn_srpg_interpreter.running?
  341.     #---------------------------------------------------
  342.    
  343.     # 刷新EFS输入
  344.     _update_efs_input
  345.    
  346.    
  347.   end  
  348.   
  349.   
  350.   #--------------------------------------------------------
  351.   # EFS系统:己方思考
  352.   #--------------------------------------------------------  
  353.   #暂时使用最近的敌人当作目标
  354.   def efs_team_think
  355.    
  356.     return if @group_think_counter < @group_think_period
  357.     for team in @team_groups
  358.       next if team.captain==nil
  359.       team.update_morale
  360.       zhansun = team.get_zhansun_inbattle
  361.       #next if team.group_move_type == 4
  362.        next if team.group_move_type == 3 or team.group_move_type == 4

  363.       
  364.       return if @player_controll
  365.       
  366.       
  367.       list = []
  368.       for enermy in @enermy_groups
  369.         next if enermy.captain == nil
  370.         x1=team.captain.x
  371.         y1=team.captain.y
  372.         x2=enermy.captain.x
  373.         y2=enermy.captain.y
  374.         list.push juli(x1,y1,x2,y2)
  375.       end
  376.       team.set_target(@enermy_groups[list.index(list.min)])
  377.    
  378.       arrow_hit_num = team.get_num_hit_by_missile
  379.       reach_arrow_limit = arrow_hit_num > 5
  380.    
  381.       
  382.       case team.group_type
  383.       when 0
  384.         if team.check_engage(list.min) or zhansun <= 0.8 or reach_arrow_limit
  385.           team.charge     
  386.         else  
  387.           team.advance_forward
  388.         end
  389.       when 1
  390.         if team.check_engage(list.min) or zhansun <= 0.8 or reach_arrow_limit
  391.           team.charge     
  392.         else  
  393.           team.advance_forward
  394.         end
  395.       when 2  
  396.       if zhansun <= 0.5 or reach_arrow_limit
  397.         team.charge     
  398.       else  
  399.         team.advance_forward
  400.       end
  401.       when 3  
  402.       if zhansun <= 0.65 or reach_arrow_limit
  403.         team.charge     
  404.       else  
  405.         team.advance_forward
  406.       end  
  407.       when 4   
  408.        if team.check_engage(list.min) or reach_arrow_limit
  409.         team.charge     
  410.       else  
  411.         team.advance_forward
  412.       end
  413.       when 5
  414.       if team.check_engage(list.min)
  415.         #team.charge     
  416.       elsif zhansun <= 0.8   or reach_arrow_limit
  417.         team.charge
  418.       else  
  419.         team.advance_forward
  420.       end
  421.       else
  422.         if team.check_engage(list.min) or zhansun <= 0.8 or reach_arrow_limit
  423.           team.charge     
  424.         else  
  425.           team.advance_forward
  426.         end
  427.       end
  428.       
  429.       
  430.       
  431.     end  
  432.    
  433.    
  434.    
  435.    
  436.   end
  437.   #--------------------------------------------------------
  438.   # EFS系统:敌人方思考
  439.   #--------------------------------------------------------  
  440.   def efs_enermy_think
  441.     return if @group_think_counter < @group_think_period
  442.     @group_think_counter = 0
  443.    
  444.     for team in @enermy_groups
  445.       
  446.       next if team.captain==nil
  447.       
  448.       team.update_morale
  449.       
  450.       arrow_hit_num = team.get_num_hit_by_missile
  451.       reach_arrow_limit = arrow_hit_num > 5
  452.       #team.reduce_num_hit_by_missile
  453.       
  454.       
  455.       
  456.       zhansun = team.get_zhansun_inbattle

  457.       next if team.group_move_type == 3 or team.group_move_type == 4
  458.      #next if team.group_move_type == 4
  459.       list = []
  460.       for enermy in @team_groups
  461.         next if enermy.captain == nil
  462.         x1=team.captain.x
  463.         y1=team.captain.y
  464.         x2=enermy.captain.x
  465.         y2=enermy.captain.y
  466.         list.push juli(x1,y1,x2,y2)
  467.       end
  468.       
  469.       
  470.       team.set_target(@team_groups[list.index(list.min)])
  471.       
  472.       
  473.      # if team.check_engage(list.min) or zhansun <= 0.8
  474.      #p team.group_type
  475.      
  476.      case team.group_type
  477.      when 0
  478.        if team.check_engage(list.min) or zhansun <= 0.8 or reach_arrow_limit
  479.         team.charge     
  480.       else  
  481.         team.advance_forward
  482.       end  
  483.      when 1
  484.        if team.check_engage(list.min) or zhansun <= 0.8 or reach_arrow_limit
  485.         team.charge     
  486.       else  
  487.         team.advance_forward
  488.       end  
  489.      when 2  
  490.       if zhansun <= 0.5 or reach_arrow_limit
  491.         team.charge     
  492.       else  
  493.         team.advance_forward
  494.       end  
  495.      when 3
  496.       if zhansun <= 0.65 or reach_arrow_limit
  497.         team.charge     
  498.       else  
  499.         team.advance_forward
  500.       end  
  501.      when 4  
  502.       
  503.        if team.check_engage(list.min) or reach_arrow_limit
  504.         team.charge     
  505.       else  
  506.         team.advance_forward
  507.       end
  508.       
  509.      when 5
  510.       
  511.       if team.check_engage(list.min) or reach_arrow_limit
  512.         #team.charge     
  513.       elsif zhansun <= 0.8   
  514.         team.charge
  515.       else  
  516.         team.advance_forward
  517.       end
  518.      
  519.      end
  520.      

  521.       
  522.       
  523.       
  524.     end  
  525.    
  526.    
  527.   end  

  528.    
  529.   #--------------------------------------------------------------------------
  530.   # ● 判断全灭
  531.   #--------------------------------------------------------------------------
  532.   def check_losing
  533.     @team_groups.each do |team|
  534.         team.fighter.each do |f|
  535.           return unless f.dead? or f.removed
  536.         end  
  537.     end
  538.     @efs_all_dead = true
  539.   end
  540.   #--------------------------------------------------------------------------
  541.   # ● 判断胜利
  542.   #--------------------------------------------------------------------------
  543.   def check_winning
  544.     @enermy_groups.each do |e|
  545.         e.fighter.each do |f|
  546.           return unless f.dead? or f.removed
  547.         end  
  548.     end
  549.     @efs_victory = true
  550.   end     
  551.    
  552.   def change_fighter_move_type
  553.     @team_groups.each do |team|
  554.         team.fighter.each do |f|
  555.           next if f.dead?
  556.           f.move_type = 5
  557.           f.move_frequency = 3
  558.         end  
  559.     end
  560.     @enermy_groups.each do |e|
  561.         e.fighter.each do |f|
  562.            next if f.dead?
  563.            f.move_type = 5
  564.            f.move_frequency = 3
  565.         end  
  566.     end
  567.    
  568.   end
  569.   
  570.   
  571.   def display_battle_end_message
  572.     if @efs_victory
  573.       Notification.post("战斗胜利... 按下Tab键返回")
  574.       #$game_system.me_play($game_system.battle_end_me)
  575.     elsif @efs_all_dead
  576.       Notification.post("战斗失败... 按下Tab键返回")
  577.       #$game_system.me_play($data_system.gameover_me)
  578.     else
  579.       Notification.post("全军撤退... 按下Tab键返回")
  580.        #$game_system.se_play($game_system.escape_se)
  581.     end  
  582.   end
  583.   #--------------------------------------------------------
  584.   # EFS系统:战后处理
  585.   #--------------------------------------------------------  
  586.   def efs_battle_end
  587.    
  588.     #unless $game_temp.inslg
  589.           if @efs_story_mode or $强制返回 != nil
  590.       efs_battle_end_nonslg
  591.       return
  592.     end  
  593.     #Audio.me_play(filename[, volume[, pitch]])
  594.    

  595.    
  596.     counter_message = 0
  597.    
  598.      #displaying message
  599.     display_battle_end_message
  600.     if @efs_victory
  601.       $game_system.me_play($game_system.battle_end_me)
  602.     elsif @efs_all_dead
  603.       $game_system.me_play($data_system.gameover_me)
  604.     else
  605.        $game_system.se_play($game_system.escape_se)
  606.     end  
  607.                
  608.                
  609.     change_fighter_move_type
  610.    
  611.     loop do
  612.       #updating every thing
  613.       $game_system.update
  614.       $game_screen.update
  615.       $game_map.update
  616.       Notification.update
  617.       Graphics.update
  618.       Input.update
  619.       _update_efs_input
  620.       @spriteset.update
  621.       @message_window.update
  622.       #displaying message
  623.       counter_message+=1
  624.     if  counter_message >= 40*7
  625.       display_battle_end_message
  626.       counter_message = 0
  627.     end
  628.     #if Tab is pressed
  629.       if Kboard.keyboard($R_Key_TAB)
  630.       
  631.         
  632.         
  633.       #p  "战斗结束界面 to be added"
  634.       
  635.      @efs_after_battle_level =  judge_battle_level
  636.      p Wzj::EFS_AFTER_BATTLE_TEXT[@efs_after_battle_level]
  637.      
  638.      
  639.       after_battle_statistics

  640.       
  641.       $game_screen.start_tone_change(Tone.new(-255,-255,-255), 20)
  642.          wait_a_moment(true)
  643.         $game_switches[5] = false
  644.         $game_switches[6] = false
  645.         back_to_map
  646.         $game_temp.inefs = false
  647.         break
  648.       end
  649.    
  650.     end
  651.    
  652.    
  653.   end   
  654.   
  655.   #--------------------------------------------------------
  656.   # EFS系统:战后处理
  657.   #--------------------------------------------------------  
  658.   def efs_battle_end_nonslg
  659.     change_fighter_move_type
  660.    
  661.     #loop do
  662.       $game_system.update
  663.       $game_screen.update
  664.       $game_map.update
  665.       Notification.update
  666.       Graphics.update
  667.       Input.update
  668.       _update_efs_input
  669.       @spriteset.update
  670.       @message_window.update
  671.    
  672.     #end
  673.       $game_screen.start_tone_change(Tone.new(-255,-255,-255), 20)
  674.       wait_a_moment
  675.         $game_switches[5] = false
  676.         $game_switches[6] = false
  677.        #$game_switches[10] = false
  678.         back_to_map
  679.         $game_temp.inefs = false
  680.   end
  681.       
  682.       
  683.       
  684.   #--------------------------------------------------------
  685.   # 判断胜利级别
  686.   # 0 一败涂地
  687.   # 1 一败涂地
  688.   # 2 一败涂地
  689.   # 3 寡不敌众
  690.   # 4 血战惜败
  691.   # 5 不相上下
  692.   # 6 血战险胜
  693.   # 7 战果辉煌
  694.   # 8 史诗大捷
  695.   # 9 史诗大捷
  696.   # 10史诗大捷
  697.   #--------------------------------------------------------
  698.   

  699.   
  700.   
  701.   def judge_battle_level
  702.     team_sum = 0
  703.     enermy_sum = 0
  704.     @team_groups.each do |groups|
  705.       team_sum += groups.alive_while_starting
  706.     end
  707.     @enermy_groups.each do |groups|
  708.       enermy_sum += groups.alive_while_starting
  709.     end   
  710.     team_down = 0
  711.     enermy_down = 0
  712.     for f in $game_map.fighters.values
  713.       if f.team == 1
  714.         if f.dead?
  715.          team_down += 1
  716.         end  
  717.       else#========
  718.         if f.dead?
  719.          enermy_down += 1
  720.         end  
  721.       end #if team
  722.     end  #do
  723.     team_r = team_down.to_f/team_sum
  724.     enermy_r = enermy_down.to_f/enermy_sum
  725.     if @efs_victory
  726.       score =  (5-team_r*5+enermy_r*5).round
  727.       score = [[score,6].max,10].min
  728.     else
  729.       
  730.       score = 10 - (team_r*5+ 5-enermy_r*5).round
  731.       score = [[score,0].max,4].min
  732.     end  
  733.     return score
  734.   end  
  735.       
  736.       
  737.   #--------------------------------------------------------
  738.   # 功能函数 :战后统计  实用度:★★
  739.   #--------------------------------------------------------
  740.   def after_battle_statistics
  741.     team_dead = 0
  742.     enermy_dead = 0
  743.     team_wound = 0
  744.     enermy_wound = 0
  745.     team_retreat = 0
  746.     enermy_retreat = 0
  747.    
  748.     for f in $game_map.fighters.values
  749.       if f.team == 1
  750.         if f.removed
  751.           team_retreat+=1
  752.           next
  753.         elsif f.dead?
  754.           if f.killed
  755.             team_dead += 1
  756.           else
  757.             team_wound += 1
  758.           end  
  759.           next
  760.         end  
  761.       else#========
  762.         if f.removed
  763.           enermy_retreat+=1
  764.           next
  765.         elsif f.dead?
  766.           if f.killed
  767.             enermy_dead += 1
  768.           else
  769.             enermy_wound += 1
  770.           end  
  771.           next
  772.         end  
  773.       end #if team
  774.     end  #do
  775.     Notification.post("我军阵亡:"+team_dead.to_s)
  776.     Notification.post("我军受伤:"+team_wound.to_s)
  777.     Notification.post("我军撤退:"+team_retreat.to_s)
  778.     Notification.post("敌军阵亡:"+enermy_dead.to_s)
  779.     Notification.post("敌军受伤:"+enermy_wound.to_s)
  780.     Notification.post("敌军撤退:"+enermy_retreat.to_s)
  781.    
  782.   end#def
  783.   #--------------------------------------------------------
  784.   # 移除死亡士兵      ★★★★★
  785.   #--------------------------------------------------------
  786.   def delete_dead_fighter
  787.    
  788.    
  789.    
  790.    
  791.   end
  792.   
  793.   #--------------------------------------------------------
  794.   # 功能函数 :求两点间的距离  实用度:★★★★★
  795.   #--------------------------------------------------------
  796.   def juli(x1, y1, x2, y2)
  797.     return (x1 - x2).abs + (y1 - y2).abs
  798.   end  
  799.   
  800.   
  801.   
  802.   
  803.   #--------------------------------------------------------
  804.   # 自动战斗  实用度:★★★
  805.   #--------------------------------------------------------
  806.   def efs_auto_battle(attacker, defender)
  807.     #战前补充
  808.     attacker.refill
  809.     defender.refill
  810.    
  811.     a_hp=0
  812.     a_shd=0
  813.     a_armor=0
  814.     a_a_skill=0
  815.     a_d_skill=0
  816.     a_base_atk=0
  817.     a_bro_atk=0
  818.     a_anti_cav=0
  819.     a_anti_inf=0
  820.     a_charge=0
  821.    
  822.     a_num_inf=0
  823.     a_num_cav=0
  824.    
  825.    
  826.    
  827.     attacker.member.each do |group|
  828.       group.fighter.each do |f|
  829.         
  830.         a_hp += f.hp
  831.         a_shd += f.shd_hp
  832.         a_armor += f.armor_hp
  833.         a_a_skill+= f.atk_skill
  834.         a_d_skill+= f.def_skill

  835.         a_anti_cav+= f.anti_cav
  836.         a_anti_inf+= f.anti_inf
  837.         a_charge+= f.charge_boun
  838.         
  839.         case f.class
  840.         when EFS_Hero
  841.         a_num_inf+=1  
  842.         a_base_atk+= f.base_atk
  843.         a_bro_atk+= f.bro_atk
  844.         when EFS_Infantry
  845.           a_num_inf+=1
  846.         a_base_atk+= f.base_atk
  847.         a_bro_atk+= f.bro_atk
  848.         when EFS_Missile_Infantry
  849.           a_num_inf+=1
  850.         a_base_atk+= f.s_base_atk
  851.         a_bro_atk+= f.s_bro_atk
  852.         when EFS_Horseman
  853.           a_num_cav+=1
  854.         a_base_atk+= f.base_atk
  855.         a_bro_atk+= f.bro_atk
  856.         when EFS_Missile_Horse
  857.           a_num_cav+=1
  858.         a_base_atk+= f.s_base_atk
  859.         a_bro_atk+= f.s_bro_atk
  860.         when EFS_Object  
  861.          
  862.         end
  863.         
  864.       end  
  865.     end
  866.     attacker_hp=a_hp
  867.     attacker_shd=a_shd
  868.     attacker_armor=a_armor
  869.     attacker_a_skill=a_a_skill
  870.     attacker_d_skill=a_d_skill
  871.     attacker_base_atk=a_base_atk
  872.     attacker_bro_atk=a_bro_atk
  873.     attacker_anti_cav=a_anti_cav
  874.     attacker_anti_inf=a_anti_inf
  875.     attacker_charge=a_charge
  876.    
  877.     attacker_num_inf=a_num_inf
  878.     attacker_num_cav=a_num_cav
  879.    
  880.     a_hp=0
  881.     a_shd=0
  882.     a_armor=0
  883.     a_a_skill=0
  884.     a_d_skill=0
  885.     a_base_atk=0
  886.     a_bro_atk=0
  887.     a_anti_cav=0
  888.     a_anti_inf=0
  889.     a_charge=0
  890.    
  891.     a_num_inf=0
  892.     a_num_cav=0
  893.    
  894.    
  895.    
  896.     defender.member.each do |group|
  897.       group.fighter.each do |f|
  898.         
  899.         a_hp += f.hp
  900.         a_shd += f.shd_hp
  901.         a_armor += f.armor_hp
  902.         a_a_skill+= f.atk_skill
  903.         a_d_skill+= f.def_skill

  904.         a_anti_cav+= f.anti_cav
  905.         a_anti_inf+= f.anti_inf
  906.         a_charge+= f.charge_boun
  907.         
  908.         case f.class
  909.         when EFS_Hero
  910.         a_num_inf+=1  
  911.         a_base_atk+= f.base_atk
  912.         a_bro_atk+= f.bro_atk
  913.         when EFS_Infantry
  914.           a_num_inf+=1
  915.         a_base_atk+= f.base_atk
  916.         a_bro_atk+= f.bro_atk
  917.         when EFS_Missile_Infantry
  918.           a_num_inf+=1
  919.         a_base_atk+= f.s_base_atk
  920.         a_bro_atk+= f.s_bro_atk
  921.         when EFS_Horseman
  922.           a_num_cav+=1
  923.         a_base_atk+= f.base_atk
  924.         a_bro_atk+= f.bro_atk
  925.         when EFS_Missile_Horse
  926.           a_num_cav+=1
  927.         a_base_atk+= f.s_base_atk
  928.         a_bro_atk+= f.s_bro_atk
  929.         when EFS_Object  
  930.          
  931.         end
  932.         
  933.       end  
  934.     end
  935.     defender_hp=a_hp
  936.     defender_shd=a_shd
  937.     defender_armor=a_armor
  938.     defender_a_skill=a_a_skill
  939.     defender_d_skill=a_d_skill
  940.     defender_base_atk=a_base_atk
  941.     defender_bro_atk=a_bro_atk
  942.     defender_anti_cav=a_anti_cav
  943.     defender_anti_inf=a_anti_inf
  944.     defender_charge=a_charge
  945.    
  946.     defender_num_inf=a_num_inf
  947.     defender_num_cav=a_num_cav
  948. =begin
  949.     attacker_hp=a_hp
  950.     attacker_shd=a_shd
  951.     attacker_armor=a_armor
  952.     attacker_a_skill=a_a_skill
  953.     attacker_d_skill=a_d_skill
  954.     attacker_base_atk=a_base_atk
  955.     attacker_bro_atk=a_bro_atk
  956.     attacker_anti_cav=a_anti_cav
  957.     attacker_anti_inf=a_anti_inf
  958.     attacker_charge=a_charge
  959.    
  960.     attacker_num_inf=a_num_inf
  961.     attacker_num_cav=a_num_cav      
  962.    
  963.    
  964. =end   
  965.     attacker_damge_reduce = attacker_a_skill/(attacker_a_skill+defender_d_skill)
  966.     defender_defende_reduce = defender_d_skill/(attacker_a_skill+defender_d_skill)
  967.     sum_damage = attacker_bro_atk*attacker_damge_reduce
  968.    
  969.     sum_damage += (attacker_base_atk + attacker_charge)*attacker_damge_reduce
  970.    
  971.     sum_damage -= (defender_shd+defender_armor)*defender_defende_reduce
  972.     result = sum_damage/(defender_num_inf+defender_num_cav)
  973.     p result
  974.    
  975.    
  976.   end
  977.   
  978.   
  979.   
  980.   
  981.   
  982.   
  983.   
  984.   
  985. end  
复制代码
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
24
星屑
7442
在线时间
249 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

2
发表于 2023-4-10 14:19:16 | 只看该作者
@current_leader 貌似又是一个非原XP默认变量,把mod脚本发出来吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-1 11:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表