Exemplo n.º 1
0
 def toHit(self, creatureAttack):
     item = creatureAttack.attack
     weaponFocus = 1 if (self.base.Feats.filter(name='Weapon Focus (%s)'%item.name).count() \
             or (item.baseName and self.base.Feats.filter(name='Weapon Focus (%s)'%item.baseName).count())) else 0
     if item.name == 'Rock' and self.base.Special.filter(
             name__startswith='Rock Throwing (Ex)').count():
         weaponFocus += 1
     weaponFocus += item.bonusToHit
     if item.attackType == pfss.models.MELEE:
         if (not creatureAttack.makePrimary
                 and (item.attackClass == pfss.models.SECONDARY
                      or creatureAttack.makeSecondary) and
             (self.melee.count() > 1 or
              (self.melee.count() == 1 and self.melee.get().count > 1))):
             if self.base.Feats.filter(name='Multiattack').count():
                 return formatNumber(self.meleeBonus - 2 + weaponFocus)
             else:
                 return formatNumber(self.meleeBonus - 5 + weaponFocus)
         else:
             returnText = "%s" % formatNumber(self.meleeBonus + weaponFocus)
             if creatureAttack.noIterative == False and item.attackClass in (
                     pfss.models.LIGHT, pfss.models.ONE_HANDED,
                     pfss.models.TWO_HANDED):
                 iterative = self.BAB - 5
                 while iterative > 0:
                     returnText = "%s/+%s" % (returnText,
                                              (self.meleeBonus +
                                               weaponFocus +
                                               (iterative - self.BAB)))
                     iterative -= 5
                 if creatureAttack.extraAttackAtFullBAB:
                     returnText = "+%s/%s" % (self.meleeBonus + weaponFocus,
                                              returnText)
             return returnText
     elif item.attackType == pfss.models.RANGED:
         if creatureAttack.extraAttackAtFullBAB and self.base.Feats.filter(
                 name='Rapid Shot').count():
             rapidShot = -2
         else:
             rapidShot = 0
         returnText = "%s" % formatNumber(self.rangedBonus + weaponFocus +
                                          rapidShot)
         if creatureAttack.noIterative == False:
             iterative = self.BAB - 5
             while iterative > 0:
                 returnText = "%s/+%s" % (returnText,
                                          (self.rangedBonus + weaponFocus +
                                           rapidShot +
                                           (iterative - self.BAB)))
                 iterative -= 5
             if creatureAttack.extraAttackAtFullBAB:
                 returnText = "+%s/%s" % (self.rangedBonus + weaponFocus +
                                          rapidShot, returnText)
         return returnText
     else:
         return 'Not yet implemented'
Exemplo n.º 2
0
Arquivo: views.py Projeto: qu0zl/pfss
 def firstMeleeAttackDmg(self, AsSole=False, baseOnly=False):
     try:
         item = self.melee[0]
         if baseOnly:
             return u'%s' % item.attack.dmg
         extraDmg = self.meleeDmgBonus(item, AsSole)
         return u'%s%s' % (item.attack.dmg , formatNumber(extraDmg, noZero=True))
     except IndexError:
         return '?x? +?'
Exemplo n.º 3
0
 def firstMeleeAttackDmg(self, AsSole=False, baseOnly=False):
     try:
         item = self.melee[0]
         if baseOnly:
             return u'%s' % item.attack.dmg
         extraDmg = self.meleeDmgBonus(item, AsSole)
         return u'%s%s' % (item.attack.dmg,
                           formatNumber(extraDmg, noZero=True))
     except IndexError:
         return '?x? +?'
