What it is
I have been developing a more origional, easier to see, and more detailed Hud system for my MMORPG. I am changing to 2k graphics, instead of the home-made ones I tried, and so I thought a more professional Hud would be best.
Basically, at the moment it has:
-Window showing details of the character (I need to finish this, don't worry I can do this bit)
-Window showing characters' portrait (I can finish this myself too)
-Window showing items the player has got equipped (Finished, near enough)
-Currently disfunctional window for skills
What it needs:
For the skills window, at the right positions, the skills which the player has set to the hotkeys 1 to 5, will have their icons shown here. Skills are set to hotkeys using Near's ABS 4.0. I have posted the script in this post just incase it is needed.
Also, a HP and MP bar need to be shown on there in the right positions, see screenie, they also need to have the amount of HP and MP the player currently has left. This needs to self-update whenever the player is healed or hit for damage.
What it should be like
http://img.photobucket.com/albums/v108/ ... ness-1.png[/IMG]
Near's ABS
I need this editted so that only keys 1 to 5 can be used as hotkeys, instead of the 1 to 10 that is currently used.
The HUD script
Here's the script so far:
It needs the SDK, and Netplay+ to work...
I have been developing a more origional, easier to see, and more detailed Hud system for my MMORPG. I am changing to 2k graphics, instead of the home-made ones I tried, and so I thought a more professional Hud would be best.
Basically, at the moment it has:
-Window showing details of the character (I need to finish this, don't worry I can do this bit)
-Window showing characters' portrait (I can finish this myself too)
-Window showing items the player has got equipped (Finished, near enough)
-Currently disfunctional window for skills
What it needs:
For the skills window, at the right positions, the skills which the player has set to the hotkeys 1 to 5, will have their icons shown here. Skills are set to hotkeys using Near's ABS 4.0. I have posted the script in this post just incase it is needed.
Also, a HP and MP bar need to be shown on there in the right positions, see screenie, they also need to have the amount of HP and MP the player currently has left. This needs to self-update whenever the player is healed or hit for damage.
What it should be like
http://img.photobucket.com/albums/v108/ ... ness-1.png[/IMG]
Near's ABS
I need this editted so that only keys 1 to 5 can be used as hotkeys, instead of the 1 to 10 that is currently used.
Code:
#==============================================================================
# â– Action Battle System
#==============================================================================
# By Near Fantastica
# Version 4
# 29.11.05
#==============================================================================
# â– ABS Key Commands
#==============================================================================
# A â— Dash
# S â— Sneak
# D â— Attack
# 1 â— Skill Key 1
# 2 â— Skill Key 2
# 3 â— Skill Key 3
# 4 â— Skill Key 4
# 5 â— Skill Key 5
# 6 â— Skill Key 6
# 7 â— Skill Key 7
# 8 â— Skill Key 8
# 9 â— Skill Key 9
# 0 â— Skill Key 0
#==============================================================================
# â– ABS Enemy Ai List
#==============================================================================
# Name
# Name Of the Enemy in The Data Base
#---------------------------------------------------------------------------
# Behavior
# Passive = 0 â— The Event (Enemy) will only attack when attacked
# Aggressive = 1 â— The Event will attack when one of its Detection level are set true
# Linking = 2 â— Event will only attack when another Event is attacked with in its Detection level
# Aggressive Linking = 3 â— Event will attack when either Aggressive or Linking is true
#---------------------------------------------------------------------------
# Detection
# Sound = range â— The range of sound the enemy can hear inactive if set to zero
# Sight = range â— The range of sightthe enemy can see inactive if set to zero
#---------------------------------------------------------------------------
# Aggressiveness
# Aggressiveness = Level â— The high number the less Aggressive the Event
#---------------------------------------------------------------------------
# Movement
# Speed = Level â— The movment Speed of the event when engaged
# Frequency = Level â— The movment Frequency of the event when engaged
#---------------------------------------------------------------------------
# Trigger
# Erased = 0 â— The event will be erased on death
# Switch = 1 â— The event will be trigger Switch[ID] on death
# Varible = 2 â— The event will be set the Varible[ID] = VALUE on death
# Local Switch = 3 â— The event will trigger Local_Switch[ID] on death
#==============================================================================
# â– ABS Range Constant
#==============================================================================
# RANGE_WEAPONS[Weapon Id] =
# ["Character Set Name", Ammo Speed, Anmiation Id, Ammo Item Id, Range]
# RANGE_SKILLS[Skill Id] =
# [Range, Ammo Speed, "Character Set Name"]
#==============================================================================
#--------------------------------------------------------------------------
# * SDK Log Script
#--------------------------------------------------------------------------
SDK.log("ABS", "Near Fantastica", 4, "29.11.05")
if SDK.state("Input") == nil or SDK.state("Input") == false
p "Input Addition Not Found"
SDK.disable("ABS")
end
#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if SDK.state("ABS") == true
class ABS
#--------------------------------------------------------------------------
RANGE_WEAPONS = {}
RANGE_WEAPONS[17] = ["Arrow", 5, 4, 35, 10]
RANGE_WEAPONS[18] = ["Arrow", 5, 4, 35, 10]
RANGE_WEAPONS[19] = ["Arrow", 5, 4, 35, 10]
RANGE_WEAPONS[20] = ["Arrow", 5, 4, 35, 10]
#--------------------------------------------------------------------------
RANGE_SKILLS = {}
RANGE_SKILLS[7] = [10, 5, "Magic Balls"]
RANGE_SKILLS[8] = [10, 5, "Magic Balls"]
RANGE_SKILLS[10] = [10, 5, "Magic Balls"]
RANGE_SKILLS[11] = [10, 5, "Magic Balls"]
RANGE_SKILLS[13] = [10, 5, "Magic Balls"]
RANGE_SKILLS[14] = [10, 5, "Magic Balls"]
RANGE_SKILLS[16] = [10, 5, "Magic Balls"]
RANGE_SKILLS[17] = [10, 5, "Magic Balls"]
RANGE_SKILLS[19] = [10, 5, "Magic Balls"]
RANGE_SKILLS[20] = [10, 5, "Magic Balls"]
RANGE_SKILLS[22] = [10, 5, "Magic Balls"]
RANGE_SKILLS[23] = [10, 5, "Magic Balls"]
RANGE_SKILLS[25] = [10, 5, "Magic Balls"]
RANGE_SKILLS[26] = [10, 5, "Magic Balls"]
RANGE_SKILLS[28] = [10, 5, "Magic Balls"]
RANGE_SKILLS[29] = [10, 5, "Magic Balls"]
RANGE_SKILLS[31] = [10, 5, "Magic Balls"]
RANGE_SKILLS[33] = [10, 5, "Magic Balls"]
RANGE_SKILLS[35] = [10, 5, "Magic Balls"]
RANGE_SKILLS[37] = [10, 5, "Magic Balls"]
RANGE_SKILLS[39] = [10, 5, "Magic Balls"]
RANGE_SKILLS[41] = [10, 5, "Magic Balls"]
RANGE_SKILLS[43] = [10, 5, "Magic Balls"]
RANGE_SKILLS[45] = [10, 5, "Magic Balls"]
RANGE_SKILLS[47] = [10, 5, "Magic Balls"]
RANGE_SKILLS[49] = [10, 5, "Magic Balls"]
RANGE_SKILLS[51] = [10, 5, "Magic Balls"]
RANGE_SKILLS[57] = [1, 5, "Magic Balls"]
RANGE_SKILLS[58] = [1, 5, "Magic Balls"]
RANGE_SKILLS[59] = [1, 5, "Magic Balls"]
RANGE_SKILLS[60] = [1, 5, "Magic Balls"]
RANGE_SKILLS[61] = [1, 5, "Magic Balls"]
RANGE_SKILLS[62] = [1, 5, "Magic Balls"]
RANGE_SKILLS[63] = [1, 5, "Magic Balls"]
RANGE_SKILLS[64] = [1, 5, "Magic Balls"]
RANGE_SKILLS[65] = [1, 5, "Magic Balls"]
RANGE_SKILLS[66] = [1, 5, "Magic Balls"]
RANGE_SKILLS[67] = [1, 5, "Magic Balls"]
RANGE_SKILLS[68] = [1, 5, "Magic Balls"]
RANGE_SKILLS[69] = [1, 5, "Magic Balls"]
RANGE_SKILLS[70] = [1, 5, "Magic Balls"]
RANGE_SKILLS[71] = [1, 5, "Magic Balls"]
RANGE_SKILLS[72] = [1, 5, "Magic Balls"]
RANGE_SKILLS[73] = [1, 5, "Magic Balls"]
RANGE_SKILLS[74] = [1, 5, "Magic Balls"]
RANGE_SKILLS[75] = [1, 5, "Magic Balls"]
RANGE_SKILLS[76] = [1, 5, "Magic Balls"]
RANGE_SKILLS[77] = [1, 5, "Magic Balls"]
RANGE_SKILLS[78] = [1, 5, "Magic Balls"]
RANGE_SKILLS[79] = [1, 5, "Magic Balls"]
RANGE_SKILLS[80] = [1, 5, "Magic Balls"]
#--------------------------------------------------------------------------
DASH_KEY = Input::Letters["A"]
SNEAK_KEY = Input::Letters["S"]
ATTACK_KEY = Input::Letters["D"]
SKILL_KEYS = Input::Numberkeys
#--------------------------------------------------------------------------
attr_accessor :enemies
attr_accessor :range
attr_accessor :skills
attr_accessor :dash_level
attr_accessor :sneak_level
attr_accessor :p_animations
attr_accessor :e_animations
#--------------------------------------------------------------------------
def initialize
# Enemies
@enemies = {}
# Range
@range = []
# Skills
@skills = []
# Dashing
@dashing = false
@dash_restore = false
@dash_reduce= false
@dash_timer = 0
@dash_level = 5
@dash_sec = 0
# Sneaking
@sneaking = false
@sneak_restore = false
@sneak_reduce= false
@sneak_timer = 0
@sneak_level = 5
@sneak_sec = 0
# Button Mashing
@mash_bar = 0
#Animation
@p_animations = false
@e_animations = false
end
#--------------------------------------------------------------------------
def ATTACK_KEY
return ATTACK_KEY
end
#--------------------------------------------------------------------------
def SKILL_KEYS
return SKILL_KEYS
end
#--------------------------------------------------------------------------
def RANGE_WEAPONS
return RANGE_WEAPONS
end
#--------------------------------------------------------------------------
def RANGE_SKILLS
return RANGE_SKILLS
end
#--------------------------------------------------------------------------
# * ABS Animation Engine Functions
#--------------------------------------------------------------------------
# Handles animating map sprites for a wide variety of uses
#--------------------------------------------------------------------------
def animate(object, animation_name, position, wait = 8, frames = 0, repeat = 0)
if object != nil
object.animate(animation_name, position, frames, wait, repeat)
end
end
#--------------------------------------------------------------------------
def refresh(event, list, character_name)
@enemies.delete(event.id)
return if character_name == ""
return if list == nil
parameters = SDK.event_comment_input(event, 9, "ABS Event Command List")
return if parameters.nil?
name = parameters[0].split
for x in 1...$data_enemies.size
enemy = $data_enemies[x]
if name[1].upcase == enemy.name.upcase
@enemies[event.id] = Game_ABS_Enemy.new(enemy.id)
@enemies[event.id].event_id = event.id
default_setup(event.id)
level = parameters[1].split
@enemies[event.id].level = level[1].to_i
behavior = parameters[2].split
@enemies[event.id].behavior = behavior[1].to_i
sound = parameters[3].split
@enemies[event.id].detection_sound = sound[1].to_i
sight = parameters[4].split
@enemies[event.id].detection_sight = sight[1].to_i
aggressiveness = parameters[5].split
@enemies[event.id].aggressiveness = aggressiveness[1].to_i
speed = parameters[6].split
@enemies[event.id].speed = speed[1].to_i
frequency = parameters[7].split
@enemies[event.id].frequency = frequency[1].to_i
trigger = parameters[8].split
@enemies[event.id].trigger= [trigger[1].to_i, trigger[2].to_i, trigger[3].to_i]
end
end
end
#--------------------------------------------------------------------------
def default_setup(id)
@enemies[id].level = 1
@enemies[id].behavior = 1
@enemies[id].detection_sight = 1
@enemies[id].detection_sound = 4
@enemies[id].aggressiveness = 2
@enemies[id].engaged = false
@enemies[id].speed = 4
@enemies[id].frequency = 5
end
#--------------------------------------------------------------------------
def update
update_dash if @sneaking == false
update_sneak if @dashing == false
update_enemies if @enemies != {}
update_player
update_range
Graphics.frame_reset
end
#--------------------------------------------------------------------------
def update_range
for range in @range
range.update
end
end
#--------------------------------------------------------------------------
def update_player
actor = $game_party.actors[0]
@mash_bar = 100 if @mash_bar >= 100
@mash_bar += 10
end
#--------------------------------------------------------------------------
def update_dash
if Input.pressed?(DASH_KEY)
if $game_player.moving?
@dashing = true
$game_player.move_speed = 5
@dash_restore = false
if @dash_reduce == false
@dash_timer = 50 # Initial time off set
@dash_reduce = true
else
@dash_timer-= 1
end
@dash_sec = (@dash_timer / Graphics.frame_rate)%60
if @dash_sec == 0
if @dash_level != 0
@dash_level -= 1
@dash_timer = 50 # Timer Count
end
end
if @dash_level == 0
@dashing = false
$game_player.move_speed = 4
end
end
else
@dashing = false
$game_player.move_speed = 4
@dash_reduce = false
if @dash_restore == false
@dash_timer = 80 # Initial time off set
@dash_restore = true
else
@dash_timer-= 1
end
@dash_sec = (@dash_timer / Graphics.frame_rate)%60
if @dash_sec == 0
if @dash_level != 5
@dash_level+= 1
@dash_timer = 60
end
end
end
end
#--------------------------------------------------------------------------
def update_sneak
if Input.pressed?(SNEAK_KEY)
if $game_player.moving?
@sneaking = true
$game_player.move_speed = 3
@sneak_restore = false
if @sneak_reduce == false
@sneak_timer = 50 # Initial time off set
@sneak_reduce = true
else
@sneak_timer-= 1
end
@sneak_sec = (@sneak_timer / Graphics.frame_rate)%60
if @sneak_sec == 0
if @sneak_level != 0
@sneak_level -= 1
@sneak_timer = 100 # Timer Count
end
end
if @sneak_level == 0
@sneaking = false
$game_player.move_speed = 4
end
end
else
@sneaking = false
$game_player.move_speed = 4
@sneak_reduce = false
if @sneak_restore == false
@sneak_timer = 80 # Initial time off set
@sneak_restore = true
else
@sneak_timer-= 1
end
@sneak_sec = (@sneak_timer / Graphics.frame_rate)%60
if @sneak_sec == 0
if @sneak_level != 5
@sneak_level+= 1
@sneak_timer = 60 # Timer Count
end
end
end
end
#--------------------------------------------------------------------------
def update_enemies
for enemy in @enemies.values
case enemy.behavior
when 0
if enemy.engaged == true
next if engaged_enemy_detection_sight?(enemy) == true
next if engaged_enemy_detection_sound?(enemy) == true
end
when 1
if enemy.engaged == true
next if engaged_enemy_detection_sight?(enemy) == true
next if engaged_enemy_detection_sound?(enemy) == true
else
next if enemy_detection_sight?(enemy) == true
next if enemy_detection_sound?(enemy) == true
end
when 2
if enemy.engaged == true
next if engaged_enemy_linking_sight?(enemy) == true
next if engaged_enemy_linking_sound?(enemy) == true
else
next if enemy_linking?(enemy) == true
end
when 3
if enemy.engaged == true
next if engaged_enemy_linking_sight?(enemy) == true
next if engaged_enemy_linking_sound?(enemy) == true
else
next if enemy_detection_sight?(enemy) == true
next if enemy_detection_sound?(enemy) == true
next if enemy_linking?(enemy) == true
end
end
end
end
#--------------------------------------------------------------------------
def set_event_movement(enemy)
event = $game_map.events[enemy.event_id]
enemy.move_type = event.move_type
enemy.move_frequency = event.move_frequency
enemy.move_speed = event.move_speed
enemy.engaged = true
event.move_type = 2
event.move_frequency = enemy.frequency
event.move_speed = enemy.speed
end
#--------------------------------------------------------------------------
def return_event_movement(enemy)
enemy.engaged = false
event = $game_map.events[enemy.event_id]
return if event == nil
event.move_type = enemy.move_type
event.move_frequency = enemy.move_frequency
event.move_speed = enemy.move_speed
end
#--------------------------------------------------------------------------
def engaged_enemy_linking_sight?(enemy)
if enemy.detection_sight != 0
if in_range?($game_map.events[enemy.event_id], $game_player, enemy.detection_sight)
enemy.linking = false
enemy_attack(enemy)
return true
else
if enemy.linking == false
return_event_movement(enemy)
return false
end
end
end
end
#--------------------------------------------------------------------------
def engaged_enemy_linking_sound?(enemy)
if enemy.detection_sound != 0
if in_range?($game_map.events[enemy.event_id], $game_player, enemy.detection_sound)
enemy.linking = false
enemy_attack(enemy)
return true
else
if enemy.linking == false
return_event_movement(enemy)
return false
end
end
end
end
#--------------------------------------------------------------------------
def enemy_linking?(enemy)
for key in @enemies.keys
if in_range?($game_map.events[enemy.event_id], $game_map.events[key], enemy.detection_sight)
if enemy.engaged == true
enemy.linking = true
set_event_movement(enemy)
return true
end
end
end
return false
end
#--------------------------------------------------------------------------
def enemy_detection_sound?(enemy)
if enemy.detection_sound != 0
return false if enemy.level < $game_party.actors[0].level
if in_range?($game_map.events[enemy.event_id], $game_player, enemy.detection_sound)
if @sneaking == true
return false
end
set_event_movement(enemy)
return true
end
end
return false
end
#--------------------------------------------------------------------------
def enemy_detection_sight?(enemy)
if enemy.detection_sight != 0
return false if enemy.level < $game_party.actors[0].level
if in_range?($game_map.events[enemy.event_id], $game_player, enemy.detection_sight)
if facing?($game_map.events[enemy.event_id], $game_player)
set_event_movement(enemy)
return true
end
end
end
return false
end
#--------------------------------------------------------------------------
def engaged_enemy_detection_sight?(enemy)
if enemy.detection_sight != 0
if in_range?($game_map.events[enemy.event_id], $game_player, enemy.detection_sight)
enemy_attack(enemy)
return true
else
return_event_movement(enemy)
return false
end
end
end
#--------------------------------------------------------------------------
def engaged_enemy_detection_sound?(enemy)
if enemy.detection_sound != 0
if in_range?($game_map.events[enemy.event_id], $game_player, enemy.detection_sound)
enemy_attack(enemy)
return true
else
return_event_movement(enemy)
return false
end
end
end
#--------------------------------------------------------------------------
def in_range?(element, object, range)
return if element == nil or object == nil or range == nil
x = (element.x - object.x) * (element.x - object.x)
y = (element.y - object.y) * (element.y - object.y)
r = x + y
return true if r <= (range * range)
return false
end
#--------------------------------------------------------------------------
def in_range(element, range)
return if element == nil or range == nil
objects = []
x = (element.x - $game_player.x) * (element.x - $game_player.x)
y = (element.y - $game_player.y) * (element.y - $game_player.y)
r = x + y
objects.push($game_party.actors[0]) if r <= (range * range)
return objects
end
#--------------------------------------------------------------------------
def facing?(element, object)
return if element == nil or object == nil
if element.direction == 2
return true if object.y >= element.y
end
if element.direction == 4
return true if object.x <= element.x
end
if element.direction == 6
return true if object.x >= element.x
end
if element.direction == 8
return true if object.y <= element.y
end
return false
end
#--------------------------------------------------------------------------
def in_line?(element, object)
return if element == nil or object == nil
if element.direction == 2
return true if object.x == element.x
end
if element.direction == 4
return true if object.y == element.y
end
if element.direction == 6
return true if object.y == element.y
end
if element.direction == 8
return true if object.x == element.x
end
return false
end
#--------------------------------------------------------------------------
def enemy_pre_attack(enemy, actions)
return true if enemy.hp * 100.0 / enemy.maxhp > actions.condition_hp
return true if $game_party.max_level < actions.condition_level
switch_id = actions.condition_switch_id
if actions.condition_switch_id > 0 and $game_switches[switch_id] == false
return true
end
n = rand(11)
return true if actions.rating < n
return false
end
#--------------------------------------------------------------------------
def hit_player(enemy)
animate($game_player, $game_player.character_name + '-hit',
$game_player.direction/2, 4, 3) if @p_animations
$game_player.jump(0, 0)
$game_player.animation_id = enemy.animation2_id
end
#--------------------------------------------------------------------------
def actor_non_dead?(actor, enemy)
if actor.dead?
if not enemy.is_a?(Game_Actor)
return_event_movement(enemy)
enemy.engaged = false
end
$game_temp.gameover = true
return false
end
return true
end
#--------------------------------------------------------------------------
def enemy_attack(enemy)
for actions in enemy.actions
next if enemy_pre_attack(enemy, actions) == true
case actions.kind
when 0 #Basic
if Graphics.frame_count % (enemy.aggressiveness * 30) == 0
case actions.basic
when 0 #Attack
if in_range?($game_map.events[enemy.event_id], $game_player, 1) and
facing?($game_map.events[enemy.event_id], $game_player)
actor = $game_party.actors[0]
actor.attack_effect(enemy)
event = $game_map.events[enemy.event_id]
animate(event, event.page.graphic.character_name + '-atk',
event.direction/2, 4, 3, 0) if @e_animations and actor.damage != "Miss" and actor.damage != 0
if $game_party.actors[0].damage != "Miss" and $game_party.actors[0].damage != 0
hit_player(enemy)
end
actor_non_dead?(actor, enemy)
return
end
when 1..3 #Nothing
return
end
end
when 1..2#Skill
skill = $data_skills[actions.skill_id]
case skill.scope
when 1 # One Enemy
if Graphics.frame_count % (enemy.aggressiveness * 30) == 0
if in_line?($game_map.events[enemy.event_id], $game_player)
next if enemy.can_use_skill?(skill) == false
event = $game_map.events[enemy.event_id]
animate(event, event.page.graphic.character_name + '-cast',
event.direction/2, 4, 3, 0) if @e_animations
@range.push(Game_Ranged_Skill.new($game_map.events[enemy.event_id], enemy, skill))
enemy.sp -= skill.sp_cost
end
end
when 3..4, 7 # User
if Graphics.frame_count % (enemy.aggressiveness * 100) == 0
if enemy.hp < skill.power.abs
enemy.effect_skill(enemy, skill)
event = $game_map.events[enemy.event_id]
animate(event, event.page.graphic.character_name + '-cast',
event.direction/2, 4, 3, 0) if @e_animations
enemy.sp -= skill.sp_cost
$game_map.events[enemy.event_id].animation_id = skill.animation2_id
end
return
end
end
return
end
end
else
return
end
#--------------------------------------------------------------------------
def hit_event(event, animation)
animate(event, event.page.graphic.character_name + '-hit',
event.direction/2, 4, 3, 0) if @e_animations
event.jump(0, 0)
return if animation == 0
event.animation_id = animation
end
#--------------------------------------------------------------------------
def event_non_dead?(enemy, actor = 0)
if enemy.dead?
treasure(enemy) if actor = 0
id = enemy.event_id
@enemies.delete(id)
event = $game_map.events[enemy.event_id]
event.character_name = ""
case enemy.trigger[0]
when 0
event.erase
when 1
print "EVENT " + event.id.to_s + "Trigger Not Set Right ~!" if enemy.trigger[1] == 0
$game_switches[enemy.trigger[1]] = true
$game_map.need_refresh = true
when 2
print "EVENT " + event.id.to_s + "Trigger Not Set Right ~!" if enemy.trigger[1] == 0
if enemy.trigger[2] == 0
$game_variables[enemy.trigger[1]] += 1
$game_map.need_refresh = true
else
$game_variables[enemy.trigger[1]] = enemy.trigger[2]
$game_map.need_refresh = true
end
when 3
value = "A" if enemy.trigger[1] == 1
value = "B" if enemy.trigger[1] == 2
value = "C" if enemy.trigger[1] == 3
value = "D" if enemy.trigger[1] == 4
print "EVENT " + event.id.to_s + "Trigger Not Set Right ~!" if value == 0
key = [$game_map.map_id, event.id, value]
$game_self_switches[key] = true
$game_map.need_refresh = true
end
return false
end
return true
end
#--------------------------------------------------------------------------
def treasure(enemy)
exp = 0
gold = 0
treasures = []
unless enemy.hidden
exp += enemy.exp
gold += enemy.gold
if rand(100) < enemy.treasure_prob
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
end
end
treasures = treasures[0..5]
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
if actor.cant_get_exp? == false
last_level = actor.level
actor.exp += exp
if actor.level > last_level
actor.hp = actor.maxhp
actor.sp = actor.maxsp
end
end
end
$game_party.gain_gold(gold)
for item in treasures
case item
when RPG::Item
$game_party.gain_item(item.id, 1)
when RPG::Weapon
$game_party.gain_weapon(item.id, 1)
when RPG::Armor
$game_party.gain_armor(item.id, 1)
end
end
end
#--------------------------------------------------------------------------
def player_attack
actor = $game_party.actors[0]
if RANGE_WEAPONS.has_key?(actor.weapon_id)
# Range Attack
range_weapon = RANGE_WEAPONS[actor.weapon_id]
return if $game_party.item_number(range_weapon[3]) == 0
$game_party.lose_item(range_weapon[3], 1)
@range.push(Game_Ranged_Weapon.new($game_player, actor, actor.weapon_id))
animate($game_player, $game_player.character_name + '-ranged',
$game_player.direction/2, 4, 3) if @p_animations
else
# Test Button Mash
hit = rand(30) + 10
if hit > @mash_bar
@mash_bar = 0
return
end
@mash_bar = 0
# Melee Attack
for enemy in @enemies.values
event = $game_map.events[enemy.event_id]
if facing?($game_player, event) and in_range?($game_player, event, 1)
actor = $game_party.actors[0]
enemy.attack_effect(actor)
animate($game_player, $game_player.character_name + '-atk',
$game_player.direction/2, 4, 3) if @p_animations
hit_event(event, $data_weapons[actor.weapon_id].animation2_id) if enemy.damage != "Miss" and enemy.damage != 0
if event_non_dead?(enemy)
if enemy.engaged == false
enemy.engaged = true
set_event_movement(enemy)
end
end
end
end
end
end
#--------------------------------------------------------------------------
def player_skill(key)
return if @skills[key] == nil
skill = $data_skills[@skills[key]]
return if skill == nil
actor = $game_party.actors[0]
return if not actor.skills.include?(skill.id)
return if actor.can_use_skill?(skill) == false
case skill.scope
when 1 # One Enemy
@range.push(Game_Ranged_Skill.new($game_player, actor, skill))
actor.sp -= skill.sp_cost
animate($game_player, $game_player.character_name + '-cast',
$game_player.direction/2, 4, 3) if @p_animations
when 2 # All Emenies
$game_player.animation_id = skill.animation2_id
actor.sp -= skill.sp_cost
for enemy in @enemies.values
next if enemy == nil
enemy.effect_skill(actor, skill)
animate($game_player, $game_player.character_name + '-cast',
$game_player.direction/2, 4, 3) if @p_animations
if enemy.damage != "Miss" and enemy.damage != 0
event = $game_map.events[enemy.event_id]
hit_event(event, 0)
end
if event_non_dead?(enemy)
if enemy.engaged == false
enemy.behavior = 3
enemy.linking = true
enemy.engaged = true
set_event_movement(enemy)
end
end
end
return
when 3..4, 7 # User
return if actor.can_use_skill?(skill) == false
actor.effect_skill(actor, skill)
actor.sp -= skill.sp_cost
animate($game_player, $game_player.character_name + '-cast',
$game_player.direction/2, 4, 3) if @p_animations
$game_player.animation_id = skill.animation2_id
return
end
end
end
#============================================================================
# â– Game ABS Enemy
#============================================================================
class Game_ABS_Enemy < Game_Battler
#--------------------------------------------------------------------------
attr_accessor :event_id
attr_accessor :level
attr_accessor :behavior
attr_accessor :detection_sight
attr_accessor :detection_sound
attr_accessor :aggressiveness
attr_accessor :trigger
attr_accessor :speed
attr_accessor :frequency
attr_accessor :engaged
attr_accessor :linking
attr_accessor :move_type
attr_accessor :move_frequency
attr_accessor :move_speed
attr_accessor :ranged
#--------------------------------------------------------------------------
def initialize(enemy_id)
super()
@event_id= 0
@level = 0
@behavior = 0
@detection_sight = 0
@detection_sound = 0
@aggressiveness = 1
@trigger = []
@enemy_id = enemy_id
@engaged = false
@linking = false
@speed = 0
@frequency = 0
@move_type = 0
@move_frequency = 0
@move_speed = 0
@hp = maxhp
@sp = maxsp
end
#--------------------------------------------------------------------------
def id
return @enemy_id
end
#--------------------------------------------------------------------------
def index
return @member_index
end
#--------------------------------------------------------------------------
def name
return $data_enemies[@enemy_id].name
end
#--------------------------------------------------------------------------
def base_maxhp
return $data_enemies[@enemy_id].maxhp
end
#--------------------------------------------------------------------------
def base_maxsp
return $data_enemies[@enemy_id].maxsp
end
#--------------------------------------------------------------------------
def base_str
return $data_enemies[@enemy_id].str
end
#--------------------------------------------------------------------------
def base_dex
return $data_enemies[@enemy_id].dex
end
#--------------------------------------------------------------------------
def base_agi
return $data_enemies[@enemy_id].agi
end
#--------------------------------------------------------------------------
def base_int
return $data_enemies[@enemy_id].int
end
#--------------------------------------------------------------------------
def base_atk
return $data_enemies[@enemy_id].atk
end
#--------------------------------------------------------------------------
def base_pdef
return $data_enemies[@enemy_id].pdef
end
#--------------------------------------------------------------------------
def base_mdef
return $data_enemies[@enemy_id].mdef
end
#--------------------------------------------------------------------------
def base_eva
return $data_enemies[@enemy_id].eva
end
#--------------------------------------------------------------------------
def animation1_id
return $data_enemies[@enemy_id].animation1_id
end
#--------------------------------------------------------------------------
def animation2_id
return $data_enemies[@enemy_id].animation2_id
end
#--------------------------------------------------------------------------
def element_rate(element_id)
table = [0,200,150,100,50,0,-100]
result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
result /= 2
end
end
return result
end
#--------------------------------------------------------------------------
def state_ranks
return $data_enemies[@enemy_id].state_ranks
end
#--------------------------------------------------------------------------
def state_guard?(state_id)
return false
end
#--------------------------------------------------------------------------
def element_set
return []
end
#--------------------------------------------------------------------------
def plus_state_set
return []
end
#--------------------------------------------------------------------------
def minus_state_set
return []
end
#--------------------------------------------------------------------------
def actions
return $data_enemies[@enemy_id].actions
end
#--------------------------------------------------------------------------
def exp
return $data_enemies[@enemy_id].exp
end
#--------------------------------------------------------------------------
def gold
return $data_enemies[@enemy_id].gold
end
#--------------------------------------------------------------------------
def item_id
return $data_enemies[@enemy_id].item_id
end
#--------------------------------------------------------------------------
def weapon_id
return $data_enemies[@enemy_id].weapon_id
end
#--------------------------------------------------------------------------
def armor_id
return $data_enemies[@enemy_id].armor_id
end
#--------------------------------------------------------------------------
def treasure_prob
return $data_enemies[@enemy_id].treasure_prob
end
end
#============================================================================
# â– Game Battler
#============================================================================
class Game_Battler
#--------------------------------------------------------------------------
def can_use_skill?(skill)
if skill.sp_cost > self.sp
return false
end
if dead?
return false
end
if skill.atk_f == 0 and self.restriction == 1
return false
end
occasion = skill.occasion
case occasion
when 0..1
return true
when 2..3
return false
end
end
#--------------------------------------------------------------------------
def effect_skill(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 = "Miss"
end
end
else
self.damage = "Miss"
end
return effective
end
end
#============================================================================
# â– Game Character
#============================================================================
class Game_Character
attr_accessor :move_type
attr_accessor :move_frequency
attr_accessor :move_speed
attr_accessor :character_name
attr_accessor :wait
attr_accessor :old_chr_name
attr_accessor :old_dir
attr_accessor :animating
#------------------------------------------------------------------------
alias animation_engine_game_character_initialize initialize
#------------------------------------------------------------------------
def initialize
animation_engine_game_character_initialize
@animating = false
@wait = false
@old_chr_name = @character_name
@old_dir = @direction
end
#------------------------------------------------------------------------
def animate(animation_name, position, frames, wait, repeat)
@character_name = animation_name if @animating == false
@pattern = 0
@count = 0
@repeat = repeat
@direction_fix = true
@old_dir = @direction
@direction = position * 2
@frames = frames
lock
@animating = true
@wait = wait
@anim_wait_count = @wait
update
return
end
#------------------------------------------------------------------------
def update_animate
if @anim_wait_count > 0
@anim_wait_count -= 1
return
end
if @pattern >= @frames or moving?
if !moving?
if @count < @repeat
@pattern = 0
@count += 1
@anim_wait_count = @wait
update
return
end
end
unlock
@animating = false
@pattern = 0
@direction_fix = false
@direction = @old_dir
if self.is_a?(Game_Event)
@character_name = @page != nil ? @page.graphic.character_name : ''
else
@character_name = @old_chr_name
end
$game_player.refresh
$game_map.refresh
return
end
@pattern += 1
@anim_wait_count = @wait
update
end
#------------------------------------------------------------------------
def update_movement_type
if @animating == true
update_animate
return
end
if jumping?
update_jump
elsif moving?
update_move
else
update_stop
end
end
#------------------------------------------------------------------------
def update_movement
if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
case @move_type
when 1 # Random
move_type_random
when 2
if @runpath
run_path
else
move_type_toward_player
end
when 3
move_type_custom
when 4
move_type_escape_player
end
end
end
#------------------------------------------------------------------------
# * Move Type : Escape
#------------------------------------------------------------------------
def move_type_escape_player
sx = @x - $game_player.x
sy = @y - $game_player.y
abs_sx = sx > 0 ? sx : -sx
abs_sy = sy > 0 ? sy : -sy
if sx + sy >= 20
move_random
return
end
move_away_from_player
end
#------------------------------------------------------------------------
# * Move Type : Approach
#------------------------------------------------------------------------
def move_type_toward_player
sx = @x - $game_player.x
sy = @y - $game_player.y
abs_sx = sx > 0 ? sx : -sx
abs_sy = sy > 0 ? sy : -sy
if sx + sy >= 20
move_random
return
end
move_toward_player
end
#------------------------------------------------------------------------
# * Move away from Player
#------------------------------------------------------------------------
def move_away_from_player
sx = @x - $game_player.x
sy = @y - $game_player.y
if sx == 0 and sy == 0
return
end
abs_sx = sx.abs
abs_sy = sy.abs
if abs_sx == abs_sy
rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
end
if abs_sx > abs_sy
sx > 0 ? move_right : move_left
if not moving?
rand(2) == 1 ? move_down : move_up
end
else
sy > 0 ? move_down : move_up
if not moving?
rand(2) == 1 ? move_right : move_left
end
end
end
end
#============================================================================
# â– Game Ranged Weapon
#============================================================================
class Game_Ranged_Weapon < Game_Character
#--------------------------------------------------------------------------
attr_accessor :draw
attr_accessor :dead
#--------------------------------------------------------------------------
def initialize(parent, actor, attack)
@range = 0
@step = 0
@parent = parent
@actor = actor
@draw = true
@dead = false
@range_wepaon = $ABS.RANGE_WEAPONS[attack]
super()
refresh
end
#--------------------------------------------------------------------------
def refresh
@move_direction = @parent.direction
moveto(@parent.x, @parent.y)
@character_name = @range_wepaon[0]
@move_speed = @range_wepaon[1]
@range = @range_wepaon[4]
end
#--------------------------------------------------------------------------
def check_event_trigger_touch(x, y)
hit_player if x == $game_player.x and y == $game_player.y
for event in $game_map.events.values
if event.x == x and event.y == y
if event.character_name == ""
froce_movement
else
hit_event(event.id)
end
end
end
end
#--------------------------------------------------------------------------
def froce_movement
case @move_direction
when 2
@y += 1
when 4
@x -= 1
when 6
@x += 1
when 8
@y -= 1
end
end
#--------------------------------------------------------------------------
def update
super
return if moving?
case @move_direction
when 2
move_down
when 4
move_left
when 6
move_right
when 8
move_up
end
update_step
end
#--------------------------------------------------------------------------
def update_step
kill if @step >= @range
@step += 1
end
#--------------------------------------------------------------------------
def hit_player
actor = $game_party.actors[0]
enemy = @actor
$ABS.animate($game_player, $game_player.character_name + '-hit',
$game_player.direction/2, 4, 3) if $ABS.p_animations
actor.attack_effect(enemy)
$game_player.animation_id = @range_wepaon[2] if actor.damage != "Miss" and actor.damage != 0
$ABS.actor_non_dead?(actor, enemy)
kill
end
#--------------------------------------------------------------------------
def hit_event(id)
actor = $ABS.enemies[id]
return if actor == nil
if @parent.is_a?(Game_Player)
enemy = $game_party.actors[0]
actor.attack_effect(enemy)
$game_map.events[id].animation_id = @range_wepaon[2] if actor.damage != "Miss" and actor.damage != 0
if $ABS.event_non_dead?(actor)
if actor.engaged == false
actor.behavior = 3
actor.linking = true
actor.engaged = true
$ABS.set_event_movement(actor)
end
end
else
enemy = $ABS.enemies[@parent.id]
actor.attack_effect(enemy)
event = $game_map.events[id]
$ABS.animate(event, event.page.graphic.character_name + '-hit',
event.direction/2, 4, 3, 0) if $ABS.e_animations and actor.damage != "Miss" and actor.damage != 0
$game_map.events[id].animation_id = @range_wepaon[2] if actor.damage != "Miss" and actor.damage != 0
$ABS.event_non_dead?(actor, enemy)
end
kill
end
#--------------------------------------------------------------------------
def kill
@dead = true
end
end
#============================================================================
# â– Game Ranged Skill
#============================================================================
class Game_Ranged_Skill < Game_Character
#--------------------------------------------------------------------------
attr_accessor :draw
attr_accessor :dead
#--------------------------------------------------------------------------
def initialize(parent, actor, skill)
@range = 0
@step = 0
@parent = parent
@skill = skill
@actor = actor
@range_skill = $ABS.RANGE_SKILLS[skill.id]
@draw = true
@dead = false
super()
refresh
end
#--------------------------------------------------------------------------
def refresh
@move_direction = @parent.direction
moveto(@parent.x, @parent.y)
@range = @range_skill[0]
@opacity = 10 if @range == 1
@move_speed = @range_skill[1]
@character_name = @range_skill[2]
end
#--------------------------------------------------------------------------
def check_event_trigger_touch(x, y)
hit_player if x == $game_player.x and y == $game_player.y
for event in $game_map.events.values
if event.x == x and event.y == y
if event.character_name == ""
froce_movement
else
hit_event(event.id)
end
end
end
end
#--------------------------------------------------------------------------
def froce_movement
case @move_direction
when 2
@y += 1
when 4
@x -= 1
when 6
@x += 1
when 8
@y -= 1
end
end
#--------------------------------------------------------------------------
def update
super
return if moving?
case @move_direction
when 2
move_down
when 4
move_left
when 6
move_right
when 8
move_up
end
update_step
end
#--------------------------------------------------------------------------
def update_step
kill if @step >= @range
@step += 1
end
#--------------------------------------------------------------------------
def hit_player
actor = $game_party.actors[0]
enemy = @actor
actor.effect_skill(enemy, @skill)
$ABS.animate($game_player, $game_player.character_name + '-hit',
$game_player.direction/2, 4, 3) if $ABS.p_animations and actor.damage != "Miss" and actor.damage != 0
$game_player.animation_id = @skill.animation2_id if actor.damage != "Miss" and actor.damage != 0
$ABS.actor_non_dead?(actor, enemy)
end
#--------------------------------------------------------------------------
def hit_event(id)
actor = $ABS.enemies[id]
return if actor == nil
if @parent.is_a?(Game_Player)
enemy = $game_party.actors[0]
actor.effect_skill(enemy, @skill)
$game_map.events[id].animation_id = @skill.animation2_id if actor.damage != "Miss" and actor.damage != 0
if $ABS.event_non_dead?(actor, enemy)
if actor.engaged == false
actor.behavior = 3
actor.linking = true
actor.engaged = true
$ABS.set_event_movement(actor)
end
end
else
enemy = $ABS.enemies[@parent.id]
actor.effect_skill(enemy, @skill)
$ABS.animate(event, event.page.graphic.character_name + '-hit',
event.direction/2, 4, 3, 0) if $ABS.e_animations and actor.damage != "Miss" and actor.damage != 0
$game_map.events[id].animation_id = @skill.animation2_id if actor.damage != "Miss" and actor.damage != 0
$ABS.event_non_dead?(actor, enemy)
end
end
#--------------------------------------------------------------------------
def kill
@dead = true
end
end
#============================================================================
# â– Game Event
#============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
alias nf_abs_game_event_refresh_set_page refresh_set_page
#--------------------------------------------------------------------------
def name
return @event.name
end
#--------------------------------------------------------------------------
def id
return @id
end
#--------------------------------------------------------------------------
def refresh_set_page
nf_abs_game_event_refresh_set_page
$ABS.refresh(self, @list, @character_name)
end
end
#============================================================================
# â– Spriteset Map
#============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
alias nf_abs_spriteset_map_initialize initialize
alias nf_abs_spriteset_map_dispose dispose
alias nf_abs_spriteset_map_update update
#--------------------------------------------------------------------------
def initialize
@ranged = []
for range in $ABS.range
sprite = Sprite_Character.new(@viewport1, range)
@ranged.push(sprite)
end
nf_abs_spriteset_map_initialize
end
#--------------------------------------------------------------------------
def dispose
for range in @ranged
range.dispose
end
nf_abs_spriteset_map_dispose
end
#--------------------------------------------------------------------------
def update
for range in $ABS.range
if range.draw == true
sprite = Sprite_Character.new(@viewport1, range)
@ranged.push(sprite)
range.draw = false
end
end
for range in @ranged
if range.character.dead == true
$ABS.range.delete(range.character)
@ranged.delete(range)
range.dispose
else
range.update
end
end
nf_abs_spriteset_map_update
end
end
#============================================================================
# â– Scene Title
#============================================================================
class Scene_Title
#--------------------------------------------------------------------------
alias nf_abs_scene_title_cng command_new_game
#--------------------------------------------------------------------------
def command_new_game
$ABS = ABS.new
nf_abs_scene_title_cng
end
end
#============================================================================
# â– Scene Map
#============================================================================
class Scene_Map
#--------------------------------------------------------------------------
alias nf_abs_scene_map_update update
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
def update
$ABS.update
$ABS.player_attack if Input.triggerd?($ABS.ATTACK_KEY)
for i in 0..9
$ABS.player_skill(i) if Input.triggerd?($ABS.SKILL_KEYS[i])
end
nf_abs_scene_map_update
end
end
#============================================================================
# â– Scene Skill
#============================================================================
class Scene_Skill
#--------------------------------------------------------------------------
alias nf_abs_scene_skill_main main
alias nf_abs_scene_skill_update update
alias nf_abs_scene_skill_update_skill update_skill
#--------------------------------------------------------------------------
def main
@shk_window = Window_Command.new(250, ["Skill Assigned to Hot Key"])
@shk_window.visible = false
@shk_window.active = false
@shk_window.x = 200
@shk_window.y = 250
@shk_window.z = 1500
nf_abs_scene_skill_main
@shk_window.dispose
end
#--------------------------------------------------------------------------
def update
@shk_window.update
nf_abs_scene_skill_update
if @shk_window.active
update_shk
return
end
end
#--------------------------------------------------------------------------
def update_skill
nf_abs_scene_skill_update_skill
for i in 0..9
if Input.triggerd?($ABS.SKILL_KEYS[i])
$game_system.se_play($data_system.decision_se)
@skill_window.active = false
@shk_window.active = true
@shk_window.visible = true
$ABS.skills[i] = @skill_window.skill.id
end
end
end
#--------------------------------------------------------------------------
def update_shk
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@shk_window.active = false
@shk_window.visible = false
@skill_window.active = true
$scene = Scene_Skill.new(@actor_index)
return
end
end
end
#============================================================================
# â– Scene Load
#============================================================================
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
alias nf_abs_scene_load_read_data read_data
#--------------------------------------------------------------------------
def read_data(file)
nf_abs_scene_load_read_data(file)
$ABS = Marshal.load(file)
end
end
#============================================================================
# â– Scene Save
#============================================================================
class Scene_Save < Scene_File
#--------------------------------------------------------------------------
alias nf_abs_scene_save_write_data write_data
#--------------------------------------------------------------------------
def write_data(file)
nf_abs_scene_save_write_data(file)
Marshal.dump($ABS, file)
end
end
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
The HUD script
Here's the script so far:
It needs the SDK, and Netplay+ to work...
Code:
#===============================================================================
# System_Hud
# Created by Dan Badger (a.k.a "Wyatt") for Lost Fantasy Online
# Version: 1.0
#===============================================================================
#------------------
# Equipment Window
#------------------
class Window_HudEquip < Window_Base
def initialize
super(194, 391, 285, 80)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 80
refresh
end
def refresh
self.contents.clear
@bitmap = RPG::Cache.picture("equipback.png")
self.contents.blt(0, 0, @bitmap, Rect.new(0, 0, @bitmap.width, @bitmap.height), 255)
end
end
#-----------------
# Portrait Window
#-----------------
class Window_HudPortrait < Window_Base
def initialize
super(508, 10, 121, 112)
self.contents = Bitmap.new(width - 0, height - 0)
self.back_opacity = 0
refresh
end
def refresh
self.contents.clear
end
end
#-------------
# Info Window
#-------------
class Window_HudInfo < Window_Base
def initialize
super(508, 116, 121, 59)
self.contents = Bitmap.new(width - 32, height - 32)
self.windowskin = RPG::Cache.windowskin("ws2.png")
self.back_opacity = 80
refresh
end
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 12
self.contents.draw_text(0, 0, 100, 14, "Wyatt Draegonhart")
self.contents.draw_text(0, 14, 100, 14, "Level 17 Mage")
end
end
#---------------
# Skills Window
#---------------
class Window_HudSkills < Window_Base
def initialize
super(8, 8, 80, 285)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 80
refresh
end
def refresh
self.contents.clear
@bitmap = RPG::Cache.picture("skillsback.png")
self.contents.blt(0, 0, @bitmap, Rect.new(0, 0, @bitmap.width, @bitmap.height), 255)
end
end
#---------------
# Spriteset_Map
#---------------
class Spriteset_Map
# Thanks to Daniel for this
alias icon_init initialize
alias icon_dispose dispose
def initialize
icon_init
bitmap = Bitmap.new(250, 32)
unless $game_party.actors[0].weapon_id == 0
icon = $data_weapons[$game_party.actors[0].weapon_id].icon_name
bitmap.blt(0, 0, RPG::Cache.icon(icon), Rect.new(0, 0, 24, 24))
end
for i in 1..4
case i
when 1
next if $game_party.actors[0].armor1_id == 0
icon = $data_armors[$game_party.actors[0].armor1_id].icon_name
when 2
next if $game_party.actors[0].armor2_id == 0
icon = $data_armors[$game_party.actors[0].armor2_id].icon_name
when 3
next if $game_party.actors[0].armor3_id == 0
icon = $data_armors[$game_party.actors[0].armor3_id].icon_name
when 4
next if $game_party.actors[0].armor4_id == 0
icon = $data_armors[$game_party.actors[0].armor4_id].icon_name
end
bitmap.blt(i*51, 0, RPG::Cache.icon(icon), Rect.new(0, 0, 24, 24))
end
@icon_sprite = Sprite.new
@icon_sprite.bitmap = bitmap
@icon_sprite.x = 222
@icon_sprite.y = 417
@icon_sprite.z = 500
end
def dispose
icon_dispose
@icon_sprite.dispose
end
end
#-----------
# Scene_Map
#-----------
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# This class performs map screen processing.
#==============================================================================
class Scene_Map
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
main_draw
# Main loop
loop do
main_loop
break if main_scenechange?
end
main_dispose
main_tiletrigger
end
#--------------------------------------------------------------------------
# * Main Draw
#--------------------------------------------------------------------------
def main_draw
# Make sprite set
@spriteset = Spriteset_Map.new
# Make message window
@message_window = Window_Message.new
@hud1 = Window_HudEquip.new
@hud2 = Window_HudPortrait.new
@hud3 = Window_HudInfo.new
@hud4 = Window_HudSkills.new
@face_sprite = Sprite.new
@face_sprite.bitmap = RPG::Cache.picture("fighter01face.png")
@face_sprite.x = 514 # Change the x value here
@face_sprite.y = 17 # Change the y value here
@face_sprite.z = 250 # Change the z value here
# Transition run
Graphics.transition
end
#--------------------------------------------------------------------------
# * Main Loop
#--------------------------------------------------------------------------
def main_loop
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
end
#--------------------------------------------------------------------------
# * Main Scene Change
#--------------------------------------------------------------------------
def main_scenechange?
# Abort loop if screen is changed
if $scene != self
return true
end
return false
end
#--------------------------------------------------------------------------
# * Main Dispose
#--------------------------------------------------------------------------
def main_dispose
Graphics.freeze
@spriteset.dispose
automatic_dispose
end
#--------------------------------------------------------------------------
# * Main Tiletrigger
#--------------------------------------------------------------------------
def main_tiletrigger
# If switching to title screen
if $scene.is_a?(Scene_Title)
# Fade out screen
Graphics.transition
Graphics.freeze
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Loop
loop do
update_systems
# Abort loop if player isn't place moving
unless $game_temp.player_transferring
break
end
# Run place move
transfer_player
# Abort loop if transition processing
if $game_temp.transition_processing
break
end
end
update_graphics
return if update_game_over? == true
return if update_to_title? == true
# If transition processing
if $game_temp.transition_processing
# Clear transition processing flag
$game_temp.transition_processing = false
# Execute transition
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# If showing message window
if $game_temp.message_window_showing
return
end
# If encounter list isn't empty, and encounter count is 0
if $game_player.encounter_count == 0 and $game_map.encounter_list != []
# If event is running or encounter is not forbidden
unless $game_system.map_interpreter.running? or
$game_system.encounter_disabled
# Confirm troop
n = rand($game_map.encounter_list.size)
troop_id = $game_map.encounter_list[n]