Date: 2023/03/09 23:56:23 UTC-08:00
Type: Denizen Script
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#---------------------------------------------------------------------#
#-----Simple Dice Game. Player and delayer rolls 3 dices--------------#
#--------If player dices summary more than dealers -------------------#
#--------player bet doublled, otherwise it burns----------------------#
#---------------------------------------------------------------------#
#------------------------#
#--------TASKS-----------#
#------------------------#
simple_dice_game_roll_dices:
#-----Procedure to roll 3 dices and wrtite to list.
debug: false
type: procedure
script:
- repeat 3:
- define dices:->:<util.random.int[1].to[6]>
- determine <[dices]>
simple_dice_game_print_result:
#-----Print result of rolling with total points.
debug: false
type: task
defenitions: who|dice1|dice2|dice3|total
script:
- narrate "------------"
- narrate "<[who]> dices:"
- narrate "|---| |---| |---|"
- narrate "|-<[dice1]>-| |-<[dice2]>-| |-<[dice3]>-| Total = <[total]>"
- narrate "|---| |---| |---|"
simple_dice_game_winner_check:
#-----Check winner.
debug: false
type: task
defenitions: player_sum_check|dealer_sum_check
script:
- narrate "~~~~~~RESULT~~~~~~"
- wait 1s
- if <[player_sum_check]> == <[dealer_sum_check]>:
- narrate "Draw!"
- stop
- if <[player_sum_check]> > <[dealer_sum_check]>:
- narrate "<player.name> win!"
- give <player.flag[bet]> quantity:2
- flag <player> bet:!
#-----Give player his bet with reward and remove bet flag
- else:
- narrate "<player.name> lose!"
- wait 1s
- narrate "Dealer keeps <player.flag[bet].formatted.to_uppercase>!"
- flag <player> bet:!
simple_dice_game_drop_bet:
#-----Return bet and clean flag.
debug: false
type: task
script:
- give <player.flag[bet]> quantity:1
- flag <player> bet:!
simple_dice_game:
debug: false
type: task
script:
- narrate "Nice! Let's roll"
- wait 1s
- foreach <list[player|dealer]> as:entity:
- define <[entity]>_dices:<proc[simple_dice_game_roll_dices]>
#-----Roll dice
- define <[entity]>_sum:<[<[entity]>_dices].sum>
#-----Save dice summary
- ~run simple_dice_game_print_result def.who:<[entity].to_uppercase> def.dice1:<[<[entity]>_dices].get[1]> def.dice2:<[<[entity]>_dices].get[2]> def.dice3:<[<[entity]>_dices].get[3]> def.total:<[<[entity]>_sum]>
#-----Print result
- wait 1s
- ~run simple_dice_game_winner_check def.player_sum_check:<[player_sum]> def.dealer_sum_check:<[dealer_sum]>
#-----Check winner
- wait 1s
#------------------------#
#-----NPC ASSIGNMENT-----#
#------------------------#
simple_dice_game_npc:
type: assignment
actions:
on assignment:
- trigger name:click state:true
- trigger name:proximity state:true radius:5
- trigger name:chat state:true cooldown:2s radius:3
interact scripts:
- simple_dice_game_interact
simple_dice_game_interact:
debug: false
type: interact
steps:
default*:
proximity trigger:
entry:
script:
- engage
- narrate "Wanna play dices?"
- wait 1s
- narrate "Rules: If you win - your bet will be doubled. If you lose I will take your et."
- wait 1s
- narrate "If so, take your bet to the hand and click on me."
- disengage
exit:
script:
- narrate "See you."
#-----Return bet and clean flag if player leave.
- if <player.has_flag[bet]>:
- inject simple_dice_game_drop_bet
click trigger:
script:
- engage
#-----Return bet and clean flag if player already have bet flag, but in default state.
- if <player.has_flag[bet]>:
- inject simple_dice_game_drop_bet
- flag <player> bet:<player.item_in_hand>
- take iteminhand quantity:1
#-----Remember player bet and take item
- narrate "Your bet is <player.flag[bet].formatted.to_uppercase>? Are you sure?"
- narrate "<&7>[<element[<&4><&n>Yes].click_chat[Yes].on_hover[Yes]> or <element[<&4><&n>No].click_chat[No].on_hover[No]>] or click for yes"
#-----Ask for confirmation(yes, no, or click)
- disengage
- zap game_acception 1m
game_acception:
proximity trigger:
exit:
script:
#-----Return bet and clean flag if player leave.
- narrate "As you wish"
- inject simple_dice_game_drop_bet
- zap *
click trigger:
script:
- engage
- inject simple_dice_game
- narrate "Thank you"
- disengage
- zap *
chat trigger:
1:
trigger: /Yes|Yes|yes/
script:
- engage
- inject simple_dice_game
#-----Run game
- narrate "Thank you"
- disengage
- zap *
2:
trigger: /NO|No|no/
script:
#-----Return bet and clean flag if player disagry.
- engage
- narrate "Ok"
- inject simple_dice_game_drop_bet
- disengage
- zap *
3:
trigger: /*/
script:
- narrate "Please click <&7>[<element[<&4><&n>Yes].click_chat[Yes].on_hover[Yes]> or <element[<&4><&n>No].click_chat[No].on_hover[No]>] or click for yes"
- zap game_acception 30s