๐Ÿ“ฆ sleepyfran / duets

๐Ÿ“„ Book.Items.fs ยท 54 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54module Duets.Data.Items.Book

open Duets.Common
open Duets.Data
open Duets.Entities

type DataBook = { Title: string; Author: string }

let private specialBooks =
    [
      (* Music Theory volumes. *)
      { Title = "Music Theory Vol. I"
        Author = "Duets Academy"
        BookEffects = [ SkillGain(SkillId.Composition, 5) ]
        ReadProgress = 0<percent> },
      30m<dd>

      { Title = "Music Theory Vol. II"
        Author = "Duets Academy"
        BookEffects = [ SkillGain(SkillId.Composition, 10) ]
        ReadProgress = 0<percent> },
      60m<dd>

      (* Music production volumes. *)
      { Title = "Music Production Vol. I"
        Author = "Duets Academy"
        BookEffects = [ SkillGain(SkillId.MusicProduction, 3) ]
        ReadProgress = 0<percent> },
      30m<dd>

      { Title = "Music Production Vol. II"
        Author = "Duets Academy"
        BookEffects = [ SkillGain(SkillId.MusicProduction, 8) ]
        ReadProgress = 0<percent> },
      30m<dd> ]

/// Returns all literary books and special books in the game.
let all: PurchasableItem list =
    let dataBooks: DataBook list = ResourceLoader.load Files.Books

    dataBooks
    |> List.map (fun dataBook ->
        { Title = dataBook.Title
          Author = dataBook.Author
          BookEffects = []
          ReadProgress = 0<percent> },
        15m<dd>)
    |> (@) specialBooks
    |> List.map (fun (book, price) ->
        { Brand = book.Author
          Name = book.Title
          Properties = [ Book(book) |> Readable; PlaceableInStorage(Shelf) ] },
        price)