~ryanprior/+junk/python-srd

« back to all changes in this revision

Viewing changes to srd/phb.py

  • Committer: Ryan Prior
  • Date: 2010-12-10 22:05:08 UTC
  • Revision ID: ryanprior@gmail.com-20101210220508-8cs3nu9454hksvv2
initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from srd.dnd import Weapon
 
2
 
 
3
# phb weapons
 
4
 
 
5
# todo: ranged weapons
 
6
# todo: add weapon special abilities
 
7
 
 
8
gauntlet = Weapon(
 
9
  name = "gauntlet",
 
10
  cost = 2,
 
11
  damage = "1d3",
 
12
  weight = 1,
 
13
  damage_types = ("bludgeoning",),
 
14
  light = True,
 
15
)
 
16
unarmed_strike = Weapon(
 
17
  name = "unarmed strike",
 
18
  damage = "1d3",
 
19
  damage_types = ("bludgeoning",),
 
20
  light = True,
 
21
)
 
22
 
 
23
dagger = Weapon(
 
24
  name = "dagger",
 
25
  cost = 2,
 
26
  damage = "1d4",
 
27
  crit = 19,
 
28
  weight = 1,
 
29
  damage_types = ("slashing", "piercing",),
 
30
  light = True,
 
31
  # todo range increment
 
32
)
 
33
dagger_punching = Weapon(
 
34
  name = "punching dagger",
 
35
  sort_name = "dagger, punching",
 
36
  cost = 2,
 
37
  damage = "1d4",
 
38
  multiplier = 3,
 
39
  weight = 1,
 
40
  damage_types = ("piercing",),
 
41
  light = True,
 
42
)
 
43
gauntlet_spiked = Weapon(
 
44
  name = "spiked gauntlet",
 
45
  sort_name = "gauntlet, spiked",
 
46
  cost = 5,
 
47
  damage = "1d4",
 
48
  weight = 1,
 
49
  damage_types = ("piercing",),
 
50
  light = True,
 
51
)
 
52
 
 
53
mace_light = Weapon(
 
54
  name = "light mace",
 
55
  sort_name = "mace, light",
 
56
  cost = 5,
 
57
  damage = "1d6",
 
58
  weight = 4,
 
59
  damage_types = ("bludgeoning",),
 
60
  light = True,
 
61
)
 
62
 
 
63
sickle = Weapon(
 
64
  name = "sickle",
 
65
  cost = 6,
 
66
  damage = "1d6",
 
67
  weight = 2,
 
68
  damage_types = ("slashing",),
 
69
  light = True,
 
70
)
 
71
 
 
72
club = Weapon(
 
73
  name = "club",
 
74
  damage = "1d6",
 
75
  weight = 3,
 
76
  damage_types = ("bludgeoning",),
 
77
  # todo range increment
 
78
)
 
79
 
 
80
mace_heavy = Weapon(
 
81
  name = "heavy mace",
 
82
  sort_name = "mace, heavy",
 
83
  cost = 12,
 
84
  damage = "1d8",
 
85
  weight = 8,
 
86
  damage_types = ("bludgeoning",),
 
87
)
 
88
 
 
89
morningstar = Weapon(
 
90
  name = "morningstar",
 
91
  cost = 8,
 
92
  damage = "1d8",
 
93
  weight = 6,
 
94
  damage_types = ("bludgeoning","piercing",),
 
95
)
 
96
 
 
97
shortspear = Weapon(
 
98
  name = "shortspear",
 
99
  cost = 1,
 
100
  damage = "1d6",
 
101
  weight = 3,
 
102
  damage_types = ("piercing",),
 
103
  # todo range increment
 
104
)
 
105
 
 
106
longspear = Weapon(
 
107
  name = "longspear",
 
108
  cost = 5,
 
109
  damage = "1d8",
 
110
  multiplier = 3,
 
111
  weight = 9,
 
112
  damage_types = ("piercing",),
 
113
  two_handed = True,
 
114
)
 
