Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 Help modifying a script
#1
Hello!

I have a script that I'm trying to modify that creats a Threat System, so the enemies will focus their attacks on the party member with most threat. During the battle a window appears showing the threat level of each party member. Here is a screen shot:
https://i.imgur.com/m4POIOv.png

What I'm trying to do is removing this window and showing an image next to the party member with most threat. I made a fast edition to show how it would look:
https://i.imgur.com/sGXo6p0.png

Can somoene help me with what I should do to make an image appear and change positions depending on who have the highest threat value? All i know is that removing the end of the code removes the window.

Here is the code:
Code:
module ThreatConfig
 #--------------------------------------------------------------------------
 # * Config
 #--------------------------------------------------------------------------
 ThreatChance = 80 # The chance of enemies attacking based on threat
 #--------------------------------------------------------------------------
 # * Get the threat attribute
 #--------------------------------------------------------------------------
 attr_reader :threat
 def self.get_skill_threat(skill_id)
   threat = case skill_id
   # when skill_ID then [ user_threat, party_threat ]
   when 97 then [6, 0]
   else false
   end
   return threat
 end
 #--------------------------------------------------------------------------
 # * Get the threat attribute
 #--------------------------------------------------------------------------
 attr_reader :threat
 def self.get_item_threat(item_id)
   threat = case item_id
   # when item_ID then [ user_threat, party_threat ]
   when 33 then [10, -20]
   else false
   end
   return threat
 end
 #:::::::::::::: Don't touch these yet ::::::::::::::
 MaxThreat = 100
 MinThreat = 0
 AutoDetect = false # Automatically determine if a skill or item is dangerous
end
#==============================================================================
# ** Game_Actor
#==============================================================================
class Game_Actor
 #--------------------------------------------------------------------------
 # * Initialize threat attribute
 #--------------------------------------------------------------------------
 alias game_actor_threat_setup setup
 def setup(actor_id)
   @threat = 0
   game_actor_threat_setup(actor_id)
 end
 #--------------------------------------------------------------------------
 # * Get the threat attribute
 #--------------------------------------------------------------------------
 attr_reader :threat
 #--------------------------------------------------------------------------
 # * Set the threat attribute
 #--------------------------------------------------------------------------
 def threat=(val)
   max = ThreatConfig::MaxThreat
   min = ThreatConfig::MinThreat
   val = max if val > max
   val = min if val < min
   @threat = val
 end
 #--------------------------------------------------------------------------
 # * Threat at battle start
 #--------------------------------------------------------------------------
 def start_threat
   actor_id = self.id
   threat = case actor_id
   when 2 then 5
   when 3 then 5
   when 4 then 5
   when 5 then 5
   else 0
   end
   return threat
 end
end
#==============================================================================
# ** Game_Party
#==============================================================================
class Game_Party
 #--------------------------------------------------------------------------
 # * Choose actor by threat
 #--------------------------------------------------------------------------
 alias choose_actor_by_threat random_target_actor
 def random_target_actor(hp0 = false)
   if rand(100) >= ThreatConfig::ThreatChance
     return choose_actor_by_threat(hp0)
   end
   # Collect valid actors
   targets = []
   for actor in @actors
     next unless (!hp0 && actor.exist?) || (hp0 && actor.hp0?)
     targets.push(actor)
   end
   # Get actors with maximum threat
   targets.sort! {|a, b| b.threat - a.threat}
   targets = targets.find_all {|a| a.threat == targets[0].threat}
   # Choose random
   target = targets[rand(targets.size)]
   return target
 end
end
#==============================================================================
# ** Game_Battler
#==============================================================================
class Game_Battler
 #--------------------------------------------------------------------------
 # * Attack Threat
 #--------------------------------------------------------------------------
 alias attack_effect_threat attack_effect
 def attack_effect(attacker)
   attacker.threat += 1 if attacker.is_a?(Game_Actor)
   attack_effect_threat(attacker)
 end
 #--------------------------------------------------------------------------
 # * Skill Threat
 #--------------------------------------------------------------------------
 alias skill_effect_threat skill_effect
 def skill_effect(user, skill)
   threat = user.is_a?(Game_Actor) && ThreatConfig.get_skill_threat(skill.id)
   if threat
     user_threat, party_threat = threat[0], threat[1]
     for actor in $game_party.actors
       threat_plus = actor.id == user.id ? user_threat : party_threat
       actor.threat += threat_plus
     end
   end
   skill_effect_threat(user, skill)
 end
