All pastes #336618 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-02-02 03:52 UTC
rendered paste body
//**********************************************************************************
//*                                                                                *
//*  Spells By: emjlr3                                                             *
//*                                                                                *
//**********************************************************************************

//##############################  Local Handle Vars   By: Kattana
function H2I takes handle h returns integer
    return h
    return 0
endfunction

// ===========================
function LocalVars takes nothing returns gamecache
    if udg_Cache == null then
               call FlushGameCache(InitGameCache("somename"))
               set udg_Cache = InitGameCache("somename")
    endif
    return udg_Cache
endfunction

function SetHandleHandle takes handle subject, string name, handle value returns nothing
    if value==null then
        call FlushStoredInteger(LocalVars(),I2S(H2I(subject)),name)
    else
        call StoreInteger(LocalVars(), I2S(H2I(subject)), name, H2I(value))
    endif
endfunction

function SetHandleInt takes handle subject, string name, integer value returns nothing
    if value==0 then
        call FlushStoredInteger(LocalVars(),I2S(H2I(subject)),name)
    else
        call StoreInteger(LocalVars(), I2S(H2I(subject)), name, value)
    endif
endfunction

function SetHandleBoolean takes handle subject, string name, boolean value returns nothing
    if value==false then
        call FlushStoredBoolean(LocalVars(),I2S(H2I(subject)),name)
    else
        call StoreBoolean(LocalVars(), I2S(H2I(subject)), name, value)
    endif
endfunction

function SetHandleReal takes handle subject, string name, real value returns nothing
    if value==0 then
        call FlushStoredReal(LocalVars(), I2S(H2I(subject)), name)
    else
        call StoreReal(LocalVars(), I2S(H2I(subject)), name, value)
    endif
endfunction

function SetHandleString takes handle subject, string name, string value returns nothing
    if value==null then
        call FlushStoredString(LocalVars(), I2S(H2I(subject)), name)
    else
        call StoreString(LocalVars(), I2S(H2I(subject)), name, value)
    endif
endfunction

function GetHandleHandle takes handle subject, string name returns handle
    return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
    return null
