Ejemplo n.º 1
0
def do_bash(peer, args, target, success):
    combat.start_combat_block()
    if success:
        peer.account.player.send(
            "You send %s flying with a powerful bash!?!?!?\n\r" %
            target.get_name(peer.account.player))
        target.send("%s sends you flying with a powerful bash!\n\r" %
                    peer.account.player.get_name())
        _.send_to_room_except(
            "%s sends %s flying with a powerful bash!\n\r" %
            (peer.account.player.get_name(), target.get_name()),
            peer.account.player.get_room(), [peer, target.peer])
        temp_damage = random.randint(2, 12)
        combat.do_damage(peer.account.player, target, temp_damage, "bash",
                         False)
        combat.start_combat(peer.account.player, target)
    else:
        peer.account.player.send("You fall flat on your face!\n\r")
        target.send("%s falls flat on their face!\n\r" %
                    peer.account.player.get_name())
        _.send_to_room_except(
            "%s falls flat on their face!\n\r" %
            peer.account.player.get_name(), peer.account.player.get_room(),
            [peer, target.peer])
    combat.end_combat_block()
Ejemplo n.º 2
0
def do_flag(hitter, victim, element):
    if not victim:
        return
    if random.randint(0, 10) > 5:
        return
    if "flaming" in element:
        victim.send("You are burned by " + hitter.get_name() +
                    "'s flames.\n\r")
        hitter.send(victim.get_name() + " is burned by your flames.\n\r")
        _.send_to_room_except(
            victim.get_name() + "is burned by " + hitter.get_name() +
            "'s flames.\n\r", hitter.get_room(), [victim.peer, hitter.peer])
        victim.damage(2)
        _.affect_list["blind"].apply_affect(victim, 1)
    if "shocking" in element:
        hitter.send(
            "You shock them with your weapon, but it doesn't seem to have any effect.\n\r"
        )
    if "demon" in element:
        victim.send("You are stricken by the damnation of " +
                    hitter.get_name() + ".\n\r")
        hitter.send(victim.get_name() + " is struck down by hellfire.\n\r")
        _.send_to_room_except(
            victim.get_name() + "is struck down by the damnation of " +
            hitter.get_name() + ".\n\r", hitter.get_room(),
            [victim.peer, hitter.peer])
        victim.damage(2)
        _.affect_list["curse"].apply_affect(victim, 1)
Ejemplo n.º 3
0
 def remove_affect(self):
     if self.remove_string_self != "":
         self.target.send(self.remove_string_self)
     if self.remove_string_others != "":
         _.send_to_room_except(self.remove_string_others % self.target.get_name(), self.target.get_room(), \
                           [self.target.peer,])
     self.target.affects.remove(self)
Ejemplo n.º 4
0
 def lost_concentration(self, char):
     import combat
     char.player.add_lag(self.lag)
     _.send_to_char(char, "You lost your concentration.\n\r")
     _.send_to_room_except("%s utters the words, '%s'.\n\r" % (char.player.get_name(), self.words), \
                           char.player.get_room(), [char,])
     combat.end_combat_block()
Ejemplo n.º 5
0
 def lost_concentration(self, char):
     import combat
     char.player.add_lag(self.lag)
     _.send_to_char(char, "You lost your concentration.\n\r")
     _.send_to_room_except("%s utters the words, '%s'.\n\r" % (char.player.get_name(), self.words), \
                           char.player.get_room(), [char,])
     combat.end_combat_block()
Ejemplo n.º 6
0
 def handle_death(self, villain):
     self.remove_from_combat()
     self.send("You have been KILLED!!\n\r", False)
     _.send_to_room_except("%s is DEAD!!\n\r" % self.get_name(),
                           self.get_room(), [
                               self.peer,
                           ])
     if villain.has_peer():
         for obj in self.inventory:
             villain.send("You get " + obj.get_name() +
                          " from the corpse of " + self.get_name(villain) +
                          "\n\r")
             villain.add_inventory(obj)
             print(self.stats)
             coins = int(self.stats["wealth"])
             villain.change_wealth(coins)
             villain.send("You get " + str(coins % 100) +
                          " silver coins and " + str(int(coins / 100)) +
                          " gold coins from the corpse of " +
                          self.get_name(villain) + "\n\r")
             part = self.stats["parts"][random.randint(
                 0,
                 len(self.stats["parts"]) - 1)]
             villain.send(
                 self.get_name(villain) + self.get_parts_string(part))
     if villain.has_peer() and self.has_peer():
         _.send_to_all("%s suffers defeat at the hands of %s.\n\r" %
                       (self.get_name(), villain.get_name()))
     if self.has_peer():
         self.set_position(_.POS_RESTING)
         self.stats["room"] = _.START_ROOM
         self.stats["hp"] = self.stats["max_hp"]
     else:
         _.mobiles.remove(self)
Ejemplo n.º 7
0
Archivo: login.py Proyecto: csakoda/rdu
def parse_class(peer, input_string):
    import commands
    try:
        input_string = input_string.split()[0]
    except IndexError:
        peer.peer_send("\n\rThat's not a valid class. Choose from the following classes:\n\r" +
                             str(_.class_list) + " ", False, True)
        return

    for c in _.class_list:
        if len(input_string) > 0 and input_string == c[:min(len(c), len(input_string))]:
            peer.account.player.stats["class"] = c
            peer.peer_send("\n\rWelcome to Redemption!\n\rPlease don't feed the mobiles.\n\r\n\r", False, True)
            #  Save new character
            peer.account.player.peer = peer
            peer.account.players.append(peer.account.player.stats["name"])
            print(str(peer.account.players))
            peer.account.player.save()
            peer.account.save()
            peer.game_state = _.STATE_ONLINE
            _.mobiles.append(peer.account.player)
            _.send_to_room_except("%s has entered the game.\n\r" % peer.account.player.get_name(), peer.account.player.get_room(),
                                  [peer,])
            commands.do_look(peer, "")
            break
    else:
        peer.peer_send("\n\rThat's not a valid class. Choose from the following classes:\n\r" +
                             str(_.class_list) + " ", False, True)
