Date: 2023/03/12 21:47:44 UTC-07: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
168
169
170
171
172
173
174
175
#---------------------------------------------------------------------#
#-----Simple Dice Game. Player and delayer rolls 3 dices--------------#
#--------If player dices summary more than dealers -------------------#
#--------player bet doublled, otherwise it burns----------------------#
#---------------------------------------------------------------------#
#
# NPC Assighnment simple_dice_game_npc
#
#------------------------#
#--------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:
- define who:<[who]>
- define dice1:<[dice1]>
- define dice2:<[dice2]>
- define dice3:<[dice3]>
- define total:<[total]>
- 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:
- define player_sum_check:<[player_sum_check]>
- define dealer_sum_check:<[dealer_sum_check]>
- 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
- define player_dices:<proc[simple_dice_game_roll_dices]>
- define dealer_dices:<proc[simple_dice_game_roll_dices]>
- define player_sum:<[player_dices].sum>
- define dealer_sum:<[dealer_dices].sum>
- foreach <list[player|dealer]> as:entity:
- ~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:
- narrate "Wanna play dices?"
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]>:
- narrate "You have an old bet here"
- 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 <element[<&4><&n>Rules].click_chat[Rules].on_hover[Rules]>]"
#-----Ask for confirmation(yes, no, or click)
- disengage
- zap game_acception 30s
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.
- narrate "As you wish"
- inject simple_dice_game_drop_bet
- zap *
3:
trigger: /RULES|Rules|rules/
script:
- engage
- 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."
- wait 1s
- 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"
- disengage
- zap game_acception 30s