| 09-24-2007, 11:18 PM | #1 |
Ok this is going to sound lame but: Will someone make Abadon shield spell (the one from dota) I just want it to have the same model and to damage area after it is destroyed, everything else is optional. |
| 09-25-2007, 12:43 AM | #2 |
... Seriously, fail. "Abadon shield" means nothing to me, I have no idea what you want the spell to do. |
| 09-25-2007, 07:37 AM | #3 |
Oh ok, it is a shiled that can be cast on frendly units it can take X(level) damage, when shield takes all damage (when it is destroyed) it will explode for that X damage in an area Y around protected unit. It has a model that looks like atom (tree circles rotating around hero) |
| 09-25-2007, 10:10 AM | #4 |
steal model from dota, and about the spell... not sure how to make yet |
| 09-26-2007, 07:00 AM | #5 |
Sounds like a Zhall spell from AotZ... At any rate, you'd just have to create a trigger upon a unit casting the spell that registers when the unit being cast upon takes damage (EVENT_UNIT_DAMAGED). Then, and here's the tricky part, when the trigger fires, start a timer with a 0.00 second callback and attach the damage done, the damage source, and the triggering unit to that timer. In that callback, the game thinks the unit has taken the damage when it really hasn't, but you can negate all damage by setting a unit's life there. So what you'd do is figure out how much more damage the shield can absorb and then subtract the damage done from that (let's call this new number "ShieldRemainder"). If ShieldRemainder is <= 0, then do call SetWidgetLife(<TriggeringUnit>, GetWidgetLife(<TriggeringUnit>)+DamageDone+ShieldRemainder). If ShieldRemainder > 0 then do this: call SetWidgetLife(<TriggeringUnit>, GetWidgetLife(<TriggeringUnit>)+DamageDone). |
| 09-26-2007, 07:55 AM | #6 |
Thank you for that info but I was hoping someone else (aka not me) will do the spell. There are a lot spellmakers who like to do it, and this spell would be a nice resource submission. I am trying to divide up the work here, my map requires a lot of time and if I make every spell by myself it will take me ages. (I want to have at least a demo version by the end of the week) I made 90% of game engine and now I am simply going to import a lot of JESP spells from other people. This shield spell idea is pretty nice and since I did not find one in resources section I decided to ask someone to make it. Besides this is a generally applicable spell and could be used in majority of AoS and similar map types. |
| 09-26-2007, 08:35 AM | #7 |
Something like this might work, though my syntax might be slightly off: JASS:struct ShieldData real Life = 0.00 real Damage = 0.00 unit Target = null unit Damager = null trigger Trig = null method onDestroy takes nothing returns nothing call DestroyTrigger(this.Trig) endmethod endstruct function Callback takes nothing returns nothing local timer T = GetExpiredTimer() local ShieldData dat = ShieldData(GetCSData(T)) local real LifeRemainder = dat.Life-dat.Damage if GetUnitAbilityLevel(dat.Target, 'B008') >0 //B008 being the buff that the spell gives if LifeRemainder > 0.00 then call SetWidgetLife(dat.Target, GetWidgetLife(dat.Target)+Damage) set dat.Life = LifeRemainder else call SetWidgetLife(dat.Target, GetWidgetLife(dat.Target)+dat.Life) call dat.destroy() call PauseTimer(T) call DestroyTimer(T) endif else call dat.destroy() call PauseTimer(T) call DestroyTimer(T) endif set T = null endfunction function Damaged takes nothing returns boolean local timer T = CreateTimer() call SetCSData(T, ShieldData(GetCSData(GetTriggeringTrigger()))) call TimerStart(T, 0.00, false, function Callback) set T = null return false endfunction function Cast takes nothing returns nothing local ShieldData dat = ShieldData.create() set dat.Target = GetSpellTargetUnit() set dat.Damager = GetEventDamageSource() set dat.Life = GetUnitAbilityLevel(GetTriggerUnit(), 'A005')*200.00 //A005 being the spell set dat.Damage = GetEventDamage() set dat.Trig = CreateTrigger() call TriggerRegisterUnitEvent(dat.Trig, EVENT_UNIT_DAMAGED) call TriggerAddCondition(dat.Trig, Condition(function Damaged)) //Conditions so that we don't corrupt the handle stack call SetCSData(dat.Trig, dat) endfunction |
| 09-26-2007, 08:43 AM | #8 |
Ah yes, this would of course use OnDamage system.... All I need now is that shield model..... |
| 09-26-2007, 08:51 AM | #9 |
Does the current newgen edtitor support attaching structs to timers, or is there a set of functions similiar to handles/tables for that? Heres that model: |
| 09-26-2007, 08:55 AM | #10 |
If you don't mind using my aBuff system, I am willing to make this spell for you. |
| 09-26-2007, 09:25 AM | #11 |
*sigh* I wanted to make this spell lol he PM me as well to make it. Well anyway Fulla do you the author of that model? Anyway Pyro Im just wondering couldn't you just use a timer on a .1 check rate and calculate the health before that call then set the life of the shielded unit of that current + diference then reduce the health of some var/unit and when tht var = 0 destroy everything. Hopefully i typed it in a understaning way pyro. -Av3n |
| 09-26-2007, 09:39 AM | #12 |
The author of that model is EdwardSwolenToe. It was released on wc3sear.ch, so it is free for use (ie you aren't stealing from DotA). Just credit him. |
| 09-26-2007, 09:47 AM | #13 | |||
Quote:
Unfortunately abuff is not compatible with some general principles my map works on. I would really like Av3n to make this (due to the fact that he uses my systems) Quote:
*sigh* ABC v4.6 Quote:
Av3n, credit the man. |
| 09-26-2007, 10:02 AM | #14 | |
Quote:
|
| 09-26-2007, 10:19 AM | #15 |
No it is not incompatible with any system, just with game ideas. 1. All buffs from all spells on my map MUST be dispellable using standard dispell magic. (In fact dispelling plays major role in combats) 2. All spells must fail if unit has spell shield - no exeptions 3. Buffs must blink before they expire (This is VERY important, hero survival "massively" depends on the fact that he has some buffs on himself - if he does not have them he will probably die very fast) |