Ejemplo n.º 8
0
def do_move(char, direction):
    temp_new_room_vnum = char.player.get_room().exits[direction]
    if temp_new_room_vnum is None:
        _.send_to_char(char, "You can't go that way.\n\r")
        return
    elif temp_new_room_vnum not in [x.vnum for x in _.rooms]:
        _.send_to_char(char, "Illegal room. Contact an immortal.\n\r")
        return

    dir_string = _.get_dir_string(direction)

    if "sneak" not in char.player.get_skills():
        _.send_to_room_except(
            "%s leaves %s.\n\r" % (char.player.stats["name"], dir_string),
            char.player.get_room(), [
                char,
            ])
    char.player.stats["room"] = temp_new_room_vnum
    do_look(char, "")
    if "sneak" not in char.player.get_skills():
        _.send_to_room_except(
            "%s has arrived.\n\r" % char.player.stats["name"],
            char.player.get_room(), [
                char,
            ])
    return
Ejemplo n.º 9
0
def do_wake(peer, args):
    import mobile
    temp_target = peer.account.player
    if len(args.split()) > 0:
        temp_target = mobile.get_mobile_in_room(args.split()[0], peer.account.player.get_room())
    if temp_target is None:
        peer.account.player.send("They aren't here.\n\r")
        return
    temp_position = temp_target.get_position()
    if temp_target.affected_by(_.affect_list["sap"]):
        if temp_target is peer.account.player:
            peer.account.player.send("You can't wake up!\n\r")
        else:
            peer.account.player.send("They won't wake up!\n\r")
        return
    temp_vector = temp_target.peer
    if temp_position == _.POS_SLEEPING:
        temp_vector.peer_send("You wake and stand up.\n\r", False)
        _.send_to_room_except("%s wakes and stands up.\n\r" % temp_target.get_name(), temp_target.get_room(), [temp_vector,])
        temp_target.set_position(_.POS_STANDING)
        do_look(temp_vector, "")
    elif temp_position == _.POS_RESTING and temp_target is peer.account.player:
        temp_vector.peer_send("You stand up.\n\r")
        _.send_to_room_except("%s stands up.\n\r" % temp_target.get_name(), temp_target.get_room(), [temp_vector,])
        temp_target.set_position(_.POS_STANDING)
    else:
        if temp_target is peer.account.player:
            peer.account.player.send("You aren't sleeping.\n\r")
        else:
            peer.account.player.send("They aren't sleeping.\n\r")
Ejemplo n.º 10
0
 def lost_concentration(self, peer):
     import combat
     peer.account.player.add_lag(self.lag)
     peer.account.player.send("You lost your concentration.\n\r")
     _.send_to_room_except("%s utters the words, '%s'.\n\r" % (peer.account.player.get_name(), self.words), \
                           peer.account.player.get_room(), [peer,])
     combat.end_combat_block()
Ejemplo n.º 11
0
def spell_gate(peer, args, target):
    import commands

    try:
        target = mobile.get_mobile(args.split()[0])
    except IndexError:
        peer.account.player.send(
            "You must provide a target for that spell.\n\r")
        return
    if target is None:
        peer.account.player.send("You can't find them.\n\r")
        return
    if target == peer.account.player:
        peer.account.player.send("You can't gate to yourself.\n\r")
        return
    peer.account.player.remove_from_combat()
    _.send_to_room_except(
        "%s steps through a gate and vanishes.\n\r" %
        peer.account.player.get_name(), peer.account.player.get_room(), [
            peer,
        ])
    peer.account.player.send("You step through a gate and vanish.\n\r")
    peer.account.player.stats["room"] = target.get_room().vnum
    _.send_to_room_except(
        "%s has arrived through a gate.\n\r" % peer.account.player.get_name(),
        peer.account.player.get_room(), [
            peer,
        ])
    commands.do_look(peer, "")
Ejemplo n.º 12
0
 def lost_concentration(self, peer):
     import combat
     peer.account.player.add_lag(self.lag)
     peer.account.player.send("You lost your concentration.\n\r")
     _.send_to_room_except("%s utters the words, '%s'.\n\r" % (peer.account.player.get_name(), self.words), \
                           peer.account.player.get_room(), [peer,])
     combat.end_combat_block()
Ejemplo n.º 13
0
def do_hunt(peer, rgs, target, success):
    _.send_to_room_except(peer.account.player.get_name() + " sniffs the air.",
                          peer.account.player.get_room(), [peer])
    myroom = peer.account.player.get_room()
    destroom = target.get_room()
    if myroom == destroom:
        peer.account.player.send(target.get_name() + " is HERE!")
        return
    fringe = []
    for i, j in myroom.exits.items():
        if not j is None:
            fringe.append((get_room_by_vnum(j), i))
    visited = [myroom]

    for room in fringe:
        if room[0] is None:
            #print("NONE")
            pass
        elif room[0] in visited:
            #print("VISITED")
            pass
        elif room[0] is destroom:
            #print("DESTINATION FOUND: ", _.get_dir_string(room[1]))
            peer.account.player.send(target.get_name() + " is " +
                                     _.get_dir_string(room[1]) + " of you.")
            return
        else:
            for i, j in room[0].exits.items():
                if not j is None and not get_room_by_vnum(j) in visited:
                    fringe.append((get_room_by_vnum(j), room[1]))
        visited.append(room[0])
