@cabin-icarus/tooltip_generator 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +2 -0
- package/.github/workflows/npm-publish.yml +30 -0
- package/ModifierProperties.d.ts +237 -0
- package/README.md +39 -0
- package/_package.json +30 -0
- package/fsWatcher.js +81 -0
- package/fsWatcher.ts +70 -0
- package/init.js +146 -0
- package/init.ts +143 -0
- package/install.js +192 -0
- package/install.ts +144 -0
- package/languages.js +33 -0
- package/languages.ts +30 -0
- package/localization/localizationData.js +26 -0
- package/localization/localizationData.ts +31 -0
- package/localizationCompiler.js +438 -0
- package/localizationCompiler.ts +362 -0
- package/localizationInterfaces.js +2 -0
- package/localizationInterfaces.ts +100 -0
- package/package.json +49 -0
- package/tsconfig.json +72 -0
package/.gitattributes
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
|
|
2
|
+
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
|
|
3
|
+
|
|
4
|
+
name: Node.js Package
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
release:
|
|
8
|
+
types: [created]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v3
|
|
15
|
+
- uses: actions/setup-node@v3
|
|
16
|
+
with:
|
|
17
|
+
node-version: 14
|
|
18
|
+
|
|
19
|
+
publish-npm:
|
|
20
|
+
needs: build
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v3
|
|
24
|
+
- uses: actions/setup-node@v3
|
|
25
|
+
with:
|
|
26
|
+
node-version: 14
|
|
27
|
+
registry-url: https://registry.npmjs.org/
|
|
28
|
+
- run: npm publish --access=public
|
|
29
|
+
env:
|
|
30
|
+
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
declare const enum LocalizationModifierProperty
|
|
2
|
+
{
|
|
3
|
+
PREATTACK_BONUS_DAMAGE = "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE",
|
|
4
|
+
PREATTACK_BONUS_DAMAGE_TARGET = "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE_TARGET",
|
|
5
|
+
PREATTACK_BONUS_DAMAGE_PROC = "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE_PROC",
|
|
6
|
+
PREATTACK_BONUS_DAMAGE_POST_CRIT = "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE_POST_CRIT",
|
|
7
|
+
BASEATTACK_BONUSDAMAGE = "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE",
|
|
8
|
+
PROCATTACK_BONUS_DAMAGE_PHYSICAL = "MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_PHYSICAL",
|
|
9
|
+
PROCATTACK_BONUS_DAMAGE_MAGICAL = "MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_MAGICAL",
|
|
10
|
+
PROCATTACK_BONUS_DAMAGE_PURE = "MODIFIER_PROPERTY_PROCATTACK_BONUS_DAMAGE_PURE",
|
|
11
|
+
PROCATTACK_FEEDBACK = "MODIFIER_PROPERTY_PROCATTACK_FEEDBACK",
|
|
12
|
+
OVERRIDE_ATTACK_DAMAGE = "MODIFIER_PROPERTY_OVERRIDE_ATTACK_DAMAGE",
|
|
13
|
+
PRE_ATTACK = "MODIFIER_PROPERTY_PRE_ATTACK",
|
|
14
|
+
INVISIBILITY_LEVEL = "MODIFIER_PROPERTY_INVISIBILITY_LEVEL",
|
|
15
|
+
INVISIBILITY_ATTACK_BEHAVIOR_EXCEPTION = "MODIFIER_PROPERTY_INVISIBILITY_ATTACK_BEHAVIOR_EXCEPTION",
|
|
16
|
+
PERSISTENT_INVISIBILITY = "MODIFIER_PROPERTY_PERSISTENT_INVISIBILITY",
|
|
17
|
+
MOVESPEED_BONUS_CONSTANT = "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT",
|
|
18
|
+
MOVESPEED_BASE_OVERRIDE = "MODIFIER_PROPERTY_MOVESPEED_BASE_OVERRIDE",
|
|
19
|
+
MOVESPEED_BONUS_PERCENTAGE = "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE",
|
|
20
|
+
MOVESPEED_BONUS_PERCENTAGE_UNIQUE = "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE_UNIQUE",
|
|
21
|
+
MOVESPEED_BONUS_PERCENTAGE_UNIQUE_2 = "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE_UNIQUE_2",
|
|
22
|
+
MOVESPEED_BONUS_UNIQUE = "MODIFIER_PROPERTY_MOVESPEED_BONUS_UNIQUE",
|
|
23
|
+
MOVESPEED_BONUS_UNIQUE_2 = "MODIFIER_PROPERTY_MOVESPEED_BONUS_UNIQUE_2",
|
|
24
|
+
MOVESPEED_BONUS_CONSTANT_UNIQUE = "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT_UNIQUE",
|
|
25
|
+
MOVESPEED_BONUS_CONSTANT_UNIQUE_2 = "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT_UNIQUE_2",
|
|
26
|
+
MOVESPEED_ABSOLUTE = "MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE",
|
|
27
|
+
MOVESPEED_ABSOLUTE_MIN = "MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE_MIN",
|
|
28
|
+
MOVESPEED_ABSOLUTE_MAX = "MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE_MAX",
|
|
29
|
+
IGNORE_MOVESPEED_LIMIT = "MODIFIER_PROPERTY_IGNORE_MOVESPEED_LIMIT",
|
|
30
|
+
MOVESPEED_LIMIT = "MODIFIER_PROPERTY_MOVESPEED_LIMIT",
|
|
31
|
+
ATTACKSPEED_BASE_OVERRIDE = "MODIFIER_PROPERTY_ATTACKSPEED_BASE_OVERRIDE",
|
|
32
|
+
FIXED_ATTACK_RATE = "MODIFIER_PROPERTY_FIXED_ATTACK_RATE",
|
|
33
|
+
ATTACKSPEED_BONUS_CONSTANT = "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT",
|
|
34
|
+
COOLDOWN_REDUCTION_CONSTANT = "MODIFIER_PROPERTY_COOLDOWN_REDUCTION_CONSTANT",
|
|
35
|
+
MANACOST_REDUCTION_CONSTANT = "MODIFIER_PROPERTY_MANACOST_REDUCTION_CONSTANT",
|
|
36
|
+
BASE_ATTACK_TIME_CONSTANT = "MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT",
|
|
37
|
+
BASE_ATTACK_TIME_CONSTANT_ADJUST = "MODIFIER_PROPERTY_BASE_ATTACK_TIME_CONSTANT_ADJUST",
|
|
38
|
+
ATTACK_POINT_CONSTANT = "MODIFIER_PROPERTY_ATTACK_POINT_CONSTANT",
|
|
39
|
+
BONUSDAMAGEOUTGOING_PERCENTAGE = "MODIFIER_PROPERTY_BONUSDAMAGEOUTGOING_PERCENTAGE",
|
|
40
|
+
DAMAGEOUTGOING_PERCENTAGE = "MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE",
|
|
41
|
+
DAMAGEOUTGOING_PERCENTAGE_ILLUSION = "MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE_ILLUSION",
|
|
42
|
+
DAMAGEOUTGOING_PERCENTAGE_ILLUSION_AMPLIFY = "MODIFIER_PROPERTY_DAMAGEOUTGOING_PERCENTAGE_ILLUSION_AMPLIFY",
|
|
43
|
+
TOTALDAMAGEOUTGOING_PERCENTAGE = "MODIFIER_PROPERTY_TOTALDAMAGEOUTGOING_PERCENTAGE",
|
|
44
|
+
SPELL_AMPLIFY_PERCENTAGE = "MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE",
|
|
45
|
+
SPELL_AMPLIFY_PERCENTAGE_UNIQUE = "MODIFIER_PROPERTY_SPELL_AMPLIFY_PERCENTAGE_UNIQUE",
|
|
46
|
+
HEAL_AMPLIFY_PERCENTAGE_SOURCE = "MODIFIER_PROPERTY_HEAL_AMPLIFY_PERCENTAGE_SOURCE",
|
|
47
|
+
HEAL_AMPLIFY_PERCENTAGE_TARGET = "MODIFIER_PROPERTY_HEAL_AMPLIFY_PERCENTAGE_TARGET",
|
|
48
|
+
HP_REGEN_AMPLIFY_PERCENTAGE = "MODIFIER_PROPERTY_HP_REGEN_AMPLIFY_PERCENTAGE",
|
|
49
|
+
LIFESTEAL_AMPLIFY_PERCENTAGE = "MODIFIER_PROPERTY_LIFESTEAL_AMPLIFY_PERCENTAGE",
|
|
50
|
+
SPELL_LIFESTEAL_AMPLIFY_PERCENTAGE = "MODIFIER_PROPERTY_SPELL_LIFESTEAL_AMPLIFY_PERCENTAGE",
|
|
51
|
+
MP_REGEN_AMPLIFY_PERCENTAGE = "MODIFIER_PROPERTY_MP_REGEN_AMPLIFY_PERCENTAGE",
|
|
52
|
+
MANA_DRAIN_AMPLIFY_PERCENTAGE = "MODIFIER_PROPERTY_MANA_DRAIN_AMPLIFY_PERCENTAGE",
|
|
53
|
+
MP_RESTORE_AMPLIFY_PERCENTAGE = "MODIFIER_PROPERTY_MP_RESTORE_AMPLIFY_PERCENTAGE",
|
|
54
|
+
BASEDAMAGEOUTGOING_PERCENTAGE = "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE",
|
|
55
|
+
BASEDAMAGEOUTGOING_PERCENTAGE_UNIQUE = "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE_UNIQUE",
|
|
56
|
+
INCOMING_DAMAGE_PERCENTAGE = "MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE",
|
|
57
|
+
INCOMING_PHYSICAL_DAMAGE_PERCENTAGE = "MODIFIER_PROPERTY_INCOMING_PHYSICAL_DAMAGE_PERCENTAGE",
|
|
58
|
+
INCOMING_PHYSICAL_DAMAGE_CONSTANT = "MODIFIER_PROPERTY_INCOMING_PHYSICAL_DAMAGE_CONSTANT",
|
|
59
|
+
INCOMING_SPELL_DAMAGE_CONSTANT = "MODIFIER_PROPERTY_INCOMING_SPELL_DAMAGE_CONSTANT",
|
|
60
|
+
EVASION_CONSTANT = "MODIFIER_PROPERTY_EVASION_CONSTANT",
|
|
61
|
+
NEGATIVE_EVASION_CONSTANT = "MODIFIER_PROPERTY_NEGATIVE_EVASION_CONSTANT",
|
|
62
|
+
STATUS_RESISTANCE = "MODIFIER_PROPERTY_STATUS_RESISTANCE",
|
|
63
|
+
STATUS_RESISTANCE_STACKING = "MODIFIER_PROPERTY_STATUS_RESISTANCE_STACKING",
|
|
64
|
+
STATUS_RESISTANCE_CASTER = "MODIFIER_PROPERTY_STATUS_RESISTANCE_CASTER",
|
|
65
|
+
AVOID_DAMAGE = "MODIFIER_PROPERTY_AVOID_DAMAGE",
|
|
66
|
+
AVOID_SPELL = "MODIFIER_PROPERTY_AVOID_SPELL",
|
|
67
|
+
MISS_PERCENTAGE = "MODIFIER_PROPERTY_MISS_PERCENTAGE",
|
|
68
|
+
PHYSICAL_ARMOR_BASE_PERCENTAGE = "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BASE_PERCENTAGE",
|
|
69
|
+
PHYSICAL_ARMOR_TOTAL_PERCENTAGE = "MODIFIER_PROPERTY_PHYSICAL_ARMOR_TOTAL_PERCENTAGE",
|
|
70
|
+
PHYSICAL_ARMOR_BONUS = "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS",
|
|
71
|
+
PHYSICAL_ARMOR_BONUS_UNIQUE = "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS_UNIQUE",
|
|
72
|
+
PHYSICAL_ARMOR_BONUS_UNIQUE_ACTIVE = "MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS_UNIQUE_ACTIVE",
|
|
73
|
+
IGNORE_PHYSICAL_ARMOR = "MODIFIER_PROPERTY_IGNORE_PHYSICAL_ARMOR",
|
|
74
|
+
MAGICAL_RESISTANCE_BASE_REDUCTION = "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BASE_REDUCTION",
|
|
75
|
+
MAGICAL_RESISTANCE_DIRECT_MODIFICATION = "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_DIRECT_MODIFICATION",
|
|
76
|
+
MAGICAL_RESISTANCE_BONUS = "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS",
|
|
77
|
+
MAGICAL_RESISTANCE_BONUS_ILLUSIONS = "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS_ILLUSIONS",
|
|
78
|
+
MAGICAL_RESISTANCE_DECREPIFY_UNIQUE = "MODIFIER_PROPERTY_MAGICAL_RESISTANCE_DECREPIFY_UNIQUE",
|
|
79
|
+
BASE_MANA_REGEN = "MODIFIER_PROPERTY_BASE_MANA_REGEN",
|
|
80
|
+
MANA_REGEN_CONSTANT = "MODIFIER_PROPERTY_MANA_REGEN_CONSTANT",
|
|
81
|
+
MANA_REGEN_CONSTANT_UNIQUE = "MODIFIER_PROPERTY_MANA_REGEN_CONSTANT_UNIQUE",
|
|
82
|
+
MANA_REGEN_TOTAL_PERCENTAGE = "MODIFIER_PROPERTY_MANA_REGEN_TOTAL_PERCENTAGE",
|
|
83
|
+
HEALTH_REGEN_CONSTANT = "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT",
|
|
84
|
+
HEALTH_REGEN_PERCENTAGE = "MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE",
|
|
85
|
+
HEALTH_REGEN_PERCENTAGE_UNIQUE = "MODIFIER_PROPERTY_HEALTH_REGEN_PERCENTAGE_UNIQUE",
|
|
86
|
+
HEALTH_BONUS = "MODIFIER_PROPERTY_HEALTH_BONUS",
|
|
87
|
+
MANA_BONUS = "MODIFIER_PROPERTY_MANA_BONUS",
|
|
88
|
+
EXTRA_STRENGTH_BONUS = "MODIFIER_PROPERTY_EXTRA_STRENGTH_BONUS",
|
|
89
|
+
EXTRA_HEALTH_BONUS = "MODIFIER_PROPERTY_EXTRA_HEALTH_BONUS",
|
|
90
|
+
EXTRA_MANA_BONUS = "MODIFIER_PROPERTY_EXTRA_MANA_BONUS",
|
|
91
|
+
EXTRA_HEALTH_PERCENTAGE = "MODIFIER_PROPERTY_EXTRA_HEALTH_PERCENTAGE",
|
|
92
|
+
EXTRA_MANA_PERCENTAGE = "MODIFIER_PROPERTY_EXTRA_MANA_PERCENTAGE",
|
|
93
|
+
STATS_STRENGTH_BONUS = "MODIFIER_PROPERTY_STATS_STRENGTH_BONUS",
|
|
94
|
+
STATS_AGILITY_BONUS = "MODIFIER_PROPERTY_STATS_AGILITY_BONUS",
|
|
95
|
+
STATS_INTELLECT_BONUS = "MODIFIER_PROPERTY_STATS_INTELLECT_BONUS",
|
|
96
|
+
STATS_STRENGTH_BONUS_PERCENTAGE = "MODIFIER_PROPERTY_STATS_STRENGTH_BONUS_PERCENTAGE",
|
|
97
|
+
STATS_AGILITY_BONUS_PERCENTAGE = "MODIFIER_PROPERTY_STATS_AGILITY_BONUS_PERCENTAGE",
|
|
98
|
+
STATS_INTELLECT_BONUS_PERCENTAGE = "MODIFIER_PROPERTY_STATS_INTELLECT_BONUS_PERCENTAGE",
|
|
99
|
+
CAST_RANGE_BONUS = "MODIFIER_PROPERTY_CAST_RANGE_BONUS",
|
|
100
|
+
CAST_RANGE_BONUS_TARGET = "MODIFIER_PROPERTY_CAST_RANGE_BONUS_TARGET",
|
|
101
|
+
CAST_RANGE_BONUS_STACKING = "MODIFIER_PROPERTY_CAST_RANGE_BONUS_STACKING",
|
|
102
|
+
ATTACK_RANGE_BASE_OVERRIDE = "MODIFIER_PROPERTY_ATTACK_RANGE_BASE_OVERRIDE",
|
|
103
|
+
ATTACK_RANGE_BONUS = "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS",
|
|
104
|
+
ATTACK_RANGE_BONUS_UNIQUE = "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS_UNIQUE",
|
|
105
|
+
ATTACK_RANGE_BONUS_PERCENTAGE = "MODIFIER_PROPERTY_ATTACK_RANGE_BONUS_PERCENTAGE",
|
|
106
|
+
MAX_ATTACK_RANGE = "MODIFIER_PROPERTY_MAX_ATTACK_RANGE",
|
|
107
|
+
PROJECTILE_SPEED_BONUS = "MODIFIER_PROPERTY_PROJECTILE_SPEED_BONUS",
|
|
108
|
+
PROJECTILE_SPEED_BONUS_PERCENTAGE = "MODIFIER_PROPERTY_PROJECTILE_SPEED_BONUS_PERCENTAGE",
|
|
109
|
+
PROJECTILE_NAME = "MODIFIER_PROPERTY_PROJECTILE_NAME",
|
|
110
|
+
REINCARNATION = "MODIFIER_PROPERTY_REINCARNATION",
|
|
111
|
+
RESPAWNTIME = "MODIFIER_PROPERTY_RESPAWNTIME",
|
|
112
|
+
RESPAWNTIME_PERCENTAGE = "MODIFIER_PROPERTY_RESPAWNTIME_PERCENTAGE",
|
|
113
|
+
RESPAWNTIME_STACKING = "MODIFIER_PROPERTY_RESPAWNTIME_STACKING",
|
|
114
|
+
COOLDOWN_PERCENTAGE = "MODIFIER_PROPERTY_COOLDOWN_PERCENTAGE",
|
|
115
|
+
COOLDOWN_PERCENTAGE_ONGOING = "MODIFIER_PROPERTY_COOLDOWN_PERCENTAGE_ONGOING",
|
|
116
|
+
CASTTIME_PERCENTAGE = "MODIFIER_PROPERTY_CASTTIME_PERCENTAGE",
|
|
117
|
+
MANACOST_PERCENTAGE = "MODIFIER_PROPERTY_MANACOST_PERCENTAGE",
|
|
118
|
+
MANACOST_PERCENTAGE_STACKING = "MODIFIER_PROPERTY_MANACOST_PERCENTAGE_STACKING",
|
|
119
|
+
DEATHGOLDCOST = "MODIFIER_PROPERTY_DEATHGOLDCOST",
|
|
120
|
+
EXP_RATE_BOOST = "MODIFIER_PROPERTY_EXP_RATE_BOOST",
|
|
121
|
+
PREATTACK_CRITICALSTRIKE = "MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE",
|
|
122
|
+
PREATTACK_TARGET_CRITICALSTRIKE = "MODIFIER_PROPERTY_PREATTACK_TARGET_CRITICALSTRIKE",
|
|
123
|
+
MAGICAL_CONSTANT_BLOCK = "MODIFIER_PROPERTY_MAGICAL_CONSTANT_BLOCK",
|
|
124
|
+
PHYSICAL_CONSTANT_BLOCK = "MODIFIER_PROPERTY_PHYSICAL_CONSTANT_BLOCK",
|
|
125
|
+
PHYSICAL_CONSTANT_BLOCK_SPECIAL = "MODIFIER_PROPERTY_PHYSICAL_CONSTANT_BLOCK_SPECIAL",
|
|
126
|
+
TOTAL_CONSTANT_BLOCK_UNAVOIDABLE_PRE_ARMOR = "MODIFIER_PROPERTY_TOTAL_CONSTANT_BLOCK_UNAVOIDABLE_PRE_ARMOR",
|
|
127
|
+
TOTAL_CONSTANT_BLOCK = "MODIFIER_PROPERTY_TOTAL_CONSTANT_BLOCK",
|
|
128
|
+
OVERRIDE_ANIMATION = "MODIFIER_PROPERTY_OVERRIDE_ANIMATION",
|
|
129
|
+
OVERRIDE_ANIMATION_WEIGHT = "MODIFIER_PROPERTY_OVERRIDE_ANIMATION_WEIGHT",
|
|
130
|
+
OVERRIDE_ANIMATION_RATE = "MODIFIER_PROPERTY_OVERRIDE_ANIMATION_RATE",
|
|
131
|
+
ABSORB_SPELL = "MODIFIER_PROPERTY_ABSORB_SPELL",
|
|
132
|
+
REFLECT_SPELL = "MODIFIER_PROPERTY_REFLECT_SPELL",
|
|
133
|
+
DISABLE_AUTOATTACK = "MODIFIER_PROPERTY_DISABLE_AUTOATTACK",
|
|
134
|
+
BONUS_DAY_VISION = "MODIFIER_PROPERTY_BONUS_DAY_VISION",
|
|
135
|
+
BONUS_NIGHT_VISION = "MODIFIER_PROPERTY_BONUS_NIGHT_VISION",
|
|
136
|
+
BONUS_NIGHT_VISION_UNIQUE = "MODIFIER_PROPERTY_BONUS_NIGHT_VISION_UNIQUE",
|
|
137
|
+
BONUS_VISION_PERCENTAGE = "MODIFIER_PROPERTY_BONUS_VISION_PERCENTAGE",
|
|
138
|
+
FIXED_DAY_VISION = "MODIFIER_PROPERTY_FIXED_DAY_VISION",
|
|
139
|
+
FIXED_NIGHT_VISION = "MODIFIER_PROPERTY_FIXED_NIGHT_VISION",
|
|
140
|
+
MIN_HEALTH = "MODIFIER_PROPERTY_MIN_HEALTH",
|
|
141
|
+
ABSOLUTE_NO_DAMAGE_PHYSICAL = "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PHYSICAL",
|
|
142
|
+
ABSOLUTE_NO_DAMAGE_MAGICAL = "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_MAGICAL",
|
|
143
|
+
ABSOLUTE_NO_DAMAGE_PURE = "MODIFIER_PROPERTY_ABSOLUTE_NO_DAMAGE_PURE",
|
|
144
|
+
IS_ILLUSION = "MODIFIER_PROPERTY_IS_ILLUSION",
|
|
145
|
+
ILLUSION_LABEL = "MODIFIER_PROPERTY_ILLUSION_LABEL",
|
|
146
|
+
STRONG_ILLUSION = "MODIFIER_PROPERTY_STRONG_ILLUSION",
|
|
147
|
+
SUPER_ILLUSION = "MODIFIER_PROPERTY_SUPER_ILLUSION",
|
|
148
|
+
SUPER_ILLUSION_WITH_ULTIMATE = "MODIFIER_PROPERTY_SUPER_ILLUSION_WITH_ULTIMATE",
|
|
149
|
+
TURN_RATE_PERCENTAGE = "MODIFIER_PROPERTY_TURN_RATE_PERCENTAGE",
|
|
150
|
+
TURN_RATE_OVERRIDE = "MODIFIER_PROPERTY_TURN_RATE_OVERRIDE",
|
|
151
|
+
DISABLE_HEALING = "MODIFIER_PROPERTY_DISABLE_HEALING",
|
|
152
|
+
ALWAYS_ALLOW_ATTACK = "MODIFIER_PROPERTY_ALWAYS_ALLOW_ATTACK",
|
|
153
|
+
ALWAYS_ETHEREAL_ATTACK = "MODIFIER_PROPERTY_ALWAYS_ETHEREAL_ATTACK",
|
|
154
|
+
OVERRIDE_ATTACK_MAGICAL = "MODIFIER_PROPERTY_OVERRIDE_ATTACK_MAGICAL",
|
|
155
|
+
UNIT_STATS_NEEDS_REFRESH = "MODIFIER_PROPERTY_UNIT_STATS_NEEDS_REFRESH",
|
|
156
|
+
BOUNTY_CREEP_MULTIPLIER = "MODIFIER_PROPERTY_BOUNTY_CREEP_MULTIPLIER",
|
|
157
|
+
BOUNTY_OTHER_MULTIPLIER = "MODIFIER_PROPERTY_BOUNTY_OTHER_MULTIPLIER",
|
|
158
|
+
UNIT_DISALLOW_UPGRADING = "MODIFIER_PROPERTY_UNIT_DISALLOW_UPGRADING",
|
|
159
|
+
DODGE_PROJECTILE = "MODIFIER_PROPERTY_DODGE_PROJECTILE",
|
|
160
|
+
TRIGGER_COSMETIC_AND_END_ATTACK = "MODIFIER_PROPERTY_TRIGGER_COSMETIC_AND_END_ATTACK",
|
|
161
|
+
MODIFIER_EVENT_ON_SPELL_TARGET_READY = "MODIFIER_EVENT_ON_SPELL_TARGET_READY",
|
|
162
|
+
MODIFIER_EVENT_ON_ATTACK_RECORD = "MODIFIER_EVENT_ON_ATTACK_RECORD",
|
|
163
|
+
MODIFIER_EVENT_ON_ATTACK_START = "MODIFIER_EVENT_ON_ATTACK_START",
|
|
164
|
+
MODIFIER_EVENT_ON_ATTACK = "MODIFIER_EVENT_ON_ATTACK",
|
|
165
|
+
MODIFIER_EVENT_ON_ATTACK_LANDED = "MODIFIER_EVENT_ON_ATTACK_LANDED",
|
|
166
|
+
MODIFIER_EVENT_ON_ATTACK_FAIL = "MODIFIER_EVENT_ON_ATTACK_FAIL",
|
|
167
|
+
MODIFIER_EVENT_ON_ATTACK_ALLIED = "MODIFIER_EVENT_ON_ATTACK_ALLIED",
|
|
168
|
+
MODIFIER_EVENT_ON_PROJECTILE_DODGE = "MODIFIER_EVENT_ON_PROJECTILE_DODGE",
|
|
169
|
+
MODIFIER_EVENT_ON_ORDER = "MODIFIER_EVENT_ON_ORDER",
|
|
170
|
+
MODIFIER_EVENT_ON_UNIT_MOVED = "MODIFIER_EVENT_ON_UNIT_MOVED",
|
|
171
|
+
MODIFIER_EVENT_ON_ABILITY_START = "MODIFIER_EVENT_ON_ABILITY_START",
|
|
172
|
+
MODIFIER_EVENT_ON_ABILITY_EXECUTED = "MODIFIER_EVENT_ON_ABILITY_EXECUTED",
|
|
173
|
+
MODIFIER_EVENT_ON_ABILITY_FULLY_CAST = "MODIFIER_EVENT_ON_ABILITY_FULLY_CAST",
|
|
174
|
+
MODIFIER_EVENT_ON_BREAK_INVISIBILITY = "MODIFIER_EVENT_ON_BREAK_INVISIBILITY",
|
|
175
|
+
MODIFIER_EVENT_ON_ABILITY_END_CHANNEL = "MODIFIER_EVENT_ON_ABILITY_END_CHANNEL",
|
|
176
|
+
MODIFIER_EVENT_ON_PROCESS_UPGRADE = "MODIFIER_EVENT_ON_PROCESS_UPGRADE",
|
|
177
|
+
MODIFIER_EVENT_ON_REFRESH = "MODIFIER_EVENT_ON_REFRESH",
|
|
178
|
+
MODIFIER_EVENT_ON_TAKEDAMAGE = "MODIFIER_EVENT_ON_TAKEDAMAGE",
|
|
179
|
+
MODIFIER_EVENT_ON_DEATH_PREVENTED = "MODIFIER_EVENT_ON_DEATH_PREVENTED",
|
|
180
|
+
MODIFIER_EVENT_ON_STATE_CHANGED = "MODIFIER_EVENT_ON_STATE_CHANGED",
|
|
181
|
+
MODIFIER_EVENT_ON_ORB_EFFECT = "MODIFIER_EVENT_ON_ORB_EFFECT",
|
|
182
|
+
MODIFIER_EVENT_ON_PROCESS_CLEAVE = "MODIFIER_EVENT_ON_PROCESS_CLEAVE",
|
|
183
|
+
MODIFIER_EVENT_ON_DAMAGE_CALCULATED = "MODIFIER_EVENT_ON_DAMAGE_CALCULATED",
|
|
184
|
+
MODIFIER_EVENT_ON_ATTACKED = "MODIFIER_EVENT_ON_ATTACKED",
|
|
185
|
+
MODIFIER_EVENT_ON_DEATH = "MODIFIER_EVENT_ON_DEATH",
|
|
186
|
+
MODIFIER_EVENT_ON_RESPAWN = "MODIFIER_EVENT_ON_RESPAWN",
|
|
187
|
+
MODIFIER_EVENT_ON_SPENT_MANA = "MODIFIER_EVENT_ON_SPENT_MANA",
|
|
188
|
+
MODIFIER_EVENT_ON_TELEPORTING = "MODIFIER_EVENT_ON_TELEPORTING",
|
|
189
|
+
MODIFIER_EVENT_ON_TELEPORTED = "MODIFIER_EVENT_ON_TELEPORTED",
|
|
190
|
+
MODIFIER_EVENT_ON_SET_LOCATION = "MODIFIER_EVENT_ON_SET_LOCATION",
|
|
191
|
+
MODIFIER_EVENT_ON_HEALTH_GAINED = "MODIFIER_EVENT_ON_HEALTH_GAINED",
|
|
192
|
+
MODIFIER_EVENT_ON_MANA_GAINED = "MODIFIER_EVENT_ON_MANA_GAINED",
|
|
193
|
+
MODIFIER_EVENT_ON_TAKEDAMAGE_KILLCREDIT = "MODIFIER_EVENT_ON_TAKEDAMAGE_KILLCREDIT",
|
|
194
|
+
MODIFIER_EVENT_ON_HERO_KILLED = "MODIFIER_EVENT_ON_HERO_KILLED",
|
|
195
|
+
MODIFIER_EVENT_ON_HEAL_RECEIVED = "MODIFIER_EVENT_ON_HEAL_RECEIVED",
|
|
196
|
+
MODIFIER_EVENT_ON_BUILDING_KILLED = "MODIFIER_EVENT_ON_BUILDING_KILLED",
|
|
197
|
+
MODIFIER_EVENT_ON_MODEL_CHANGED = "MODIFIER_EVENT_ON_MODEL_CHANGED",
|
|
198
|
+
MODIFIER_EVENT_ON_MODIFIER_ADDED = "MODIFIER_EVENT_ON_MODIFIER_ADDED",
|
|
199
|
+
TOOLTIP = "MODIFIER_PROPERTY_TOOLTIP",
|
|
200
|
+
MODEL_CHANGE = "MODIFIER_PROPERTY_MODEL_CHANGE",
|
|
201
|
+
MODEL_SCALE = "MODIFIER_PROPERTY_MODEL_SCALE",
|
|
202
|
+
IS_SCEPTER = "MODIFIER_PROPERTY_IS_SCEPTER",
|
|
203
|
+
RADAR_COOLDOWN_REDUCTION = "MODIFIER_PROPERTY_RADAR_COOLDOWN_REDUCTION",
|
|
204
|
+
TRANSLATE_ACTIVITY_MODIFIERS = "MODIFIER_PROPERTY_TRANSLATE_ACTIVITY_MODIFIERS",
|
|
205
|
+
TRANSLATE_ATTACK_SOUND = "MODIFIER_PROPERTY_TRANSLATE_ATTACK_SOUND",
|
|
206
|
+
LIFETIME_FRACTION = "MODIFIER_PROPERTY_LIFETIME_FRACTION",
|
|
207
|
+
PROVIDES_FOW_POSITION = "MODIFIER_PROPERTY_PROVIDES_FOW_POSITION",
|
|
208
|
+
SPELLS_REQUIRE_HP = "MODIFIER_PROPERTY_SPELLS_REQUIRE_HP",
|
|
209
|
+
FORCE_DRAW_MINIMAP = "MODIFIER_PROPERTY_FORCE_DRAW_MINIMAP",
|
|
210
|
+
DISABLE_TURNING = "MODIFIER_PROPERTY_DISABLE_TURNING",
|
|
211
|
+
IGNORE_CAST_ANGLE = "MODIFIER_PROPERTY_IGNORE_CAST_ANGLE",
|
|
212
|
+
CHANGE_ABILITY_VALUE = "MODIFIER_PROPERTY_CHANGE_ABILITY_VALUE",
|
|
213
|
+
OVERRIDE_ABILITY_SPECIAL = "MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL",
|
|
214
|
+
OVERRIDE_ABILITY_SPECIAL_VALUE = "MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL_VALUE",
|
|
215
|
+
ABILITY_LAYOUT = "MODIFIER_PROPERTY_ABILITY_LAYOUT",
|
|
216
|
+
MODIFIER_EVENT_ON_DOMINATED = "MODIFIER_EVENT_ON_DOMINATED",
|
|
217
|
+
TEMPEST_DOUBLE = "MODIFIER_PROPERTY_TEMPEST_DOUBLE",
|
|
218
|
+
PRESERVE_PARTICLES_ON_MODEL_CHANGE = "MODIFIER_PROPERTY_PRESERVE_PARTICLES_ON_MODEL_CHANGE",
|
|
219
|
+
MODIFIER_EVENT_ON_ATTACK_FINISHED = "MODIFIER_EVENT_ON_ATTACK_FINISHED",
|
|
220
|
+
IGNORE_COOLDOWN = "MODIFIER_PROPERTY_IGNORE_COOLDOWN",
|
|
221
|
+
CAN_ATTACK_TREES = "MODIFIER_PROPERTY_CAN_ATTACK_TREES",
|
|
222
|
+
VISUAL_Z_DELTA = "MODIFIER_PROPERTY_VISUAL_Z_DELTA",
|
|
223
|
+
INCOMING_DAMAGE_ILLUSION = "MODIFIER_PROPERTY_INCOMING_DAMAGE_ILLUSION",
|
|
224
|
+
DONT_GIVE_VISION_OF_ATTACKER = "MODIFIER_PROPERTY_DONT_GIVE_VISION_OF_ATTACKER",
|
|
225
|
+
TOOLTIP2 = "MODIFIER_PROPERTY_TOOLTIP2",
|
|
226
|
+
MODIFIER_EVENT_ON_ATTACK_RECORD_DESTROY = "MODIFIER_EVENT_ON_ATTACK_RECORD_DESTROY",
|
|
227
|
+
MODIFIER_EVENT_ON_PROJECTILE_OBSTRUCTION_HIT = "MODIFIER_EVENT_ON_PROJECTILE_OBSTRUCTION_HIT",
|
|
228
|
+
SUPPRESS_TELEPORT = "MODIFIER_PROPERTY_SUPPRESS_TELEPORT",
|
|
229
|
+
MODIFIER_EVENT_ON_ATTACK_CANCELLED = "MODIFIER_EVENT_ON_ATTACK_CANCELLED",
|
|
230
|
+
SUPPRESS_CLEAVE = "MODIFIER_PROPERTY_SUPPRESS_CLEAVE",
|
|
231
|
+
BOT_ATTACK_SCORE_BONUS = "MODIFIER_PROPERTY_BOT_ATTACK_SCORE_BONUS",
|
|
232
|
+
ATTACKSPEED_REDUCTION_PERCENTAGE = "MODIFIER_PROPERTY_ATTACKSPEED_REDUCTION_PERCENTAGE",
|
|
233
|
+
MOVESPEED_REDUCTION_PERCENTAGE = "MODIFIER_PROPERTY_MOVESPEED_REDUCTION_PERCENTAGE",
|
|
234
|
+
ATTACK_WHILE_MOVING_TARGET = "MODIFIER_PROPERTY_ATTACK_WHILE_MOVING_TARGET",
|
|
235
|
+
MODIFIER_FUNCTION_LAST = "MODIFIER_FUNCTION_LAST",
|
|
236
|
+
MODIFIER_FUNCTION_INVALID = "MODIFIER_FUNCTION_INVALID"
|
|
237
|
+
}
|
package/README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Dota 2 Custom Game Tooltip Generator
|
|
2
|
+
A utility that converts Typescript code to localization that Dota 2 custom games can use.
|
|
3
|
+
|
|
4
|
+
# That's Typescript. Can it work with lua addons?
|
|
5
|
+
Yes! The code is typescript, but it doesn't force the entire project to be typescript as well.
|
|
6
|
+
|
|
7
|
+
# What do I need to use this repo?
|
|
8
|
+
In order to make Typescript compile at all, [NodeJS](https://nodejs.org/en/) must be installed on your system. Install the latest stable version shown in the link.
|
|
9
|
+
I heavily recommend using VSCode, not only because of its internal support of NodeJS, but also because it's a great editor. Also, not all editors support NodeJS and/or Typescript, which, depending on the editor, will make it inconvenient to work with the tooltip generator.
|
|
10
|
+
|
|
11
|
+
# Installation Instructions
|
|
12
|
+
* Install NodeJS.
|
|
13
|
+
* Install this module with `npm i @shushishtok/tooltip_generator` (please wait until you receive a message, that the adjustments are successful)
|
|
14
|
+
* If your resource directory is NOT `/resource`, then you need to change the path in `package.json`: `"~resource": "YOUR_PATH/resource"`
|
|
15
|
+
|
|
16
|
+
# Initialize the module!
|
|
17
|
+
* Run `npm run init` to initialize the module
|
|
18
|
+
|
|
19
|
+
# Build Instructions
|
|
20
|
+
You have several ways to start the build command.
|
|
21
|
+
|
|
22
|
+
To test: in the resource folder, go to `resource/localization`, open `localizationData.ts`, change one or more characters in the localization, and save. The terminal should show updates, and addon_english should update with that change.
|
|
23
|
+
|
|
24
|
+
## Running build task with console
|
|
25
|
+
* Open your console and type `npm run dev`
|
|
26
|
+
|
|
27
|
+
## Running build task with Visual Studio
|
|
28
|
+
* Run build task: `CTRL+SHIFT+B` on VSCode
|
|
29
|
+
|
|
30
|
+
## Running build task with Sublime:
|
|
31
|
+
* Tools > Build System > New Build System...
|
|
32
|
+
* Type:
|
|
33
|
+
```
|
|
34
|
+
{
|
|
35
|
+
"shell_cmd": "npm run dev"
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
* Save as any name like `dota_ts.sublime-build`
|
|
39
|
+
* Have `fsWatcher.ts` or `package.json` or any other file from the project open -> press Ctrl + Shift + B -> select `dota_ts` -> console opens and it is run, is closed with esc, will still continue to compile everything until sublime is closed.
|
package/_package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tooltip_generator",
|
|
3
|
+
"version": "1.3.14",
|
|
4
|
+
"scripts": {
|
|
5
|
+
"build": "run-p build:*",
|
|
6
|
+
"dev": "run-p dev:*",
|
|
7
|
+
"dev:localizationCompiler": "tsc --project node_modules/~resource/tsconfig.json",
|
|
8
|
+
"dev:localizationCompilerWatcher": "tsc --project node_modules/~resource/tsconfig.json --watch",
|
|
9
|
+
"dev:runlocalizationWatcher": "node node_modules/~generator/fsWatcher.js",
|
|
10
|
+
"dev:localizationGeneratorWatcher": "tsc --project node_modules/~generator/tsconfig.json",
|
|
11
|
+
"init": "link-module-alias && node node_modules/~generator/init.js"
|
|
12
|
+
},
|
|
13
|
+
"_moduleAliases": {
|
|
14
|
+
"~resource": "resource",
|
|
15
|
+
"~generator": "node_modules/@shushishtok/tooltip_generator"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/node": "^14.14.20",
|
|
19
|
+
"fs-extra": "^9.0.1",
|
|
20
|
+
"ts-node": "^9.1.1"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@shushishtok/tooltip_generator": "^1.2.3",
|
|
24
|
+
"link-module-alias": "^1.2.0",
|
|
25
|
+
"node-watch": "^0.7.1",
|
|
26
|
+
"npm-run-all": "^4.1.5",
|
|
27
|
+
"typescript": "^4.1.3",
|
|
28
|
+
"valve-kv": "^1.0.1"
|
|
29
|
+
}
|
|
30
|
+
}
|
package/fsWatcher.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
var fs = __importStar(require("fs"));
|
|
23
|
+
var watch = require("node-watch");
|
|
24
|
+
var completeData = {};
|
|
25
|
+
var resourcePath = "node_modules/~resource";
|
|
26
|
+
var generatorPath = "node_modules/~generator";
|
|
27
|
+
console.log(fs.realpathSync(generatorPath));
|
|
28
|
+
var watcher = watch([resourcePath + "/localization", generatorPath + "/localizationCompiler.js"], { recursive: true });
|
|
29
|
+
watcher.on("change", function (eventType, filePath) {
|
|
30
|
+
if (!filePath)
|
|
31
|
+
return;
|
|
32
|
+
if (filePath.includes("localizationCompiler.js")) {
|
|
33
|
+
compiler = loadCompiler();
|
|
34
|
+
}
|
|
35
|
+
var match = /(node_modules[\\/])?(.*[\/|\\](\w+)).js/g.exec(filePath);
|
|
36
|
+
if (eventType == "update" && filePath && match) {
|
|
37
|
+
var curpath = match[2];
|
|
38
|
+
var data = getDataFromFile(curpath + ".js");
|
|
39
|
+
if (data) {
|
|
40
|
+
completeData[curpath] = data;
|
|
41
|
+
combineData();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else if (eventType == "remove" && match) {
|
|
45
|
+
if (completeData.hasOwnProperty(match[2])) {
|
|
46
|
+
delete completeData[match[2]];
|
|
47
|
+
combineData();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
// not really neccessarry:
|
|
52
|
+
watcher.on("error", function (error) {
|
|
53
|
+
console.log("\x1b[31m%s\x1b[0m", "Something went wrong!");
|
|
54
|
+
console.log(error);
|
|
55
|
+
});
|
|
56
|
+
watcher.on("ready", function () {
|
|
57
|
+
console.log("\x1b[32m%s\x1b[0m", "Ready!");
|
|
58
|
+
});
|
|
59
|
+
var compiler = loadCompiler();
|
|
60
|
+
function getDataFromFile(filePath) {
|
|
61
|
+
if (!fs.existsSync("node_modules/" + filePath)) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
delete require.cache[require.resolve(filePath)];
|
|
65
|
+
var file = require(filePath);
|
|
66
|
+
if (file["GenerateLocalizationData"]) {
|
|
67
|
+
var localizationArr = file["GenerateLocalizationData"]();
|
|
68
|
+
return localizationArr;
|
|
69
|
+
}
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
function combineData() {
|
|
73
|
+
compiler.OnLocalizationDataChanged(completeData);
|
|
74
|
+
}
|
|
75
|
+
function loadCompiler() {
|
|
76
|
+
// Clear require cache
|
|
77
|
+
delete require.cache[require.resolve("~generator/localizationCompiler")];
|
|
78
|
+
// Require latest compiler version
|
|
79
|
+
var compilerClass = require("~generator/localizationCompiler").LocalizationCompiler;
|
|
80
|
+
return new compilerClass();
|
|
81
|
+
}
|
package/fsWatcher.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import { LocalizationCompiler } from './localizationCompiler';
|
|
3
|
+
import { LocalizationData} from './localizationInterfaces';
|
|
4
|
+
const watch = require("node-watch");
|
|
5
|
+
|
|
6
|
+
let completeData: {[path: string]: LocalizationData} = {};
|
|
7
|
+
const resourcePath = "node_modules/~resource";
|
|
8
|
+
const generatorPath = "node_modules/~generator";
|
|
9
|
+
|
|
10
|
+
console.log(fs.realpathSync(generatorPath));
|
|
11
|
+
|
|
12
|
+
let watcher = watch([resourcePath + "/localization", generatorPath + "/localizationCompiler.ts"], {recursive: true})
|
|
13
|
+
watcher.on("change", (eventType ?: 'update' | 'remove' | undefined, filePath ?: string) => {
|
|
14
|
+
if (!filePath) return;
|
|
15
|
+
if (filePath.includes("localizationCompiler.ts")) {
|
|
16
|
+
compiler = loadCompiler();
|
|
17
|
+
}
|
|
18
|
+
let match = /(node_modules[\\/])?(.*[\/|\\](\w+)).js/g.exec(filePath);
|
|
19
|
+
if (eventType == "update" && filePath && match) {
|
|
20
|
+
const curpath = match[2];
|
|
21
|
+
const data = getDataFromFile(curpath + ".ts");
|
|
22
|
+
if (data) {
|
|
23
|
+
completeData[curpath] = data;
|
|
24
|
+
combineData();
|
|
25
|
+
}
|
|
26
|
+
} else if (eventType == "remove" && match) {
|
|
27
|
+
if (completeData.hasOwnProperty(match[2])) {
|
|
28
|
+
delete completeData[match[2]];
|
|
29
|
+
combineData();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
// not really neccessarry:
|
|
35
|
+
watcher.on("error", (error: Error) => {
|
|
36
|
+
console.log("\x1b[31m%s\x1b[0m", "Something went wrong!");
|
|
37
|
+
console.log(error);
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
watcher.on("ready", () => {
|
|
41
|
+
console.log("\x1b[32m%s\x1b[0m", "Ready!");
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
let compiler = loadCompiler();
|
|
45
|
+
|
|
46
|
+
function getDataFromFile(filePath: string): LocalizationData | undefined {
|
|
47
|
+
if (!fs.existsSync("node_modules/" + filePath)){
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
delete require.cache[require.resolve(filePath)]
|
|
51
|
+
let file = require(filePath);
|
|
52
|
+
if (file["GenerateLocalizationData"]) {
|
|
53
|
+
const localizationArr: LocalizationData = file["GenerateLocalizationData"]();
|
|
54
|
+
return localizationArr;
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function combineData() {
|
|
60
|
+
compiler.OnLocalizationDataChanged(completeData);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function loadCompiler(): LocalizationCompiler
|
|
64
|
+
{
|
|
65
|
+
// Clear require cache
|
|
66
|
+
delete require.cache[require.resolve("~generator/localizationCompiler")]
|
|
67
|
+
// Require latest compiler version
|
|
68
|
+
const compilerClass: new () => LocalizationCompiler = require("~generator/localizationCompiler").LocalizationCompiler;
|
|
69
|
+
return new compilerClass();
|
|
70
|
+
}
|
package/init.js
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
var fs = __importStar(require("fs"));
|
|
23
|
+
function copyFiles() {
|
|
24
|
+
console.log("Copying initial files...");
|
|
25
|
+
var resourcePath = "node_modules/~resource";
|
|
26
|
+
var filePath = __dirname + "/tsconfig.json";
|
|
27
|
+
if (fs.existsSync(resourcePath)) {
|
|
28
|
+
filePath = __dirname + "/tsconfig.json";
|
|
29
|
+
var resultPath = resourcePath + "/tsconfig.json";
|
|
30
|
+
console.log("Checking if tsconfig.json exists in " + filePath);
|
|
31
|
+
if (fs.existsSync(resultPath)) {
|
|
32
|
+
console.log("tsconfig.json found!");
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
fs.copyFileSync(filePath, resultPath);
|
|
36
|
+
console.log("Not found, tsconfig.json copied to " + resultPath + " folder");
|
|
37
|
+
}
|
|
38
|
+
filePath = __dirname + "/ModifierProperties.d.ts";
|
|
39
|
+
resultPath = resourcePath + "/ModifierProperties.d.ts";
|
|
40
|
+
console.log("Checking if ModifierProperties.d.ts exists in " + filePath);
|
|
41
|
+
if (fs.existsSync(resultPath)) {
|
|
42
|
+
console.log("ModifierProperties.d.ts found!");
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
fs.copyFileSync(filePath, resultPath);
|
|
46
|
+
console.log("Not found, ModifierProperties.d.ts copied to " + resultPath + " folder");
|
|
47
|
+
}
|
|
48
|
+
filePath = __dirname + "/languages.ts";
|
|
49
|
+
resultPath = resourcePath + "/languages.ts";
|
|
50
|
+
console.log("Checking if languages.ts exsts in " + filePath);
|
|
51
|
+
if (fs.existsSync(resultPath)) {
|
|
52
|
+
console.log("languages.ts found!");
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
fs.copyFileSync(filePath, resultPath);
|
|
56
|
+
console.log("Not found, languages.ts copied to " + resultPath + " folder");
|
|
57
|
+
}
|
|
58
|
+
filePath = __dirname + "/languages.js";
|
|
59
|
+
resultPath = resourcePath + "/languages.js";
|
|
60
|
+
console.log("Checking if languages.js exsts in " + filePath);
|
|
61
|
+
if (fs.existsSync(resultPath)) {
|
|
62
|
+
console.log("languages.js found!");
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
fs.copyFileSync(filePath, resultPath);
|
|
66
|
+
console.log("Not found, languages.js copied to " + resultPath + " folder");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
var dirPath = __dirname + "/localization";
|
|
70
|
+
if (fs.existsSync(filePath) && fs.existsSync(resourcePath)) {
|
|
71
|
+
var resultPath = resourcePath + "/localization";
|
|
72
|
+
console.log("Checking if localization folder exists in " + resultPath);
|
|
73
|
+
if (!fs.existsSync(resultPath)) {
|
|
74
|
+
fs.mkdirSync(resultPath);
|
|
75
|
+
console.log("localization folder not found, creating the folder.");
|
|
76
|
+
}
|
|
77
|
+
console.log("Checking if localization folder is empty");
|
|
78
|
+
if (fs.readdirSync(resultPath).length === 0) {
|
|
79
|
+
console.log("Localization folder is empty, copying example files.");
|
|
80
|
+
if (!fs.existsSync(resultPath + "/localizationData.ts")) {
|
|
81
|
+
fs.copyFileSync(dirPath + "/localizationData.ts", resultPath + "/localizationData.ts");
|
|
82
|
+
}
|
|
83
|
+
if (!fs.existsSync(resultPath + "/localizationData.js")) {
|
|
84
|
+
fs.copyFileSync(dirPath + "/localizationData.js", resultPath + "/localizationData.js");
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
console.log("\x1b[36m%s\x1b[0m", "Finished copy process!");
|
|
89
|
+
}
|
|
90
|
+
function changeImports() {
|
|
91
|
+
var resourcePath = "node_modules/~resource";
|
|
92
|
+
var compilerFilePath = __dirname + "/localizationCompiler.ts";
|
|
93
|
+
if (fs.existsSync(compilerFilePath)) {
|
|
94
|
+
fs.readFile(compilerFilePath, 'utf8', function (err, data) {
|
|
95
|
+
if (err) {
|
|
96
|
+
return console.log(err);
|
|
97
|
+
}
|
|
98
|
+
var result = data.replace('import { Language } from "./languages"', 'import { Language } from "~resource/languages"');
|
|
99
|
+
fs.writeFile(compilerFilePath, result, 'utf8', function (err) {
|
|
100
|
+
if (err)
|
|
101
|
+
return console.log(err);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
var compilerJSFilePath = __dirname + "/localizationCompiler.js";
|
|
106
|
+
if (fs.existsSync(compilerJSFilePath)) {
|
|
107
|
+
fs.readFile(compilerJSFilePath, 'utf8', function (err, data) {
|
|
108
|
+
if (err) {
|
|
109
|
+
return console.log(err);
|
|
110
|
+
}
|
|
111
|
+
var result = data.replace('languages_1 = require("./languages");', 'languages_1 = require("~resource/languages");');
|
|
112
|
+
fs.writeFile(compilerJSFilePath, result, 'utf8', function (err) {
|
|
113
|
+
if (err)
|
|
114
|
+
return console.log(err);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
var interfacesFilePath = __dirname + "/localizationInterfaces.ts";
|
|
119
|
+
if (fs.existsSync(interfacesFilePath)) {
|
|
120
|
+
fs.readFile(interfacesFilePath, 'utf8', function (err, data) {
|
|
121
|
+
if (err) {
|
|
122
|
+
return console.log(err);
|
|
123
|
+
}
|
|
124
|
+
var stringResult = data.replace('import { Language } from "./languages"', 'import { Language } from "~resource/languages"');
|
|
125
|
+
fs.writeFile(interfacesFilePath, stringResult, 'utf8', function (err) {
|
|
126
|
+
if (err)
|
|
127
|
+
return console.log(err);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
var exampleFilePath = resourcePath + "/localization/localizationData.ts";
|
|
132
|
+
if (fs.existsSync(exampleFilePath)) {
|
|
133
|
+
fs.readFile(exampleFilePath, 'utf8', function (err, data) {
|
|
134
|
+
if (err) {
|
|
135
|
+
return console.log(err);
|
|
136
|
+
}
|
|
137
|
+
var stringResult = data.replace('import { AbilityLocalization, LocalizationData, ModifierLocalization, StandardLocalization } from "../localizationInterfaces";', 'import { AbilityLocalization, LocalizationData, ModifierLocalization, StandardLocalization } from "~generator/localizationInterfaces";');
|
|
138
|
+
fs.writeFile(exampleFilePath, stringResult, 'utf8', function (err) {
|
|
139
|
+
if (err)
|
|
140
|
+
return console.log(err);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
copyFiles();
|
|
146
|
+
changeImports();
|