Ejemplo n.º 1
0
 def func(self):
     if (self.caller.db.conscious == 1):
         self.caller.db.target = self.caller.search(self.args)
         self.caller.db.target.db.target = self.caller
         self.caller.msg("|/|rYou try to attack %s" %
                         (self.caller.db.target))
         self.caller.db.target.msg("|/|r%s tries to attack you" %
                                   (self.caller))
         init_a = self.caller.db.dexterity + self.caller.db.wits
         init_b = self.caller.db.target.db.dexterity + self.caller.db.target.db.wits
         init_a = init_a + roll_dice(1, 10)
         init_b = init_b + roll_dice(1, 10)
         if (init_a > init_b):
             self.caller.msg("|/|yYou get the jump on %s." %
                             (self.caller.db.target))
             self.caller.db.target.msg("|/|y%s gets the jump on you." %
                                       (self.caller))
             EvMenu(self.caller,
                    "typeclasses.menu",
                    startnode="attack_node",
                    cmd_on_exit=None)
         else:
             self.caller.db.target.msg("|/|yYou get the jump on %s." %
                                       (self.caller))
             self.caller.msg("|/|y%s gets the jump on you." %
                             (self.caller.db.target))
             EvMenu(self.caller.db.target,
                    "typeclasses.menu",
                    startnode="attack_node",
                    cmd_on_exit=None)
     else:
         self.caller.msg("You can't do that while unconscious.")
Ejemplo n.º 2
0
def mercy(caller):
    caller.db.start_time = 99999999999999999999999
    init_a = caller.db.dexterity + caller.db.wits + caller.db.blessed + caller.db.charisma
    caller.db.target.msg("|/|y%s doesn't want to fight." % caller)
    init_b = caller.db.target.db.dexterity + caller.db.target.db.wits
    init_a = init_a + roll_dice(1,10) 
    init_b = init_b + roll_dice(1,10)
    if(init_a > init_b):
        caller.msg("|/|yYou beg %s for mercy!|/|/" % caller.db.target)
        caller.db.target.msg("|/|y%s cries for mercy!|/|/" % caller)
        players = [con for con in caller.location.contents if con.has_player]
        caller.db.target.ndb._menutree.close_menu()
        caller.ndb._menutree.close_menu()
        caller.ndb.end_combat = 0
        caller.db.target.ndb.end_combat = 0
    else:
        caller.msg("|yYour cries for mercy go unheard.")
        caller.db.target.msg("|y%s's cries for mercy go unheard" % caller)
        if(caller.db.target.db.weapon == 1):
            caller.msg("|/|g%s causes %i points of lethal damage." % (caller.db.target, damage))
            caller.msg("|/|gYou lose a total of %i health points." % (damage))
            caller.db.lethal = caller.db.lethal + damage
            caller.db.target.msg("|/|gYou deal %i points of lethal damage with your attack." % (damage))
            caller.db.target.msg("|/|g%s loses a total of %i hit points." % (caller, damaga))
        if(caller.db.target.db.weapon == 0):
            caller.msg("|/|g%s causes %i points of bashing damage to you." % (caller.db.target, damage))
            caller.msg("|/|gYou lose a total of %i health points." % (damage))
            caller.db.bashing = caller.db.bashing + damage
            caller.db.target.msg("|/|gYou deal %i points of bashing damage with your attack." % (damage))
            caller.db.target.msg("|/|g%s loses a total of %i hit points." % (caller, damage))
        EvMenu(caller, "typeclasses.menu", startnode="attack_node", auto_quit=False, cmd_on_exit=None)

    text = ""
    options = ()
    return text, options
Ejemplo n.º 3
0
 def test_roll_dice(self, mocked_randint):
     # we must import dice here for the mocked randint to apply correctly.
     from evennia.contrib import dice
     self.assertEqual(dice.roll_dice(6, 6, modifier=('+', 4)),
                      mocked_randint() * 6 + 4)
     self.assertEqual(dice.roll_dice(6, 6, conditional=('<', 35)), True)
     self.assertEqual(dice.roll_dice(6, 6, conditional=('>', 33)), False)
Ejemplo n.º 4
0
def mercy_attack(caller):
   caller.db.start_time = 99999999999999999999999
   if caller.db.attack_not:
       init_a = caller.db.dexterity + caller.db.wits + caller.db.blessed + caller.db.charisma
       caller.db.target.msg("|/|y%s doesn't want to fight." % caller)
   else:
       init_a = caller.db.dexterity + caller.db.wits + caller.db.blessed
   init_b = caller.db.target.db.dexterity + caller.db.target.db.wits
   init_a = init_a + roll_dice(1,10) 
   init_b = init_b + roll_dice(1,10)
   if(init_a > init_b):
       caller.msg("|/|yYou beg %s for mercy|/|/" % caller.db.target)
       caller.db.target.msg("|/|y%s begs for mercy!|/|/" % caller)
       if(caller.ndb._menutree):
           caller.ndb._menutree.close_menu()
       if(caller.db.target.ndb._menutree):
           caller.db.target.ndb._menutree.close_menu()
       caller.ndb.end_combat = 0
       caller.db.target.ndb.end_combat = 0
   else:
       caller.msg("|/|yYou're cries for mercy go unheard.")
       caller.db.target.msg("|/|yYou ignore %s's cries for mercy " % caller)
       EvMenu(caller.db.target, "typeclasses.menu", startnode="attack_node", auto_quit=False, cmd_on_exit=None)
       text = ""
       options = ({"key": "skip",
               "goto": "skip_attack"})
       return text, options

   text = ""
   options = ()
   return text, options