115
 
 
116
quarterstaff = Weapon(
 
117
  name = "quarterstaff",
 
118
  damage = "1d6",
 
119
  weight = 4,
 
120
  damage_types = ("bludgeoning",),
 
121
  offhand = Weapon(
 
122
    name = "quarterstaff",
 
123
    damage = "1d6",
 
124
    damage_types = ("bludgeoning",),
 
125
    light = True
 
126
  ),
 
127
)
 
128
 
 
129
spear = Weapon(
 
130
  name = "spear",
 
131
  cost = 2,
 
132
  damage = "1d8",
 
133
  multiplier = 3,
 
134
  weight = 6,
 
135
  damage_types = ("piercing",),
 
136
  # todo range increment
 
137
  two_handed = True,
 
138
)
 
139
 
 
140
#todo heavy crossbow
 
141
 
 
142
#todo light crossbow
 
143
 
 
144
#todo dart
 
145
 
 
146
#todo javalin
 
147
 
 
148
#todo sling
 
149
 
 
150
axe_throwing = Weapon(
 
151
  name = "throwing axe",
 
152
  sort_name = "axe, throwing",
 
153
  cost = 8,
 
154
  damage = "1d6",
 
155
  weight = 2,
 
156
  #todo range increment
 
157
  damage_types = ("slashing",),
 
158
  light = True,
 
159
)
 
160
 
 
161
hammer_light = Weapon(
 
162
  name = "light warhammer",
 
163
  sort_name = "hammer, light",
 
164
  cost = 1,
 
165
  damage = "1d4",
 
166
  weight = 2,
 
167
  #todo range increment
 
168
  damage_types = ("bludgeoning",),
 
169
  light = True,
 
170
)
 
171
 
 
172
handaxe = Weapon(
 
173
  name = "handaxe",
 
174
  cost = 6,
 
175
  damage = "1d6",
 
176
  multiplier = 3,
 
177
  weight = 3,
 
178
  damage_types = ("slashing",),
 
179
  light = True,
 
180
)
 
181
 
 
182
kukri = Weapon(
 
183
  name = "kukri",
 
184
  cost = 8,
 
185
  damage = "1d4",
 
186
  crit = 18,
 
187
  weight = 2,
 
188
  damage_types = ("slashing",),
 
189
  light = True,
 
190
)
 
191
 
 
192
pick_light = Weapon(
 
193
  name = "light pick",
 
194
  sort_name = "pick, light",
 
195
  cost = 4,
 
196
  damage = "1d4",
 
197
  multiplier = 4,
 
198
  weight = 3,
 
199
  damage_types = ("piercing",),
 
200
  light = True,
 
201
)
 
202
 
 
203
sap = Weapon(
 
204
  name = "sap",
 
205
  cost = 1,
 
206
  damage = "1d6",
 
207
  # todo nonlethal damage
 
208
  weight = 2,
 
209
  damage_types = ("bludgeoning",),
 
210
  light = True,
 
211
)
 
212
 
 
213
shield_light = Weapon(
 
214
  name = "shield bash",
 
215
  sort_name = "shield, light",
 
216
  #todo cost elsewhere
 
217
  damage = "1d3",
 
218
  #todo weight elsewhere
 
219
  damage_types = ("bludgeoning",),
 
220
  light = True,
 
221
)
 
222
 
 
223
spiked_armor = Weapon(
 
224
  name = "armor spikes",
 
225
  sort_name = "spiked armor",
 
226
  #todo cost elsewhere
 
227
  damage = "1d6",
 
228
  #todo weight elsewhere
 
229
  damage_types = ("piercing",),
 
230
  light = True
 
231
)
 
232
 
 
233
spiked_shield_light = Weapon(
 
234
  name = "spiked shield bash",
 
235
  sort_name = "spiked shield, light",
 
236
  #todo cost elsewhere
 
237
  damage = "1d4",
 
238
  #todo weight elsewhere
 
239
  damage_types = ("piercing",),
 
240
  light = True
 
241
)
 
242
 
 
243
sword_short = Weapon(
 
244
  name = "shortsword",
 
245
  sort_name = "sword, short",
 
246
  cost = 10,
 
247
  damage = "1d6",
 
248
  crit = 19,
 
249
  weight = 2,
 
250
  damage_types = ("slashing",),
 
251
  light = True
 
252
)
 