Ejemplo n.º 14
0
    def execute_spell(self, peer, args):

        #  Check in_combat
        if peer.account.player.fighting is not None and not self.in_combat:
            peer.account.player.send(
                "You can't cast that spell in combat.\n\r")
            return

        #  Find target
        if self.target_state == _.TARGET_SELF_ONLY:
            target = peer.account.player
        elif self.target_state == _.TARGET_PREFER_SELF:
            try:
                target = mobile.get_mobile_in_room(
                    args.split()[0], peer.account.player.get_room())
                if target == None:
                    peer.account.player.send("They aren't here.\n\r")
                    return
            except IndexError:
                target = peer.account.player
        elif self.target_state == _.TARGET_PREFER_FIGHTING:
            try:
                target = mobile.get_mobile_in_room(
                    args.split()[0], peer.account.player.get_room())
                if target == None:
                    peer.account.player.send("They aren't here.\n\r")
                    return
            except IndexError:
                if peer.account.player.fighting is None:
                    peer.account.player.send("You aren't fighting anyone.\n\r")
                    return
                else:
                    target = peer.account.player.fighting
        elif self.target_state == _.TARGET_TARGET_ONLY:
            try:
                target = mobile.get_mobile_in_room(
                    args.split()[0], peer.account.player.get_room())
                if target == None:
                    peer.account.player.send("They aren't here.\n\r")
                    return
            except IndexError:
                peer.account.player.send("You must provide a target.\n\r")
                return
        else:
            target = None

        combat.start_combat_block()
        if self.aggro:
            combat.start_combat(peer.account.player, target)
        if random.randint(
                0, 1
        ) == 5:  # -Rework- right now there's no chance of losing concentration
            self.lost_concentration(peer)
            return
        _.send_to_room_except("%s utters the words, '%s'.\n\r" % (peer.account.player.get_name(), self.words), \
                              peer.account.player.get_room(), [peer,])
        self.function(peer, args, target)
        combat.end_combat_block()
        peer.account.player.add_lag(self.lag)
Ejemplo n.º 15
0
 def apply_affect(self, target, duration):
     new_affect = copy.deepcopy(self)
     new_affect.target = target
     new_affect.duration = duration
     target.affects.append(new_affect)
     if self.apply_function is not None:
         self.apply_function(new_affect)
     target.send(self.apply_string_self)
     _.send_to_room_except(self.apply_string_others % target.get_name(), target.get_room(), [target.peer,])
Ejemplo n.º 16
0
def do_sleep(char, args):
    temp_position = char.player.get_position()
    if temp_position == _.POS_SLEEPING:
        _.send_to_char(char, "You're already asleep!\n\r")
    elif temp_position == _.POS_RESTING or temp_position == _.POS_STANDING:
        _.send_to_char(char, "You go to sleep.\n\r")
        _.send_to_room_except("%s goes to sleep.\n\r" % char.player.get_name(), char.player.get_room(), [char,])
        char.player.set_position(_.POS_SLEEPING)
    elif temp_position == _.POS_FIGHTING:
        _.send_to_char(char, "You are still fighting!\n\r")
Ejemplo n.º 17
0
def do_sleep(peer, args):
    temp_position = peer.account.player.get_position()
    if temp_position == _.POS_SLEEPING:
        peer.account.player.send("You're already asleep!\n\r")
    elif temp_position == _.POS_RESTING or temp_position == _.POS_STANDING:
        peer.account.player.send("You go to sleep.\n\r")
        _.send_to_room_except("%s goes to sleep.\n\r" % peer.account.player.get_name(), peer.account.player.get_room(), [peer,])
        peer.account.player.set_position(_.POS_SLEEPING)
    elif temp_position == _.POS_FIGHTING:
        peer.account.player.send("You are still fighting!\n\r")
Ejemplo n.º 18
0
def do_say(char, args):
    if args == "":
        _.send_to_char(char, "What do you want to say?\n\r")
        return
    _.send_to_char(char, "You say '%s'\n\r" % args)
    _.send_to_room_except(
        "%s says '%s'\n\r" % (char.player.stats["name"], args),
        char.player.get_room(), [
            char,
        ])
Ejemplo n.º 19
0
def do_stand(peer, args):
    temp_position = peer.account.player.get_position()
    if temp_position == _.POS_SLEEPING:
        peer.account.player.send("You wake and stand up.\n\r")
        _.send_to_room_except("%s wakes and stands up.\n\r" % peer.account.player.get_name(), peer.account.player.get_room(), [peer,])
        peer.account.player.set_position(_.POS_STANDING)
    elif temp_position == _.POS_RESTING:
        peer.account.player.send("You stand up.\n\r")
        _.send_to_room_except("%s stands up.\n\r" % peer.account.player.get_name(), peer.account.player.get_room(), [peer,])
        peer.account.player.set_position(_.POS_STANDING)
    elif temp_position == _.POS_FIGHTING or temp_position == _.POS_STANDING:
        peer.account.player.send("You are already standing.\n\r")
Ejemplo n.º 20
0
 def handle_death(self, villain):
     self.remove_from_combat()
     _.send_to_char(self.get_peer(), "You have been KILLED!!\n\r", False)
     _.send_to_room_except("%s is DEAD!!\n\r" % self.get_name(), self.get_room(), [self.get_peer(),])
     if villain.has_peer() and self.has_peer():
         _.send_to_all("%s suffers defeat at the hands of %s.\n\r" % (self.get_name(), villain.get_name()))
     if self.has_peer():
         self.set_position(_.POS_RESTING)
         self.stats["room"] = _.START_ROOM
         self.stats["hp"] = self.stats["max_hp"]
     else:
         _.mobiles.remove(self)
Ejemplo n.º 21
0
def do_stand(char, args):
    temp_position = char.player.get_position()
    if temp_position == _.POS_SLEEPING:
        _.send_to_char(char, "You wake and stand up.\n\r")
        _.send_to_room_except("%s wakes and stands up.\n\r" % char.player.get_name(), char.player.get_room(), [char,])
        char.player.set_position(_.POS_STANDING)
    elif temp_position == _.POS_RESTING:
        _.send_to_char(char, "You stand up.\n\r")
        _.send_to_room_except("%s stands up.\n\r" % char.player.get_name(), char.player.get_room(), [char,])
        char.player.set_position(_.POS_STANDING)
    elif temp_position == _.POS_FIGHTING or temp_position == _.POS_STANDING:
        _.send_to_char(char, "You are already standing.\n\r")
