generated from Nemesis/Exemple
Star Wars
This commit is contained in:
parent
b51e4e4fd3
commit
e561d0dfaf
1 changed files with 42 additions and 20 deletions
62
asmodee.py
62
asmodee.py
|
@ -52,7 +52,7 @@ class Parser: #Pour parser la ligne de commande
|
||||||
self._mtch = ""
|
self._mtch = ""
|
||||||
self._room = room
|
self._room = room
|
||||||
self._arg = {}
|
self._arg = {}
|
||||||
self._option = [False,False,False,0,0,0,0,0,False,0,0]
|
self._option = [False,False,False,0,0,0,0,0,False,0,0,False]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def str(self):
|
def str(self):
|
||||||
|
@ -222,7 +222,8 @@ def roll(result,type,explosif,nb,f,noadd,ars,relance,mitige):
|
||||||
#print("fin roll " + str(result) + " " + str(roll) + " " + str(new))
|
#print("fin roll " + str(result) + " " + str(roll) + " " + str(new))
|
||||||
return (result,roll,new)
|
return (result,roll,new)
|
||||||
|
|
||||||
def rolls(result,jet,type,nb,explosif,noadd,wild,f,g,ars,relance,mitige):
|
def rolls(result,jet,type,nb,explosif,noadd,wild,f,g,ars,relance,mitige,z):
|
||||||
|
y = 0
|
||||||
total = 0
|
total = 0
|
||||||
allresult = []
|
allresult = []
|
||||||
if (nb > 10000):
|
if (nb > 10000):
|
||||||
|
@ -231,13 +232,23 @@ def rolls(result,jet,type,nb,explosif,noadd,wild,f,g,ars,relance,mitige):
|
||||||
if (tmp):
|
if (tmp):
|
||||||
jet += str(nb)+"d"+str(type)
|
jet += str(nb)+"d"+str(type)
|
||||||
#print(jet)
|
#print(jet)
|
||||||
for _ in range(nb):
|
for i in range(nb):
|
||||||
new = 0
|
new = 0
|
||||||
result, res1, new = roll(result,type,explosif,nb,f,noadd,ars,relance,mitige)
|
# Star Wars
|
||||||
allresult.append(res1)
|
if (z == True && i == 0):
|
||||||
|
result, res1, new = roll(result,type,True,nb,f,noadd,ars,relance,mitige)
|
||||||
|
allresult.append(res1)
|
||||||
|
if (res1 == 1):
|
||||||
|
y = 1
|
||||||
|
# Autre
|
||||||
|
else:
|
||||||
|
result, res1, new = roll(result,type,explosif,nb,f,noadd,ars,relance,mitige)
|
||||||
|
allresult.append(res1)
|
||||||
|
# Tant qu'il faut relancer
|
||||||
while (new == 1):
|
while (new == 1):
|
||||||
result, res1, new = roll(result,type,explosif,nb,f,noadd,ars,relance,mitige)
|
result, res1, new = roll(result,type,explosif,nb,f,noadd,ars,relance,mitige)
|
||||||
allresult.append(res1)
|
allresult.append(res1)
|
||||||
|
# Wild die de Savage Worlds
|
||||||
if (wild != 0):
|
if (wild != 0):
|
||||||
jet += "w" + str(wild)
|
jet += "w" + str(wild)
|
||||||
result, res1, new = roll(result,wild,wild!=1,nb if nb else 0,f,noadd,ars,relance,mitige)
|
result, res1, new = roll(result,wild,wild!=1,nb if nb else 0,f,noadd,ars,relance,mitige)
|
||||||
|
@ -245,6 +256,10 @@ def rolls(result,jet,type,nb,explosif,noadd,wild,f,g,ars,relance,mitige):
|
||||||
result += 'w'
|
result += 'w'
|
||||||
#print(allresult)
|
#print(allresult)
|
||||||
allresult.sort(reverse=True)
|
allresult.sort(reverse=True)
|
||||||
|
# 1 au de joker de Star Wars
|
||||||
|
if (y == 1):
|
||||||
|
del allresult[-1]
|
||||||
|
del allresult[0]
|
||||||
for i in range((len(allresult)) if (g == 0 and ((f != 0 and noadd) or not noadd)) else (0 if (noadd and f == 0) else g)):
|
for i in range((len(allresult)) if (g == 0 and ((f != 0 and noadd) or not noadd)) else (0 if (noadd and f == 0) else g)):
|
||||||
if (g == 0 or len(allresult) >= g):
|
if (g == 0 or len(allresult) >= g):
|
||||||
total += allresult[i] if allresult[i] else 0
|
total += allresult[i] if allresult[i] else 0
|
||||||
|
@ -270,25 +285,28 @@ def entryPoint(room, event):
|
||||||
|
|
||||||
print(text)
|
print(text)
|
||||||
if (parser.eat(":roll",1)):
|
if (parser.eat(":roll",1)):
|
||||||
parser.option = [False,False,False,0,0,0,0,0,False,0,0]
|
parser.option = [False,False,False,0,0,0,0,0,False,0,0,False]
|
||||||
rollXPoint()
|
rollXPoint()
|
||||||
elif (parser.eat(":dom",1)):
|
elif (parser.eat(":dom",1)):
|
||||||
parser.option = [True,False,True,0,0,0,4,4,False,0,0]
|
parser.option = [True,False,True,0,0,0,4,4,False,0,0,False]
|
||||||
rollXPoint()
|
rollXPoint()
|
||||||
elif (parser.eat(":sw",1)):
|
elif (parser.eat(":sw",1)):
|
||||||
parser.option = [True,True,True,0,0,0,4,4,False,0,0]
|
parser.option = [True,True,True,0,0,0,4,4,False,0,0,False]
|
||||||
rollXPoint()
|
rollXPoint()
|
||||||
elif (parser.eat(":ars",1)):
|
elif (parser.eat(":ars",1)):
|
||||||
parser.option = [False,True,True,0,0,0,0,0,True,0,0]
|
parser.option = [False,True,True,0,0,0,0,0,True,0,0,False]
|
||||||
rollXPoint()
|
rollXPoint()
|
||||||
elif (parser.eat(":des",1)):
|
elif (parser.eat(":des",1)):
|
||||||
parser.option = [False,True,True,0,10,0,0,0,False,0,0]
|
parser.option = [False,True,True,0,10,0,0,0,False,0,0,False]
|
||||||
rollXPoint()
|
rollXPoint()
|
||||||
elif (parser.eat(":wod",1)):
|
elif (parser.eat(":wod",1)):
|
||||||
parser.option = [False,True,True,0,8,0,0,0,False,10,0]
|
parser.option = [False,True,True,0,8,0,0,0,False,10,0,False]
|
||||||
rollXPoint()
|
rollXPoint()
|
||||||
elif (parser.eat(":owod",1)):
|
elif (parser.eat(":owod",1)):
|
||||||
parser.option = [False,True,True,0,6,0,0,0,False,10,1]
|
parser.option = [False,True,True,0,6,0,0,0,False,10,1,False]
|
||||||
|
rollXPoint()
|
||||||
|
elif (parser.eat(":star",1)):
|
||||||
|
parser.option = [False,False,True,0,0,0,0,0,False,0,0,True]
|
||||||
rollXPoint()
|
rollXPoint()
|
||||||
else:
|
else:
|
||||||
parser.arg["error"] = True
|
parser.arg["error"] = True
|
||||||
|
@ -381,6 +399,10 @@ def rollOptionPoint():
|
||||||
parser.option[10] = 1
|
parser.option[10] = 1
|
||||||
elif (parser.eat("#[Mm]",1)):
|
elif (parser.eat("#[Mm]",1)):
|
||||||
parser.option[10] = 0
|
parser.option[10] = 0
|
||||||
|
elif (parser.eat("[Zz]",1)):
|
||||||
|
parser.option[11] = True
|
||||||
|
elif (parser.eat("#[Zz]",1)):
|
||||||
|
parser.option[11] = False
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
@ -388,7 +410,7 @@ def dupli(orig):
|
||||||
salon = orig.room
|
salon = orig.room
|
||||||
orig.room = None
|
orig.room = None
|
||||||
nouv = copy.deepcopy(orig)
|
nouv = copy.deepcopy(orig)
|
||||||
nouv.option = [orig.option[0],orig.option[1],orig.option[2],orig.option[3],orig.option[4],orig.option[5],orig.option[6],orig.option[7],orig.option[8],orig.option[9],orig.option[10]]
|
nouv.option = [orig.option[0],orig.option[1],orig.option[2],orig.option[3],orig.option[4],orig.option[5],orig.option[6],orig.option[7],orig.option[8],orig.option[9],orig.option[10],orig.option[11]]
|
||||||
orig.room = salon
|
orig.room = salon
|
||||||
nouv.room = salon
|
nouv.room = salon
|
||||||
return nouv
|
return nouv
|
||||||
|
@ -422,7 +444,7 @@ def rollPlusMoinsPoint():
|
||||||
jet = ""
|
jet = ""
|
||||||
rollOptionPoint()
|
rollOptionPoint()
|
||||||
#print(parser.option)
|
#print(parser.option)
|
||||||
exp,noa,ver,will,f,g,s,d,ars,r,m = parser.option
|
exp,noa,ver,will,f,g,s,d,ars,r,m,z = parser.option
|
||||||
rollEntityPoint()
|
rollEntityPoint()
|
||||||
#print("de " + str(parser.arg.get("roll_nb",None)) + "|" + str(parser.arg.get("roll_typ",None)))
|
#print("de " + str(parser.arg.get("roll_nb",None)) + "|" + str(parser.arg.get("roll_typ",None)))
|
||||||
if (not parser.arg["error"]):
|
if (not parser.arg["error"]):
|
||||||
|
@ -431,9 +453,9 @@ def rollPlusMoinsPoint():
|
||||||
result += "-"
|
result += "-"
|
||||||
if (parser.arg.get("roll_typ",None) or parser.arg.get("roll_wil",None)):
|
if (parser.arg.get("roll_typ",None) or parser.arg.get("roll_wil",None)):
|
||||||
result += "("
|
result += "("
|
||||||
exp2,noa2,ver2,will2,f2,g2,s2,d2,ars2,r2,m2 = parser.option
|
exp2,noa2,ver2,will2,f2,g2,s2,d2,ars2,r2,m2,z2 = parser.option
|
||||||
parser.option = [exp,noa,ver,will,f,g,s,d,ars,r,m]
|
parser.option = [exp,noa,ver,will,f,g,s,d,ars,r,m,z]
|
||||||
result, res1, jet = rolls(result,jet,parser.arg.get("roll_typ",None),parser.arg.get("roll_nb",None),exp2,noa2,will2,f2,g2,ars2,r2,m2)
|
result, res1, jet = rolls(result,jet,parser.arg.get("roll_typ",None),parser.arg.get("roll_nb",None),exp2,noa2,will2,f2,g2,ars2,r2,m2,z2)
|
||||||
result += " = " + str(res1) + ")"
|
result += " = " + str(res1) + ")"
|
||||||
else:
|
else:
|
||||||
jet += str(parser.arg.get("roll_nb",None))
|
jet += str(parser.arg.get("roll_nb",None))
|
||||||
|
@ -452,9 +474,9 @@ def rollPlusMoinsPoint():
|
||||||
result += " + " if parser.arg.get("roll_sig",True) else " - "
|
result += " + " if parser.arg.get("roll_sig",True) else " - "
|
||||||
if (parser.arg.get("roll_typ",None) or parser.arg.get("roll_wil",None)):
|
if (parser.arg.get("roll_typ",None) or parser.arg.get("roll_wil",None)):
|
||||||
result += "("
|
result += "("
|
||||||
exp2,noa2,ver2,will2,f2,g2,s2,d2,ars2,r2,m2 = parser.option
|
exp2,noa2,ver2,will2,f2,g2,s2,d2,ars2,r2,m2,z2 = parser.option
|
||||||
parser.option = [exp,noa,ver,will,f,g,s,d,ars,r,m]
|
parser.option = [exp,noa,ver,will,f,g,s,d,ars,r,m,z]
|
||||||
result, res2, jet = rolls(result,jet,parser.arg.get("roll_typ",None),parser.arg.get("roll_nb",None),exp2,noa2,will2,f2,g2,ars2,r2,m2)
|
result, res2, jet = rolls(result,jet,parser.arg.get("roll_typ",None),parser.arg.get("roll_nb",None),exp2,noa2,will2,f2,g2,ars2,r2,m2,z2)
|
||||||
result += " = " + str(res2) + ")"
|
result += " = " + str(res2) + ")"
|
||||||
else:
|
else:
|
||||||
jet += str(parser.arg.get("roll_nb",None))
|
jet += str(parser.arg.get("roll_nb",None))
|
||||||
|
|
Loading…
Reference in a new issue