253
 
 
254
battleaxe = Weapon(
 
255
  name = "battleaxe",
 
256
  cost = 10,
 
257
  damage = "1d8",
 
258
  multiplier = 3,
 
259
  weight = 6,
 
260
  damage_types = ("slashing",),
 
261
)
 
262
 
 
263
flail = Weapon(
 
264
  name = "flail",
 
265
  cost = 8,
 
266
  damage = "1d8",
 
267
  weight = 5,
 
268
  damage_types = ("bludgeoning",),
 
269
)
 
270
 
 
271
longsword = Weapon(
 
272
  name = "longsword",
 
273
  cost = 15,
 
274
  damage = "1d8",
 
275
  crit = 19,
 
276
  weight = 4,
 
277
  damage_types = ("slashing",),
 
278
)
 
279
 
 
280
pick_heavy = Weapon(
 
281
  name = "heavy pick",
 
282
  sort_name = "pick, heavy",
 
283
  cost = 8,
 
284
  damage = "1d6",
 
285
  multiplier = 4,
 
286
  weight = 6,
 
287
  damage_types = ("piercing",),
 
288
)
 
289
 
 
290
rapier = Weapon(
 
291
  name = "rapier",
 
292
  cost = 20,
 
293
  damage = "1d6",
 
294
  crit = 18,
 
295
  weight = 2,
 
296
  damage_types = ("piercing",),
 
297
)
 
298
 
 
299
scimitar = Weapon(
 
300
  name = "scimitar",
 
301
  cost = 15,
 
302
  damage = "1d6",
 
303
  crit = 18,
 
304
  weight = 4,
 
305
  damage_types = ("slashing",),
 
306
)
 
307
 
 
308
shield_heavy = Weapon(
 
309
  name = "heavy shield",
 
310
  sort_name = "shield, heavy",
 
311
  #todo cost elsewhere
 
312
  damage = "1d4",
 
313
  #todo weight elsewhere
 
314
  damage_types = ("bludgeoning",),
 
315
)
 
316
 
 
317
spiked_shield_heavy = Weapon(
 
318
  name = "heavy spiked shield",
 
319
  sort_name = "spiked shield, heavy",
 
320
  #todo cost elsewhere
 
321
  damage = "1d6",
 
322
  #todo weight elsewhere
 
323
  damage_types = ("piercing",),
 
324
)
 
325
 
 
326
trident = Weapon(
 
327
  name = "trident",
 
328
  cost = 15,
 
329
  damage = "1d8",
 
330
  #todo range increment
 
331
  weight = 4,
 
332
  damage_types = ("piercing",),
 
333
)
 
334
 
 
335
warhammer = Weapon(
 
336
  name = "warhammer",
 
337
  cost = 12,
 
338
  damage = "1d8",
 
339
  multiplier = 3,
 
340
  weight = 5,
 
341
  damage_types = ("bludgeoning",),
 
342
)
 
343
 
 
344
falchion = Weapon(
 
345
  name = "falchion",
 
346
  cost=75,
 
347
  damage = "2d4",
 
348
  crit = 18,
 
349
  multiplier = 3,
 
350
  weight=8,
 
351
  damage_types = ("slashing",),
 
352
  two_handed = True,
 
353
)
 
354
 
 
355
glaive = Weapon(
 
356
  name = "glaive",
 
357
  cost = 8,
 
358
  damage = "1d10",
 
359
  multiplier = 3,
 
360
  weight = 10,
 
361
  damage_types = ("slashing",),
 
362
  two_handed = True,
 
363
)
 
364
 
 
365
greataxe = Weapon(
 
366
  name = "greataxe",
 
367
  cost = 20,
 
368
  damage = "1d12",
 
369
  multiplier = 3,
 
370
  weight = 12,
 
371
  damage_types = ("slashing",),
 
372
  two_handed = True,
 
373
)
 
374
 
 
375
greatclub = Weapon(
 
376
  name = "greatclub",
 
377
  cost = 5,
 
378
  damage = "1d10",
 
379
  weight = 8,
 
380
  damage_types = ("bludgeoning",),
 
381
  two_handed = True,
 
382
)
 
