|
| 1 | +import unitary.alpha as alpha |
| 2 | + |
| 3 | +from unitary.examples.quantum_rpg.encounter import Encounter |
1 | 4 | from unitary.examples.quantum_rpg.world import Direction, Location
|
2 | 5 | from unitary.examples.quantum_rpg.item import EXAMINE, TALK, Item
|
| 6 | +from unitary.examples.quantum_rpg.npcs import BlueFoam, GreenFoam, Observer |
| 7 | +from unitary.examples.quantum_rpg.xp_utils import EncounterXp |
| 8 | + |
| 9 | + |
| 10 | +_BLUE_XP = EncounterXp( |
| 11 | + [ |
| 12 | + [], |
| 13 | + [alpha.Flip(effect_fraction=0.5)], |
| 14 | + [alpha.Flip(effect_fraction=0.25)], |
| 15 | + [alpha.Flip(effect_fraction=0.125)], |
| 16 | + [alpha.Superposition()], |
| 17 | + [alpha.Phase(effect_fraction=0.375)], |
| 18 | + ], |
| 19 | + [0.35, 0.05, 0.20, 0.20, 0.10, 0.10], |
| 20 | +) |
| 21 | + |
| 22 | +_GREEN_XP = EncounterXp( |
| 23 | + [ |
| 24 | + [], |
| 25 | + [alpha.Phase(effect_fraction=0.5)], |
| 26 | + [alpha.Phase(effect_fraction=0.25)], |
| 27 | + [alpha.Phase(effect_fraction=0.125)], |
| 28 | + [alpha.Superposition()], |
| 29 | + [alpha.Flip(effect_fraction=0.375)], |
| 30 | + ], |
| 31 | + [0.35, 0.05, 0.20, 0.20, 0.10, 0.10], |
| 32 | +) |
| 33 | + |
| 34 | + |
| 35 | +def _blue_foam(number: int, prob: float = 0.5, xp=_BLUE_XP): |
| 36 | + return Encounter( |
| 37 | + [BlueFoam(f"bluey gooey {idx}") for idx in range(number)], |
| 38 | + probability=prob, |
| 39 | + description="Some blue quantum foam oozes towards you!", |
| 40 | + xp=xp, |
| 41 | + ) |
| 42 | + |
| 43 | + |
| 44 | +def _green_foam(number: int, prob: float = 0.5, xp=_GREEN_XP): |
| 45 | + return Encounter( |
| 46 | + [GreenFoam(f"green goo {idx}") for idx in range(number)], |
| 47 | + probability=prob, |
| 48 | + description="Some green quantum foam oozes towards you!", |
| 49 | + xp=xp, |
| 50 | + ) |
3 | 51 |
|
4 | 52 |
|
5 | 53 | RICHARD = Item(
|
|
278 | 326 | "open field.\n"
|
279 | 327 | ),
|
280 | 328 | items=[LOOPED_PATH],
|
| 329 | + encounters=[_blue_foam(1, 0.2), _green_foam(1, 0.2)], |
281 | 330 | exits={
|
282 | 331 | Direction.EAST: "classical5",
|
283 | 332 | Direction.NORTH: "classical6",
|
|
293 | 342 | "and filled with tangles of weeds and bramble. In spots, you can see\n"
|
294 | 343 | "spots covered in iridicent colored slime roughly in the shape of waterdrops.\n"
|
295 | 344 | ),
|
| 345 | + encounters=[ |
| 346 | + _blue_foam(2, 0.4), |
| 347 | + _green_foam(2, 0.4), |
| 348 | + _blue_foam(3, 0.1), |
| 349 | + _green_foam(3, 0.1), |
| 350 | + ], |
296 | 351 | exits={Direction.WEST: "classical4", Direction.EAST: "oxtail1"},
|
297 | 352 | ),
|
298 | 353 | Location(
|
|
311 | 366 | Location(
|
312 | 367 | label="classical7",
|
313 | 368 | title="A Wild Frontier",
|
314 |
| - description=("Blah"), |
| 369 | + description=( |
| 370 | + "The land here slopes along a ridge and climbs steadily towards\n" |
| 371 | + "the north, where the foothills begin to slowly climb in altitude." |
| 372 | + ), |
| 373 | + encounters=[_blue_foam(2, 0.4), _green_foam(3, 0.3), _blue_foam(1, 0.1)], |
315 | 374 | exits={Direction.EAST: "classical3", Direction.NORTH: "classical8"},
|
316 | 375 | ),
|
317 | 376 | Location(
|
|
326 | 385 | "Farther to the east, you can see the cathedral-like buildings of a baroque\n"
|
327 | 386 | "college campus."
|
328 | 387 | ),
|
| 388 | + encounters=[_blue_foam(2, 0.3), _green_foam(2, 0.2)], |
329 | 389 | exits={Direction.SOUTH: "classical7"},
|
330 | 390 | # TODO: Connect to the next zone.
|
331 | 391 | ),
|
|
368 | 428 | "purple ooze seems to be eating away at the pillars and walls, and\n"
|
369 | 429 | "one entire section has collapsed into a pile of rubble.\n"
|
370 | 430 | ),
|
| 431 | + encounters=[_blue_foam(1, 0.3), _green_foam(3, 0.2), _blue_foam(3, 0.1)], |
371 | 432 | items=[],
|
372 | 433 | exits={Direction.SOUTH: "quad4", Direction.EAST: "quad2"},
|
373 | 434 | ),
|
|
382 | 443 | "dripping out of its open windows."
|
383 | 444 | ),
|
384 | 445 | items=[],
|
| 446 | + encounters=[_blue_foam(3, 0.3), _green_foam(3, 0.2)], |
385 | 447 | exits={
|
386 | 448 | Direction.NORTH: "comms1",
|
387 | 449 | Direction.WEST: "quad1",
|
|
399 | 461 | "of the black holes Hawking was famous for casts a dark shadow on the wall."
|
400 | 462 | ),
|
401 | 463 | items=[],
|
| 464 | + encounters=[_blue_foam(4, 0.1)], |
402 | 465 | exits={Direction.SOUTH: "quad6", Direction.WEST: "quad2"},
|
403 | 466 | ),
|
404 | 467 | Location(
|
|
411 | 474 | "contrasting sharply with the green grass.\n"
|
412 | 475 | ),
|
413 | 476 | items=[STUDENT[0]],
|
| 477 | + encounters=[ |
| 478 | + _blue_foam(2, 0.1), |
| 479 | + _green_foam(2, 0.1), |
| 480 | + _blue_foam(1, 0.1), |
| 481 | + _blue_foam(3, 0.1), |
| 482 | + _green_foam(1, 0.2), |
| 483 | + ], |
414 | 484 | exits={
|
415 | 485 | Direction.NORTH: "quad2",
|
416 | 486 | Direction.EAST: "quad6",
|
|
422 | 492 | label="quad6",
|
423 | 493 | title="Lab Entrance",
|
424 | 494 | description=(
|
425 |
| - "A stone building home to a laboratory.A plan for this room, who needs one?" |
| 495 | + "A stone building here seems mostly untouched by the corrosion evident\n" |
| 496 | + "across most of the rest of the campus. Etched into the arched doorway\n" |
| 497 | + "are the words 'Chemistry Research Laboratory' and below that reads,\n" |
| 498 | + "'Nuclear Magnetic Resonance Facility'." |
426 | 499 | ),
|
427 | 500 | items=[],
|
428 | 501 | exits={
|
|
446 | 519 | Location(
|
447 | 520 | label="quad8",
|
448 | 521 | title="South end",
|
449 |
| - description=("A plan for this room, who needs one?"), |
| 522 | + description=( |
| 523 | + "Here on the south end of campus is the mathematics\n" |
| 524 | + "department. Most of the windows and doors have been\n" |
| 525 | + "boarded up or blocked. A hastily drawn sign on the\n" |
| 526 | + "entrance proclaims: 'QUIET PLEASE! THEOREM CREATION IN PROGRESS.'" |
| 527 | + ), |
450 | 528 | items=[STUDENT[2]],
|
| 529 | + encounters=[_blue_foam(2, 0.2)], |
451 | 530 | exits={
|
452 | 531 | Direction.WEST: "quad7",
|
453 | 532 | Direction.NORTH: "quad5",
|
|
464 | 543 | "in reality form irregular disjointed cavities.\n"
|
465 | 544 | ),
|
466 | 545 | items=[],
|
| 546 | + encounters=[ |
| 547 | + _blue_foam(1, 0.2), |
| 548 | + _blue_foam(2, 0.1), |
| 549 | + _green_foam(1, 0.2), |
| 550 | + _green_foam(2, 0.1), |
| 551 | + ], |
467 | 552 | exits={Direction.NORTH: "quad6", Direction.WEST: "quad8"},
|
468 | 553 | ),
|
469 | 554 | Location(
|
|
475 | 560 | "lab spaces. Slimy foam drips down from a stairway leading upwards.\n"
|
476 | 561 | ),
|
477 | 562 | items=[],
|
| 563 | + encounters=[_blue_foam(3, 0.3), _green_foam(3, 0.1)], |
478 | 564 | exits={Direction.SOUTH: "quad2", Direction.UP: "comms2"},
|
479 | 565 | ),
|
480 | 566 | Location(
|
|
487 | 573 | "and it seems like parts of the building are phasing in and out of\n"
|
488 | 574 | "existence."
|
489 | 575 | ),
|
490 |
| - items=[], # TODO: quantum foam boss battle |
| 576 | + items=[], |
| 577 | + encounters=[ |
| 578 | + Encounter( |
| 579 | + [ |
| 580 | + BlueFoam("Blue Foamy"), |
| 581 | + BlueFoam("Blue Slimy"), |
| 582 | + GreenFoam("Green Gooey"), |
| 583 | + GreenFoam("Green Foamy"), |
| 584 | + Observer("The Observer"), |
| 585 | + ], |
| 586 | + probability=1.0, |
| 587 | + description="The quantum slime oozes off all the walls and surrounds you!", |
| 588 | + xp=EncounterXp([[alpha.Flip()]]), |
| 589 | + ) |
| 590 | + ], |
491 | 591 | exits={Direction.DOWN: "comms1", Direction.UP: "comms3"},
|
492 | 592 | ),
|
493 | 593 | Location(
|
|
0 commit comments