Ejemplo n.º 5
0
 def func(self):
     self.caller.db.target = self.caller.search(self.args)
     self.caller.db.target.db.target = self.caller
     if self.caller.db.invis:
         self.caller.msg("You have become visibile.")
         self.caller.db.invis = 0
     if self.caller.db.target.db.invis:
         self.caller.msg("You have become visibile.")
         self.caller.db.target.db.invis = 0
     if not self.caller.db.target.ndb.end_combat and self.caller.db.target.db.alive and self.caller.db.alive:
         self.caller.ndb.end_combat = 1
         self.caller.db.target.ndb.end_combat = 1
         if (self.caller.db.conscious == 1):
             self.caller.msg("|/|rYou try to attack %s" %
                             (self.caller.db.target))
             self.caller.db.target.msg("|/|r%s tries to attack you" %
                                       (self.caller))
             init_a = self.caller.db.dexterity + self.caller.db.wits
             init_b = self.caller.db.target.db.dexterity + self.caller.db.target.db.wits
             self.caller.msg(init_a)
             self.caller.msg(init_b)
             init_a = init_a + roll_dice(1, 10) + 2
             init_b = init_b + roll_dice(1, 10)
             self.caller.msg(init_a)
             self.caller.msg(init_b)
             if (init_a > init_b):
                 self.caller.db.attacking = 1
                 self.caller.db.target.db.attacking = 0
                 self.caller.msg("|/|yYou get the jump on %s." %
                                 (self.caller.db.target))
                 self.caller.db.target.msg("|/|y%s gets the jump on you." %
                                           (self.caller))
                 EvMenu(self.caller,
                        "typeclasses.menu",
                        startnode="attack_node",
                        cmd_on_exit=None)
             else:
                 self.caller.db.attacking = 0
                 self.caller.db.target.db.attacking = 1
                 self.caller.db.target.msg("|/|yYou get the jump on %s." %
                                           (self.caller))
                 self.caller.msg("|/|y%s gets the jump on you." %
                                 (self.caller.db.target))
                 EvMenu(self.caller.db.target,
                        "typeclasses.menu",
                        startnode="attack_node",
                        cmd_on_exit=None)
         else:
             self.caller.msg("You can't do that while unconscious.")
     else:
         if self.caller.db.target.ndb.end_combat:
             self.caller.msg("They are already in a fight.")
         if self.caller.db.target.db.alive == 0:
             self.caller.msg("They are already dead.")
         else:
             self.caller.msg("You have to be alive to do that.")
         return
Ejemplo n.º 6
0
def katana(caller):
    caller.db.weapon = 1

    test = caller.db.dexterity + caller.db.melee
    counter = 0
    attackpoints = 0
    while (counter < test):
        counter = counter + 1
        roll = roll_dice(1, 10)
        if (roll >= 6):
            attackpoints = attackpoints + 1

    global damage
    damage = attackpoints

    hit = caller.db.strength + 3
    counter = 0
    attackpoints2 = 0
    while (counter < hit):
        counter = counter + 1
        roll = roll_dice(1, 10)
        if (roll >= 6):
            attackpoints2 = attackpoints2 + 1

    global damage2
    damage2 = attackpoints2

    caller.db.start_time = 99999999999999999999999
    if (attackpoints > 0):
        caller.msg("|/|gYou strike %s with %i success rolls. " %
                   (caller.db.target, attackpoints))
        caller.db.target.msg(
            "|/|g%s attempts to strike you with %i succesful rolls." %
            (caller, attackpoints))
        EvMenu(caller.db.target,
               "typeclasses.menu",
               startnode="defend_node",
               auto_quit=False,
               cmd_on_exit=None)
    else:
        caller.msg("|/|gYou miss %s." % caller.db.target)
        caller.db.target.msg("|/|g%s strikes, but misses you." % caller)
        EvMenu(caller.db.target,
               "typeclasses.menu",
               startnode="attack_node",
               auto_quit=False,
               cmd_on_exit=None)
    text = ""
    options = ({"key": "skip", "goto": "skip_attack"})
    return text, options
Ejemplo n.º 7
0
def katana(caller):
        caller.db.attack_not = 0
	caller.db.weapon = 1

	test = caller.db.dexterity + caller.db.melee + caller.db.blessed
	counter = 0
	attackpoints = 0
	while(counter < test):
		counter = counter + 1
		roll = roll_dice(1,10)
		if(roll >= 6):
			attackpoints = attackpoints + 1

	global damage
	damage = attackpoints

	hit = caller.db.strength+3
	counter = 0
	attackpoints2 = 0
	while (counter < hit):
		counter = counter + 1
		roll = roll_dice(1, 10)
		if (roll >= 6):
			attackpoints2 = attackpoints2 + 1

	global damage2
	damage2 = attackpoints2 + caller.db.blessed + caller.db.target.db.cursed
        caller.db.target.db.cursed = 0
	caller.db.start_time = 99999999999999999999999
	if (attackpoints > 0):
		caller.msg("|/|gYou strike %s with %i success rolls. " % (caller.db.target, attackpoints))
		caller.db.target.msg("|/|g%s attempts to strike you with %i succesful rolls." % (caller, attackpoints))
		EvMenu(caller.db.target, "typeclasses.menu", startnode="defend_node", auto_quit=False, cmd_on_exit=None)
                players = [con for con in caller.location.contents if con.has_player]
                for player in players:
                    if not player.ndb.end_combat:
                        player.msg("%s attacks %s with his katana." % (caller, caller.db.target))
	else:
		caller.msg("|/|gYou miss %s." % caller.db.target)
		caller.db.target.msg("|/|g%s strikes, but misses you." % caller)
                players = [con for con in caller.location.contents if con.has_player]
                for player in players:
                    if not player.ndb.end_combat:
                        player.msg("%s misses %s with his katana." % (caller, caller.db.target))
		EvMenu(caller.db.target, "typeclasses.menu", startnode="attack_node", auto_quit=False, cmd_on_exit=None)
	text = ""
	options = ({"key": "skip",
				"goto": "skip_attack"})
	return text, options
Ejemplo n.º 8
0
 def func(self):
     if(self.caller.db.conscious == 1):
         self.caller.db.target = self.caller.search(self.args)
         self.caller.db.target.db.target = self.caller
         self.caller.msg("|/|rYou try to attack %s" % (self.caller.db.target))
         self.caller.db.target.msg("|/|r%s tries to attack you" % (self.caller))
         init_a = self.caller.db.dexterity + self.caller.db.wits
         init_b = self.caller.db.target.db.dexterity + self.caller.db.target.db.wits
         init_a = init_a + roll_dice(1,10)
         init_b = init_b + roll_dice(1,10)
         if(init_a > init_b):
             self.caller.msg("|/|yYou get the jump on %s."% (self.caller.db.target))
             self.caller.db.target.msg("|/|y%s gets the jump on you." % (self.caller))
             EvMenu(self.caller, "typeclasses.menu", startnode="attack_node", cmd_on_exit=None)
         else:
             self.caller.db.target.msg("|/|yYou get the jump on %s." % (self.caller))
             self.caller.msg("|/|y%s gets the jump on you." % (self.caller.db.target))
             EvMenu(self.caller.db.target, "typeclasses.menu", startnode="attack_node", cmd_on_exit=None)
     else:
         self.caller.msg("You can't do that while unconscious.")
Ejemplo n.º 9
0
def flee(caller):
    caller.db.start_time = 99999999999999999999999
    if caller.db.attack_not:
        init_a = caller.db.dexterity + caller.db.wits + caller.db.blessed + caller.db.charisma
        caller.db.target.msg("|/|y%s doesn't want to fight." % caller)
    else:
        init_a = caller.db.dexterity + caller.db.wits + caller.db.blessed
    init_b = caller.db.target.db.dexterity + caller.db.target.db.wits
    init_a = init_a + roll_dice(1,10) 
    init_b = init_b + roll_dice(1,10)
    if(init_a > init_b or caller.db.target.db.conscious == 0 or caller.db.target.db.alive == 0):
        caller.msg("|/|yYou flee from combat!|/|/")
        caller.db.target.msg("|/|y%s flees from combat!|/|/" % caller)
        players = [con for con in caller.location.contents if con.has_player]
        for player in players:
            if not player.ndb.end_combat:
                player.msg("%s flees from combat." % caller.name)
        caller.db.target.ndb._menutree.close_menu()
        caller.ndb._menutree.close_menu()
        caller.ndb.end_combat = 0
        caller.db.target.ndb.end_combat = 0
    else:
        caller.msg("|yYou fail to flee from combat")
        caller.db.target.msg("|y%s fails to flee from combat" % caller)
        if(caller.db.target.db.weapon == 1):
            caller.msg("|/|g%s causes %i points of lethal damage to you." % (caller.db.target, damage))
            caller.msg("|/|gYou lose a total of %i health points." % (damage))
            caller.db.lethal = caller.db.lethal + damage
            caller.db.target.msg("|/|gYou deal %i points of lethal damage with your attack." % (damage))
            caller.db.target.msg("|/|g%s loses a total of %i hit points." % (caller, damaga))
        if(caller.db.target.db.weapon == 0):
            caller.msg("|/|g%s causes %i points of bashing damage to you." % (caller.db.target, damage))
            caller.msg("|/|gYou lose a total of %i health points." % (damage))
            caller.db.bashing = caller.db.bashing + damage
            caller.db.target.msg("|/|gYou deal %i points of bashing damage with your attack." % (damage))
            caller.db.target.msg("|/|g%s loses a total of %i hit points." % (caller, damage))
        EvMenu(caller, "typeclasses.menu", startnode="attack_node", auto_quit=False, cmd_on_exit=None)

    text = ""
    options = ()
    return text, options
Ejemplo n.º 10
0
Archivo: menu.py Proyecto: Treatz/crash
def katana(caller):
	caller.db.weapon = 1

	test = caller.db.dexterity + caller.db.melee
	counter = 0
	attackpoints = 0
	while(counter < test):
		counter = counter + 1
		roll = roll_dice(1,10)
		if(roll >= 6):
			attackpoints = attackpoints + 1

	global damage
	damage = attackpoints

	hit = caller.db.strength+3
	counter = 0
	attackpoints2 = 0
	while (counter < hit):
		counter = counter + 1
		roll = roll_dice(1, 10)
		if (roll >= 6):
			attackpoints2 = attackpoints2 + 1

	global damage2
	damage2 = attackpoints2

	caller.db.start_time = 99999999999999999999999
	if (attackpoints > 0):
		caller.msg("|/|gYou strike %s with %i success rolls. " % (caller.db.target, attackpoints))
		caller.db.target.msg("|/|g%s attempts to strike you with %i succesful rolls." % (caller, attackpoints))
		EvMenu(caller.db.target, "typeclasses.menu", startnode="defend_node", auto_quit=False, cmd_on_exit=None)
	else:
		caller.msg("|/|gYou miss %s." % caller.db.target)
		caller.db.target.msg("|/|g%s strikes, but misses you." % caller)
		EvMenu(caller.db.target, "typeclasses.menu", startnode="attack_node", auto_quit=False, cmd_on_exit=None)
	text = ""
	options = ({"key": "skip",
				"goto": "skip_attack"})
	return text, options
Ejemplo n.º 11
0
def gen_characteristics_3(caller, **kwargs):
    stats = copy.deepcopy(get_race(kwargs['race']).stats)
    stat_keys = dict({x.short: x.base for x in stats})
    for _ in range(7):
        k1 = random.choice(list(stat_keys.keys()))
        k2 = random.choice(list(stat_keys.keys()))
        _, _, _, (roll1, roll2) = roll_dice(2, 10, return_tuple=True)
        stat_keys[k1] += roll1
        stat_keys[k2] += roll2

    race_base = dict({x.short: x.base for x in stats})

    text = "Roll for stats (enter for reroll)\n\n"

    lck = roll_dice(2, 10, ('+', 30))
    if lck > 50:
        lck = 50
    stat_keys['lck'] = lck
    k = kwargs.copy()
    k['stats'] = stat_keys.copy()

    _max = max(stat_keys.keys(), key=(lambda key: stat_keys[key]))
    _min = min(stat_keys.keys(), key=(lambda key: stat_keys[key]))

    stat_keys[_max] = f"|g{stat_keys[_max]}|n"
    stat_keys[_min] = f"|r{stat_keys[_min]}|n"

    for name, base in race_base.items():
        text += f"{name.capitalize():>3}: {stat_keys[name]} ({base})\n"

    options = ({
        'key': 'accept',
        'goto': ('determine_birthsign', k)
    }, {
        'key': '_default',
        'goto': ('gen_characteristics_3', k)
    })
    return text, options
Ejemplo n.º 12
0
def flee_attack(caller):
    caller.db.start_time = 99999999999999999999999
    if caller.db.attack_not:
        init_a = caller.db.dexterity + caller.db.wits + caller.db.blessed + caller.db.charisma
        caller.db.target.msg("|/|y%s doesn't want to fight." % caller)
    else:
        init_a = caller.db.dexterity + caller.db.wits + caller.db.blessed
    init_b = caller.db.target.db.dexterity + caller.db.target.db.wits
    init_a = init_a + roll_dice(1,10) 
    init_b = init_b + roll_dice(1,10)
    if(init_a > init_b):
        caller.msg("|/|yYou flee from combat!|/|/")
        caller.db.target.msg("|/|y%s flees from combat!|/|/" % caller)
        players = [con for con in caller.location.contents if con.has_player]
        for player in players:
            if not player.ndb.end_combat:
                player.msg("%s flees from combat." % caller.name)
        caller.ndb._menutree.close_menu()
        if(caller.db.target.ndb._menutree):
            caller.db.target.ndb._menutree.close_menu()
        caller.ndb.end_combat = 0
        caller.db.target.ndb.end_combat = 0
        caller.execute_cmd('look')
        caller.db.target.execute_cmd('look')
    else:
        caller.msg("|/|yYou couldn't flee")
        caller.db.target.msg("|/|y%s couldn't flee" % caller)
        EvMenu(caller.db.target, "typeclasses.menu", startnode="attack_node", auto_quit=False, cmd_on_exit=None)
        text = ""
        options = ({"key": "skip",
                "goto": "skip_attack"})
        return text, options

    text = ""
    options = ()
    return text, options
Ejemplo n.º 13
0
Archivo: yuck.py Proyecto: Treatz/crash
def block(caller):
    attack_roll = roll_dice(3, 6)
    #caller.db.target.start_time = timer()
    caller.db.start_time = 99999999999999999999999
    if (attack_roll <= caller.db.dexterity):
        caller.msg("|/|gYou block %s's attack." % caller.db.target)
        caller.db.target.msg("|/|g%s blocks your attack." % caller)
    else:
        caller.msg("|/|rYou have been hit by %s." % caller.db.target)
        caller.db.target.msg("|/|r%s fails to block your attack." % caller)

    EvMenu(caller, "typeclasses.menu", startnode="attack_node",auto_quit=False, cmd_on_exit=None)
    text = ""
    options = ({"key": "skip",
                "goto": "skip_attack"})
    return text, options
Ejemplo n.º 14
0
def wod_dice(dice, difficulty=8):
    results = {
        'Dice': dice,
        'Difficulty': difficulty,
        'Successes': 0,
        'Results': []
    }
    while dice:
        result, outcome, diff, rolls = roll_dice(dice, 10, return_tuple=True)
        dielist = []
        for die in list(rolls):
            dielist.append(die)
            if die >= difficulty:
                results['Successes'] += 1
            if die < 10:
                dice -= 1
        results['Results'].append(dielist)
    return results
Ejemplo n.º 15
0
def block(caller):
    attack_roll = roll_dice(3, 6)
    #caller.db.target.start_time = timer()
    caller.db.start_time = 99999999999999999999999
    if (attack_roll <= caller.db.dexterity):
        caller.msg("|/|gYou block %s's attack." % caller.db.target)
        caller.db.target.msg("|/|g%s blocks your attack." % caller)
    else:
        caller.msg("|/|rYou have been hit by %s." % caller.db.target)
        caller.db.target.msg("|/|r%s fails to block your attack." % caller)

    EvMenu(caller,
           "typeclasses.menu",
           startnode="attack_node",
           auto_quit=False,
           cmd_on_exit=None)
    text = ""
    options = ({"key": "skip", "goto": "skip_attack"})
    return text, options
Ejemplo n.º 16
0
def finish(caller, **kwargs):

    # set base stats
    for stat, base in kwargs['stats'].items():
        _s = caller.stats.get(stat)
        _s.base = base
        caller.stats.set(stat, _s)

    # calc_birthsign and assign
    is_cursed = False
    idx = None
    while 1:
        idx = roll_dice(1, 5) - 1
        if idx < 4:
            break
        is_cursed = True

    warrior_signs = [WarriorSign, LadySign, SteedSign, LordSign]
    mage_signs = [MageSign, ApprenticeSign, AtronachSign, RitualSign]
    thief_signs = [ThiefSign, LoverSign, ShadowSign, TowerSign]
    if kwargs['birthsign']['name'] == 'warrior':
        kwargs['birthsign']['sign'] = warrior_signs[idx](is_cursed)

    elif kwargs['birthsign']['name'] == 'mage':
        kwargs['birthsign']['sign'] = mage_signs[idx](is_cursed)

    elif kwargs['birthsign']['name'] == 'thief':
        kwargs['birthsign']['sign'] = thief_signs[idx](is_cursed)

    # change birthsign
    change_birthsign(caller, kwargs['birthsign']['sign'])
    # set race
    race = copy.deepcopy(get_race(kwargs['race']))
    change_race(caller, race)

    # set gender
    caller.attrs.gender = Attribute('gender', kwargs['gender'])
    caller.msg(kwargs)
    caller.attrs.update()
    caller.full_restore()
    return None, None
Ejemplo n.º 17
0
def block(caller):
    test = caller.db.dexterity + caller.db.brawl
    soak = caller.db.stamina
    counter = 0
    defendpoints = 0
    while (counter < test):
        counter = counter + 1
        roll = roll_dice(1, 10)
        if (roll >= 6):
            defendpoints = defendpoints + 1

    counter = 0
    soakpoints = 0
    while (counter < soak):
        counter = counter + 1
        roll = roll_dice(1, 10)
        if (roll >= 6):
            soakpoints = soakpoints + 1

    caller.db.start_time = 99999999999999999999999
    if (defendpoints > 0):
        tst = damage2
        dmg2 = damage
        dmg = damage
        cnt2 = 0
        while (cnt2 < tst):
            cnt2 = cnt2 + 1
            roll = roll_dice(1, 10)
            if (roll >= 6):
                dmg = dmg + 1

        reduced = dmg - defendpoints
        if (reduced < 0):
            reduced = 0
        if (defendpoints >= dmg2):
            defendpoints = dmg2
            reduced = 0

        if (caller.db.target.db.weapon == 0):
            caller.msg("|/|gYou block %i out of %i of %s's attack points." %
                       (defendpoints, dmg2, caller.db.target))
            caller.msg("|/|g%s causes %i points of damage to you." %
                       (caller.db.target, reduced))
            if (soakpoints > 0):
                caller.msg(
                    "|/|gYou soak %i out of %i points of bashing damage." %
                    (soakpoints, reduced))
            if (reduced - soakpoints > 0):
                caller.msg("|/|gYou lose a total of %i health points." %
                           (reduced - soakpoints))
                caller.db.bashing = caller.db.bashing + (reduced - soakpoints)
            caller.db.target.msg("|/|g%s blocks %i points of your attack." %
                                 (caller, defendpoints))
            caller.db.target.msg(
                "|/|gYou deal %i points of damage with your attack." %
                (reduced))

            if (soakpoints > 0):
                caller.db.target.msg(
                    "|/|g%s soaks %i points of damage from your punch." %
                    (caller, soakpoints))
            if (reduced - soakpoints > 0):
                caller.db.target.msg("|/|g%s loses a total of %i hit points." %
                                     (caller, reduced - soakpoints))

        if (caller.db.target.db.weapon == 1):
            caller.msg("|/|gYou cannot block %s's attack points." %
                       (caller.db.target))
            caller.msg("|/|g%s causes %i points of lethal damage to you." %
                       (caller.db.target, dmg2))
            caller.db.lethal = caller.db.lethal + dmg2
            caller.db.target.msg("|/|g%s can't block your attack." %
                                 (caller, defendpoints))
            caller.db.target.msg("|/|gYou deal %i points of lethal damage." %
                                 (dmg2))

    else:
        caller.msg("|/|rYou have been hit by %s." % caller.db.target)
        caller.db.target.msg("|/|r%s fails to dodge your attack." % caller)

    EvMenu(caller,
           "typeclasses.menu",
           startnode="attack_node",
           auto_quit=False,
           cmd_on_exit=None)
    text = ""
    options = ({"key": "skip", "goto": "skip_attack"})
    return text, options
Ejemplo n.º 18
0
def do_attack(char1, char2):

    char1.msg(dice.roll_dice(1, 6))
    char2.msg(dice.roll_dice(1, 6))
Ejemplo n.º 19
0
 def test_roll_dice(self, mocked_randint):
     # we must import dice here for the mocked randint to apply correctly.
     from evennia.contrib import dice
     self.assertEqual(dice.roll_dice(6, 6, modifier=('+', 4)), mocked_randint()*6 + 4)
     self.assertEqual(dice.roll_dice(6, 6, conditional=('<', 35)), True)
     self.assertEqual(dice.roll_dice(6, 6, conditional=('>', 33)), False)
Ejemplo n.º 20
0
def attack_node(caller):

	healthbar = "|X|[wHealth:"
	total = caller.db.lethal + caller.db.bashing
	for i in range(0,8):
		if i < caller.db.lethal:
			healthbar += " X"
		elif i < total:
			healthbar += " /"
		else:
			healthbar += " 0"
        
	 caller.msg(prompt=healthbar)

	caller.db.start_time = timer()

	attack_script = create_script("typeclasses.attackwait.AttackTime", obj=caller)
	attack_script.attacker(caller)
	attack_script.target(caller.db.target)

	text = ""

	options = ({"key": "|ypunch",
		"desc": "Punch %s" % caller.db.target,
		"goto": "wait",
		"exec": "punch"},
		{"key": "|ykick",
		"desc": "Kick %s" % caller.db.target,
		"goto": "wait",
		"exec": "kick"},
		{"key": "|ywield",
		"desc": "Wield a weapon",
		"goto": "wield",
		"exec": "wield"},
		{"key": "|yskip",
		"desc": "Do nothing",
		"goto": "skip_attack"},)
        if caller.db.attack_not:
            caller.db.mercy = 1
            options += ({"key": "|ymercy",
                      "desc": "Beg for mercy",
                      "goto": "wait",
                      "exec": "mercy_attack"},)
        else:
            options += ({"key": "|yflee",
                      "desc": "Flee from combat.",
                      "goto": "wait",
                      "exec": "flee_attack"},)

	for each in caller.contents:
		if(each.key == caller.db.selected_weapon):
			if(each.db.weapon == 1):
				options += ({"key": "|y" + each.key,
					"desc": "An axe.",
					"goto": "wait",
					"exec": "axe"},)
			if(each.db.weapon == 2):
				options += ({"key": "|y" + each.key,
					"desc": "A knife.",
					"goto": "wait",
					"exec": "knife"},)
			if(each.db.weapon == 3):
				options += ({"key": "|y" + each.key,
					"desc": "A baseball bat.",
					"goto": "wait",
					"exec": "bat"},)
			if(each.db.weapon == 4):
				options += ({"key": "|y" + each.key,
					"desc": "A staff.",
					"goto": "wait",
					"exec": "staff"},)
			if(each.db.weapon == 5):
				options += ({"key": "|y" + each.key,
					"desc": "A sword.",
					"goto": "wait",
					"exec": "katana"},)


	if(caller.db.conscious == 0 and caller.db.alive == 1):
		options = ({"key": "_default",
			"goto": "skip_attack"})

        if(caller.db.move_speed == "freeze"  and caller.db.alive == 1):
                options = ({"key": "_default",
                        "goto": "skip_attack"})

        if(caller.db.attacking == 0):
            init_a = caller.db.wits + caller.db.intimidation
            init_b = caller.db.target.db.manipulation + caller.db.target.db.intimidation
            init_a = init_a + roll_dice(1,10)
            init_b = init_b + roll_dice(1,10)
            if(init_a  < init_b and caller.db.conscious and caller.db.target.db.conscious):
                caller.db.target.msg("|/|r%s is too afraid to fight" % caller.name)
                players = [con for con in caller.location.contents if con.has_player]
                for player in players:
                    if not player.ndb.end_combat:
                        player.msg("%s is too afraid to fight." % caller.name)
                text = ("|rYou are too afraid to fight")

                caller.db.intimidated = 1
                options = ({"key": "_default",
                "goto": "skip_attack"})


	return text, options
