@@ -1227,10 +1227,25 @@ def __init__(self):
1227
1227
self .messages = []
1228
1228
1229
1229
def say (self , message ):
1230
+ message = message [0 ].capitalize () + message [1 :]
1230
1231
self .messages .append (message )
1231
1232
while len (self .messages ) > 100 :
1232
1233
del self .messages [0 ]
1233
-
1234
+
1235
+ def call_attack (self , attacker , defender , damage ):
1236
+ name1 = attacker .the_name ()
1237
+ name2 = defender .the_name ()
1238
+ if damage <= 0 :
1239
+ self .say ("%s pokes %s harmlessly." % (name1 , name2 ))
1240
+ elif damage > defender .life ():
1241
+ msg = "%s strikes %s for %d damage, killing %s!"
1242
+ msg = msg % (name1 , name2 , damage , defender .pronoun )
1243
+ self .say (msg )
1244
+ else :
1245
+ msg = "%s strikes %s for %d damage."
1246
+ msg = msg % (name1 , name2 , damage )
1247
+ self .say (msg )
1248
+
1234
1249
def __call__ (self , message ):
1235
1250
self .say (message )
1236
1251
@@ -1241,6 +1256,8 @@ def __init__(self):
1241
1256
1242
1257
self .mcguffin = Item (items ["idol" ])
1243
1258
self .player = Creature (creatures ["human" ])
1259
+ self .player .pronoun = "them"
1260
+ self .player .proper_name = True
1244
1261
self .level0 = DungeonLevel (0 , levels [0 ])
1245
1262
self .level0 .populate ()
1246
1263
@@ -1258,12 +1275,8 @@ def update(self):
1258
1275
drop = Item (drop )
1259
1276
drop .move_to (i .x , i .y , i .level )
1260
1277
i .move_to (- 1 , - 1 , None )
1261
- log (i .name + " is dead!" )
1262
1278
elif i .action_points <= 0 :
1263
1279
i .action_points += i .speed * i .dice_size
1264
- #elif i.distance_to(self.player) == 1:
1265
- # if not self.player.is_dead():
1266
- # i.attack(self.player)
1267
1280
elif i .mind == "animal" :
1268
1281
self .animal_ai .take_turn (i )
1269
1282
elif i .mind == "undead" :
@@ -1357,6 +1370,8 @@ def __init__(self):
1357
1370
self .y = - 1
1358
1371
1359
1372
self .name = "thing"
1373
+ self .pronoun = "it"
1374
+ self .proper_name = False
1360
1375
self .special = None
1361
1376
1362
1377
def move_to (self , x , y , parent = None ):
@@ -1376,8 +1391,20 @@ def move_to(self, x, y, parent = None):
1376
1391
else :
1377
1392
raise ValueError ("Can't move outside the level map." )
1378
1393
1394
+ def the_name (self ):
1395
+ if self .proper_name :
1396
+ return self .name
1397
+ else :
1398
+ return "the " + self .name
1399
+
1400
+ def a_name (self ):
1401
+ if self .name [0 ] in ('a' , 'e' , 'i' , 'o' , 'u' ):
1402
+ return "an " + self .name
1403
+ else :
1404
+ return "a " + self .name
1405
+
1379
1406
def __str__ (self ):
1380
- return self .name
1407
+ return self .a_name ()
1381
1408
1382
1409
class Item (Thing ):
1383
1410
def __init__ (self , template ):
@@ -1514,7 +1541,7 @@ def is_enemy(self, creature):
1514
1541
1515
1542
def attack (self , creature ):
1516
1543
if self .distance_to (creature ) > 1 :
1517
- self .log (creature .name +
1544
+ self .log (creature .the_name () +
1518
1545
" is too far away for melee." )
1519
1546
return False
1520
1547
@@ -1537,14 +1564,10 @@ def attack(self, creature):
1537
1564
damage = creature .apply_armor (damage )
1538
1565
if damage > 0 :
1539
1566
creature .wounds += damage
1540
- self .log ("%s strikes %s for %d damage!" %
1541
- (self .name , creature .name , damage ))
1542
- else :
1543
- self .log ("%s pokes %s harmlessly." %
1544
- (self .name , creature .name ))
1567
+ self .log .call_attack (self , creature , damage )
1545
1568
else :
1546
1569
self .log ("%s misses %s." %
1547
- (self .name , creature .name ))
1570
+ (self .the_name () , creature .the_name () ))
1548
1571
1549
1572
if self .weapon != None :
1550
1573
self .action_points -= 4 + self .weapon .weight
@@ -1585,14 +1608,14 @@ def fire_at(self, x, y):
1585
1608
if damage > 0 :
1586
1609
creature .wounds += damage
1587
1610
self .log ("%s shoots %s for %d damage!" %
1588
- (self .name , creature .name , damage ))
1611
+ (self .the_name () , creature .the_name () , damage ))
1589
1612
else :
1590
1613
self .log ("%s hits %s harmlessly." %
1591
- (self .name , creature .name ))
1614
+ (self .the_name () , creature .the_name () ))
1592
1615
else :
1593
1616
self .ammo .move_to (x , y , self .level )
1594
1617
self .log ("%s's shot misses %s." %
1595
- (self .name , creature .name ))
1618
+ (self .the_name () , creature .the_name () ))
1596
1619
1597
1620
for item in self .content .copy ():
1598
1621
if item .name == self .ammo .name :
@@ -1633,7 +1656,7 @@ def apply_effect(self, effect):
1633
1656
damage , self .effects [kind ]["damage" ])
1634
1657
else :
1635
1658
self .effects [kind ] = {"turns" : turns , "damage" : damage }
1636
- self .log ("%s is %s!" % (self .name , fxdescs [kind ]))
1659
+ self .log ("%s is %s!" % (self .the_name () , fxdescs [kind ]))
1637
1660
1638
1661
def is_dead (self ):
1639
1662
return self .wounds >= self .dice_size * self .stamina
0 commit comments