Ejemplo n.º 22
0
    def execute_spell(self, peer, args):

        #  Check in_combat
        if peer.account.player.fighting is not None and not self.in_combat:
            peer.account.player.send("You can't cast that spell in combat.\n\r")
            return

        #  Find target
        if self.target_state == _.TARGET_SELF_ONLY:
            target = peer.account.player
        elif self.target_state == _.TARGET_PREFER_SELF:
            try:
                target = mobile.get_mobile_in_room(args.split()[0], peer.account.player.get_room())
                if target == None:
                    peer.account.player.send("They aren't here.\n\r")
                    return
            except IndexError:
                target = peer.account.player
        elif self.target_state == _.TARGET_PREFER_FIGHTING:
            try:
                target = mobile.get_mobile_in_room(args.split()[0], peer.account.player.get_room())
                if target == None:
                    peer.account.player.send("They aren't here.\n\r")
                    return
            except IndexError:
                if peer.account.player.fighting is None:
                    peer.account.player.send("You aren't fighting anyone.\n\r")
                    return
                else:
                    target = peer.account.player.fighting
        elif self.target_state == _.TARGET_TARGET_ONLY:
            try:
                target = mobile.get_mobile_in_room(args.split()[0], peer.account.player.get_room())
                if target == None:
                    peer.account.player.send("They aren't here.\n\r")
                    return
            except IndexError:
                    peer.account.player.send("You must provide a target.\n\r")
                    return
        else:
            target = None

        combat.start_combat_block()
        if self.aggro:
            combat.start_combat(peer.account.player, target)
        if random.randint(0,1) == 5:  # -Rework- right now there's no chance of losing concentration
            self.lost_concentration(peer)
            return
        _.send_to_room_except("%s utters the words, '%s'.\n\r" % (peer.account.player.get_name(), self.words), \
                              peer.account.player.get_room(), [peer,])
        self.function(peer, args, target)
        combat.end_combat_block()
        peer.account.player.add_lag(self.lag)
Ejemplo n.º 23
0
def do_sleep(char, args):
    temp_position = char.player.get_position()
    if temp_position == _.POS_SLEEPING:
        _.send_to_char(char, "You're already asleep!\n\r")
    elif temp_position == _.POS_RESTING or temp_position == _.POS_STANDING:
        _.send_to_char(char, "You go to sleep.\n\r")
        _.send_to_room_except("%s goes to sleep.\n\r" % char.player.get_name(),
                              char.player.get_room(), [
                                  char,
                              ])
        char.player.set_position(_.POS_SLEEPING)
    elif temp_position == _.POS_FIGHTING:
        _.send_to_char(char, "You are still fighting!\n\r")
Ejemplo n.º 24
0
def do_flee(char, args):
    import combat
    if char.player.fighting is None:
        _.send_to_char(char, "You aren't fighting anyone.\n\r")
        return
    if char.player.get_room().random_exit() is None or random.randint(0,4) == 0:
        _.send_to_char(char, "PANIC! You couldn't escape!\n\r")
        return
    else:
        combat.start_combat_block()
        _.send_to_char(char, "You flee from combat!\n\r")  #  -Rework- to make you flee out of the room
        _.send_to_room_except("%s has fled!\n\r" % char.player.get_name(), char.player.get_room(), [char,])
        char.player.remove_from_combat()
        do_move(char, char.player.get_room().random_exit())
        combat.end_combat_block()
Ejemplo n.º 25
0
def do_wake(char, args):
    temp_position = char.player.get_position()
    if char.player.affected_by(_.affect_list["sap"]):
        _.send_to_char(char, "You can't wake up!\n\r")
        return
    if temp_position == _.POS_SLEEPING:
        _.send_to_char(char, "You wake and stand up.\n\r")
        _.send_to_room_except("%s wakes and stands up.\n\r" % char.player.get_name(), char.player.get_room(), [char,])
        char.player.set_position(_.POS_STANDING)
    elif temp_position == _.POS_RESTING:
        _.send_to_char(char, "You stand up.\n\r")
        _.send_to_room_except("%s stands up.\n\r" % char.player.get_name(), char.player.get_room(), [char,])
        char.player.set_position(_.POS_STANDING)
    else:
        _.send_to_char(char, "You aren't sleeping.\n\r")
Ejemplo n.º 26
0
def do_flee(peer, args):
    import combat
    if peer.account.player.fighting is None:
        peer.account.player.send("You aren't fighting anyone.\n\r")
        return
    if peer.account.player.get_room().random_exit() is None or random.randint(0,4) == 0:
        peer.account.player.send("PANIC! You couldn't escape!\n\r")
        return
    else:
        combat.start_combat_block()
        peer.account.player.send("You flee from combat!\n\r")  #  -Rework- to make you flee out of the room
        _.send_to_room_except("%s has fled!\n\r" % peer.account.player.get_name(), peer.account.player.get_room(), [peer,])
        peer.account.player.remove_from_combat()
        do_move(peer, peer.account.player.get_room().random_exit())
        combat.end_combat_block()
Ejemplo n.º 27
0
def do_drop(char, args):
    import item

    try:
        target = args.split()[0]
    except IndexError:
        _.send_to_char(char, "Drop what?\n\r")
        return
    try:
        temp_item = item.get_item_in_inventory(char, target)
        _.send_to_char(char, "You drop %s.\n\r" % temp_item.get_name())
        _.send_to_room_except("%s drops %s.\n\r" % (char.player.get_name(), temp_item.get_name()), char.player.get_room(), [char,])
        char.player.get_room().add_item(temp_item)
        char.player.remove_item(temp_item)
    except AttributeError:
        _.send_to_char(char, "You're not carrying that.\n\r")
