Commit 3ba862c3 authored by 神楽坂玲奈's avatar 神楽坂玲奈

Replay进阶,能正确读iDuel观战的记录了

parent 2fa2e5ec
......@@ -132,14 +132,16 @@ class Action
player_field.removed
end
if from_pos && from_field[from_pos]
case @card
card = case @card
when Game_Card
card = from_field[from_pos] = @card
from_field[from_pos] = @card
when nil, Card::Unknown
card = from_field[from_pos]
from_field[from_pos]
when Card
card = from_field[from_pos]
card.card = @card
from_field[from_pos].card = @card
from_field[from_pos]
when :deck
player_field.deck.first
end
if @to_pos
if from_field == player_field.field
......@@ -153,7 +155,16 @@ class Action
puts "似乎凭空产生了卡片?"
p self
end
card.position = @position if @position
if @position
if @position == :"face-up"
if card.position == :set and (6..10).include?(@to_pos || @from_pos) #里侧表示的怪兽
card.position = :defense
else
card.position = :attack
end
end
card.position = @position
end
if @to_pos
if @to_pos.is_a? Integer
to_field[@to_pos] = card
......@@ -207,11 +218,7 @@ class Action
end
end
class ReturnToDeckBottom < Move
def initialize(from_player, from_pos, card=Card.find(nil))
if from_pos == :deck and card == Card.find(nil)
@from_player = from_player
card = player_field.deck.first
end
def initialize(from_player, from_pos, card)
super(from_player, from_pos, :deckbottom, card, nil, :set)
end
end
......@@ -245,7 +252,7 @@ class Action
class Draw < Move
def initialize(from_player=true, msg=nil)
@from_player = from_player
super(from_player, :deck, :hand, player_field.deck.first, msg, :set)
super(from_player, :deck, :hand, :deck, msg, :set)
end
end
class MultiDraw < Action
......@@ -323,15 +330,11 @@ class Action
@cards = cards
end
end
class Effect_Activate < Move
class EffectActivate < Move
def initialize(from_player, from_pos, card)
@from_player = from_player
if (0..10).include?(from_pos)
if (6..10).include?(from_pos) && player_field.field[from_pos] && (player_field.field[from_pos].position == :set || player_field.field[from_pos].position == :defense)
position = :defense
else
position = :attack
end
position = :"face-up"
else
position = nil
end
......
......@@ -6,7 +6,8 @@ class Action
PosFilter = /((?:手卡|手牌|场上|魔陷区|怪兽区|墓地|额外牌堆|除外区|卡组|卡组顶端|\(\d+\)){1,2})/
PositionFilter = /(表攻|表守|里守|攻击表示|防守表示|里侧表示|背面守备表示)/
PhaseFilter = /(抽卡`阶段|准备`阶段|主`阶段1|战斗`阶段|主`阶段2|结束`阶段)/
FieldFilter = /(?:LP:(\d+)\r\n手卡(?:数)?:(\d+)\r\n卡组:(\d+)\r\n墓地:(\d+)\r\n除外:(\d+)\r\n前场:\r\n <(?:#{PositionFilter}\|#{CardFilter})?>\r\n <(?:#{PositionFilter}\|#{CardFilter})?>\r\n <(?:#{PositionFilter}\|#{CardFilter})?>\r\n <(?:#{PositionFilter}\|#{CardFilter})?>\r\n <(?:#{PositionFilter}\|#{CardFilter})?>\r\n后场:<#{CardFilter}?><#{CardFilter}?><#{CardFilter}?><#{CardFilter}?><#{CardFilter}?>\r\n场地\|<(?:无|#{CardFilter})>\r\n(?:◎|●)→\\)/
CountersFilter = /\((\d+)\)/
FieldFilter = /(?:LP:(\d+)\n手卡(?:数)?:(\d+)\n卡组:(\d+)\n墓地:(\d+)\n除外:(\d+)\n前场:\n <(?:#{CountersFilter}?#{PositionFilter}\|#{CardFilter})?>\n <(?:#{CountersFilter}?#{PositionFilter}\|#{CardFilter})?>\n <(?:#{CountersFilter}?#{PositionFilter}\|#{CardFilter})?>\n <(?:#{CountersFilter}?#{PositionFilter}\|#{CardFilter})?>\n <(?:#{CountersFilter}?#{PositionFilter}\|#{CardFilter})?>\n后场:<#{CardFilter}?><#{CardFilter}?><#{CardFilter}?><#{CardFilter}?><#{CardFilter}?>\n场地\|<(?:无|#{CardFilter})>\n(?:◎|●)→\\)/
def self.parse_pos(pos)
if index = pos.index("(")
index += 1
......@@ -55,17 +56,17 @@ class Action
:deck => arr[2].to_i,
:graveyard => arr[3].to_i,
:removed => arr[4].to_i,
6 => arr[5] && {:position => parse_position(arr[5]), :card => parse_card(arr[6])},
7 => arr[7] && {:position => parse_position(arr[7]), :card => parse_card(arr[8])},
8 => arr[9] && {:position => parse_position(arr[9]), :card => parse_card(arr[10])},
9=> arr[11] && {:position => parse_position(arr[11]), :card => parse_card(arr[12])},
10 => arr[13] && {:position => parse_position(arr[13]), :card => parse_card(arr[14])},
1 => arr[15] && {:position => arr[15] == "??" ? :set : :attack, :card => parse_card(arr[15])},
2 => arr[16] && {:position => arr[16] == "??" ? :set : :attack, :card => parse_card(arr[16])},
3 => arr[17] && {:position => arr[17] == "??" ? :set : :attack, :card => parse_card(arr[17])},
4 => arr[18] && {:position => arr[18] == "??" ? :set : :attack, :card => parse_card(arr[18])},
5 => arr[19] && {:position => arr[19] == "??" ? :set : :attack, :card => parse_card(arr[19])},
0 => arr[20] && {:position => arr[20] == "??" ? :set : :attack, :card => parse_card(arr[20])}
6 => arr[7] && {:counters => arr[5].to_i, :position => parse_position(arr[6]), :card => parse_card(arr[7])},
7 => arr[10] && {:counters => arr[8].to_i, :position => parse_position(arr[9]), :card => parse_card(arr[10])},
8 => arr[13] && {:counters => arr[11].to_i, :position => parse_position(arr[12]), :card => parse_card(arr[13])},
9 => arr[16] && {:counters => arr[14].to_i, :position => parse_position(arr[15]), :card => parse_card(arr[16])},
10 => arr[19] && {:counters => arr[17].to_i, :position => parse_position(arr[18]), :card => parse_card(arr[19])},
1 => arr[20] && {:position => arr[20] == "??" ? :set : :attack, :card => parse_card(arr[20])},
2 => arr[21] && {:position => arr[21] == "??" ? :set : :attack, :card => parse_card(arr[21])},
3 => arr[22] && {:position => arr[22] == "??" ? :set : :attack, :card => parse_card(arr[22])},
4 => arr[23] && {:position => arr[23] == "??" ? :set : :attack, :card => parse_card(arr[23])},
5 => arr[24] && {:position => arr[24] == "??" ? :set : :attack, :card => parse_card(arr[24])},
0 => arr[25] && {:position => arr[25] == "??" ? :set : :attack, :card => parse_card(arr[25])}
}
end
def self.parse_position(position)
......@@ -167,18 +168,19 @@ class Action
end
end
def self.parse(str)
from_player = false
from_player = nil
case str
when /^\[(\d+)\] (.*)$/m
#p $2, $2.match(/(◎|●)→=\[0:0:0\]==回合结束==<(\d+)>=\[\d+\]\n#{FieldFilter}(.*)/)
id = $1.to_i
result = case $2
when /^┊(.*)┊$/m
Chat.new from_player, $1
when /^※\[(.*)\]\r\n(.*)\r\n注释$/m
when /^※\[(.*)\]\n(.*)\n注释$/m
Note.new from_player, $2, Card.find($1.to_sym)
when /^※(.*)$/
Chat.new from_player, $1
when /^(◎|●)→=\[0:0:0\]==回合结束==<(\d+)>=\[\d+\]\r\n#{FieldFilter}(.*)$/ #把这货弄外面的原因是因为这个指令里开头有一个●→,后面还有,下面判msg的正则会判错
when /^(◎|●)→=\[0:0:0\]==回合结束==<(\d+)>=\[\d+\]\n#{FieldFilter}(.*)$/ #把这货弄外面的原因是因为这个指令里开头有一个●→,后面还有,下面判msg的正则会判错
field = $~.to_a
field.shift #去掉第一个完整匹配信息
from_player = field.shift == "◎"
......@@ -190,7 +192,7 @@ class Action
field.shift
from_player = field.shift == "◎"
RefreshField.new(from_player, parse_field(field))
when /^(?:(.*)\r\n)?(◎|●)→(.*)$/m
when /^(?:(.*)\n)?(◎|●)→(.*)$/m
from_player = $2 == "◎"
msg = $1
case $3
......@@ -255,7 +257,7 @@ class Action
when /从#{PosFilter}#{CardFilter}加入手卡/
ReturnToHand.new from_player, parse_pos($1), parse_card($2)
when /(?:己方)?#{PosFilter}.*?#{CardFilter}效果发(?:\~)?动/
Effect_Activate.new(from_player, parse_pos($1), parse_card($2))
EffectActivate.new(from_player, parse_pos($1), parse_card($2))
when /#{PosFilter}#{CardFilter}(?:变|改)为#{PositionFilter}/
ChangePosition.new(from_player, parse_pos($1), parse_card($2), parse_position($3))
when /#{PosFilter}#{CardFilter}打开/
......@@ -270,7 +272,7 @@ class Action
end
result.id = id
result
when /^(#{CardFilter}\r\n)*$/
when /^(#{CardFilter}\n)*$/
MultiShow.new from_player, $&.lines.collect{|card|parse_card(card)}
else
Unknown.new str
......@@ -314,7 +316,7 @@ class Action
end
class TurnEnd
def escape
"[#{@id}] #{from_player ? '◎' : '●'}→=[0:0:0]==回合结束==<#{@turn}>=[0]\r\n"+ @field.escape
"[#{@id}] #{from_player ? '◎' : '●'}→=[0:0:0]==回合结束==<#{@turn}>=[0]\n"+ @field.escape
end
end
class Shuffle
......@@ -443,10 +445,10 @@ class Action
end
class MultiShow
def escape
@cards.collect{|card|card.escape}.join("\r\n")
@cards.collect{|card|card.escape}.join("\n")
end
end
class Effect_Activate
class EffectActivate
def escape
pos = case @from_pos
when :hand
......@@ -475,11 +477,11 @@ end
class Game_Field
def escape
"LP:#{@lp}\r\n手卡:#{@hand.size}\r\n卡组:#{@deck.size}\r\n墓地:#{@graveyard.size}\r\n除外:#{@removed.size}\r\n前场:\r\n" +
@field[6..10].collect{|card|" <#{"#{Action.escape_position_short(card)}|#{card.position == :set ? '??' : "[#{card.card_type}][#{card.name}] #{card.atk}#{' '+card.def.to_s}"}" if card}>\r\n"}.join +
"LP:#{@lp}\n手卡:#{@hand.size}\n卡组:#{@deck.size}\n墓地:#{@graveyard.size}\n除外:#{@removed.size}\n前场:\n" +
@field[6..10].collect{|card|" <#{"#{Action.escape_position_short(card)}|#{card.position == :set ? '??' : "[#{card.card_type}][#{card.name}] #{card.atk}#{' '+card.def.to_s}"}" if card}>\n"}.join +
"后场:" +
@field[1..5].collect{|card|"<#{card.position == :set ? '??' : card.escape if card}>"}.join +
"\r\n场地|<#{@field[0] ? @field[0].escape : '无'}>\r\n" +
"\n场地|<#{@field[0] ? @field[0].escape : '无'}>\n" +
"◎→\\"
end
def self.parse(str)
......
......@@ -4,28 +4,31 @@ class Iduel < Game
Server = "iduel.ocgsoft.cn"
Port = 38522
RS = "\xA1\xE9".force_encoding "GBK"
RS = "\xA1\xE9".force_encoding("GBK").encode("UTF-8")
attr_accessor :session
attr_accessor :key
def initialize
super
require 'socket'
require 'digest/md5'
require 'open-uri'
require_relative 'action'
require_relative 'event'
require_relative 'user'
require_relative 'replay'
end
def connect
require 'socket'
require 'open-uri'
begin
@conn = TCPSocket.open(Server, Port)
@conn.set_encoding "GBK"
@conn.set_encoding "GBK", "UTF-8"
Thread.abort_on_exception = true
@recv = Thread.new { recv @conn.gets(RS) while @conn }
rescue
Game_Event.push Game_Event::Error.new($!.class, $!.message)
Game_Event.push Game_Event::Error.new($!.class.to_s, $!.message)
end
end
def login(username, password)
connect
md5 = Digest::MD5.hexdigest(password)
send(0, username, md5, checknum("LOGINMSG", username, md5), Version)
end
......@@ -62,9 +65,11 @@ class Iduel < Game
def send(head, *args)
info = "##{head.to_s(16).upcase}|#{args.join(',')}".encode("GBK") + RS
return unless @conn
info = "##{head.to_s(16).upcase}|#{args.join(',')}" + RS
puts "<< #{info}"
(@conn.write info) rescue Game_Event.push Game_Event::Error.new($!.class, $!.message)
info.gsub!("\n", "\r\n")
(@conn.write info) rescue Game_Event.push Game_Event::Error.new($!.class.to_s, $!.message)
end
def recv(info)
if info.nil?
......@@ -73,13 +78,14 @@ class Iduel < Game
Game_Event::Error.parse(0)
else
info.chomp!(RS)
info.encode! "UTF-8", :invalid => :replace, :undef => :replace
info.delete!("\r")
#info.encode! "UTF-8", :invalid => :replace, :undef => :replace
puts ">> #{info}"
Game_Event.push Game_Event.parse info
end
end
def checknum(head, *args)
Digest::MD5.hexdigest("[#{head}]_#{args.join('_')}_SCNERO")
Digest::MD5.hexdigest("[#{head}]_#{args.join('_')}_SCNERO".gsub("\n", "\r\n").encode("GBK"))
end
def qroom(room)
send(10, @key, room.id, checknum("QROOM", @session + room.id.to_s))
......
#encoding: UTF-8
class Replay
Delimiter = /^.+?\(\d+\)\(\d+:\d+:\d+\): (?:\r)?\n /
Player_Filter = /^(.+?)\((\d+)\)\(\d+:\d+:\d+\): (?:\r)?\n \[\d+\] ◎→/
Opponent_Filter =/^(.+?)\((\d+)\)\(\d+:\d+:\d+\): (?:\r)?\n \[\d+\] ●→/
attr_accessor :room, :player1, :player2, :actions
def add(action)
# user = action.from_player ? $game.player1 : $game.player2
# @file.write("#{user.name}(#{user.id}):\r\n#{action.escape}\r\n")
end
def self.load(filename)
#TODO:效率优化
file = open(filename)
file.set_encoding "GBK", "UTF-8"
result = self.new(file)
contents = file.read
contents =~ Player_Filter
result.player1 = User.new($2.to_i, $1)
contents =~ Opponent_Filter
result.player2 = User.new($2.to_i, $1)
result.actions = contents.split(Delimiter).collect do |action_str|
action_str.chomp!
action = Action.parse action_str
Game_Event::Action.new(action, action_str)
end
$game.room = result.room = Room.new(0, "Replay", result.player1, result.player2)
result
end
def get
@actions.shift
end
def eof?
@actions.empty?
end
end
......@@ -3,7 +3,7 @@
#仅用于调试,发布时删
alias gbk_puts puts
def puts(*args)
gbk_puts(*(args.collect{|item|item.encode "GBK", :invalid => :replace, :undef => :replace}))
gbk_puts(*(args.collect{|item|item.to_s.encode "GBK", :invalid => :replace, :undef => :replace}))
end
def p(*args)
print(args.collect{|item|item.inspect.encode "GBK", :invalid => :replace, :undef => :replace}.join("\n")+"\n") rescue print(args.join("\n")+"\n")
......
......@@ -6,7 +6,7 @@ class Action
PosFilter = /((?:手卡|手牌|场上|魔陷区|怪兽区|墓地|额外牌堆|除外区|卡组|卡组顶端|\(\d+\)){1,2})/
PositionFilter = /(表攻|表守|里守|攻击表示|防守表示|里侧表示|背面守备表示)/
PhaseFilter = /(抽卡`阶段|准备`阶段|主`阶段1|战斗`阶段|主`阶段2|结束`阶段)/
FieldFilter = /(?:LP:(\d+)\r\n手卡(?:数)?:(\d+)\r\n卡组:(\d+)\r\n墓地:(\d+)\r\n除外:(\d+)\r\n前场:\r\n <(?:#{PositionFilter}\|#{CardFilter})?>\r\n <(?:#{PositionFilter}\|#{CardFilter})?>\r\n <(?:#{PositionFilter}\|#{CardFilter})?>\r\n <(?:#{PositionFilter}\|#{CardFilter})?>\r\n <(?:#{PositionFilter}\|#{CardFilter})?>\r\n后场:<#{CardFilter}?><#{CardFilter}?><#{CardFilter}?><#{CardFilter}?><#{CardFilter}?>\r\n场地\|<(?:无|#{CardFilter})>\r\n(?:◎|●)→\\)/
FieldFilter = /(?:LP:(\d+)\n手卡(?:数)?:(\d+)\n卡组:(\d+)\n墓地:(\d+)\n除外:(\d+)\n前场:\n <(?:#{PositionFilter}\|#{CardFilter})?>\n <(?:#{PositionFilter}\|#{CardFilter})?>\n <(?:#{PositionFilter}\|#{CardFilter})?>\n <(?:#{PositionFilter}\|#{CardFilter})?>\n <(?:#{PositionFilter}\|#{CardFilter})?>\n后场:<#{CardFilter}?><#{CardFilter}?><#{CardFilter}?><#{CardFilter}?><#{CardFilter}?>\n场地\|<(?:无|#{CardFilter})>\n(?:◎|●)→\\)/
def self.parse_pos(pos)
if index = pos.index("(")
index += 1
......@@ -174,11 +174,11 @@ class Action
result = case $2
when /^┊(.*)┊$/m
Chat.new from_player, $1
when /^※\[(.*)\]\r\n(.*)\r\n注释$/m
when /^※\[(.*)\]\n(.*)\n注释$/m
Note.new from_player, $2, Card.find($1.to_sym)
when /^※(.*)$/
Chat.new from_player, $1
when /^(◎|●)→=\[0:0:0\]==回合结束==<(\d+)>=\[\d+\]\r\n#{FieldFilter}(.*)$/ #把这货弄外面的原因是因为这个指令里开头有一个●→,后面还有,下面判msg的正则会判错
when /^(◎|●)→=\[0:0:0\]==回合结束==<(\d+)>=\[\d+\]\n#{FieldFilter}(.*)$/ #把这货弄外面的原因是因为这个指令里开头有一个●→,后面还有,下面判msg的正则会判错
field = $~.to_a
field.shift #去掉第一个完整匹配信息
from_player = field.shift == "◎"
......@@ -190,7 +190,7 @@ class Action
field.shift
from_player = field.shift == "◎"
RefreshField.new(from_player, parse_field(field))
when /^(?:(.*)\r\n)?(◎|●)→(.*)$/m
when /^(?:(.*)\n)?(◎|●)→(.*)$/m
from_player = $2 == "◎"
msg = $1
case $3
......@@ -255,7 +255,7 @@ class Action
when /从#{PosFilter}#{CardFilter}加入手卡/
ReturnToHand.new from_player, parse_pos($1), parse_card($2)
when /(?:己方)?#{PosFilter}.*?#{CardFilter}效果发(?:\~)?动/
Effect_Activate.new(from_player, parse_pos($1), parse_card($2))
EffectActivate.new(from_player, parse_pos($1), parse_card($2))
when /#{PosFilter}#{CardFilter}(?:变|改)为#{PositionFilter}/
ChangePosition.new(from_player, parse_pos($1), parse_card($2), parse_position($3))
when /#{PosFilter}#{CardFilter}打开/
......@@ -270,7 +270,7 @@ class Action
end
result.id = id
result
when /^(#{CardFilter}\r\n)*$/
when /^(#{CardFilter}\n)*$/
MultiShow.new from_player, $&.lines.collect{|card|parse_card(card)}
else
Unknown.new str
......@@ -314,7 +314,7 @@ class Action
end
class TurnEnd
def escape
"[#{@id}] #{from_player ? '◎' : '●'}→=[0:0:0]==回合结束==<#{@turn}>=[0]\r\n"+ @field.escape
"[#{@id}] #{from_player ? '◎' : '●'}→=[0:0:0]==回合结束==<#{@turn}>=[0]\n"+ @field.escape
end
end
class Shuffle
......@@ -443,10 +443,10 @@ class Action
end
class MultiShow
def escape
@cards.collect{|card|card.escape}.join("\r\n")
@cards.collect{|card|card.escape}.join("\n")
end
end
class Effect_Activate
class EffectActivate
def escape
pos = case @from_pos
when :hand
......@@ -475,11 +475,11 @@ end
class Game_Field
def escape
"LP:#{@lp}\r\n手卡:#{@hand.size}\r\n卡组:#{@deck.size}\r\n墓地:#{@graveyard.size}\r\n除外:#{@removed.size}\r\n前场:\r\n" +
@field[6..10].collect{|card|" <#{"#{Action.escape_position_short(card)}|#{card.position == :set ? '??' : "[#{card.card_type}][#{card.name}] #{card.atk}#{' '+card.def.to_s}"}" if card}>\r\n"}.join +
"LP:#{@lp}\n手卡:#{@hand.size}\n卡组:#{@deck.size}\n墓地:#{@graveyard.size}\n除外:#{@removed.size}\n前场:\n" +
@field[6..10].collect{|card|" <#{"#{Action.escape_position_short(card)}|#{card.position == :set ? '??' : "[#{card.card_type}][#{card.name}] #{card.atk}#{' '+card.def.to_s}"}" if card}>\n"}.join +
"后场:" +
@field[1..5].collect{|card|"<#{card.position == :set ? '??' : card.escape if card}>"}.join +
"\r\n场地|<#{@field[0] ? @field[0].escape : '无'}>\r\n" +
"\n场地|<#{@field[0] ? @field[0].escape : '无'}>\n" +
"◎→\\"
end
def self.parse(str)
......
......@@ -2,11 +2,7 @@ class Replay
ReplayPath = 'replay'
LastReplay = 'lastreplay.txt'
def initialize(filename=LastReplay)
@file = open(File.expand_path(filename, ReplayPath), 'w')
end
def add(action)
action = action.escape if action.is_a? Action
@file.write action + "\n"
@file = open(File.expand_path(filename, ReplayPath), 'w') unless filename.is_a? IO
end
def save(filename="#{Time.now.strftime("%Y-%m-%d_%H:%M-%S")}_#{$game.room.player1.name}(#{$game.room.player1.id})_#{$game.room.player2.name}(#{$game.room.player2.id}).txt")
close
......@@ -15,4 +11,16 @@ class Replay
def close
@file.close
end
def self.load(file)
@file = open(file)
end
def add(action)
#协议定义
end
def get
#协议定义
end
def eof?
@file.eof?
end
end
\ No newline at end of file
#==============================================================================
# ■ Scene_Login
#------------------------------------------------------------------------------
#  login
#==============================================================================
class Scene_Login_NBX < Scene
Vocab_Logging = "Logging"
def start
require_relative 'nbx/nbx'
$game = NBX.new
login
end
def login
username = $config['username'] && !$config['username'].empty? ? $config['username'] : $_ENV['username']
$game.login username
end
def update
while event = Game_Event.poll
handle_game(event)
end
super
end
def handle_game(event)
case event
when Game_Event::Login
require_relative 'scene_hall'
$scene = Scene_Hall.new
end
end
end
#encoding: UTF-8
require 'Scene_Watch'
class Scene_Replay < Scene_Watch
def initialize(replay)
@replay = replay
@count = 0
super(@replay.room)
end
def init_replay
end
def save_replay
end
def update
if @count >= 60
event = @replay.get
if event
Game_Event.push event
@count = 0
else
Widget_Msgbox.new("回放", "战报回放完毕") { $scene = Scene_Title.new }
end
end
@count += 1
super
end
end
#==============================================================================
# ■ Scene_Login
#------------------------------------------------------------------------------
#  login
#==============================================================================
class Scene_Single < Scene
Vocab_Logging = "Logging"
require 'Scene_Replay'
require_relative 'iduel/iduel'
def start
require_relative 'nbx/nbx'
$game = NBX.new
login
end
def login
username = $config['username'] && !$config['username'].empty? ? $config['username'] : $_ENV['username']
$game.login username
end
def update
while event = Game_Event.poll
handle_game(event)
end
super
end
def handle_game(event)
case event
when Game_Event::Login
require_relative 'scene_hall'
$scene = Scene_Hall.new
end
$game = Iduel.new
$scene = Scene_Replay.new Replay.load("E:/game/yu-gi-oh/test_rep.txt")
end
end
......@@ -255,7 +255,7 @@ class Window_Field < Window
Widget_Msgbox.new("特殊召唤", "场位已满")
end
when 2
Action::Effect_Activate.new(true, :extra, @card)
Action::EffectActivate.new(true, :extra, @card)
when 3
Action::Remove.new(true, :extra, @card)
when 4
......@@ -272,7 +272,7 @@ class Window_Field < Window
Widget_Msgbox.new("特殊召唤", "场位已满")
end
when 2 #效果发动
Action::Effect_Activate.new(true, :removed, @card)
Action::EffectActivate.new(true, :removed, @card)
when 3 #加入手卡
Action::ReturnToHand.new(true, :removed, @card)
when 4
......@@ -291,7 +291,7 @@ class Window_Field < Window
Widget_Msgbox.new("特殊召唤", "场位已满")
end
when 2 #效果发动
Action::Effect_Activate.new(true, :graveyard, @card)
Action::EffectActivate.new(true, :graveyard, @card)
when 3 #加入手卡
Action::ReturnToHand.new(true, :graveyard, @card)
when 4
......@@ -302,7 +302,7 @@ class Window_Field < Window
when 0..5 #后场
case @action_window.index
when 0 #效果发动
Action::Effect_Activate.new(true, @index, @card)
Action::EffectActivate.new(true, @index, @card)
when 1 #返回卡组
Action::ReturnToDeck.new(true, @index, @card)
when 2 #送入墓地
......@@ -327,7 +327,7 @@ class Window_Field < Window
when 4
Action::Flip.new(true, @index, @card)
when 5
Action::Effect_Activate.new(true, @index, @card)
Action::EffectActivate.new(true, @index, @card)
when 6
Widget_Msgbox.new("攻击宣言", "功能未实现")
when 7
......@@ -374,7 +374,7 @@ class Window_Field < Window
when 6 #从游戏中除外
Action::Remove.new(true, :hand, @card)
when 7 #效果发动
Action::Effect_Activate.new(true, :hand, @card)
Action::EffectActivate.new(true, :hand, @card)
end
end
$scene.action action if action.is_a? Action
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment