Пример #1
0
def generate_npc( species=None, job=None, gender=None, rank=None, team=None, upgrade=False, fac=None ):
    if not species:
        species = choose_faction_appropriate( fac, characters.PC_SPECIES )
    if not gender:
        gender = random.randint(0,1)
    if not rank:
        rank = min(random.randint(1,10),random.randint(1,10))

    npc = base.NPCharacter( species=species(), gender=gender )
    npc.roll_stats()
    npc.team = team

    if not job:
        choices = chargen.get_possible_levels( npc ) + chargen.get_possible_levels( npc, NPC_CLASSES )
        job = choose_faction_appropriate( fac, choices )

    if not job.can_take_level( npc ):
        tries = 100
        while ( tries > 0 ) and not job.can_take_level( npc ):
            npc.roll_stats()
            tries += -1

    ji = job( rank=rank, pc=npc )
    npc.levels.append( ji )
    chargen.give_starting_equipment( npc )
    npc.tags.append( context.CHAR_NPC )

    npc.name = gen_monster_name(npc)
    npc.choose_random_spells()
    npc.gold = treasuretype.gold_for_rank( rank )

    if upgrade:
        upgrade_equipment( npc, rank )            

    return npc
Пример #2
0
def generate_boss( basemon, target_rank, team=None ):
    boss = basemon(team=team)
    if boss.ENC_LEVEL < target_rank:
        boss.levels.append( base.Terror( int((target_rank-boss.ENC_LEVEL)*1.5), boss ))
    boss.ENC_LEVEL = max(target_rank,boss.ENC_LEVEL)
    name = gen_monster_name( boss )
    boss.monster_name, boss.name = boss.name, name
    for t in range( target_rank + 3 ):
        boss.statline[ random.choice( stats.PRIMARY_STATS ) ] += 1
    if hasattr( boss, "gold" ):
        gp = boss.gold
    else:
        gp = 0
    boss.gold = gp + treasuretype.gold_for_rank( target_rank , 10 )
    return boss