#! /usr/bin/env python
# coding=utf-8

# from random import randint


# Main Classes

class Item(object):
    """ major item class """

    def __init__(self, name, price, image):
        self.name = name  # string: item name
        self.price = price  # integer: price in BTC
        self.image = image  # string containing path to image


class Gun(Item):
    """ gun subclass """

    def __init__(self, name, price, image, damage, grange, ap):
        super(Gun, self).__init__(name, price, image)
        self.damage = damage  # Integer
        self.grange = grange  # Integer
        self.ap = ap  # Integer, AP needed to fire the gun
        self.type = "gun"


class Sword(Item):
    """ sword subclass """

    def __init__(self, name, price, image, ap, critical, stun, damage,
                 silverdamage):
        super(Sword, self).__init__(name, price, image)
        self.damage = damage  # integer: damage dealt
        self.ap = ap  # integer: ap needed to attack
        self.critical = critical  # float: chance to do critical damage
        self.stun = stun  # float: change to stun enemy
        self.silverdamage = silverdamage  # boolean: does extra damage to SUPs
        self.type = "sword"


"""
# Swords

# name
# price
# path to image (empty string until artwork is done)
# AP
# Critical ( Damage*2 )
# Stun
# Damage
# Silverdamage ( Damage*2 )

class Nosword(Sword):
    def __init__(self):
        super(Nosword, self).__init__("Fist", 0, "", 50, 0.0, 0.3, 0, False)


class Baton(Sword):
    def __init__(self):
        super(Baton, self).__init__("Baton", 20, "", 75, 0.0, 0.3, 20, False)


class Knife(Sword):
    def __init__(self):
        super(Knife, self).__init__("Knife", 20, "", 60, 0.2, 0.0, 30, False)


class Shortsword(Sword):
    def __init__(self):
        super(Shortsword, self).__init__("Short sword", 40, "", 90, 0.3, 0.0,
                                         50, False)


class Longsword(Sword):
    def __init__(self):
        super(Longsword, self).__init__("Long sword", 70, "", 120, 0.4, 0.1,
                                        70, False)


class NunChaku(Sword):
    def __init__(self):
        super(NunChaku, self).__init__("Nun-Chakus", 70, "", 80, 0.1, 0.7, 50,
                                       False)


class Mace(Sword):
    def __init__(self):
        super(Mace, self).__init__("Mace", 70, "", 100, 0.1, 0.5, 70, False)


class Claymore(Sword):
    def __init__(self):
        super(Claymore, self).__init__("Claymore", 120, "", 150, 0.3, 0.2,
                                       120, False)


class Katana(Sword):
    def __init__(self):
        super(Katana, self).__init__("Katana", 100, "", 110, 0.6, 0.1, 75,
                                     False)


class Silversword(Sword):
    def __init__(self):
        super(Silversword, self).__init__("Silver sword", 90, "", 120, 0.3,
                                          0.2, 50, True)


class Silverdagger(Sword):
    def __init__(self):
        super(Silverdagger, self).__init__("Silver dagger", 40, "", 60, 0.2,
                                           0.0, 30, True)


class Whip(Sword):
    def __init__(self):
        super(Whip, self).__init__("Silver whip", 60, "", 150, 0.7, 0.8, 30,
                                   True)


class Claws(Sword):
    def __init__(self):
        super(Claws, self).__init__("Claws", 50, "", 50, 0.3, 0.6, 30, False)


class Silverclaws(Sword):
    def __init__(self):
        super(Silverclaws, self).__init__("Silver Claws", 150, "", 50, 0.4,
                                          0.7, 30, True)


# Guns

# Name
# Cost
# Path to image (empty until artworks are done)
# Damage
# g(un)Range
# AP needed to fire gun
# max. 2 Upgrades


class Nogun(Gun):
    def __init__(self):
        super(Nogun, self).__init__("No gun", 0, "", 0, 0, 0)


class Glock(Gun):
    def __init__(self):
        super(Glock, self).__init__("Glock", 30, "", 10, 8, 100)


class Uzi(Gun):
    def __init__(self):
        super(Uzi, self).__init__("uzi", 50, "", 10, 6, 50)


class Ak74(Gun):
    def __init__(self):
        super(Ak74, self).__init__("Kalaschnikow", 80, "", 30, 10, 100)


class P90(Gun):
    def __init__(self):
        super(P90, self).__init__("p90 SMG", 60, "", 15, 8, 75)


class Sawnoffshotgun(Gun):
    def __init__(self):
        super(Sawnoffshotgun, self).__init__("Sawn-off shotgun", 30, "", 50,
                                             4, 150)


class Shotgun(Gun):
    def __init__(self):
        super(Shotgun, self).__init__("Shotgun", 80, "", 70, 6, 150)


class Awp(Gun):
    def __init__(self):
        super(Awp, self).__init__("Sniper rifle", 140, "", 90, 15, 175)


class M4(Gun):
    def __init__(self):
        super(M4, self).__init__("M4 carbine", 110, "", 25, 12, 75)


class Lmg(Gun):
    def __init__(self):
        super(Lmg, self).__init__("Light machine gun", 130, "", 10, 4, 25)


class AllItems:
    # buyableC(lasses) (!= buyableO(bjects)) This dictionary is needed in buy().
    def __init__(self):
        self.buyableswordsC = {
            "Baton": Baton, "Knife": Knife, "Short sword": Shortsword, "Long sword":
                Longsword, "Nun-Chakus": NunChaku, "Mace": Mace, "Claymore": Claymore,
            "Katana": Katana, "Silver dagger": Silverdagger, "Silver sword":
                Silversword, "Silver claws": Silverclaws, "Silver whip": Whip
        }
        self.buyablegunsC = {
            "Glock": Glock, "uzi": Uzi, "Kalaschnikow": Ak74, "p90 SMG": P90,
            "Sawn-off shotgun": Sawnoffshotgun, "Shotgun": Shotgun, "Sniper rifle":
                Awp, "M4 carbine": M4, "Light machine gun": Lmg
        }



"""