end
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
 #--------------------------------------------------------------------------
 # * Defend Threat
 #--------------------------------------------------------------------------
 alias basic_action_threat_result make_basic_action_result
 def make_basic_action_result
   if @active_battler.current_action.basic == 1 &&
     @active_battler.is_a?(Game_Actor)
      @active_battler.threat -= 1
   end
   basic_action_threat_result
 end
 #--------------------------------------------------------------------------
 # * Item Threat
 #--------------------------------------------------------------------------
 alias item_action_threat_result make_item_action_result
 def make_item_action_result
   item_action_threat_result
   threat = @active_battler.is_a?(Game_Actor) && ThreatConfig.get_item_threat(@item.id)
   if threat
     user_threat, party_threat = threat[0], threat[1]
     for actor in $game_party.actors
       threat_plus = actor.id == @active_battler.id ? user_threat : party_threat
       actor.threat += threat_plus
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Clear threats before battle
 #--------------------------------------------------------------------------
 alias clear_threats_start_phase1 start_phase1
 def start_phase1
   clear_threats_start_phase1
   $game_party.actors.each {|actor| actor.threat = actor.start_threat}
 end
end

class Window_Threat < Window_Base

 H = 20

 def initialize(x, y, w)
   super(x, y, w, 32 + actors.size * H)
   @threats = []
   actors.each {|a| @threats.push(a.threat)}
   self.contents = Bitmap.new(w-32, self.height-32)
   self.contents.font.size = H
   self.contents.font.bold = H <= 22
   refresh
 end

 def refresh
   self.contents.clear
   actors.each_with_index {|a, i|
   self.contents.draw_text(0, i*H, self.width-32, H, a.name)
   self.contents.draw_text(0, i*H, self.width-32, H, @threats[i].to_s, 2)
   }
 end

 def update
   flag = false
   actors.each_with_index {|a, i|
   @threats[i] = a.threat if a.threat != @threats[i]
   flag = true}
   refresh if flag
 end

 def actors
   return $game_party.actors
 end

end

class Scene_Battle

 alias threat_win_init main
 def main
   @threat_win = Window_Threat.new(458, 135, 160) #(458,64,160)
   threat_win_init
   @threat_win.dispose
 end

 alias threat_win_upd update
 def update
   @threat_win.update
   threat_win_upd
 end

end

Thanks for the attention!

Edit: The images weren't loading for some reason, so I removed them and added a link instead
Reply }


Messages In This Thread
Help modifying a script - by Keeroh - 06-07-2017, 07:56 PM
RE: Help modifying a script - by DerVVulfman - 06-09-2017, 04:10 PM
RE: Help modifying a script - by Keeroh - 06-10-2017, 02:35 AM
RE: Help modifying a script - by DerVVulfman - 06-10-2017, 03:41 AM
RE: Help modifying a script - by Keeroh - 06-10-2017, 06:10 PM
RE: Help modifying a script - by DerVVulfman - 06-10-2017, 07:52 PM
RE: Help modifying a script - by Keeroh - 06-11-2017, 05:43 AM
RE: Help modifying a script - by DerVVulfman - 06-11-2017, 04:43 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
   Script compatibility help Lord Vectra 3 3,561 07-25-2021, 11:42 PM
Last Post: DerVVulfman
   Adding face script on Cogwheel's RTAB Battle Status rekkatsu 15 12,842 08-25-2020, 03:09 AM
Last Post: DerVVulfman
   "Wait" in the script Whisper 13 13,676 04-28-2020, 04:06 PM
Last Post: Whisper
   Skill Cooldown script Fenriswolf 11 14,086 12-10-2019, 11:10 AM
Last Post: Fenriswolf
   Help iwth script (RGSS Player crash) Whisper 3 6,526 06-17-2017, 05:03 PM
Last Post: Whisper
Question  Mog Menu script: help me stop the crazy picture movement during transitions Zachariad 4 8,617 05-31-2017, 05:10 AM
Last Post: Zachariad
   Permanently modifying move speed Keeroh 5 8,517 05-24-2017, 05:47 AM
Last Post: DerVVulfman
   Actor names in Quest Script jreagan406 5 7,599 03-07-2017, 08:06 AM
Last Post: JayRay
   Bizarre issue with Lanzer counter script. Steel Beast 6Beets 2 6,602 10-04-2016, 11:46 AM
Last Post: Steel Beast 6Beets
   Moonpearl script Animated Battlers help!! x(( Starmage 11 13,793 05-21-2016, 05:34 AM
Last Post: Starmage



Users browsing this thread: