diff options
Diffstat (limited to 'src/scalevalapokalypsi/Model/Entities/NPCs/NPC.scala')
-rw-r--r-- | src/scalevalapokalypsi/Model/Entities/NPCs/NPC.scala | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/src/scalevalapokalypsi/Model/Entities/NPCs/NPC.scala b/src/scalevalapokalypsi/Model/Entities/NPCs/NPC.scala index 944f2e6..7d9996c 100644 --- a/src/scalevalapokalypsi/Model/Entities/NPCs/NPC.scala +++ b/src/scalevalapokalypsi/Model/Entities/NPCs/NPC.scala @@ -1,10 +1,8 @@ package scalevalapokalypsi.Model.Entities.NPCs -import scala.collection.mutable.Buffer import scalevalapokalypsi.Model.* import scalevalapokalypsi.Model.Entities.* -import scala.util.Random /** A `NPC` object represents a non-playable in-game character controlled by * the server using this objects `act` method. It can also be "talked to": it @@ -25,67 +23,3 @@ abstract class NPC( ) extends Entity(adventure, name, initialLocation, initialHP, maxHp): def getDialog: String def act(): Unit - -class Zombie( - adventure: Adventure, - identifier: String, - initialLocation: Area, - initialHP: Int = 20 -) extends NPC(adventure, identifier, initialLocation, initialHP, 20): - - private val damage = 10 - private val dialogs = Vector( - "örvlg", - "grr", - "äyyrrrgrlgb ww", - "aaak brzzzwff ååö", - "äkb glan abglum", - "öub gpa" - ) - - override def getDialog: String = - val dialogIndex = Random.between(0, this.dialogs.length) - this.dialogs(dialogIndex) - - override def act(): Unit = - val possibleVictims = this.location - .getEntities - .filter(_ != this) - .toVector - val index: Int = - if possibleVictims.isEmpty then 0 - else Random.between(0, possibleVictims.length) - if possibleVictims.isEmpty then - val possibleDirections = this.location.getNeighborNames.toVector - val directionIndex = Random.between(0, possibleDirections.length*2) - possibleDirections - .toVector - .lift(directionIndex) - .flatMap(this.go(_)) - .foreach(this.location.observeEvent(_)) - else - this.location.observeEvent( - this.attack(possibleVictims(index)) - ) - - - private def attack(entity: Entity): Event = - if Random.nextBoolean() then - entity.takeDamage(this.damage) - Event( - Map.from(Vector(( - entity, - s"${this.name} puree sinua, hyi yäk!\n" + - s"${entity.condition(0)}" - ))), - s"${this.name} puree henkilöä ${entity.name}.\n" + - s"${entity.condition(1)}" - ) - else - Event( - Map.from(Vector(( - entity, - s"${this.name} yrittää purra sinua mutta kaatuu ohitsesi." - ))), - s"${this.name} yrittää purra henkilöä ${entity.name}, mutta epäonnistuu surkeasti." - ) |