Ejemplo n.º 28
0
def do_rest(char, args):
    temp_position = char.player.get_position()
    if temp_position == _.POS_SLEEPING:
        _.send_to_char(char, "You wake up and start resting.\n\r")
        _.send_to_room_except("%s wakes up and starts resting.\n\r" % char.player.get_name(), char.player.get_room(),
                              [char,])
        char.player.set_position(_.POS_RESTING)
    elif temp_position == _.POS_RESTING:
        _.send_to_char(char, "You are already resting.\n\r")
    elif temp_position == _.POS_STANDING:
        _.send_to_char(char, "You rest.\n\r")
        _.send_to_room_except("%s rests.\n\r" % char.player.get_name(), char.player.get_room(),
                              [char,])
        char.player.set_position(_.POS_RESTING)
    elif temp_position == _.POS_STANDING:
        _.send_to_char(char, "You are still fighting!\n\r")
Ejemplo n.º 29
0
def do_drop(peer, args):
    import item

    try:
        target = args.split()[0]
    except IndexError:
        peer.account.player.send("Drop what?\n\r")
        return
    try:
        temp_item = item.get_item_in_inventory(peer, target)
        peer.account.player.send("You drop %s.\n\r" % temp_item.get_name())
        _.send_to_room_except("%s drops %s.\n\r" % (peer.account.player.get_name(), temp_item.get_name()), peer.account.player.get_room(), [peer,])
        peer.account.player.get_room().add_item(temp_item)
        peer.account.player.remove_item(temp_item)
    except AttributeError:
        peer.account.player.send("You're not carrying that.\n\r")
Ejemplo n.º 30
0
def do_remove(peer, args):
    import item

    try:
        target = args.split()[0]
    except IndexError:
        peer.account.player.send("Remove what?\n\r")
        return
    try:
        temp_slot = item.get_item_slot_in_equipment(peer, target)
        peer.account.player.send("You stop using %s.\n\r" % peer.account.player.equipment[temp_slot].get_name())
        _.send_to_room_except("%s stops using %s.\n\r" % (peer.account.player.get_name(), peer.account.player.equipment[temp_slot].get_name()), \
                              peer.account.player.get_room(), [peer,])
        peer.account.player.add_item(peer.account.player.equipment[temp_slot])
        peer.account.player.equipment[temp_slot] = None
    except KeyError:
        peer.account.player.send("You're not wearing that.\n\r")
Ejemplo n.º 31
0
def do_damage(hitter, victim, damage, noun, magical):
    dam_adjective, dam_verb, dam_tag = get_damage_string(damage, magical)
    _.send_to_char(hitter.get_peer(), "Your %s%s %s %%s%s (%s)\n\r" % (dam_adjective, noun, dam_verb,
                                                                    dam_tag, damage), True, False, [victim, ])
    try:
        _.send_to_char(hitter.fighting.get_peer(), "%s's %s%s %s you%s (%s)\n\r" % (hitter.get_name(victim).capitalize(),
                                                                                    dam_adjective, noun, dam_verb,
                                                                                    dam_tag, damage))
    except AttributeError:
        pass
    _.send_to_room_except("%%s's %s%s %s %%s%s (%s)\n\r" % (dam_adjective, noun,
                                                           dam_verb, dam_tag, damage)
                        , hitter.get_room(), [hitter.get_peer(), victim.get_peer()], [hitter, victim])
    victim.damage(damage)  # -Debug- only, should be victim.damage(damage)
    if victim.is_dead():
        victim.handle_death(hitter)
        hitter.handle_kill(victim)
Ejemplo n.º 32
0
def do_rest(peer, args):
    temp_position = peer.account.player.get_position()
    if temp_position == _.POS_SLEEPING:
        peer.account.player.send("You wake up and start resting.\n\r", False)
        _.send_to_room_except("%s wakes up and starts resting.\n\r" % peer.account.player.get_name(), peer.account.player.get_room(),
                              [peer,])
        peer.account.player.set_position(_.POS_RESTING)
        do_look(peer, "")
    elif temp_position == _.POS_RESTING:
        peer.account.player.send("You are already resting.\n\r")
    elif temp_position == _.POS_STANDING:
        peer.account.player.send("You rest.\n\r")
        _.send_to_room_except("%s rests.\n\r" % peer.account.player.get_name(), peer.account.player.get_room(),
                              [peer,])
        peer.account.player.set_position(_.POS_RESTING)
    elif temp_position == _.POS_STANDING:
        peer.account.player.send("You are still fighting!\n\r")
Ejemplo n.º 33
0
def do_remove(char, args):
    import item

    try:
        target = args.split()[0]
    except IndexError:
        _.send_to_char(char, "Remove what?\n\r")
        return
    try:
        temp_slot = item.get_item_slot_in_equipment(char, target)
        _.send_to_char(char, "You stop using %s.\n\r" % char.player.equipment[temp_slot].get_name())
        _.send_to_room_except("%s stops using %s.\n\r" % (char.player.get_name(), char.player.equipment[temp_slot].get_name()), \
                              char.player.get_room(), [char,])
        char.player.add_item(char.player.equipment[temp_slot])
        char.player.equipment[temp_slot] = None
    except KeyError:
        _.send_to_char(char, "You're not wearing that.\n\r")
Ejemplo n.º 34
0
def do_move(char, direction):
    temp_new_room_vnum = char.player.get_room().exits[direction]
    if temp_new_room_vnum is None:
        _.send_to_char(char, "You can't go that way.\n\r")
        return
    elif temp_new_room_vnum not in [x.vnum for x in _.rooms]:
        _.send_to_char(char, "Illegal room. Contact an immortal.\n\r")
        return

    dir_string = _.get_dir_string(direction)

    if "sneak" not in char.player.get_skills():
        _.send_to_room_except("%s leaves %s.\n\r" % (char.player.stats["name"], dir_string), char.player.get_room(), [char,])
    char.player.stats["room"] = temp_new_room_vnum
    do_look(char, "")
    if "sneak" not in char.player.get_skills():
        _.send_to_room_except("%s has arrived.\n\r" % char.player.stats["name"], char.player.get_room(), [char,])
    return
Ejemplo n.º 35
0
def do_remove(char, args):
    import item

    try:
        target = args.split()[0]
    except IndexError:
        _.send_to_char(char, "Remove what?\n\r")
        return
    try:
        temp_slot = item.get_item_slot_in_equipment(char, target)
        _.send_to_char(
            char, "You stop using %s.\n\r" %
            char.player.equipment[temp_slot].get_name())
        _.send_to_room_except("%s stops using %s.\n\r" % (char.player.get_name(), char.player.equipment[temp_slot].get_name()), \
                              char.player.get_room(), [char,])
        char.player.add_item(char.player.equipment[temp_slot])
        char.player.equipment[temp_slot] = None
    except KeyError:
        _.send_to_char(char, "You're not wearing that.\n\r")
Ejemplo n.º 36
0
def do_stand(char, args):
    temp_position = char.player.get_position()
    if temp_position == _.POS_SLEEPING:
        _.send_to_char(char, "You wake and stand up.\n\r")
        _.send_to_room_except(
            "%s wakes and stands up.\n\r" % char.player.get_name(),
            char.player.get_room(), [
                char,
            ])
        char.player.set_position(_.POS_STANDING)
    elif temp_position == _.POS_RESTING:
        _.send_to_char(char, "You stand up.\n\r")
        _.send_to_room_except("%s stands up.\n\r" % char.player.get_name(),
                              char.player.get_room(), [
                                  char,
                              ])
        char.player.set_position(_.POS_STANDING)
    elif temp_position == _.POS_FIGHTING or temp_position == _.POS_STANDING:
        _.send_to_char(char, "You are already standing.\n\r")
Ejemplo n.º 37
0
def do_elemental(hitter, victim, element):
    if not victim:
        return
    if random.randint(0,10) > 5:
        return
    if "fire" in element:
        _.send_to_char(victim.get_peer(), "You are burned by " + hitter.get_name() + "'s flames.\n\r")
        _.send_to_char(hitter.get_peer(), victim.get_name() + " is burned by your flames.\n\r")
        _.send_to_room_except(victim.get_name() + "is burned by " + hitter.get_name() + "'s flames.\n\r",hitter.get_room(),[victim.get_peer(), hitter.get_peer()])
        victim.damage(2)
        _.affect_list["blind"].apply_affect(victim,1)
    if "shocking" in element:
        _.send_to_char(hitter.get_peer(), "You shock them with your weapon, but it doesn't seem to have any effect.\n\r")
    if "demon" in element:
        _.send_to_char(victim.get_peer(), "You are stricken by the damnation of " + hitter.get_name() + ".\n\r")
        _.send_to_char(hitter.get_peer(), victim.get_name() + " is struck down by hellfire.\n\r")
        _.send_to_room_except(victim.get_name() + "is struck down by the damnation of " + hitter.get_name() + ".\n\r",hitter.get_room(),[victim.get_peer(), hitter.get_peer()])
        victim.damage(2)
        _.affect_list["curse"].apply_affect(victim,1)
Ejemplo n.º 38
0
def do_get(peer, args):
    import item

    temp_room = peer.account.player.get_room()
    try:
        target = args.split()[0]
    except IndexError:
        peer.account.player.send("Get what?\n\r")
        return
    if len(peer.account.player.inventory) >= _.MAX_CARRY:
        peer.account.player.send("You can't carry any more.\n\r")
        return
    temp_item = item.get_item_in_room(temp_room, target)
    if temp_item is None:
        peer.account.player.send("You don't see that here.\n\r")
        return
    peer.account.player.send("You get %s.\n\r" % temp_item.get_name())
    _.send_to_room_except("%s gets %s.\n\r" % (peer.account.player.get_name(), temp_item.get_name()), peer.account.player.get_room(), [peer,])
    temp_room.remove_item(temp_item)
    peer.account.player.add_item(temp_item)
Ejemplo n.º 39
0
def do_get(char, args):
    import item

    temp_room = char.player.get_room()
    try:
        target = args.split()[0]
    except IndexError:
        _.send_to_char(char, "Get what?\n\r")
        return
    if len(char.player.inventory) >= _.MAX_CARRY:
        _.send_to_char(char, "You can't carry any more.\n\r")
        return
    temp_item = item.get_item_in_room(temp_room, target)
    if temp_item is None:
        _.send_to_char(char, "You don't see that here.\n\r")
        return
    _.send_to_char(char, "You get %s.\n\r" % temp_item.get_name())
    _.send_to_room_except("%s gets %s.\n\r" % (char.player.get_name(), temp_item.get_name()), char.player.get_room(), [char,])
    temp_room.remove_item(temp_item)
    char.player.add_item(temp_item)
Ejemplo n.º 40
0
def do_damage(hitter, victim, damage, noun, magical):
    dam_adjective, dam_verb, dam_tag = get_damage_string(damage, magical)
    hitter.send(
        "Your %s%s %s %%s%s (%s)\n\r" %
        (dam_adjective, noun, dam_verb, dam_tag, damage), True, False, [
            victim,
        ])
    try:
        hitter.fighting.send("%s's %s%s %s you%s (%s)\n\r" %
                             (hitter.get_name(victim).capitalize(),
                              dam_adjective, noun, dam_verb, dam_tag, damage))
    except AttributeError:
        pass
    _.send_to_room_except(
        "%%s's %s%s %s %%s%s (%s)\n\r" %
        (dam_adjective, noun, dam_verb, dam_tag, damage), hitter.get_room(),
        [hitter.peer, victim.peer], [hitter, victim])
    victim.damage(damage)  # -Debug- only, should be victim.damage(damage)
    if victim.is_dead():
        victim.handle_death(hitter)
        hitter.handle_kill(victim)
