Date: 2015/08/13 13:26:25 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
# +----------------------------------
# | Territory scripts
# +----------------------------------
# War Master NPC
Territoy_World_Script:
type: world
events:
# +----------------------------------
# | On Server start
# +----------------------------------
on server start:
- run Load_Territories instantly
- run Save_Territories delay:5m
Load_Territories:
type: task
Script:
- if <server.has_file[Territories.yml]> {
- yaml "load:/Data/Territories.yml" id:Territories
- narrate "<dark_green>Loading Territories..."
} else {
- yaml create id:Territories
- narrate "<red>Couldn't find Territories.yml file."
- narrate "<dark_green>Creating new <gold>Territories.yml <dark_green>file"
- yaml id:Territories set Territories.Test.Nation:Unclaimed
- yaml id:Territories set Territories.Test.Cost:10000
- yaml id:Territories set Territories.Test.Bordering_Regions:->:Testland
- yaml id:Territories set Territories.Test.Bordering_Regions:->:Testling
- yaml "savefile:/Data/Territories.yml" id:Territories
}
Save_Territories:
type: task
Script:
- yaml "savefile:/Data/Territories.yml" id:Territories
- run Save_Territories delay:10m
War_Master_Assignment:
type: assignment
interact scripts:
- 10 War_Master_Nation1
actions:
on assignment:
# These triggers enable interaction with an NPC via chatting, clicking and entering proximity
- trigger name:chat state:true
- trigger name:click state:true
- trigger name:proximity state:true
- lookclose <npc> state:true
War_Master_Nation1:
type: interact
steps:
1:
Click Trigger:
Script:
- if <player.in_group[Leader]> {
- narrate "<red>[War Master] -> You<&co> <yellow>What can I do for you?"
- zap step:2
} else {
- narrate "<red>[War Master] -> You<&co> <yellow>Move a long peasent. I only server our leader."
}
2:
Click Trigger:
Script:
- narrate "<red>[War Master] -> You<&co> <yellow>What can I do for you?"
chat Trigger:
1:
Trigger: "/regex:(?i).*claim.*|.*invade.*|.*conquer.*/"
Script:
- if <context.message.contains[claim]> {
- narrate "<red>[War Master] -> You<&co> <yellow>What region would you like to lay claim to?"
} else if <context.message.contains[invade]> {
- narrate "<red>[War Master] -> You<&co> <yellow>What region would you like to invade?"
} else if <context.message.contains[conquer]> {
- narrate "<red>[War Master] -> You<&co> <yellow>What region would you like to conquer?"
}
- zap step:Invade
proximity Trigger:
exit:
Script:
- narrate "<red>RESET Warmater"
- zap step:1
Invade:
Click Trigger:
Script:
- narrate "<red>[War Master] -> You<&co> <yellow>What region would you like to invade?"
chat Trigger:
1:
Trigger: "/regex:.+/"
Script:
- if <yaml[Territories].read[Territories].contains[<context.message>]> {
- define region <context.message>
- narrate "<red><region@%region%.owners.formatted>"
# Check If the region is unclaimed
- if <region@%region%.owners.formatted> == "" {
# Check that the leader owns a bordering region.
- foreach <yaml[Territories].read[Territories.%region%.Bordering_Regions]> {
- narrate "<red>bordering region<&co> %value%"
- if <region@%value%.owners.formatted> == <player.name> {
- narrate "<green> SUCCESS You own a bordering region."
} else {
- narrate "<red>[War Master] -> You<&co> <yellow>To invade %region%, you must first conquer a bordering territory."
- zap step:1
- determine cancelled
}
# Check if the leader can afford it.
- if <player.town.nation.balance> < <yaml[Territories].read[Territories.<context.message>.cost]> {
- narrate "<red>[War Master] -> You<&co> <yellow>We don't have enough ducats to to make claim to this land sir."
- wait 1
- narrate "<red>[War Master] -> You<&co> <yellow>Claiming <context.message> will cost us at least <red><yaml[Territories].read[Territories.<context.message>.cost]> <yellow>ducats."
- zap step:1
} else {
- narrate "<red>[War Master] -> You<&co> <yellow>Claiming <context.message> is going to cost at least <red><yaml[Territories].read[Territories.<context.message>.cost]><yellow>. Are you sure you want to claim this territory?"
- zap step:Invasion_Confirmation
}
# Else if it's already owned
} else {
# Check if the leader can afford it.
- if <player.town.nation.balance> < <yaml[Territories].read[Territories.<context.message>.cost]> {
- narrate "<red>[War Master] -> You<&co> <yellow>We don't have enough ducats to to make such an invasion sir."
- wait 1
- narrate "<red>[War Master] -> You<&co> <yellow>Invading <context.message> will cost us at least <red><yaml[Territories].read[Territories.<context.message>.cost]> <yellow>ducats."
- zap step:1
} else {
- narrate "<red>[War Master] -> You<&co> <yellow>Invading <context.message> is going to cost at least <red><yaml[Territories].read[Territories.<context.message>.cost]><yellow>. Are you sure you want to do this?"
- zap step:Invasion_Confirmation
}
}
} else {
- narrate "<red>[War Master] -> You<&co> <yellow>I've never heard of <context.message>."
- wait 1
- narrate "<red>[War Master] -> You<&co> <yellow>Look at the map and tell me what region you would like to conquer."
}
}
proximity Trigger:
exit:
Script:
- narrate "<red>RESET Warmater"
- zap step:1
Invasion_Confirmation:
chat Trigger:
1:
Trigger: "/regex:(?i).*Yes.*|.*Yeah.*|.*sure.*/"
Script:
- if <yaml[Territories].read[Territories].contains[<context.message>]> {
- narrate "<red>[War Master] -> You<&co> <yellow>Are you sure you want to invade <context.message>?"
- zap step:Invastion_Confirmation
} else {
- narrate "<red>[War Master] -> You<&co> <yellow>Very well. Come see me again if you ever need help with war."
}
proximity Trigger:
exit:
Script:
- zap step:1