vrtc / honeydew (public) (License: CC0) (since 2023-12-20) (hash sha1)
Warcraft 3: The Frozen Throne 1.27 custom scenario.
List of commits:
Subject Hash Author Date (UTC)
feat: channeling Arcane Blast displays graphics 3fc870ec0aa19e4b5ee6f99fa4a30a226598c0d0 Vladyslav Bondarenko 2024-01-08 19:01:07
doc: add Arcane Lance issue note cbeb0f649f523d3049bb1d9ffa7eeb8595c2f387 Vladyslav Bondarenko 2024-01-08 19:00:48
test: add additional mock heroes dd59587d7e110975d901bb1294d01eb702e46039 Vladyslav Bondarenko 2024-01-08 18:59:33
doc: add Arcane Lance issue note 2ea8eff1b2fa0b0123c387ad09a40afef0717337 Vladyslav Bondarenko 2024-01-08 18:59:12
doc: add issue d64841d9821a6925327b090574744271b048d0d0 Vladyslav Bondarenko 2024-01-05 17:01:07
feat: spell Attunement leaves battle scarring c3458ede56c8b85d6580851fa38a0c726ee5eb7c Vladyslav Bondarenko 2024-01-05 16:36:58
feat: spell Arcane Lance displays beam graphics e40bf803cc04cae231295a04a277480ad3acff19 Vladyslav Bondarenko 2024-01-05 15:24:10
fix: spell Attunement uses ability id for effects 93f15ee614ce5958f2a52a8fbc336c8938b40b09 Vladyslav Bondarenko 2023-12-27 08:57:29
feat!: add spell Arcane Lance base e164d3c3f3f69230dbb9b1e5045c551f5870337d Vladyslav Bondarenko 2023-12-23 23:23:58
nightly: 0.1-WIP c97814a5f138ed20958a7a1f88f5c2c6a2081906 Vladyslav Bondarenko 2023-12-22 04:08:33
doc: add note to self about computer users 40c8b325bce404489c03ab0a8db90cadbc008ae3 Vladyslav Bondarenko 2023-12-22 04:05:26
feat: add simple test scripts 9bb401206b8187fe06ae9b3d2309e1244cea3c36 Vladyslav Bondarenko 2023-12-22 04:03:25
feat: add spell Attunement 29062f0810e8e239f37639973a48b187d0b81e4a Vladyslav Bondarenko 2023-12-22 03:58:59
feat!: add spell Dampening Field 61ddc9409c00c79ee947578291c21eaa701f41e2 Vladyslav Bondarenko 2023-12-22 01:38:15
stash amend this 050948decf45ea58dd25b0eddf62d1593ed4460f Vladyslav Bondarenko 2023-12-21 07:39:33
fix!: patch map script correctly 3a8cb9ba68d82685dce420659416d36b00e06ac8 Vladyslav Bondarenko 2023-12-21 01:15:05
fix: typo in Makefile 7fd84f0bd1d63c2218c4f72f96ea2297f204a223 Vladyslav Bondarenko 2023-12-21 01:00:47
build: complicate Makefile bff3fe00560b3afe70a869e2859d665367b4f62d Vladyslav Bondarenko 2023-12-21 00:52:56
fix!: declare Jass module user correctly c7f6b810ca76a7eee47213061a0740039ec95cec Vladyslav Bondarenko 2023-12-21 00:50:29
doc: add macro preprocessor caveat 651bad90dfe868626b5aa19331f674b9981f1dee Vladyslav Bondarenko 2023-12-20 01:55:27
Commit 3fc870ec0aa19e4b5ee6f99fa4a30a226598c0d0 - feat: channeling Arcane Blast displays graphics
When unit channels Arcane Blast spell, at the target location a special
effect appears. The channeling may be canceled without triggering the
spell effect. The target location effect will be shown or hidden
accordingly.
Author: Vladyslav Bondarenko
Author date (UTC): 2024-01-08 19:01
Committer name: Vladyslav Bondarenko
Committer date (UTC): 2024-01-08 19:01
Parent(s): cbeb0f649f523d3049bb1d9ffa7eeb8595c2f387
Signer:
Signing key: EFF9624877D25D02
Signing status: E
Tree: 4ec834bdabe510b83d92bd3ee00388db3d050e84
File Lines added Lines deleted
honeydew.w3x 0 0
src/abla.j 98 3
File honeydew.w3x changed (mode: 100644) (index f3c814b..7a8abb1)
File src/abla.j changed (mode: 100644) (index 6e4502d..f671138)
... ... globals
21 21 constant real ABLA_DAMAGE_AMOUNT_MIN = 0.0 constant real ABLA_DAMAGE_AMOUNT_MIN = 0.0
22 22 constant real ABLA_HEAL_AMOUNT_MAX = 100000.0 constant real ABLA_HEAL_AMOUNT_MAX = 100000.0
23 23 constant real ABLA_HEAL_AMOUNT_MIN = 0.0 constant real ABLA_HEAL_AMOUNT_MIN = 0.0
24
24 25 integer abla_super_abilityid = 0 integer abla_super_abilityid = 0
25 26 real abla_super_damage = 0.0 real abla_super_damage = 0.0
26 27 real abla_super_heal = 0.0 real abla_super_heal = 0.0
27 28 unit abla_super_caster = null unit abla_super_caster = null
29
30 effect array abla_channel_effect
31 unit array abla_channel_unit
28 32 endglobals endglobals
29 33
30 34 // src/abla.j functions // src/abla.j functions
 