Ejemplo n.º 41
0
def do_rest(char, args):
    temp_position = char.player.get_position()
    if temp_position == _.POS_SLEEPING:
        _.send_to_char(char, "You wake up and start resting.\n\r")
        _.send_to_room_except(
            "%s wakes up and starts resting.\n\r" % char.player.get_name(),
            char.player.get_room(), [
                char,
            ])
        char.player.set_position(_.POS_RESTING)
    elif temp_position == _.POS_RESTING:
        _.send_to_char(char, "You are already resting.\n\r")
    elif temp_position == _.POS_STANDING:
        _.send_to_char(char, "You rest.\n\r")
        _.send_to_room_except("%s rests.\n\r" % char.player.get_name(),
                              char.player.get_room(), [
                                  char,
                              ])
        char.player.set_position(_.POS_RESTING)
    elif temp_position == _.POS_STANDING:
        _.send_to_char(char, "You are still fighting!\n\r")
Ejemplo n.º 42
0
def do_wake(char, args):
    temp_position = char.player.get_position()
    if char.player.affected_by(_.affect_list["sap"]):
        _.send_to_char(char, "You can't wake up!\n\r")
        return
    if temp_position == _.POS_SLEEPING:
        _.send_to_char(char, "You wake and stand up.\n\r")
        _.send_to_room_except(
            "%s wakes and stands up.\n\r" % char.player.get_name(),
            char.player.get_room(), [
                char,
            ])
        char.player.set_position(_.POS_STANDING)
    elif temp_position == _.POS_RESTING:
        _.send_to_char(char, "You stand up.\n\r")
        _.send_to_room_except("%s stands up.\n\r" % char.player.get_name(),
                              char.player.get_room(), [
                                  char,
                              ])
        char.player.set_position(_.POS_STANDING)
    else:
        _.send_to_char(char, "You aren't sleeping.\n\r")
Ejemplo n.º 43
0
def spell_gate(peer, args, target):
    import commands

    try:
        target = mobile.get_mobile(args.split()[0])
    except IndexError:
        peer.account.player.send("You must provide a target for that spell.\n\r")
        return
    if target is None:
        peer.account.player.send("You can't find them.\n\r")
        return
    if target == peer.account.player:
        peer.account.player.send("You can't gate to yourself.\n\r")
        return
    peer.account.player.remove_from_combat()
    _.send_to_room_except("%s steps through a gate and vanishes.\n\r" % peer.account.player.get_name(), peer.account.player.get_room(),
                          [peer,])
    peer.account.player.send("You step through a gate and vanish.\n\r")
    peer.account.player.stats["room"] = target.get_room().vnum
    _.send_to_room_except("%s has arrived through a gate.\n\r" % peer.account.player.get_name(), peer.account.player.get_room(),
                          [peer,])
    commands.do_look(peer, "")
Ejemplo n.º 44
0
 def handle_death(self, villain):
     self.remove_from_combat()
     self.send("You have been KILLED!!\n\r", False)
     _.send_to_room_except("%s is DEAD!!\n\r" % self.get_name(), self.get_room(), [self.peer,])
     if villain.has_peer():
         for obj in self.inventory:
             villain.send("You get " + obj.get_name() + " from the corpse of " + self.get_name(villain) + "\n\r")
             villain.add_inventory(obj)
             print(self.stats)
             coins = int(self.stats["wealth"])
             villain.change_wealth(coins)
             villain.send("You get " + str(coins % 100) + " silver coins and " + str(int(coins / 100)) + " gold coins from the corpse of " + self.get_name(villain) + "\n\r")
             part = self.stats["parts"][random.randint(0,len(self.stats["parts"]) - 1)]
             villain.send(self.get_name(villain) + self.get_parts_string(part))
     if villain.has_peer() and self.has_peer():
         _.send_to_all("%s suffers defeat at the hands of %s.\n\r" % (self.get_name(), villain.get_name()))
     if self.has_peer():
         self.set_position(_.POS_RESTING)
         self.stats["room"] = _.START_ROOM
         self.stats["hp"] = self.stats["max_hp"]
     else:
         _.mobiles.remove(self)
Ejemplo n.º 45
0
def parse_class(peer, input_string):
    import commands
    try:
        input_string = input_string.split()[0]
    except IndexError:
        peer.peer_send(
            "\n\rThat's not a valid class. Choose from the following classes:\n\r"
            + str(_.class_list) + " ", False, True)
        return

    for c in _.class_list:
        if len(input_string
               ) > 0 and input_string == c[:min(len(c), len(input_string))]:
            peer.account.player.stats["class"] = c
            peer.peer_send(
                "\n\rWelcome to Redemption!\n\rPlease don't feed the mobiles.\n\r\n\r",
                False, True)
            #  Save new character
            peer.account.player.peer = peer
            peer.account.players.append(peer.account.player.stats["name"])
            print(str(peer.account.players))
            peer.account.player.save()
            peer.account.save()
            peer.game_state = _.STATE_ONLINE
            _.mobiles.append(peer.account.player)
            _.send_to_room_except(
                "%s has entered the game.\n\r" %
                peer.account.player.get_name(), peer.account.player.get_room(),
                [
                    peer,
                ])
            commands.do_look(peer, "")
            break
    else:
        peer.peer_send(
            "\n\rThat's not a valid class. Choose from the following classes:\n\r"
            + str(_.class_list) + " ", False, True)
Ejemplo n.º 46
0
 def wield_weapon(self, weapon):  # -Rework- for brevity
     peer = self.peer
     if self.equipment[_.WEAR_WEAPON] is None:
                 #  Easy, just remove from inventory and equip to that slot
                 self.equipment[_.WEAR_WEAPON] = weapon
                 self.inventory.remove(weapon)
                 #  Eventually we will add messages better tailored to the slot being used
                 peer.account.player.send("You wield %s.\n\r" % weapon.get_name())
                 _.send_to_room_except("%s wields %s.\n\r" % (self.get_name(), weapon.get_name()), \
                                       self.get_room(), [peer,])
         # No luck, so we just remove the item at the given slot and add the new item
     #  Easy, just remove from inventory and equip to that slot
     else:
         self.inventory.append(self.equipment[_.WEAR_WEAPON])
         peer.account.player.send("You stop using %s.\n\r" % self.equipment[_.WEAR_WEAPON].get_name())
         _.send_to_room_except("%s stops using %s.\n\r" % (self.get_name(), self.equipment[_.WEAR_WEAPON].get_name()), \
                               self.get_room(), [peer,])
         self.equipment[_.WEAR_WEAPON] = weapon
         self.inventory.remove(weapon)
         peer.account.player.send("You wield %s.\n\r" % weapon.get_name())
         _.send_to_room_except("%s wields %s.\n\r" % (self.get_name(), weapon.get_name()), \
                               self.get_room(), [peer,])