Ejemplo n.º 21
0
Archivo: menu.py Proyecto: Treatz/crash
def block(caller):
	test = caller.db.dexterity + caller.db.brawl
	soak = caller.db.stamina
	counter = 0
	defendpoints = 0
	while (counter < test):
		counter = counter + 1
		roll = roll_dice(1, 10)
		if (roll >= 6):
			defendpoints = defendpoints + 1

	counter = 0
	soakpoints = 0
	while (counter < soak):
		counter = counter + 1
		roll = roll_dice(1,10)
		if (roll >= 6):
			soakpoints = soakpoints + 1

	caller.db.start_time = 99999999999999999999999
	if (defendpoints > 0):
		tst = damage2
		dmg2 = damage
		dmg = damage
		cnt2 = 0
		while (cnt2 < tst):
			cnt2 = cnt2 + 1
			roll = roll_dice(1, 10)
			if (roll >= 6):
				dmg = dmg + 1

		reduced =  dmg - defendpoints
		if(reduced < 0):
			reduced = 0
		if(defendpoints >= dmg2):
			defendpoints = dmg2
			reduced = 0

		if(caller.db.target.db.weapon == 0):
			caller.msg("|/|gYou block %i out of %i of %s's attack points." % (defendpoints, dmg2, caller.db.target))
			caller.msg("|/|g%s causes %i points of damage to you." % (caller.db.target, reduced))
			if (soakpoints > 0):
				caller.msg("|/|gYou soak %i out of %i points of bashing damage." % (soakpoints, reduced))
			if (reduced - soakpoints > 0):
				caller.msg("|/|gYou lose a total of %i health points." % (reduced - soakpoints))
				caller.db.bashing = caller.db.bashing + (reduced - soakpoints)
			caller.db.target.msg("|/|g%s blocks %i points of your attack." % (caller, defendpoints))
			caller.db.target.msg("|/|gYou deal %i points of damage with your attack." % (reduced))
	
			if(soakpoints>0):
				caller.db.target.msg("|/|g%s soaks %i points of damage from your punch." % (caller, soakpoints))
			if(reduced-soakpoints > 0):
				caller.db.target.msg("|/|g%s loses a total of %i hit points." % (caller, reduced - soakpoints))

		if(caller.db.target.db.weapon == 1):
			caller.msg("|/|gYou cannot block %s's attack points." % (caller.db.target))
			caller.msg("|/|g%s causes %i points of lethal damage to you." % (caller.db.target, dmg2))
			caller.db.lethal = caller.db.lethal + dmg2
			caller.db.target.msg("|/|g%s can't block your attack." % (caller, defendpoints))
			caller.db.target.msg("|/|gYou deal %i points of lethal damage." % (dmg2))
			
	else:
		caller.msg("|/|rYou have been hit by %s." % caller.db.target)
		caller.db.target.msg("|/|r%s fails to dodge your attack." % caller)

	EvMenu(caller, "typeclasses.menu", startnode="attack_node", auto_quit=False, cmd_on_exit=None)
	text = ""
	options = ({"key": "skip",
		"goto": "skip_attack"})
	return text, options
