Feast 2.0!
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 

144 řádky
4.5 KiB

  1. import { Creature } from "../creature"
  2. import { Damage, DamageType, ConstantDamageFormula, Vigor, Side, CompositionAction } from '../combat'
  3. import { MalePronouns, ImproperNoun, ProperNoun, ObjectPronouns, FemalePronouns, TheyPronouns, Verb } from '../language'
  4. import { VoreType, Stomach, Bowels, Cock, Balls, anyVore, Slit, Womb, biconnectContainers, Hand } from '../vore'
  5. import { AttackAction, TransferAction, FeedAction } from '../combat/actions'
  6. import { StatusConsequence, LogConsequence, DamageConsequence } from '../combat/consequences'
  7. import { SizeEffect, DamageTypeResistanceEffect, InstantKillEffect } from '../combat/effects'
  8. import { LogLine } from '../interface'
  9. import { TogetherCondition, MassRatioCondition, ContainsCondition } from '../combat/conditions'
  10. export class Geta extends Creature {
  11. constructor () {
  12. super(
  13. new ProperNoun('Geta'),
  14. new ImproperNoun('fox', 'foxes'),
  15. MalePronouns,
  16. { Toughness: 10, Power: 10, Speed: 30, Willpower: 15, Charm: 40 },
  17. new Set([VoreType.Oral, VoreType.Anal, VoreType.Cock]),
  18. new Set([VoreType.Oral, VoreType.Anal, VoreType.Cock]),
  19. 100
  20. )
  21. this.side = Side.Monsters
  22. const stomach = new Stomach(this, 10, new Damage(
  23. { amount: 100, type: DamageType.Acid, target: Vigor.Health },
  24. { amount: 40, type: DamageType.Crush, target: Vigor.Stamina },
  25. { amount: 80, type: DamageType.Dominance, target: Vigor.Resolve }
  26. ))
  27. this.containers.push(stomach)
  28. const bowels = new Bowels(this, 10, new Damage(
  29. { amount: 30, type: DamageType.Crush, target: Vigor.Health },
  30. { amount: 90, type: DamageType.Crush, target: Vigor.Stamina },
  31. { amount: 120, type: DamageType.Dominance, target: Vigor.Resolve }
  32. ))
  33. this.containers.push(bowels)
  34. this.actions.push(new TransferAction(bowels, stomach))
  35. this.otherActions.push(new FeedAction(stomach))
  36. const cock = new Cock(this, 10, new Damage(
  37. { amount: 10, type: DamageType.Crush, target: Vigor.Health },
  38. { amount: 30, type: DamageType.Crush, target: Vigor.Stamina },
  39. { amount: 30, type: DamageType.Dominance, target: Vigor.Resolve }
  40. ))
  41. const balls = new Balls(this, 10, new Damage(
  42. { amount: 50, type: DamageType.Acid, target: Vigor.Health },
  43. { amount: 25, type: DamageType.Crush, target: Vigor.Stamina },
  44. { amount: 150, type: DamageType.Dominance, target: Vigor.Resolve }
  45. ), cock)
  46. this.containers.push(balls)
  47. this.containers.push(cock)
  48. biconnectContainers(cock, balls)
  49. const shrinkAction = new CompositionAction(
  50. "Shrink",
  51. "Zap!",
  52. {
  53. conditions: [
  54. new TogetherCondition()
  55. ],
  56. consequences: [
  57. new LogConsequence(
  58. (user, target) => new LogLine(`ZAP!`)
  59. ),
  60. new StatusConsequence(
  61. () => new SizeEffect(0.1)
  62. )
  63. ]
  64. }
  65. )
  66. this.actions.push(
  67. shrinkAction
  68. )
  69. this.otherActions.push(
  70. shrinkAction
  71. )
  72. const crushAction = new CompositionAction(
  73. "Crush",
  74. "Crush them like a bug underfoot",
  75. {
  76. conditions: [
  77. new TogetherCondition(),
  78. new MassRatioCondition(10)
  79. ],
  80. consequences: [
  81. new LogConsequence(
  82. (user, target) => new LogLine(
  83. `${user.name.capital} ${user.name.conjugate(new Verb("raise"))} ${user.pronouns.possessive} paw over ${target.name.objective}, stomping down hard and crushing the life from ${user.pronouns.possessive} prey with a sickening CRUNCH.`
  84. )
  85. ),
  86. new StatusConsequence(
  87. () => new InstantKillEffect()
  88. )
  89. ]
  90. }
  91. )
  92. this.actions.push(
  93. crushAction
  94. )
  95. this.otherActions.push(
  96. crushAction
  97. )
  98. const hand = new Hand(this, 10)
  99. this.otherContainers.push(
  100. hand
  101. )
  102. this.actions.push(
  103. new CompositionAction(
  104. "Grip",
  105. "Squeeze your prey like a grape",
  106. {
  107. conditions: [
  108. new ContainsCondition(hand)
  109. ],
  110. consequences: [
  111. new LogConsequence(
  112. (user, target) => new LogLine(
  113. `${user.name.capital} ${user.name.conjugate(new Verb("crush", "crushes"))} ${target.name.objective} in ${user.pronouns.possessive} merciless grip, breaking bones and pulping ${user.pronouns.possessive} victim with ease.`
  114. )
  115. ),
  116. new StatusConsequence(
  117. () => new InstantKillEffect()
  118. )
  119. ]
  120. }
  121. )
  122. )
  123. }
  124. }