Ejemplo n.º 47
0
def do_say(peer, args):
    if args == "":
        peer.account.player.send("What do you want to say?\n\r")
        return
    peer.account.player.send("{yYou say '%s'{x\n\r" % args)
    _.send_to_room_except("{y%s says '%s'{x\n\r" % (peer.account.player.stats["name"], args), peer.account.player.get_room(),[peer,])
Ejemplo n.º 48
0
    def wear_armor(self, armor):  # -Rework- for brevity
        #  Presumes an item in your inventory
        peer = self.peer

        if len(armor.wear_loc) <= 0:
            self.send("You cannot wear this item.\n\r")
            return

        for w in armor.wear_loc:
            temp_loc = int(w)
            if temp_loc == _.WEAR_WEAPON:
                self.wield_weapon(armor)
                return
            #  Check if there's an open slot
            if self.equipment[temp_loc] is None:
                #  Easy, just remove from inventory and equip to that slot
                self.equipment[temp_loc] = armor
                self.inventory.remove(armor)
                #  Eventually we will add messages better tailored to the slot being used
                peer.account.player.send("You wear %s on your %s.\n\r" % (armor.get_name(), armor.wear_loc_string()))
                _.send_to_room_except("%s wears %s on their %s.\n\r" % (self.get_name(), armor.get_name(), armor.wear_loc_string()), \
                                      self.get_room(), [peer,])
                return
            #  For a few items, check for a second open slot as well
            if temp_loc == _.WEAR_WRIST:
                if self.equipment[_.WEAR_WRIST2] is None:
                    #  Easy, just remove from inventory and equip to that slot
                    self.equipment[_.WEAR_WRIST2] = armor
                    self.inventory.remove(armor)
                    #  Eventually we will add messages better tailored to the slot being used
                    peer.account.player.send("You wear %s on your %s.\n\r" % (armor.get_name(), armor.wear_loc_string()))
                    _.send_to_room_except("%s wears %s on their %s.\n\r" % (self.get_name(), armor.get_name(), armor.wear_loc_string()), \
                                          self.get_room(), [peer,])
                    return
            if temp_loc == _.WEAR_FLOAT:
                if self.equipment[_.WEAR_FLOAT2] is None:
                    #  Easy, just remove from inventory and equip to that slot
                    self.equipment[_.WEAR_FLOAT2] = armor
                    self.inventory.remove(armor)
                    #  Eventually we will add messages better tailored to the slot being used
                    peer.account.player.send("You wear %s on your %s.\n\r" % (armor.get_name(), armor.wear_loc_string()))
                    _.send_to_room_except("%s wears %s on their %s.\n\r" % (self.get_name(), armor.get_name(), armor.wear_loc_string()), \
                                          self.get_room(), [peer,])
                    return
            if temp_loc == _.WEAR_FINGER:
                if self.equipment[_.WEAR_FINGER2] is None:
                    #  Easy, just remove from inventory and equip to that slot
                    self.equipment[_.WEAR_FINGER2] = armor
                    self.inventory.remove(armor)
                    #  Eventually we will add messages better tailored to the slot being used
                    peer.account.player.send("You wear %s on your %s.\n\r" % (armor.get_name(), armor.wear_loc_string()))
                    _.send_to_room_except("%s wears %s on their %s.\n\r" % (self.get_name(), armor.get_name(), armor.wear_loc_string()), \
                                          self.get_room(), [peer,])
                    return
            if temp_loc == _.WEAR_NECK:
                if self.equipment[_.WEAR_NECK2] is None:
                    #  Easy, just remove from inventory and equip to that slot
                    self.equipment[_.WEAR_NECK2] = armor
                    self.inventory.remove(armor)
                    #  Eventually we will add messages better tailored to the slot being used
                    peer.account.player.send("You wear %s on your %s.\n\r" % (armor.get_name(), armor.wear_loc_string()))
                    _.send_to_room_except("%s wears %s on their %s.\n\r" % (self.get_name(), armor.get_name(), armor.wear_loc_string()), \
                                          self.get_room(), [peer,])
                    return
            # No luck, so we just remove the item at the given slot and add the new item
            #  Easy, just remove from inventory and equip to that slot
            self.inventory.append(self.equipment[temp_loc])
            peer.account.player.send("You stop using %s.\n\r" % self.equipment[temp_loc].get_name())
            _.send_to_room_except("%s stops using %s.\n\r" % (self.get_name(), self.equipment[temp_loc].get_name()), \
                                  self.get_room(), [peer,])
            self.equipment[temp_loc] = armor
            self.inventory.remove(armor)
            #  Eventually we will add messages better tailored to the slot being used
            peer.account.player.send("You wear %s on your %s.\n\r" % (armor.get_name(), armor.wear_loc_string()))
            _.send_to_room_except("%s wears %s on their %s.\n\r" % (self.get_name(), armor.get_name(), armor.wear_loc_string()), \
                                  self.get_room(), [peer,])
Ejemplo n.º 49
0
def do_say(char, args):
    if args == "":
        _.send_to_char(char, "What do you want to say?\n\r")
        return
    _.send_to_char(char, "You say '%s'\n\r" % args)
    _.send_to_room_except("%s says '%s'\n\r" % (char.player.stats["name"], args), char.player.get_room(),[char,])