Exemplo n.º 4
0
Arquivo: views.py Projeto: qu0zl/pfss
 def toHit(self,creatureAttack):
     item = creatureAttack.attack
     weaponFocus = 1 if (self.base.Feats.filter(name='Weapon Focus (%s)'%item.name).count() \
             or (item.baseName and self.base.Feats.filter(name='Weapon Focus (%s)'%item.baseName).count())) else 0
     if item.name == 'Rock' and self.base.Special.filter(name__startswith='Rock Throwing (Ex)').count():
         weaponFocus += 1
     weaponFocus += item.bonusToHit
     if item.attackType == pfss.models.MELEE:
         if (not creatureAttack.makePrimary and (item.attackClass == pfss.models.SECONDARY or creatureAttack.makeSecondary) and (self.melee.count() > 1 or (self.melee.count()==1 and self.melee.get().count>1))): 
             if self.base.Feats.filter(name='Multiattack').count():
                 return formatNumber(self.meleeBonus-2+weaponFocus)
             else:
                 return formatNumber(self.meleeBonus-5+weaponFocus)
         else:
             returnText = "%s" % formatNumber(self.meleeBonus+weaponFocus)
             if creatureAttack.noIterative == False and item.attackClass in (pfss.models.LIGHT, pfss.models.ONE_HANDED, pfss.models.TWO_HANDED):
                 iterative = self.BAB - 5
                 while iterative > 0:
                     returnText= "%s/+%s" % (returnText, (self.meleeBonus+weaponFocus+(iterative-self.BAB)))
                     iterative -= 5
                 if creatureAttack.extraAttackAtFullBAB:
                     returnText = "+%s/%s" % (self.meleeBonus+weaponFocus,returnText)
             return returnText
     elif item.attackType == pfss.models.RANGED:
         if creatureAttack.extraAttackAtFullBAB and self.base.Feats.filter(name='Rapid Shot').count():
             rapidShot = -2
         else:
             rapidShot = 0
         returnText = "%s" % formatNumber(self.rangedBonus+weaponFocus+rapidShot)
         if creatureAttack.noIterative == False:
             iterative = self.BAB - 5
             while iterative > 0:
                 returnText= "%s/+%s" % (returnText, (self.rangedBonus+weaponFocus+rapidShot+(iterative-self.BAB)))
                 iterative -= 5
             if creatureAttack.extraAttackAtFullBAB:
                 returnText = "+%s/%s" % (self.rangedBonus+weaponFocus+rapidShot,returnText)
         return returnText
     else:
         return 'Not yet implemented'
Exemplo n.º 5
0
 def renderAttack(self,
                  existingText,
                  first,
                  item,
                  extraDmg,
                  exclusive=False):
     attack = item.attack
     output = "%s%s%s%s %s%s (%s%s%s%s)" % (
         existingText, ", " if
         (not first and item.exclusive == exclusive) else " or " if
         (not first and item.exclusive != exclusive) else "",
         "%s x " % item.count if item.count > 1 else "", attack.name,
         self.toHit(item), ' touch' if item.touchAttack else '',
         attack.dmg if item.attack.dCount else '',
         formatNumber(extraDmg, noZero=True) if item.attack.dCount else '',
         "/%s" % attack.crit if attack.crit else '', "%s" %
         ("%s%s" % (' ' if item.attack.dCount else '', item.extraText))
         if item.extraText else '')
     return output
Exemplo n.º 6
0
Arquivo: views.py Projeto: qu0zl/pfss
 def ACcomponents(self):
     if self.base.armourAC or self.DexMod or self.base.naturalAC or self.base.deflectAC or self.base.shieldAC or self.dodgeAC or self.base.Size.ACbonus or self.base.extraACText:
         return "(%s%s%s%s%s%s%s%s)" % ( \
             ("%s armor " % formatNumber(self.base.armourAC)) if self.base.armourAC else "", \
             ("%s deflection " % formatNumber(self.base.deflectAC)) if self.base.deflectAC else "", \
             ("%s Dex " % formatNumber(self.DexMod)) if self.DexMod else "", \
             ("+1 dodge " if self.dodgeAC else ""), \
             ("%s natural " % formatNumber(self.base.naturalAC)) if self.base.naturalAC else "", \
             ("%s shield " % formatNumber(self.base.shieldAC)) if self.base.shieldAC else "", \
             ("%s size " % formatNumber(self.base.Size.ACbonus)) if self.base.Size.ACbonus else "", \
             self.base.extraACText if self.base.extraACText else ''
             )
     else:
         return ''