383
 
 
384
flail_heavy = Weapon(
 
385
  name = "heavy flail",
 
386
  cost = 15,
 
387
  damage = "1d10",
 
388
  crit = 19,
 
389
  weight = 10,
 
390
  damage_types = ("bludgeoning"),
 
391
  two_handed = True,
 
392
)
 
393
 
 
394
greatsword = Weapon(
 
395
  name = "greatsword",
 
396
  cost = 50,
 
397
  damage = "2d6",
 
398
  crit = 19,
 
399
  weight = 8,
 
400
  damage_types = ("slashing"),
 
401
  two_handed = True,
 
402
)
 
403
 
 
404
guisarme = Weapon(
 
405
  name = "guisarme",
 
406
  cost = 9,
 
407
  damage = "2d4",
 
408
  multiplier = 3,
 
409
  weight = 12,
 
410
  damage_types = ("slashing",),
 
411
  two_handed = True,
 
412
)
 
413
 
 
414
halberd = Weapon(
 
415
  name = "halberd",
 
416
  cost = 10,
 
417
  damage = "1d10",
 
418
  multiplier = 3,
 
419
  weight = 12,
 
420
  damage_types = ("piercing", "slashing",),
 
421
  two_handed = True,
 
422
)
 
423
 
 
424
lance = Weapon(
 
425
  name = "lance",
 
426
  cost = 10,
 
427
  damage = "1d8",
 
428
  multiplier = 3,
 
429
  weight = 10,
 
430
  damage_types = ("piercing",),
 
431
  two_handed = True,
 
432
)
 
433
 
 
434
ranseur = Weapon(
 
435
  name = "ranseur",
 
436
  cost = 10,
 
437
  damage = "2d4",
 
438
  multiplier = 3,
 
439
  weight = 12,
 
440
  damage_types = ("piercing",),
 
441
  two_handed = True,
 
442
)
 
443
 
 
444
scythe = Weapon(
 
445
  name = "scythe",
 
446
  cost = 18,
 
447
  damage = "2d4",
 
448
  multiplier = 4,
 
449
  weight = 10,
 
450
  damage_types = ("piercing", "slashing",),
 
451
  two_handed = True,
 
452
)
 
453
 
 
454
#todo longbow, composite longbow
 
455
 
 
456
#todo shortbow, composite shortbow
 
457
 
 
458
kama = Weapon(
 
459
  name = "kama",
 
460
  cost = 2,
 
461
  damage = "1d6",
 
462
  weight = 2,
 
463
  damage_types = ("slashing",),
 
464
  light = True,
 
465
)
 
466
 
 
467
nunchaku = Weapon(
 
468
  name = "nunchaku",
 
469
  cost = 2,
 
470
  damage = "1d6",
 
471
  weight = 2,
 
472
  damage_types = ("bludgeoning",),
 
473
  light = True,
 
474
)
 
475
 
 
476
sai = Weapon(
 
477
  name = "sai",
 
478
  cost = 1,
 
479
  damage = "1d4",
 
480
  #todo range increment
 
481
  weight = 1,
 
482
  damage_types = ("bludgeoning",),
 
483
  light = True,
 
484
)
 
485
 
 
486
siangham = Weapon(
 
487
  name = "siangham",
 
488
  cost = 3,
 
489
  damage = "1d6",
 
490
  weight = 1,
 
491
  damage_types = ("piercing",),
 
492
  light = True,
 
493
)
 
494
 
 
495
sword_bastard = Weapon(
 
496
  name = "bastard sword",
 
497
  sort_name = "sword, bastard",
 
498
  cost = 35,
 
499
  damage = "1d10",
 
500
  crit = 19,
 
501
  weight = 6,
 
502
  damage_types = ("slashing",),
 
503
  two_handed = True,
 
504
)
 
505
 
 
506
waraxe_dwarven = Weapon(
 
507
  name = "dwarven waraxe",
 
508
  sort_name = "waraxe, dwarven",
 
509
  cost = 30,
 
510
  damage = "1d10",
 
511
  multiplier = 3,
 
512
  weight = 8,
 
513
  damage_types = ("slashing",),
 
514
)
 