endfunction
function GetHandleInt takes handle subject, string name returns integer
    return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleBoolean takes handle subject, string name returns boolean
    return GetStoredBoolean(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleReal takes handle subject, string name returns real
    return GetStoredReal(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleString takes handle subject, string name returns string
    return GetStoredString(LocalVars(), I2S(H2I(subject)), name)
endfunction

function GetHandleUnit takes handle subject, string name returns unit
    return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
    return null
endfunction
function GetHandleLocation takes handle subject, string name returns location
    return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
    return null
endfunction
function GetHandleTimer takes handle subject, string name returns timer
    return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
    return null
endfunction
function GetHandleTrigger takes handle subject, string name returns trigger
    return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
    return null
endfunction
function GetHandleEffect takes handle subject, string name returns effect
    return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
    return null
endfunction
function GetHandleGroup takes handle subject, string name returns group
    return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
    return null
endfunction
function GetHandleLightning takes handle subject, string name returns lightning
    return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
    return null
endfunction
function GetHandleWidget takes handle subject, string name returns widget
    return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
    return null
endfunction

function FlushHandleLocals takes handle subject returns nothing
    call FlushStoredMission(LocalVars(), I2S(H2I(subject)) )
endfunction
//##############################










//***************************************************************************************************
//* ===================   
//* Jump Template   
//* ===================  
//* Made by emjlr3. 
//* Parabola function by Shadow1500.
//* 
//*
//* How to implement:
//* ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
//* 1. Copy the abilities Jump and Fly Trick to your map. 
//*
//* 2. Copy this trigger to your map and the code in the custom script section of this map.
//*
//* 
//* Targets/Effects:
//* ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯   
//*    This is set to all enemy ground units.  The target effect can be changed.
//*
//* 
//************************************************************************************************


//Variable Configuration:
constant function Jump_Template_SpellId takes nothing returns integer
    return 'A013' //Rawcode of the ability being cast
endfunction

constant function Jump_Template_Fly_TrickId takes nothing returns integer
    return 'A012' //Rawcode of the Fly Trick ability
endfunction

constant function Jump_Template_Target_Damage takes real Level returns real
    return 0. + Level * 0. //Target Damage
endfunction

constant function Jump_Template_Target_Area takes real Level returns real
    return 200. + Level * 0 //Target Area
endfunction

constant function Jump_Template_Arc takes nothing returns real
    return 1.75 //Arc for the jump, a number between 1 and 2 reccomended
endfunction

constant function Jump_Template_Difference takes nothing returns real
    return 100. //This is the distance back the unit will land from the target location, so it can look as if the unit is actually slamming their weapon on the target, instead of towards the front of it
endfunction

constant function Jump_Template_Animation1 takes nothing returns string
    return "death" //Jump Animation
endfunction

constant function Jump_Template_Animation2 takes nothing returns string
    return "dance" //End jump Animation
endfunction

constant function Jump_Template_Effect takes nothing returns string
    return "Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl" //Target effect
endfunction

constant function Jump_Template_Timer_Speed takes nothing returns real
    return .01 //Speed of the periodic timer
endfunction

//Spell:
function Jump_Template_Group takes nothing returns boolean
    return IsUnitEnemy(GetFilterUnit(),bj_groupEnumOwningPlayer) and IsUnitType(GetFilterUnit(),UNIT_TYPE_GROUND)==true
endfunction

function Jump_Template_Damage takes unit u, real r, real x, real y, real r2, boolean attack, boolean ranged, attacktype at, damagetype dt, weapontype wt returns nothing
    local group g = CreateGroup()
    local boolexpr b = Condition(function Jump_Template_Group)
    local unit v

    set bj_groupEnumOwningPlayer = GetOwningPlayer(u)
    call GroupEnumUnitsInRange(g, x, y, r, b)
    call DestroyBoolExpr(b)    
    loop
        set v = FirstOfGroup(g)
        exitwhen v == null
        call GroupRemoveUnit(g,v)
        call UnitDamageTarget(u,v,r2,attack,ranged,at,dt,wt)
    endloop 
   
    call DestroyGroup(g)
    set g = null
    set b = null
endfunction

function Jump_Template_Parabola takes real dist, real maxdist,real curve returns real
    local real t = (dist*2)/maxdist-1
    return (-t*t+1)*(maxdist/curve)
endfunction

function Jump_Template_Move takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local unit u = GetHandleUnit(t,"u")
    local real maxdist = GetHandleReal(t,"maxdist")
    local real ang = GetHandleReal(t,"ang")
    local real movedist = GetHandleReal(t,"movedist")       
    local real x = GetHandleReal(t,"x")
    local real y = GetHandleReal(t,"y")
    local real dist = SquareRoot((GetUnitX(u)-x)*(GetUnitX(u)-x) + (GetUnitY(u)-y)*(GetUnitY(u)-y))    
    local real height = Jump_Template_Parabola(dist,maxdist,Jump_Template_Arc())
    local integer i = GetHandleInt(t,"i") 
    local integer level = GetHandleInt(t,"level")   
    
    call SetUnitPosition(u, GetUnitX(u) + movedist * Cos(ang * bj_DEGTORAD) , GetUnitY(u) + movedist * Sin(ang * bj_DEGTORAD))   
    call SetUnitFlyHeight(u,height,null)
    call SetHandleInt(t,"i",i + 1)

    if i == 50 then
        call SetUnitTimeScalePercent(u, 100)
    elseif i == 100 then
        call PauseTimer(t)
        call FlushHandleLocals(t)
        call DestroyTimer(t)
        call PauseUnit( u,false )
        call SetUnitPathing( u, true ) 
        call SetUnitFlyHeight(u,GetUnitDefaultFlyHeight(u),9999) 
        set x = GetUnitX(u) + Jump_Template_Difference() * Cos(ang * bj_DEGTORAD)
        set y = GetUnitY(u) + Jump_Template_Difference() * Sin(ang * bj_DEGTORAD) 
        call DestroyEffect(AddSpecialEffect(Jump_Template_Effect(), x,y))  
        call Jump_Template_Damage(u, Jump_Template_Target_Area(level), x, y, Jump_Template_Target_Damage(level), false, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_MAGIC, null) 
        call QueueUnitAnimation(u, Jump_Template_Animation2())           
    endif
    
    set t = null
    set u = null            
endfunction

function Jump_Template_Actions takes nothing returns nothing    
    local timer t = CreateTimer()
    local unit u = GetTriggerUnit()
    local integer level = GetUnitAbilityLevel(u, Jump_Template_SpellId())
    local real ux = GetUnitX(u)
    local real uy = GetUnitY(u)   
    local location l = GetSpellTargetLoc() 
    local real ang = bj_RADTODEG * Atan2((GetLocationY(l)-uy),(GetLocationX(l)-ux))
    local real x = GetLocationX(l) - Jump_Template_Difference() * Cos(ang * bj_DEGTORAD)
    local real y = GetLocationY(l) - Jump_Template_Difference() * Sin(ang * bj_DEGTORAD)    
    
    call SetHandleHandle(t,"u",u)
    call SetHandleReal(t,"x",x)
    call SetHandleReal(t,"y",y)
    call SetHandleReal(t,"maxdist", SquareRoot((ux-x)*(ux-x) + (uy-y)*(uy-y)))
    call SetHandleReal(t,"ang",ang)   
    call SetHandleReal(t,"movedist",SquareRoot((ux-x)*(ux-x) + (uy-y)*(uy-y))/100)
    call SetHandleInt(t,"i",0) 
    call SetHandleInt(t,"level",level)
   
    call PauseUnit( u,true )
    call SetUnitPathing( u, false )
    call UnitAddAbility( u,Jump_Template_Fly_TrickId() )
    call UnitRemoveAbility( u,Jump_Template_Fly_TrickId() )
    call SetUnitAnimation(u, Jump_Template_Animation1()) 
    call SetUnitTimeScalePercent(u, 30)    
    call TimerStart(t,Jump_Template_Timer_Speed(),true,function Jump_Template_Move)          
    
    set t = null
    set u = null 
    call RemoveLocation(l)
    set l = null   
endfunction

//===========================================================================
function Jump_Template_Conditions takes nothing returns boolean  
    return GetSpellAbilityId() == Jump_Template_SpellId()
endfunction

function InitTrig_Jump_Template takes nothing returns nothing
    set gg_trg_Jump_Template = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Jump_Template, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Jump_Template, Condition( function Jump_Template_Conditions ) )
    call TriggerAddAction( gg_trg_Jump_Template, function Jump_Template_Actions )
endfunction