Stat이 독특한 카드가 두 장이 있습니다.
카드 Level에 따라 Melee 공격이 있는 경우와 없는 경우가 있습니다. 아래 두 카드가 이러한 stat을 가지고 있습니다.
스몬에서 게임을 할 때는 가장 큰 레벨의 카드가 선택할 수 있는 카드로 나옵니다. 하지만 ruleset 중 Keep Your Distance의 경우에는 Melee 공격이 있는 카드는 사용할 수가 없습니다.
이런 경우에 만약 level 3 카드가 추가로 있으면 기존 높은 level 카드가 아니라 level 3 카드를 사용할 수 있어야 합니다. 하지만 스몬 게임에서는 이런 기능을 제공하지 않습니다. level 3 카드가 있더라도 이런 rule의 경우에는 사용할 수 없게 됩니다.
스몬 대전 자동화를 개발하면 이런 경우에도 ruleset에 맞는 카드를 선택할 수 있습니다. 물론 4레벨카드와 3레벨 카드를 동시에 보유하고 있어야 합니다. 카드 한 장이 더 추가 되면 승률에 많은 영향을 미칠 것 같습니다. 이렇게 되면 일반 사용자와 자동화 게이머와의 싸움에서는 기계가 조금 더 유리할 것 같습니다.
이런 기능을 수행하는 코드는 다음과 같습니다.
target에는 이번 대전에 대한 정보와 참여할 카드에 대한 정보가 들어있습니다. ruleset이 Keep Your Distance인 경우에만 이미 등록된 3레벨 카드의 uid를 사용하도록 합니다.
if ( "Keep Your Distance" in target['ruleset'] ) : # keep D의 경우에는 일반 만
find = 0
print("Keep Your D: Ooze 변경")
for i in range(0, len(target['monsters'])) :
if target['monsters'][i]['id'] == 91 : # ooze가 있으면
target['monsters'][i]['uid'] = OOZE_UID[self.account_name]
이렇게 바꾸고 나니 그동안 이유없이 실격 패한 경우가 없어졌습니다. 앞으로 신규 카드가 나오면 이런 부분에 대하여 좀 더 신경을 써야 할 것 같습니다.