515
 
 
516
whip = Weapon(
 
517
  name = "whip",
 
518
  cost = 1,
 
519
  damage = "1d3",
 
520
  weight = 2,
 
521
  damage_types = ("slashing",),
 
522
)
 
523
 
 
524
axe_orc_double = Weapon(
 
525
  name = "orc double axe",
 
526
  sort_name = "axe, orc double",
 
527
  cost = 60,
 
528
  damage = "1d8",
 
529
  multiplier = 3,
 
530
  weight = 15,
 
531
  damage_types = ("slashing",),
 
532
  offhand = Weapon(
 
533
    name = "orc double axe",
 
534
    damage = "1d8",
 
535
    multiplier = 3,
 
536
    damage_types = ("slashing",),
 
537
    light = True,
 
538
  ),
 
539
)
 
540
 
 
541
chain_spiked = Weapon(
 
542
  name = "spiked chain",
 
543
  sort_name = "chain, spiked",
 
544
  cost = 25,
 
545
  damage = "2d4",
 
546
  weight = 10,
 
547
  damage_types = ("piercing"),
 
548
  two_handed = True,
 
549
)
 
550
 
 
551
flail_dire = Weapon(
 
552
  name = "dire flail",
 
553
  sort_name = "flail, dire",
 
554
  cost = 90,
 
555
  damage = "1d8",
 
556
  weight = 10,
 
557
  damage_types = ("bludgeoning",),
 
558
  offhand = Weapon(
 
559
    name = "dire flail",
 
560
    damage = "1d8",
 
561
    damage_types = ("bludgeoning",),
 
562
    light = True
 
563
  ),
 
564
)
 
565
 
 
566
hammer_gnome_hooked = Weapon(
 
567
  name = "gnome hooked hammer",
 
568
  sort_name = "hammer, gnome hooked",
 
569
  cost = 20,
 
570
  damage = "1d8",
 
571
  multiplier = 3,
 
572
  weight = 6,
 
573
  damage_types = ("bludgeoning",),
 
574
  offhand = Weapon(
 
575
    name = "gnome hooked hammer",
 
576
    damage = "1d6",
 
577
    multiplier = 4,
 
578
    damage_types = ("piercing",),
 
579
    light = True,
 
580
  ),
 
581
)
 
582
 
 
583
sword_two_bladed = Weapon(
 
584
  name = "two-bladed sword",
 
585
  sort_name = "sword, two-bladed",
 
586
  cost = 100,
 
587
  damage = "1d8",
 
588
  crit = 19,
 
589
  weight = 10,
 
590
  damage_types = ("slashing",),
 
591
  offhand = Weapon(
 
592
    name = "two-bladed sword",
 
593
    damage = "1d8",
 
594
    crit = 19,
 
595
    damage_types = ("slashing",),
 
596
    light = True,
 
597
  ),
 
598
)
 
599
 
 
600
urgrosh_dwarven = Weapon(
 
601
  name = "dwarven urgrosh",
 
602
  sort_name = "urgrosh, dwarven",
 
603
  cost = 50,
 
604
  damage = "1d8",
 
605
  multiplier = 3,
 
606
  weight = 12,
 
607
  damage_types = ("slashing",),
 
608
  offhand = Weapon(
 
609
    name = "dwarven urgrosh",
 
610
    damage = "1d6",
 
611
    multiplier = 3,
 
612
    damage_types = ("piercing",),
 
613
    light = True,
 
614
  ),
 
615
)
 
616
 
 
617
#todo bolas
 
618
 
 
619
#todo crossbow, hand
 
620
 
 
621
#todo crossbow, heavy repeating
 
622
 
 
623
#todo crossbow, light repeating
 
624
 
 
625
#todo net
 
626
 
 
627
#todo shruiken
 
628
 
 
629
size_categories =       ("diminuitive","fine","tiny","small","medium","large","huge","gigantic","collosal")
 
