Chaos_Knight
New Member
- Reaction score
- 39
Try this:
JASS:scope Multicast initializer InitTrig globals private constant integer ABILITY_ID = 039;A000039; //Raw code of the ability private constant integer DUMMY_ID = 039;dumy039; //Raw code of the dummy private constant string TEXTTAG_TEXT = "Multicast !" private constant real TEXTTAG_HEIGHT = 15. private constant real TEXT_SIZE = 0.023 private constant real LIFE_TIME_DUMMY = 2. // How long the dummy will last, if you use spells like blizzard you would want to make this longer. private constant real SPELL_DELAY = .2 // Sets the delay between the casted spell and the multicasted spell private constant real LIFE_TIME_TEXT = 3. // Time util text disappear private constant real TEXT_FADE_POINT = 2. // Time it takes before the text start to fade out private constant integer TEXT_COLOR_RED = 255 // The "red" color of the texttag private constant integer TEXT_COLOR_GREEN = 0 // The "greed" color of the texttag private constant integer TEXT_COLOR_BLUE = 0 // The "blue" color of the texttag private constant integer TEXT_COLOR_ALPHA = 0 // The "alpha" color of the texttag (Transparency) endglobals private constant function Chance takes integer spellLvl returns real return 12. + (8. * spellLvl) endfunction //=========================================================\\ //========== Nothing to edit past this point ==============\\ //=========================================================\\ private function Conditions takes nothing returns boolean return GetUnitAbilityLevel(GetTriggerUnit(), ABILITY_ID) > 0 and GetRandomInt(1, 100) <= Chance(GetUnitAbilityLevel(GetTriggerUnit(), ABILITY_ID)) endfunction private function Actions takes nothing returns nothing local unit u = GetTriggerUnit() local real x = GetUnitX (u) local real y = GetUnitY (u) local player p = GetOwningPlayer(u) local unit tu = CreateUnit(p, DUMMY_ID, x, y, 270) local unit t = GetSpellTargetUnit() local real tx = GetSpellTargetX() local real ty = GetSpellTargetY() local string s = UnitId2String(GetUnitCurrentOrder(u)) local texttag tt local integer spellid = GetSpellAbilityId() call UnitApplyTimedLife( tu, 039;BTLF039;, LIFE_TIME_DUMMY ) call UnitAddAbility( tu, GetSpellAbilityId() ) call SetUnitAbilityLevel (tu, ABILITY_ID, GetUnitAbilityLevel(u, ABILITY_ID ) ) //============= This is for the Multicast text, don't edit ===================\\ set tt = CreateTextTag() call SetTextTagText ( tt, TEXTTAG_TEXT, TEXT_SIZE ) call SetTextTagPos ( tt, x, y, TEXTTAG_HEIGHT ) call SetTextTagColor (tt, TEXT_COLOR_RED, TEXT_COLOR_GREEN, TEXT_COLOR_BLUE, TEXT_COLOR_ALPHA ) call SetTextTagVelocity ( tt, 0.0355 * Cos(90. * bj_DEGTORAD), 0.0355 * Sin( 90. * bj_DEGTORAD ) ) call SetTextTagVisibility ( tt, true ) call SetTextTagFadepoint ( tt, TEXT_FADE_POINT ) call SetTextTagLifespan ( tt, LIFE_TIME_TEXT ) call SetTextTagPermanent ( tt, false ) //==========================================================================\\ call TriggerSleepAction( SPELL_DELAY ) if GetRectMaxX( bj_mapInitialPlayableArea ) > tx and GetRectMinX( bj_mapInitialPlayableArea ) < tx and GetRectMaxY( bj_mapInitialPlayableArea ) > ty and GetRectMinY( bj_mapInitialPlayableArea ) < tx then call IssuePointOrder ( tu, s, tx, ty ) elseif GetSpellTargetUnit() != null then call IssueTargetOrder( tu, s, t ) call IssueImmediateOrder( tu, s ) endif set p = null set u = null set tu = null set t = null set s = null set tt = null endfunction private function InitTrig takes nothing returns nothing local trigger t = CreateTrigger() call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT) call TriggerAddCondition(t, Condition(function Conditions)) call TriggerAddAction(t, function Actions) endfunction endscope
Koma, i think SweishChef, didnt want to let you do his work...