Exemplo n.º 7
0
 def ACcomponents(self):
     if self.base.armourAC or self.DexMod or self.base.naturalAC or self.base.deflectAC or self.base.shieldAC or self.dodgeAC or self.base.Size.ACbonus or self.base.extraACText:
         return "(%s%s%s%s%s%s%s%s)" % ( \
             ("%s armor " % formatNumber(self.base.armourAC)) if self.base.armourAC else "", \
             ("%s deflection " % formatNumber(self.base.deflectAC)) if self.base.deflectAC else "", \
             ("%s Dex " % formatNumber(self.DexMod)) if self.DexMod else "", \
             ("+1 dodge " if self.dodgeAC else ""), \
             ("%s natural " % formatNumber(self.base.naturalAC)) if self.base.naturalAC else "", \
             ("%s shield " % formatNumber(self.base.shieldAC)) if self.base.shieldAC else "", \
             ("%s size " % formatNumber(self.base.Size.ACbonus)) if self.base.Size.ACbonus else "", \
             self.base.extraACText if self.base.extraACText else ''
             )
     else:
         return ''
Exemplo n.º 8
0
Arquivo: views.py Projeto: qu0zl/pfss
 def renderAttack(self, existingText, first, item, extraDmg, exclusive=False):
     attack = item.attack
     output = "%s%s%s%s %s%s (%s%s%s%s)" % (existingText,", " if (not first and item.exclusive==exclusive) else " or " if (not first and item.exclusive != exclusive) else "", "%s x " % item.count if item.count > 1 else "", attack.name, self.toHit(item), ' touch' if item.touchAttack else '', attack.dmg if item.attack.dCount else '', formatNumber(extraDmg, noZero=True) if item.attack.dCount else '', "/%s" % attack.crit if attack.crit else '', "%s" % ("%s%s" %(' ' if item.attack.dCount else '', item.extraText)) if item.extraText else '')
     return output
Exemplo n.º 9
0
Arquivo: views.py Projeto: qu0zl/pfss
 def CMB(self):
     return formatNumber(self.CMBValue)
Exemplo n.º 10
0
 def CMB(self):
     return formatNumber(self.CMBValue)
Exemplo n.º 11
0
Arquivo: views.py Projeto: qu0zl/pfss
 def Ref(self):
     return formatNumber(self.DexMod+self.base.baseRefSave+self.MiscMod + (self.WisMod if self.base.Special.filter(name='Prescience (Su)').count() else 0))
Exemplo n.º 12
0
Arquivo: views.py Projeto: qu0zl/pfss
 def initiativeText(self):
     return formatNumber(self.initiative)
Exemplo n.º 13
0
 def Will(self):
     return formatNumber(self.WisMod + self.base.baseWillSave +
                         self.MiscMod)
Exemplo n.º 14
0
 def initiativeText(self):
     return formatNumber(self.initiative)
Exemplo n.º 15
0
 def HPcomponents(self):
     return "(%s%s%s)" % (self.HD, self.base.HDtype,
                          formatNumber(
                              (self.ConMod * self.HD) + self.toughness,
                              noZero=True))
Exemplo n.º 16
0
 def Ref(self):
     return formatNumber(self.DexMod + self.base.baseRefSave +
                         self.MiscMod +
                         (self.WisMod if self.base.Special.filter(
                             name='Prescience (Su)').count() else 0))
Exemplo n.º 17
0
Arquivo: views.py Projeto: qu0zl/pfss
 def HPcomponents(self):
     return "(%s%s%s)" % (self.HD,self.base.HDtype, formatNumber((self.ConMod*self.HD)+self.toughness, noZero=True))
Exemplo n.º 18
0
 def Fort(self):
     return formatNumber(self.ConMod + self.base.baseFortSave +
                         self.MiscMod)
Exemplo n.º 19
0
Arquivo: views.py Projeto: qu0zl/pfss
 def Will(self):
     return formatNumber(self.WisMod+self.base.baseWillSave+self.MiscMod)
Exemplo n.º 20
0
Arquivo: views.py Projeto: qu0zl/pfss
 def BABtext(self):
     return formatNumber(self.BAB)
Exemplo n.º 21
0
Arquivo: views.py Projeto: qu0zl/pfss
 def Fort(self):
     return formatNumber(self.ConMod+self.base.baseFortSave+self.MiscMod)
Exemplo n.º 22
0
 def BABtext(self):
     return formatNumber(self.BAB)