630
damage_dice = {"shruiken"     : (None , None , None , "1"   , "1d2"  , "1d3" , "1d4", "1d6"    , "1d8"),
 
631
               "gauntlet"     : (None , None , "1"  , "1d2" , "1d3"  , "1d4" , "1d6", "1d8"    , "2d6"),
 
632
               "dagger"       : (None , "1"  , "1d2", "1d3" , "1d4"  , "1d6" , "1d8", "2d6"    , "3d6"),
 
633
               "shortspear"   : ("1"  , "1d2", "1d3", "1d4" , "1d6"  , "1d8" , "2d6", "3d6"    , "4d6"),
 
634
               "falchion"     : ("1d2", "1d3", "1d4", "1d6" , "2d4"  , "2d6" , "3d6", "4d6"    , "6d6"),
 
635
               "longsword"    : ("1d2", "1d3", "1d4", "1d6" , "1d8"  , "2d6" , "3d6", "4d6"    , "6d6"),
 
636
               "bastard sword": ("1d3", "1d4", "1d6", "1d8" , "1d10" , "2d8" , "3d8", "4d8"    , "6d8"),
 
637
               "greataxe"     : ("1d4", "1d6", "1d8", "1d10", "1d12" , "3d6" , "4d6", "6d6"    , "8d6"),
 
638
               "greatsword"   : ("1d4", "1d6", "1d8", "1d10", "2d6"  , "3d6" , "4d6", "6d6"    , "8d6"),}
 
639
damage_dict = {}
 
640
for i in damage_dice:
 
641
  sizes = {}
 
642
  medium_damage = ""
 
643
  for j in xrange(len(size_categories)):
 
644
    sizes[size_categories[j]] = damage_dice[i][j]
 
645
    if size_categories[j] == "medium":
 
646
      medium_damage = damage_dice[i][j]
 
647
  damage_dict[medium_damage] = sizes
 
648
 
 
649
simple_weapons = [
 
650
  gauntlet,
 
651
  unarmed_strike,
 
652
  dagger,
 
653
  dagger_punching,
 
654
  gauntlet_spiked,
 
655
  mace_light,
 
656
  sickle,
 
657
  club,
 
658
  mace_heavy,
 
659
  morningstar,
 
660
  shortspear,
 
661
  longspear,
 
662
  quarterstaff,
 
663
  spear,
 
664
]
 
665
 
 
666
martial_weapons = [
 
667
  axe_throwing,
 
668
  hammer_light,
 
669
  handaxe,
 
670
  kukri,
 
671
  pick_light,
 
672
  sap,
 
673
  shield_light,
 
674
  spiked_armor,
 
675
  spiked_shield_light,
 
676
  sword_short,
 
677
  battleaxe,
 
678
  flail,
 
679
  longsword,
 
680
  pick_heavy,
 
681
  rapier,
 
682
  scimitar,
 
683
  shield_heavy,
 
684
  spiked_shield_heavy,
 
685
  trident,
 
686
  warhammer,
 
687
  falchion,
 
688
  glaive,
 
689
  greataxe,
 
690
  greatclub,
 
691
  flail_heavy,
 
692
  greatsword,
 
693
  guisarme,
 
694
  halberd,
 
695
  lance,
 
696
  ranseur,
 
697
  scythe,
 
698
  sword_bastard,
 
699
]
 
700
 
 
701
exotic_weapons = [
 
702
  kama,
 
703
  nunchaku,
 
704
  sai,
 
705
  siangham,
 
706
  sword_bastard,
 
707
  waraxe_dwarven,
 
708
  whip,
 
709
  axe_orc_double,
 
710
  chain_spiked,
 
711
  flail_dire,
 
712
  hammer_gnome_hooked,
 
713
  sword_two_bladed,
 
714
  urgrosh_dwarven,
 
715
]
 
716
 
 
717
if __name__ == "__main__":
 
718
  all_weapons = []
 
719
  all_weapons.extend(simple_weapons)
 
720
  all_weapons.extend(martial_weapons)
 
721
  all_weapons.extend(exotic_weapons)
 
722
  for i in all_weapons:
 
723
    print i, damage_dict[i.damage]