Equipment(装備)クラス
再度仕切り直し
pc.items
item = pc.items[idx]
item.pn, item.stack# item.stack = nil/0/255
| index |
アイテム(pn) |
個数 |
| 0 |
1 |
1 |
| 1 |
2 |
1 |
| 2 |
100 |
5 |
pc.equipments
equipment = pc.equipments[area]
equipment.area, equipment.pn, equipment.name
| 部位(area) |
装備品(pn) |
| 0 |
1 |
| 1 |
12 |
| 2 |
7 |
| 3 |
22 |
| Area |
Name |
Classes |
ac |
st |
at |
damage |
| 部位 |
アイテム名 |
装備可否 |
防 |
命 |
数 |
致傷 |
| Main |
長剣 |
F----SLN |
0 |
4 |
0 |
1D8+0 |
| Sub |
鉄の盾 |
F-PT-SLN |
-3 |
0 |
0 |
nil |
| Body |
板金鎧 |
F-PT-SLN |
-5 |
0 |
0 |
nil |
| Head |
鉄兜 |
F-PT-SLN |
-2 |
0 |
0 |
nil |
| Hand |
銀の小手 |
F----SLN |
-3 |
0 |
0 |
nil |
| Misc |
回復の指輪 |
F-PT-SLN |
0 |
0 |
0 |
0D0+0 |
仕切りなおし
pcの@equip[area] = item
pc.equip item# pc が item を equip する(areaが一意の場合は可能)
pc.equip area, item# pc が item を areaに equip する
# pc が area に 装備しているItemを取り出す
p item_index, cursed = pc.equipments[area]# => [1, false]
p pc.items[pc.equipments[Area][ItemIndex]]# => Item
- 呪い装備について
- 装備したときに条件があわないと呪われる。
- 呪われた状態とはどういう状態か。
p pc.cursed?#
p pc.equipments[area].cursed?
p pc.equipments.head.cursed?
p pc.equipments.main.cursed?
p pc.equipments[Area::Main].cursed?
#
p pc.equipments.cursed# => [0, 2, 3]# Main, Body, Head
p pc.equipments.
# 部位メイン~部位ミスクまで、それぞれ
# 装備可能なアイテムを列挙
#
(Area::Main..Area::Misc).each{|area|
area_items = items.collect{|item|
item.area == area ? item : nil
}
item gets
}
- アイテムを装備すると、装備状態と呪い状態のデータが加わる
要件
- PCの持っているアイテム群から特定の部位の装備を選び出す。
p pc.equipments.ac
p pc.equipments.head.ac
p pc.equipments.head.equip item#これは何か違う気がする
p pc.equip item#
p pc.equipments.area(0)
# pcの
p pc.items.area(0)#
# 使用可能なアイテムを選び出す。
p pc.items.collect{|item| item.use? }
# 装備可能なアイテムを選び出す。
p pc.items.collect{|item| item.area?(0) ? item : nil }# いまいち
p pc.items.area(0)
# 装備中のアイテムを選び出す。
p pc.items.collect{|item| item.equip? ? item : nil }#
p pc.items.equiped#
pcの@itemsは、単なる配列でよい。
pc.itemsは、配列にオプションメソッドをつけて返す。
pc.items.equip# => 装備中のアイテムを配列で返す。
pc.items.area(area)# => 装備部位areaのアイテムを配列で返す。
装備の変更
pc.items.area(0).cursed?# => 部位0のアイテムで現在呪われているか?
pc.items.area(0).take_off# => 呪われていないなら、部位0の装備を全て装脱
pc.equip pc.items[index]# => index番目の装備を装着
pc.equip item# => itemを装着
items.equip
装備するとはどういうことか?
壱:pc.items[index]の@equip=true
弐:pcの@equip[area] = item.pn
参:pc.items[index] = [item.pn, equip, cursed]
itemオブジェクトの@equipがtrueになる。falseで装備解除。
pcの@equip[index]プロパティにitemオブジェクトが代入される。
あれ?Equipmentsクラスっているんだろうか・・・。( ̄~ ̄;)
壱の場合
pc.items[index].equip
- itemオブジェクトがequip,take_offメソッドを持つ必要がある。
- itemクラス@equipがequipでtrueに、take_offでfalseになる。
- 欠点:装備する前にきちんと全部脱がないと、一部位にアイテムを多数装着できてしまう。
# 着脱
pc.items[index].equip# => item @equip = true
pc.items[index].take_off# => item @equip = false
pc.items[index].equip true# item @equip = true
pc.items[index].equip false# item @equip = false
弐の場合
- pcが@itemsと@equipsを持つ必要がある。
- pc.equip itemで@equips[item.area] = @items.index(item)
- @equips[area] = nil
- 利点:一部位にアイテムを一つしか装着できないため、一部位多数装着問題は発生しない。
# 着脱
pc.equip item
pc.equip(area, item)
pc.equip(area, nil)
参の場合
- pcが@itemsを持つ。itemは[item.pn, equip, cursed]からなる。
- pcが
- 利点:恐らくDBとしては、各アイテム欄毎にアイテム番号、非装着/装着中、呪われていない/呪われてるが必要で、その書式通り。
- 欠点:装着前にきちんと脱がないと、一部位多数装着問題が発生する。
# 着脱
pc.items[index].equip# これは何か違うな・・・
pc.equip @items.index(item)#
@items[index][Equip] = true#
ハイブリッドの場合?
- Item.equip?
- pc.equip? item# itemを装備中かどうか
- pc.items.index(item
- pc.items[index].equip?# アイテムリストのindex番目にあるアイテムを装備中かどうか
- pc.items.collect{|item| item.equip? ? item : nil }# 装備中のアイテムをリストアップ
- pc.equip(area, nil)# 部位areaの装備を解除する
- pc.equip(area, item)# 部位areaにitemを装備する
最終更新:2010年05月17日 11:39