"""
nosword = Sword("Fist", 0, "", 50, 0.0, 0.3, 0, False)
baton = Sword("Baton", 20, "", 75, 0.0, 0.3, 20, False)
knife = Sword("Knife", 20, "", 60, 0.2, 0.0, 30, False)
shortsword = Sword("Short sword", 40, "", 90, 0.3, 0.0, 50, False)
longsword = Sword("Long sword", 70, "", 120, 0.4, 0.1, 70, False)
nunchaku = Sword("Nun-Chakus", 70, "", 80, 0.1, 0.7, 50, False)
mace = Sword("Mace", 70, "", 100, 0.1, 0.5, 70, False)
claymore = Sword("Claymore", 120, "", 150, 0.3, 0.2, 120, False)
katana = Sword("Katana", 100, "", 110, 0.6, 0.1, 75, False)
silversword = Sword("Silver sword", 90, "", 120, 0.3, 0.2, 50, True)
silverdagger = Sword("Silver dagger", 40, "", 60, 0.2, 0.0, 30, True)
whip = Sword("Silver whip", 60, "", 150, 0.7, 0.8, 30, True)
krallen = Sword("Claws", 50, "", 50, 0.3, 0.6, 30, False)
silverkrallen = Sword("Silver Claws", 150, "", 50, 0.4, 0.7, 30, True)

nogun = Gun("No gun", 0, "", 0, 0, 0)
glock = Gun("Glock", 30, "", 10, 8, 100)
uzi = Gun("Uzi", 50, "", 10, 6, 50)
ak74 = Gun("Kalaschnikow", 80, "", 30, 10, 100)
p90 = Gun("p90 SMG", 60, "", 15, 8, 75)
sawnoffshotgun = Gun("Sawn-off shotgun", 30, "", 50, 4, 150)
shotgun = Gun("Shotgun", 80, "", 70, 6, 150)
awp = Gun("Sniper rifle", 140, "", 90, 15, 175)
m4 = Gun("M4 Carbine", 110, "", 25, 12, 75)
lmg = Gun("Light machine gun", 130, "", 10, 4, 25)



# UPGRADES

Verlaengerter Lauf
R += 2
C: 60

Halbmantelgeschosse
D += 5
C: 60

Verbesserte Mechanik
F += 1
C: 60

Keramikwaffe # erhoeht Bewegunsgeschwindigkeit
movement += 1
C: 60

Silberkugeln
if target.race != "human":
    D += 10
C: 80


"""

"""
# List format:
"""
# Swords
nosword = ["Fist", 0, "", 50, 0.0, 0.3, 0, False]
baton = ["Baton", 20, "swords/baton.gif", 75, 0.0, 0.3, 20, False]
knife = ["Knife", 20, "swords/knife.gif", 60, 0.2, 0.0, 30, False]
shortsword = ["Short sword", 40, "swords/shortsword.gif", 90, 0.3, 0.0, 50, False]
longsword = ["Long sword", 70, "swords/longsword.gif", 120, 0.4, 0.1, 70, False]
nunchaku = ["Nun-Chakus", 70, "swords/nunchaku.gif", 80, 0.1, 0.7, 50, False]
mace = ["Mace", 70, "swords/mace.gif", 100, 0.1, 0.5, 70, False]
claymore = ["Claymore", 120, "swords/claymore.gif", 150, 0.3, 0.2, 120, False]
katana = ["Katana", 100, "swords/katana.gif", 110, 0.6, 0.1, 75, False]
silversword = ["Silver sword", 90, "swords/silversword.gif", 120, 0.3, 0.2, 50, True]
silverdagger = ["Silver dagger", 40, "swords/silverdagger.gif", 60, 0.2, 0.0, 30, True]
whip = ["Silver whip", 60, "swords/whip.gif", 150, 0.7, 0.8, 30, True]
krallen = ["Claws", 50, "swords/claws.gif", 50, 0.3, 0.6, 30, False]
silverkrallen = ["Silberkrallen", 30, "swords/silverclaws.gif", 50, 0.4, 0.7, 150, True]


# Guns
nogun = ["No gun", 0, "", 0, 0, 0]
glock = ["Glock", 30, "guns/glock.gif", 10, 8, 100]
uzi = ["Uzi", 50, "guns/uzi.gif", 10, 6, 50]
ak74 = ["Kalaschnikow", 80, "guns/kalaschnikow.gif", 30, 10, 100]
p90 = ["p90 SMG", 60, "guns/p90.gif", 15, 8, 75]
sawnoffshotgun = ["Sawn-off shotgun", 30, "guns/sawnoff.gif", 50, 4, 150]
shotgun = ["Shotgun", 80, "guns/shotgun.gif", 70, 6, 150]
awp = ["Sniper rifle", 140, "guns/sniper.gif", 90, 15, 175]
m4 = ["M4 Carbine", 110, "guns/m4carbine.gif", 25, 12, 75]
lmg = ["Light machine gun", 130, "guns/lmg.gif", 10, 4, 25]

allswords = [baton, knife, shortsword, longsword, nunchaku, mace, claymore, katana, silverdagger, silversword,
             silverkrallen, whip]
guns = [glock, uzi, ak74, p90, sawnoffshotgun, shotgun, awp, m4, lmg]