... ... function abla_apply takes integer abilityid, unit caster, location destination,
178 182 call RemoveLocation(destination) call RemoveLocation(destination)
179 183 endfunction endfunction
180 184
185 function abla_channel_effect_create takes integer ability_id, unit caster, location target returns effect
186 local effect e = null
187 local integer i = 0
188 local boolean flag = false
189
190 if null == caster then
191 return null
192 endif
193
194 if null == target then
195 return null
196 endif
197
198 set i = 0
199 loop
200 exitwhen i >= JASS_MAX_ARRAY_SIZE or flag
201 if null == abla_channel_unit[i] then
202 set abla_channel_unit[i] = caster
203 call DestroyEffect(abla_channel_effect[i])
204 set e = AddSpellEffectByIdLoc(ability_id, EFFECT_TYPE_AREA_EFFECT, target)
205 set abla_channel_effect[i] = e
206 set flag = true
207 endif
208 set i = i + 1
209 endloop
210
211 return e
212 endfunction
213
214 function abla_channel_effect_destroy takes unit caster returns nothing
215 local integer i = 0
216 local integer j = 0
217 local boolean flag = false
218
219 set i = 0
220 loop
221 exitwhen i >= JASS_MAX_ARRAY_SIZE or flag
222 set flag = abla_channel_unit[i] == caster or flag
223 if flag then
224 call DestroyEffect(abla_channel_effect[i])
225 set abla_channel_unit[i] = null
226 endif
227 set i = i + 1
228 endloop
229 endfunction
230
181 231 function abla_trig_filter takes nothing returns boolean function abla_trig_filter takes nothing returns boolean
182 232 return ABLA_ABILITY_ID == GetSpellAbilityId() return ABLA_ABILITY_ID == GetSpellAbilityId()
183 233 endfunction endfunction
184 234
185 function abla_trig_action takes nothing returns nothing
235 function abla_channel_action takes nothing returns nothing
236 local integer abilityid = GetSpellAbilityId()
237 local unit caster = GetSpellAbilityUnit()
238 local effect e = null
239 local location loc = GetSpellTargetLoc()
240 set e = abla_channel_effect_create(abilityid, caster, loc)
241 call RemoveLocation(loc)
242 endfunction
243
244 function abla_endcast_action takes nothing returns nothing
245 local unit caster = GetSpellAbilityUnit()
246 // The channel effect destructor must be triggered by SPELL_ENDCAST event.
247 // If it's called by the same action as for example SPELL_EFFECT, runtime errors occurr.
248 // The exact cause is unclear and the investigation isn't worth it at the time.
249 call abla_channel_effect_destroy(caster)
250 endfunction
251
252 function abla_effect_action takes nothing returns nothing
186 253 local integer abilityid = 0 local integer abilityid = 0
187 local unit caster = null
254 local unit caster = GetSpellAbilityUnit()
188 255 local location destination = null local location destination = null
189 256 local real area = 0.0 local real area = 0.0
190 257 local real damage = 0.0 local real damage = 0.0
 
... ... endfunction
206 273
207 274 function abla_init takes nothing returns nothing function abla_init takes nothing returns nothing
208 275 local conditionfunc filter = Condition(function abla_trig_filter) local conditionfunc filter = Condition(function abla_trig_filter)
209 call spell_trig_init(filter, function abla_trig_action)
276 local trigger t0 = null
277 local trigger t2 = null
278 local trigger t4 = null
279 local player p = null
280 local integer i = 0
281
282 set t0 = CreateTrigger()
283 set t2 = CreateTrigger()
284 set t4 = CreateTrigger()
285 set i = 0
286 loop
287 // bj_MAX_PLAYERS is max amount of users.
288 // bj_MAX_PLAYER_SLOTS is max amount players, including neutral utility presets.
289 exitwhen i >= bj_MAX_PLAYER_SLOTS
290 set p = Player(i)
291 call TriggerRegisterPlayerUnitEvent(t0, p, EVENT_PLAYER_UNIT_SPELL_CHANNEL, null)
292 call TriggerRegisterPlayerUnitEvent(t2, p, EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
293 call TriggerRegisterPlayerUnitEvent(t4, p, EVENT_PLAYER_UNIT_SPELL_ENDCAST, null)
294 set i = i + 1
295 endloop
296
297 if filter != null then
298 call TriggerAddCondition(t0, filter)
299 call TriggerAddCondition(t2, filter)
300 call TriggerAddCondition(t4, filter)
301 endif
302 call TriggerAddAction(t0, function abla_channel_action)
303 call TriggerAddAction(t2, function abla_effect_action)
304 call TriggerAddAction(t4, function abla_endcast_action)
210 305 endfunction endfunction
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/vrtc/honeydew

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/vrtc/honeydew

Clone this repository using git:
git clone git://git.rocketgit.com/user/vrtc/honeydew

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main