Ejemplo n.º 22
0
def block(caller):
	test = caller.db.dexterity + caller.db.brawl + caller.db.blessed
	soak = caller.db.stamina + caller.db.blessed
	counter = 0
	defendpoints = 0
	while (counter < test):
		counter = counter + 1
		roll = roll_dice(1, 10)
		if (roll >= 6):
			defendpoints = defendpoints + 1

	counter = 0
	soakpoints = 0
	while (counter < soak):
		counter = counter + 1
		roll = roll_dice(1,10)
		if (roll >= 6):
			soakpoints = soakpoints + 1
	dmg = damage
	caller.db.start_time = 99999999999999999999999
	if (defendpoints > 0):
		tst = damage2
		dmg2 = damage
		cnt2 = 0
		while (cnt2 < tst):
			cnt2 = cnt2 + 1
			roll = roll_dice(1, 10)
			if (roll >= 6):
				dmg = dmg + 1

		reduced =  dmg - defendpoints
		if(reduced < 0):
			reduced = 0
		if(defendpoints >= dmg2):
			defendpoints = dmg2
			reduced = 0

		if(caller.db.target.db.weapon == 0 and caller.db.target.db.kinetic == 0):
			caller.msg("|/|gYou block %i out of %i of %s's attack points." % (defendpoints, dmg2, caller.db.target))
			caller.msg("|/|g%s causes %i points of damage to you." % (caller.db.target, reduced))
			if (soakpoints > reduced):
				soakpoints = reduced
			if (soakpoints > 0):
				caller.msg("|/|gYou soak %i out of %i points of bashing damage." % (soakpoints, reduced))
			if (reduced - soakpoints > 0):
				caller.msg("|/|gYou lose a total of %i health points." % (reduced - soakpoints))
				caller.db.bashing = caller.db.bashing + (reduced - soakpoints)
			caller.db.target.msg("|/|g%s blocks %i points of your attack." % (caller, defendpoints))
			caller.db.target.msg("|/|gYou deal %i points of damage with your attack." % (reduced))
	
			if(soakpoints>0):
				caller.db.target.msg("|/|g%s soaks %i points of damage from your attack." % (caller, soakpoints))
			if(reduced-soakpoints > 0):
				caller.db.target.msg("|/|g%s loses a total of %i hit points." % (caller, reduced - soakpoints))

		if(caller.db.target.db.weapon == 1 or caller.db.target.db.kinetic == 1):
			caller.msg("|/|gYou can't block %s's attack points." % (caller.db.target))
			caller.msg("|/|g%s causes %i points of lethal damage to you." % (caller.db.target, dmg))
			caller.db.lethal = caller.db.lethal + dmg
			caller.db.target.msg("|/|g%s fails to block your attack." % (caller))
			caller.db.target.msg("|/|gYou deal %i points of lethal damage." % (dmg))
			
	else:
		caller.msg("|/|rYou have been hit by %s." % caller.db.target)
		caller.db.target.msg("|/|r%s fails to block your attack." % caller)

		if(caller.db.target.db.weapon == 0 and caller.db.target.db.kinetic == 0):
			caller.msg("|/|g%s causes %i points of damage to you." % (caller.db.target, dmg))
			caller.msg("|/|gYou soak %i out of %i points of bashing damage." % (soakpoints, dmg))
			caller.msg("|/|gYou lose a total of %i health points." % (dmg - soakpoints))
			caller.db.bashing = caller.db.bashing + (dmg - soakpoints)
			caller.db.target.msg("|/|gYou deal %i points of damage with your punch." % (dmg))
			caller.db.target.msg("|/|g%s soaks %i points of damage from your punch." % (caller, soakpoints))
			caller.db.target.msg("|/|g%s loses a total of %i hit points." % (caller, dmg - soakpoints))

		if(caller.db.target.db.weapon == 1 or caller.db.target.db.kinetic == 1):
			caller.msg("|/|g%s causes %i points of lethal damage to you." % (caller.db.target, dmg))
			caller.msg("|/|gYou lose a total of %i health points." % (dmg))
			caller.db.lethal = caller.db.lethal + dmg
			caller.db.target.msg("|/|gYou deal %i points of lethal damage with your attack." % (dmg))
			caller.db.target.msg("|/|g%s loses a total of %i hit points." % (caller, dmg))


	EvMenu(caller, "typeclasses.menu", startnode="attack_node", auto_quit=False, cmd_on_exit=None)
	text = ""
	options = ({"key": "skip",
		"goto": "skip_attack"})
	
	if(caller.db.alive == 0 or caller.db.target.db.alive == 0):
                caller.ndb.end_combat = 0
                caller.db.target.ndb.end_combat = 0
		caller.db.conscious = 1
		caller.db.target.db.conscious = 1
		caller.msg("|rYou are dead!")
		caller.db.target.msg("|r%s is dead!" % caller)
                players = [con for con in caller.location.contents if con.has_player]
                for player in players:
                    if not player.ndb.end_combat:
                        player.msg("%s is dead." % caller.name)
		caller.db.target.ndb._menutree.close_menu()
		caller.ndb._menutree.close_menu()
		text = ""
		options = ()

	return text, options