赞 0
VIP 13
好人卡 13
积分 1
经验 7273
最后登录 2014-2-17
在线时间 37 小时
Lv1.梦旅人
梦石 0
星屑 50
在线时间 37 小时
注册时间 2012-7-30
帖子 147
本帖最后由 devilg 于 2012-8-6 23:25 编辑
我又后悔了。。。。
再更正几个bug。
=begin
下面的系统是enchant系统。依稀记得英雄坛说的系统也有类似的功效(打造武器的系统)
不过为什么别人做过我就不能再写一个呢。
copywrong DevilG.版权没有翻版。。。翻吧。
使用方法:
1.设定等级
在物品库里的备注放入
atk1=1000
def1=0
agi1=0
spi1=0
hprec1=0
mprec1=0
等数值。atk1=1000 意味着物品提升一级将会提升额外的10点攻击(1000/100)
atk1=111就是每级1.11攻击,会四舍五入。
hprec1等是被可用物品使用的。
这些数值是可以扩充的,别忘了增加相应处理语句。存储位也可以放在另一设定脚本里。
2.增加有等级的物品的方法:
在事件脚本内加入
balls = $data_weapons[1].dup
balls.bonus = [0,100]
$game_party.gain_item(balls,1)
其中
balls = $data_weapons[1].dup 获得武器库第一个武器:木棒
balls.bonus = [0,100] 增加武器的等级为0抚摸,100等级
$game_party.gain_item(balls,1)获得一个蛋成为三蛋
3.自定义抚摸
ENCHANT array包含了抚摸的名字,比如木棒-->爆炎木棒
ENCHANT NAME & DES用作抚摸效果的显示。
在def enchantBonus定义抚摸的效果:case type后加入when number
其他请参照注释和范例。
技术支持:
将游戏中所有的辨别item的key:item.id换成了[item.id,bonus]的array形式。
其中包括$game_party的@item hash list和角色的装备决定数值weapon_id等。
并对一些处理语句做出了修改,返还物品时做bonus的附加修改。
致想看完这个脚本的朋友:debug时我很容易写F**K,S**T等字样无视就好
我的编程style很烂,各种tab都是乱七八糟的。请多多包涵
由于只测试了武器木棒,出现bug请pm我。
兼容性/整合系统技术支持:
可能不支持修改过game_party中gain_item,items,item_number,
game_actors中armor_id,weapons, armors, change_equip,
RPG:ITEM,和window_base中draw_item_name的系统整合。
可能与装备显示的系统有冲突。
与游戏事件:失去物品可能不兼容。尤其是升级过后的装备。(等级不同所以key不同)
update NOTE
将在武器和防具类的bonus更新语句放到了baseitem内。更新bonus内容时直接更新物品数据。
运行速度可能会变慢(处理语句变多)
处理了weapon_Id等的getter模式,提升了兼容性
对某些语句使用了alias。
修复了一个丢弃防具的bug。
添加了物品升级的函数。
更新了物品升级的语句(未测试)
修正上述废话。
=end
module SHIT
#Bonus初始化的状态。目前的状态是(抚摸,装备等级)[enchant,item level]
SHITBONUS = [ 0 ,0 ]
ENCHANT = [ "爆炎" ,"Shitty" ]
#FOLLOWING USED IN ARMOUR DESCRIPTION
ENCHANTNAME = [ "爆炎:" ,"Shitty" ]
ENCHANTDES = [ "提升5点攻击并攻击为火属性" ,"大幅降低物品属性" ]
end
module RPG
class BaseItem
attr_accessor:bonus #添加的bonus数据。
def fix( bonus=[ 0 ,0 ] ) #bonus的setter。将bonus变量导入到本类的@bonus变量里
@bonus = bonus
enchantBonus( @bonus[ 0 ] )
levelBonus( @bonus[ 1 ] )
return self
end
def bonus#bonus的getter。若本类@bonus为nil则返回bonus初始化array。
return SHIT::SHITBONUS if @bonus == nil
return @bonus
end
def showBonus?#是否在物品名旁显示bonus的返回boolean。若没有属性加成则不显示
atk1=0
def1=0
agi1=0
spi1=0
hit1=0
eva1=0
hprec1=0
mprec1=0
eval ( @note)
shittyarray=[ atk1,def1,agi1,spi1,hprec1,mprec1] #将所有的变量放到array里
for shit in shittyarray
return true if shit != 0 #如果有则显示bonus加成
end
return false
end
def lvlup
@bonus =SHIT::SHITBONUS if @bonus == nil
@bonus = @bonus .dup
@bonus [ 1 ] += 1
return self
end
def update_qualify( id,type)
#id:物品编号。type:1=misc, 2=weap,3=armour
#物品升级时的特殊要求。目前为100%
case id
when 1
end
return true if rand ( 100 ) <100
return false
end
def enchantBonus( type)
#common variables;atk,def,spi,agi,price
#variables only weapon have :hit, twohand, fastatk,cri,elementset,stateset
#only armour:eva,halfmp, double exp,
list = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , [ ] , [ ] , 0 , 0 , 0 , 0 , [ ] , [ ] , 0 ]
#list format: [atk,def,spi,agi,price,hit,twohand,fastatk,cri,elementset,stateset,eva, halfmp,doubexp, auto_recov, halve_element_damage, state_resist,prevent_cri]
#atk1 def2 spi3 agi4 pric5 hit6 2h7 fast8 cri9 elem10 stat11 eva12
#1/2mp13 2xexp14 hprec15 elementset16 stateset17 preventcri18
#elementset format:[elementid,element id]
#stateset format:[stateid, stateid]
#WARNING:7,8,9,13,14,15,18 MUST BE SET TO BOOLEAN(TRUE/FALSE) OR 0(NO CHANGE)
case type
when 1 #name=火焰武器抚摸(+5攻击并攻击火焰化)
list[ 0 ] =5 #ATK+5
list[ 9 ] =[ 9 ] #ELEMENTSET PUSH 9(火焰)
when 2 #shitty:全属性-500
list[ 0 ] =-500
list[ 1 ] =-500
list[ 2 ] =-500
list[ 3 ] =-500
end
@atk += list[ 0 ] if @atk != nil
@def += list[ 1 ] if @def != nil
@spi += list[ 2 ] if @spi != nil
@agi += list[ 3 ] if @agi != nil
@price += list[ 4 ] if @price != nil
@hit += list[ 5 ] if @hit != nil
@two_handed = list[ 6 ] if @two_handed != nil && list[ 6 ] !=0
@fast_attack = list[ 7 ] if @fast_attack != nil && list[ 7 ] !=0
@critical_bonus = list[ 8 ] if @critical_bonus != nil && list[ 8 ] !=0
@element_set += list[ 9 ] if @element_set !=nil && @two_handed != nil
@state_set += list[ 10 ] if @state_set !=nil && @two_handed != nil
@eva += list[ 11 ] if @eva != nil
@half_mp_cost = list[ 12 ] if @half_mp_cost != nil && list[ 12 ] !=0
@double_exp_gain = list[ 13 ] if @double_exp_gain != nil && list[ 13 ] !=0
@auto_hp_recover = list[ 14 ] if @auto_hp_recover != nil && list[ 14 ] !=0
@element_set += list[ 15 ] if @element_set !=nil && @auto_hp_recover != nil
@state_set += list[ 16 ] if @state_set !=nil && @auto_hp_recover != nil
@prevent_critical = list[ 17 ] if @prevent_critical != nil && list[ 17 ] !=0
end
def levelBonus( level)
atk1=0
def1=0
agi1=0
spi1=0
hit1=0
eva1=0
hprec1=0
mprec1=0
#能力扩充HERE
eval ( @note)
@atk += ( atk1*level/100 ) .to_i if @atk !=nil
@def += ( def1*level/100 ) .to_i if @def !=nil
@spi += ( spi1*level/100 ) .to_i if @spi !=nil
@agi += ( agi1*level/100 ) .to_i if @agi !=nil
@hit += ( hit1*level/100 ) .to_i if @hit !=nil
@eva += ( eva1*level/100 ) .to_i if @eva !=nil
@hp_recovery += ( hprec1*level/100 ) .to_i if @hp_recovery !=nil
@mp_recovery += ( mprec1*level/100 ) .to_i if @mp_recovery !=nil
end
end #end of class
end #end of module
class Window_Base#对物品名字表述的重新定义。
def draw_item_name( item, x, y, enabled = true )
return if item == nil
if item != nil
draw_icon( item.icon_index , x, y, enabled)
self .contents .font .color = normal_color
self .contents .font .color .alpha = enabled ? 255 : 128
text = item.name
text = SHIT::ENCHANT [ item.bonus [ 0 ] -1 ] +text if item.bonus [ 0 ] !=0 && SHIT::ENCHANT [ item.bonus [ 0 ] -1 ] != nil
#print "fuck"+item[1][1].to_i.to_s #请忽略debug语句
text += ( "+" +( item.bonus [ 1 ] .to_s ) ) if item.bonus [ 1 ] !=0 && item.showBonus ?#bonus name spec. here
#如果物品有属性加成并有等级则显示+X在名字后面
self .contents .draw_text ( x + 24 , y, 172 , WLH, text)
end
end
end
#对actor类的重新整理
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 设置
# actor_id : 角色 ID
#--------------------------------------------------------------------------
alias setup1 setup
def setup( actor_id)
setup1( actor_id)
#将装备的key换成array形式
@weapon_id = [ actor.weapon_id ,SHIT::SHITBONUS ]
@armor1_id = [ actor.armor1_id ,SHIT::SHITBONUS ]
@armor2_id = [ actor.armor2_id ,SHIT::SHITBONUS ]
@armor3_id = [ actor.armor3_id ,SHIT::SHITBONUS ]
@armor4_id = [ actor.armor4_id ,SHIT::SHITBONUS ]
end
#对装备key做getter处理
def weapon_id
return @weapon_id [ 0 ]
end
def armor1_id
return @armor1_id [ 0 ]
end
def armor2_id
return @armor2_id [ 0 ]
end
def armor3_id
return @armor3_id [ 0 ]
end
def @armor4_id
return @armor4_id [ 0 ]
end
#--------------------------------------------------------------------------
# ● 获取武器对象数组
#--------------------------------------------------------------------------
def weapons#重新定义了武器获取模式:由于nil不再好判断,通过另一函数pushFucker处理
result = [ ]
result = pushFucker( result,@weapon_id,true )
if two_swords_style
result = pushFucker( result,@armor1_id,true )
end
return result
end
#--------------------------------------------------------------------------
# ● 获取防具对象数组
#--------------------------------------------------------------------------
def armors#重新定义了防具获取模式:由于nil不再好判断,通过另一函数pushFucker处理
result = [ ]
unless two_swords_style
result = pushFucker( result,@armor1_id)
end
result = pushFucker( result,@armor2_id)
result = pushFucker( result,@armor3_id)
result = pushFucker( result,@armor4_id)
return result
end
def pushFucker( result,itemshit,weapon = false )
#如果系统存在这个武器那么在result表内增加加成过bonus的武器。否则push nil
if weapon
if $data_weapons [ itemshit[ 0 ] ] !=nil
result.push ( $data_weapons[ itemshit[ 0 ] ] .dup .fix ( itemshit[ 1 ] ) )
else
result.push ( nil )
end
else
if $data_armors [ itemshit[ 0 ] ] !=nil
result.push ( $data_armors[ itemshit[ 0 ] ] .dup .fix ( itemshit[ 1 ] ) )
else
result.push ( nil )
end
end
return result
end
#--------------------------------------------------------------------------
# ● 变更装备(目标对象)
# equip_type : 装备部分(0~4)
# item_id : 武器或防具ID
# test : 测试标志(战斗测试或暂时装备用)
#--------------------------------------------------------------------------
def change_equip( equip_type, item, test = false )
last_item = equips[ equip_type]
unless test
return if $game_party .item_number ( item) == 0 if item != nil
$game_party .gain_item ( last_item, 1 )
$game_party .lose_item ( item, 1 )
end
#由于下面就要更新装备处理数值了,所以将物品key改成新的array形式:
#[id,bonus]的形式。若是物品nil则key为0,初始bonus数值的array。
item = [ item.id ,item.bonus ] if item != nil #
item = [ 0 ,SHIT::SHITBONUS ] if item == nil
case equip_type
when 0 # 武器
@weapon_id = item
unless two_hands_legal? # 非双手装备的场合,自动卸下装备
change_equip( 1 , nil , test)
end
when 1 # 盾
@armor1_id = item
unless two_hands_legal? # 非双手装备的场合,自动卸下装备
change_equip( 0 , nil , test)
end
when 2 # 头部防具
@armor2_id = item
when 3 # 身体防具
@armor3_id = item
when 4 # 装饰品
@armor4_id = item#_id
end
end
#--------------------------------------------------------------------------
# ● 丢弃装备
# item : 要丢弃的武器或防具
# 在「包含装备品」选项钩上时使用。
#--------------------------------------------------------------------------
def discard_equip( item)
if item.is_a ?( RPG::Weapon )
#同样的更改物品key的形式。
if @weapon_id == [ item.id ,item.bonus ]
@weapon_id = [ 0 ,SHIT::SHITBONUS ]
elsif two_swords_style and @armor1_id == [ item.id ,item.bonus ]
@armor1_id = [ 0 ,SHIT::SHITBONUS ]
end
elsif item.is_a ?( RPG::Armor )
if not two_swords_style and @armor1_id == [ item.id ,item.bonus ]
@armor1_id = [ 0 ,SHIT::SHITBONUS ]
elsif @armor2_id == [ item.id ,item.bonus ]
@armor2_id = [ 0 ,SHIT::SHITBONUS ]
elsif @armor3_id == [ item.id ,item.bonus ]
@armor3_id = [ 0 ,SHIT::SHITBONUS ]
elsif @armor4_id == [ item.id ,item.bonus ]
@armor4_id = [ 0 ,SHIT::SHITBONUS ]
end
end
end
alias level_up1 level_up
def level_up
level_up1
#在升级时同时升级装备。
level_up_armour( [ @weapon_id,@armor1_id,@armor1_id,@armor1_id,@armor1_id] )
end
def level_up_armour( shits) #升级装备的函数。shit是包括全数据的array
fucks=equips
i=0
for shit in shits
shit[ 1 ] =[ 0 ,0 ] if shit[ 1 ] ==[ ] #若是bonus为空,则初始化bonus
shit[ 1 ] [ 1 ] += 1 if fucks[ i] !=nil && fucks[ i] .update_qualify #自定义装备升级模式(比如只有装备黄盘才能升级成3d龙之类的)
i += 1
end
end
end
class Game_Party
def items#对返还物品列表的函数更改。返还的是bonus加持过的物品。
result = [ ]
for i in @items .keys .sort
result.push ( $data_items[ i[ 0 ] ] .dup .fix ( i[ 1 ] ) ) if @items [ i] > 0
end
for i in @weapons .keys .sort
result.push ( $data_weapons[ i[ 0 ] ] .dup .fix ( i[ 1 ] ) ) if @weapons [ i] > 0
end
for i in @armors .keys .sort
result.push ( $data_armors[ i[ 0 ] ] .dup .fix ( i[ 1 ] ) ) if @armors [ i] > 0
end
return result
end
def gain_item( item, n, include_equip = false ) #获得物品时的更改。
#同样的,key从item.id换成了array形式。
return if item == nil
#bonus form: [enchant id, bonus id]
number = item_number( item)
case item
when RPG::Item
@items [ [ item.id ,item.bonus ] ] = [ [ number + n, 0 ] .max , 99 ] .min
when RPG::Weapon
@weapons [ [ item.id ,item.bonus ] ] = [ [ number + n, 0 ] .max , 99 ] .min
when RPG::Armor
@armors [ [ item.id ,item.bonus ] ] = [ [ number + n, 0 ] .max , 99 ] .min
end
n += number
if include_equip and n < 0
for actor in members
while n < 0 and actor.equips .include ?( item)
actor.discard_equip ( item)
n += 1
end
end
end
end
def item_number( item)
#第无数次更新key的形式。
case item
when RPG::Item
number = @items [ [ item.id ,item.bonus ] ]
when RPG::Weapon
number = @weapons [ [ item.id ,item.bonus ] ]
when RPG::Armor
number = @armors [ [ item.id ,item.bonus ] ]
end
return number == nil ? 0 : number
end
end
#以下语句是为了突破999属性的限制。并不是必须的,原脚本也无法完美显示4位攻击值。
class Game_Battler
#--------------------------------------------------------------------------
# ● 获取 最大体力值 上限
#--------------------------------------------------------------------------
def maxhp_limit
return 999999
end
#--------------------------------------------------------------------------
# ● 获取 最大体力值
#--------------------------------------------------------------------------
def maxhp
return [ [ base_maxhp + @maxhp_plus , 1 ] .max , maxhp_limit] .min
end
#--------------------------------------------------------------------------
# ● 获取 最大魔力值
#--------------------------------------------------------------------------
def maxmp
return [ [ base_maxmp + @maxmp_plus , 0 ] .max , 9999 ] .min
end
#--------------------------------------------------------------------------
# ● 获取 攻击力
#--------------------------------------------------------------------------
def atk
n = [ [ base_atk + @atk_plus , 1 ] .max , 9999 ] .min
for state in states do n *= state.atk_rate / 100.0 end
n = [ [ Integer ( n) , 1 ] .max , 9999 ] .min
return n
end
#--------------------------------------------------------------------------
# ● 获取 防御力
#--------------------------------------------------------------------------
def def
n = [ [ base_def + @def_plus , 1 ] .max , 9999 ] .min
for state in states do n *= state.def_rate / 100.0 end
n = [ [ Integer ( n) , 1 ] .max , 9999 ] .min
return n
end
#--------------------------------------------------------------------------
# ● 获取 精神力
#--------------------------------------------------------------------------
def spi
n = [ [ base_spi + @spi_plus , 1 ] .max , 9999 ] .min
for state in states do n *= state.spi_rate / 100.0 end
n = [ [ Integer ( n) , 1 ] .max , 9999 ] .min
return n
end
#--------------------------------------------------------------------------
# ● 获取 敏捷
#--------------------------------------------------------------------------
def agi
n = [ [ base_agi + @agi_plus , 1 ] .max , 9999 ] .min
for state in states do n *= state.agi_rate / 100.0 end
n = [ [ Integer ( n) , 1 ] .max , 9999 ] .min
return n
end
end
#=end
=begin
下面的系统是enchant系统。依稀记得英雄坛说的系统也有类似的功效(打造武器的系统)
不过为什么别人做过我就不能再写一个呢。
copywrong DevilG.版权没有翻版。。。翻吧。
使用方法:
1.设定等级
在物品库里的备注放入
atk1=1000
def1=0
agi1=0
spi1=0
hprec1=0
mprec1=0
等数值。atk1=1000 意味着物品提升一级将会提升额外的10点攻击(1000/100)
atk1=111就是每级1.11攻击,会四舍五入。
hprec1等是被可用物品使用的。
这些数值是可以扩充的,别忘了增加相应处理语句。存储位也可以放在另一设定脚本里。
2.增加有等级的物品的方法:
在事件脚本内加入
balls = $data_weapons[1].dup
balls.bonus = [0,100]
$game_party.gain_item(balls,1)
其中
balls = $data_weapons[1].dup 获得武器库第一个武器:木棒
balls.bonus = [0,100] 增加武器的等级为0抚摸,100等级
$game_party.gain_item(balls,1)获得一个蛋成为三蛋
3.自定义抚摸
ENCHANT array包含了抚摸的名字,比如木棒-->爆炎木棒
ENCHANT NAME & DES用作抚摸效果的显示。
在def enchantBonus定义抚摸的效果:case type后加入when number
其他请参照注释和范例。
技术支持:
将游戏中所有的辨别item的key:item.id换成了[item.id,bonus]的array形式。
其中包括$game_party的@item hash list和角色的装备决定数值weapon_id等。
并对一些处理语句做出了修改,返还物品时做bonus的附加修改。
致想看完这个脚本的朋友:debug时我很容易写F**K,S**T等字样无视就好
我的编程style很烂,各种tab都是乱七八糟的。请多多包涵
由于只测试了武器木棒,出现bug请pm我。
兼容性/整合系统技术支持:
可能不支持修改过game_party中gain_item,items,item_number,
game_actors中armor_id,weapons, armors, change_equip,
RPG:ITEM,和window_base中draw_item_name的系统整合。
可能与装备显示的系统有冲突。
与游戏事件:失去物品可能不兼容。尤其是升级过后的装备。(等级不同所以key不同)
update NOTE
将在武器和防具类的bonus更新语句放到了baseitem内。更新bonus内容时直接更新物品数据。
运行速度可能会变慢(处理语句变多)
处理了weapon_Id等的getter模式,提升了兼容性
对某些语句使用了alias。
修复了一个丢弃防具的bug。
添加了物品升级的函数。
更新了物品升级的语句(未测试)
修正上述废话。
=end
module SHIT
#Bonus初始化的状态。目前的状态是(抚摸,装备等级)[enchant,item level]
SHITBONUS = [ 0 ,0 ]
ENCHANT = [ "爆炎" ,"Shitty" ]
#FOLLOWING USED IN ARMOUR DESCRIPTION
ENCHANTNAME = [ "爆炎:" ,"Shitty" ]
ENCHANTDES = [ "提升5点攻击并攻击为火属性" ,"大幅降低物品属性" ]
end
module RPG
class BaseItem
attr_accessor:bonus #添加的bonus数据。
def fix( bonus=[ 0 ,0 ] ) #bonus的setter。将bonus变量导入到本类的@bonus变量里
@bonus = bonus
enchantBonus( @bonus[ 0 ] )
levelBonus( @bonus[ 1 ] )
return self
end
def bonus#bonus的getter。若本类@bonus为nil则返回bonus初始化array。
return SHIT::SHITBONUS if @bonus == nil
return @bonus
end
def showBonus?#是否在物品名旁显示bonus的返回boolean。若没有属性加成则不显示
atk1=0
def1=0
agi1=0
spi1=0
hit1=0
eva1=0
hprec1=0
mprec1=0
eval ( @note)
shittyarray=[ atk1,def1,agi1,spi1,hprec1,mprec1] #将所有的变量放到array里
for shit in shittyarray
return true if shit != 0 #如果有则显示bonus加成
end
return false
end
def lvlup
@bonus =SHIT::SHITBONUS if @bonus == nil
@bonus = @bonus .dup
@bonus [ 1 ] += 1
return self
end
def update_qualify( id,type)
#id:物品编号。type:1=misc, 2=weap,3=armour
#物品升级时的特殊要求。目前为100%
case id
when 1
end
return true if rand ( 100 ) <100
return false
end
def enchantBonus( type)
#common variables;atk,def,spi,agi,price
#variables only weapon have :hit, twohand, fastatk,cri,elementset,stateset
#only armour:eva,halfmp, double exp,
list = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , [ ] , [ ] , 0 , 0 , 0 , 0 , [ ] , [ ] , 0 ]
#list format: [atk,def,spi,agi,price,hit,twohand,fastatk,cri,elementset,stateset,eva, halfmp,doubexp, auto_recov, halve_element_damage, state_resist,prevent_cri]
#atk1 def2 spi3 agi4 pric5 hit6 2h7 fast8 cri9 elem10 stat11 eva12
#1/2mp13 2xexp14 hprec15 elementset16 stateset17 preventcri18
#elementset format:[elementid,element id]
#stateset format:[stateid, stateid]
#WARNING:7,8,9,13,14,15,18 MUST BE SET TO BOOLEAN(TRUE/FALSE) OR 0(NO CHANGE)
case type
when 1 #name=火焰武器抚摸(+5攻击并攻击火焰化)
list[ 0 ] =5 #ATK+5
list[ 9 ] =[ 9 ] #ELEMENTSET PUSH 9(火焰)
when 2 #shitty:全属性-500
list[ 0 ] =-500
list[ 1 ] =-500
list[ 2 ] =-500
list[ 3 ] =-500
end
@atk += list[ 0 ] if @atk != nil
@def += list[ 1 ] if @def != nil
@spi += list[ 2 ] if @spi != nil
@agi += list[ 3 ] if @agi != nil
@price += list[ 4 ] if @price != nil
@hit += list[ 5 ] if @hit != nil
@two_handed = list[ 6 ] if @two_handed != nil && list[ 6 ] !=0
@fast_attack = list[ 7 ] if @fast_attack != nil && list[ 7 ] !=0
@critical_bonus = list[ 8 ] if @critical_bonus != nil && list[ 8 ] !=0
@element_set += list[ 9 ] if @element_set !=nil && @two_handed != nil
@state_set += list[ 10 ] if @state_set !=nil && @two_handed != nil
@eva += list[ 11 ] if @eva != nil
@half_mp_cost = list[ 12 ] if @half_mp_cost != nil && list[ 12 ] !=0
@double_exp_gain = list[ 13 ] if @double_exp_gain != nil && list[ 13 ] !=0
@auto_hp_recover = list[ 14 ] if @auto_hp_recover != nil && list[ 14 ] !=0
@element_set += list[ 15 ] if @element_set !=nil && @auto_hp_recover != nil
@state_set += list[ 16 ] if @state_set !=nil && @auto_hp_recover != nil
@prevent_critical = list[ 17 ] if @prevent_critical != nil && list[ 17 ] !=0
end
def levelBonus( level)
atk1=0
def1=0
agi1=0
spi1=0
hit1=0
eva1=0
hprec1=0
mprec1=0
#能力扩充HERE
eval ( @note)
@atk += ( atk1*level/100 ) .to_i if @atk !=nil
@def += ( def1*level/100 ) .to_i if @def !=nil
@spi += ( spi1*level/100 ) .to_i if @spi !=nil
@agi += ( agi1*level/100 ) .to_i if @agi !=nil
@hit += ( hit1*level/100 ) .to_i if @hit !=nil
@eva += ( eva1*level/100 ) .to_i if @eva !=nil
@hp_recovery += ( hprec1*level/100 ) .to_i if @hp_recovery !=nil
@mp_recovery += ( mprec1*level/100 ) .to_i if @mp_recovery !=nil
end
end #end of class
end #end of module
class Window_Base#对物品名字表述的重新定义。
def draw_item_name( item, x, y, enabled = true )
return if item == nil
if item != nil
draw_icon( item.icon_index , x, y, enabled)
self .contents .font .color = normal_color
self .contents .font .color .alpha = enabled ? 255 : 128
text = item.name
text = SHIT::ENCHANT [ item.bonus [ 0 ] -1 ] +text if item.bonus [ 0 ] !=0 && SHIT::ENCHANT [ item.bonus [ 0 ] -1 ] != nil
#print "fuck"+item[1][1].to_i.to_s #请忽略debug语句
text += ( "+" +( item.bonus [ 1 ] .to_s ) ) if item.bonus [ 1 ] !=0 && item.showBonus ?#bonus name spec. here
#如果物品有属性加成并有等级则显示+X在名字后面
self .contents .draw_text ( x + 24 , y, 172 , WLH, text)
end
end
end
#对actor类的重新整理
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 设置
# actor_id : 角色 ID
#--------------------------------------------------------------------------
alias setup1 setup
def setup( actor_id)
setup1( actor_id)
#将装备的key换成array形式
@weapon_id = [ actor.weapon_id ,SHIT::SHITBONUS ]
@armor1_id = [ actor.armor1_id ,SHIT::SHITBONUS ]
@armor2_id = [ actor.armor2_id ,SHIT::SHITBONUS ]
@armor3_id = [ actor.armor3_id ,SHIT::SHITBONUS ]
@armor4_id = [ actor.armor4_id ,SHIT::SHITBONUS ]
end
#对装备key做getter处理
def weapon_id
return @weapon_id [ 0 ]
end
def armor1_id
return @armor1_id [ 0 ]
end
def armor2_id
return @armor2_id [ 0 ]
end
def armor3_id
return @armor3_id [ 0 ]
end
def @armor4_id
return @armor4_id [ 0 ]
end
#--------------------------------------------------------------------------
# ● 获取武器对象数组
#--------------------------------------------------------------------------
def weapons#重新定义了武器获取模式:由于nil不再好判断,通过另一函数pushFucker处理
result = [ ]
result = pushFucker( result,@weapon_id,true )
if two_swords_style
result = pushFucker( result,@armor1_id,true )
end
return result
end
#--------------------------------------------------------------------------
# ● 获取防具对象数组
#--------------------------------------------------------------------------
def armors#重新定义了防具获取模式:由于nil不再好判断,通过另一函数pushFucker处理
result = [ ]
unless two_swords_style
result = pushFucker( result,@armor1_id)
end
result = pushFucker( result,@armor2_id)
result = pushFucker( result,@armor3_id)
result = pushFucker( result,@armor4_id)
return result
end
def pushFucker( result,itemshit,weapon = false )
#如果系统存在这个武器那么在result表内增加加成过bonus的武器。否则push nil
if weapon
if $data_weapons [ itemshit[ 0 ] ] !=nil
result.push ( $data_weapons[ itemshit[ 0 ] ] .dup .fix ( itemshit[ 1 ] ) )
else
result.push ( nil )
end
else
if $data_armors [ itemshit[ 0 ] ] !=nil
result.push ( $data_armors[ itemshit[ 0 ] ] .dup .fix ( itemshit[ 1 ] ) )
else
result.push ( nil )
end
end
return result
end
#--------------------------------------------------------------------------
# ● 变更装备(目标对象)
# equip_type : 装备部分(0~4)
# item_id : 武器或防具ID
# test : 测试标志(战斗测试或暂时装备用)
#--------------------------------------------------------------------------
def change_equip( equip_type, item, test = false )
last_item = equips[ equip_type]
unless test
return if $game_party .item_number ( item) == 0 if item != nil
$game_party .gain_item ( last_item, 1 )
$game_party .lose_item ( item, 1 )
end
#由于下面就要更新装备处理数值了,所以将物品key改成新的array形式:
#[id,bonus]的形式。若是物品nil则key为0,初始bonus数值的array。
item = [ item.id ,item.bonus ] if item != nil #
item = [ 0 ,SHIT::SHITBONUS ] if item == nil
case equip_type
when 0 # 武器
@weapon_id = item
unless two_hands_legal? # 非双手装备的场合,自动卸下装备
change_equip( 1 , nil , test)
end
when 1 # 盾
@armor1_id = item
unless two_hands_legal? # 非双手装备的场合,自动卸下装备
change_equip( 0 , nil , test)
end
when 2 # 头部防具
@armor2_id = item
when 3 # 身体防具
@armor3_id = item
when 4 # 装饰品
@armor4_id = item#_id
end
end
#--------------------------------------------------------------------------
# ● 丢弃装备
# item : 要丢弃的武器或防具
# 在「包含装备品」选项钩上时使用。
#--------------------------------------------------------------------------
def discard_equip( item)
if item.is_a ?( RPG::Weapon )
#同样的更改物品key的形式。
if @weapon_id == [ item.id ,item.bonus ]
@weapon_id = [ 0 ,SHIT::SHITBONUS ]
elsif two_swords_style and @armor1_id == [ item.id ,item.bonus ]
@armor1_id = [ 0 ,SHIT::SHITBONUS ]
end
elsif item.is_a ?( RPG::Armor )
if not two_swords_style and @armor1_id == [ item.id ,item.bonus ]
@armor1_id = [ 0 ,SHIT::SHITBONUS ]
elsif @armor2_id == [ item.id ,item.bonus ]
@armor2_id = [ 0 ,SHIT::SHITBONUS ]
elsif @armor3_id == [ item.id ,item.bonus ]
@armor3_id = [ 0 ,SHIT::SHITBONUS ]
elsif @armor4_id == [ item.id ,item.bonus ]
@armor4_id = [ 0 ,SHIT::SHITBONUS ]
end
end
end
alias level_up1 level_up
def level_up
level_up1
#在升级时同时升级装备。
level_up_armour( [ @weapon_id,@armor1_id,@armor1_id,@armor1_id,@armor1_id] )
end
def level_up_armour( shits) #升级装备的函数。shit是包括全数据的array
fucks=equips
i=0
for shit in shits
shit[ 1 ] =[ 0 ,0 ] if shit[ 1 ] ==[ ] #若是bonus为空,则初始化bonus
shit[ 1 ] [ 1 ] += 1 if fucks[ i] !=nil && fucks[ i] .update_qualify #自定义装备升级模式(比如只有装备黄盘才能升级成3d龙之类的)
i += 1
end
end
end
class Game_Party
def items#对返还物品列表的函数更改。返还的是bonus加持过的物品。
result = [ ]
for i in @items .keys .sort
result.push ( $data_items[ i[ 0 ] ] .dup .fix ( i[ 1 ] ) ) if @items [ i] > 0
end
for i in @weapons .keys .sort
result.push ( $data_weapons[ i[ 0 ] ] .dup .fix ( i[ 1 ] ) ) if @weapons [ i] > 0
end
for i in @armors .keys .sort
result.push ( $data_armors[ i[ 0 ] ] .dup .fix ( i[ 1 ] ) ) if @armors [ i] > 0
end
return result
end
def gain_item( item, n, include_equip = false ) #获得物品时的更改。
#同样的,key从item.id换成了array形式。
return if item == nil
#bonus form: [enchant id, bonus id]
number = item_number( item)
case item
when RPG::Item
@items [ [ item.id ,item.bonus ] ] = [ [ number + n, 0 ] .max , 99 ] .min
when RPG::Weapon
@weapons [ [ item.id ,item.bonus ] ] = [ [ number + n, 0 ] .max , 99 ] .min
when RPG::Armor
@armors [ [ item.id ,item.bonus ] ] = [ [ number + n, 0 ] .max , 99 ] .min
end
n += number
if include_equip and n < 0
for actor in members
while n < 0 and actor.equips .include ?( item)
actor.discard_equip ( item)
n += 1
end
end
end
end
def item_number( item)
#第无数次更新key的形式。
case item
when RPG::Item
number = @items [ [ item.id ,item.bonus ] ]
when RPG::Weapon
number = @weapons [ [ item.id ,item.bonus ] ]
when RPG::Armor
number = @armors [ [ item.id ,item.bonus ] ]
end
return number == nil ? 0 : number
end
end
#以下语句是为了突破999属性的限制。并不是必须的,原脚本也无法完美显示4位攻击值。
class Game_Battler
#--------------------------------------------------------------------------
# ● 获取 最大体力值 上限
#--------------------------------------------------------------------------
def maxhp_limit
return 999999
end
#--------------------------------------------------------------------------
# ● 获取 最大体力值
#--------------------------------------------------------------------------
def maxhp
return [ [ base_maxhp + @maxhp_plus , 1 ] .max , maxhp_limit] .min
end
#--------------------------------------------------------------------------
# ● 获取 最大魔力值
#--------------------------------------------------------------------------
def maxmp
return [ [ base_maxmp + @maxmp_plus , 0 ] .max , 9999 ] .min
end
#--------------------------------------------------------------------------
# ● 获取 攻击力
#--------------------------------------------------------------------------
def atk
n = [ [ base_atk + @atk_plus , 1 ] .max , 9999 ] .min
for state in states do n *= state.atk_rate / 100.0 end
n = [ [ Integer ( n) , 1 ] .max , 9999 ] .min
return n
end
#--------------------------------------------------------------------------
# ● 获取 防御力
#--------------------------------------------------------------------------
def def
n = [ [ base_def + @def_plus , 1 ] .max , 9999 ] .min
for state in states do n *= state.def_rate / 100.0 end
n = [ [ Integer ( n) , 1 ] .max , 9999 ] .min
return n
end
#--------------------------------------------------------------------------
# ● 获取 精神力
#--------------------------------------------------------------------------
def spi
n = [ [ base_spi + @spi_plus , 1 ] .max , 9999 ] .min
for state in states do n *= state.spi_rate / 100.0 end
n = [ [ Integer ( n) , 1 ] .max , 9999 ] .min
return n
end
#--------------------------------------------------------------------------
# ● 获取 敏捷
#--------------------------------------------------------------------------
def agi
n = [ [ base_agi + @agi_plus , 1 ] .max , 9999 ] .min
for state in states do n *= state.agi_rate / 100.0 end
n = [ [ Integer ( n) , 1 ] .max , 9999 ] .min
return n
end
end
#=end
������
评分
查看全部评分