sweet dota abilities?

F

fatpenguin

Guest
hey guys, i love dota, make fun of me, whatever. But for those of you who play dota i have some quesitons. I have been map making since like June, and i would say i have some skills. Anyways, i want to know what some dota abilities are based off of, how the triggers make it like it is, or if theres jass....maybe this is a dumb thread i dunno.
-Pudge's meat hook
-Sniper's scatter shot
-Crystal Maiden's freezing field
-Prophet's tree surrounder thing
-Avalanche's throw
-Treant Protector's overgrowth
thats all...mostly pudge and sniper's moves are what i care about. Any would be nice.. just do they use jass or do you know how to make those abilities.
 
i dont play dota but im guessing scatter shot is a multi-shot based off of barrage... theres a tutorial to make it in the tutorial sections
 
negative

no scatter shot is where a 'flare' model goes in the air and some kind of 'bomb' models fly down from the sky, so anyone have an answer, that plays dota?
 
as of the profets tree thing i'm guesing its bassed off of entangleing roots, then again you never know.
 
...

okay i guess you guys havent played dota....the tree thing isnt like entangling roots, 5 trees surround a person, and depending on if youre on the scourge side or sentinel side affects the look of the trees, and you can move and attacks still....so has anyone played dota? and i dont think scatter shot is off of cluster rockets..but maybe
 
You could just explain what they do, I never played dota so I don't know what those abilities mean
 
Wow so many people who haven't played DotA. Anyway I'll give you the Jass for them and if you need anymore help I'm here.
-Pudge's meat hook
Code:
===========================================================================
// Trigger: Meat Hook Cast
//===========================================================================
function Trig_Meat_Hook_Cast_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A06I' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Meat_Hook_Cast_Actions takes nothing returns nothing
    set udg_MHLevel = GetUnitAbilityLevelSwapped('A06I', GetTriggerUnit())
    set udg_MHAngle = AngleBetweenPoints(GetUnitLoc(GetSpellAbilityUnit()), GetSpellTargetLoc())
    set udg_MHUnits[1] = GetTriggerUnit()
    call EnableTrigger( gg_trg_Meat_Hook_Extend )
endfunction

//===========================================================================
function InitTrig_Meat_Hook_Cast takes nothing returns nothing
    set gg_trg_Meat_Hook_Cast = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Meat_Hook_Cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Meat_Hook_Cast, Condition( function Trig_Meat_Hook_Cast_Conditions ) )
    call TriggerAddAction( gg_trg_Meat_Hook_Cast, function Trig_Meat_Hook_Cast_Actions )
endfunction

//===========================================================================
// Trigger: Meat Hook Extend
//===========================================================================
function Trig_Meat_Hook_Extend_Func001Func007001003001001 takes nothing returns boolean
    return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003001002 takes nothing returns boolean
    return ( GetUnitAbilityLevelSwapped('A04R', GetFilterUnit()) != 1 )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003001 takes nothing returns boolean
    return GetBooleanAnd( Trig_Meat_Hook_Extend_Func001Func007001003001001(), Trig_Meat_Hook_Extend_Func001Func007001003001002() )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003002001 takes nothing returns boolean
    return ( IsUnitDeadBJ(GetFilterUnit()) == false )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003002002001 takes nothing returns boolean
    return ( GetUnitTypeId(GetFilterUnit()) != 'u00H' )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003002002002001 takes nothing returns boolean
    return ( GetUnitTypeId(GetFilterUnit()) != 'U00F' )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003002002002002001 takes nothing returns boolean
    return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_ANCIENT) == false )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003002002002002002 takes nothing returns boolean
    return ( 'Bmlt' == 'Bmlt' )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003002002002002 takes nothing returns boolean
    return GetBooleanAnd( Trig_Meat_Hook_Extend_Func001Func007001003002002002002001(), Trig_Meat_Hook_Extend_Func001Func007001003002002002002002() )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003002002002 takes nothing returns boolean
    return GetBooleanAnd( Trig_Meat_Hook_Extend_Func001Func007001003002002002001(), Trig_Meat_Hook_Extend_Func001Func007001003002002002002() )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003002002 takes nothing returns boolean
    return GetBooleanAnd( Trig_Meat_Hook_Extend_Func001Func007001003002002001(), Trig_Meat_Hook_Extend_Func001Func007001003002002002() )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003002 takes nothing returns boolean
    return GetBooleanAnd( Trig_Meat_Hook_Extend_Func001Func007001003002001(), Trig_Meat_Hook_Extend_Func001Func007001003002002() )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007001003 takes nothing returns boolean
    return GetBooleanAnd( Trig_Meat_Hook_Extend_Func001Func007001003001(), Trig_Meat_Hook_Extend_Func001Func007001003002() )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007Func001001 takes nothing returns boolean
    return ( udg_ChainLinkNumber > 3 )
endfunction

function Trig_Meat_Hook_Extend_Func001Func007Func002C takes nothing returns boolean
    if ( not ( IsUnitAlly(udg_MHUnits[2], GetOwningPlayer(udg_MHUnits[1])) == false ) ) then
        return false
    endif
    return true
endfunction

function Trig_Meat_Hook_Extend_Func001Func007Func003C takes nothing returns boolean
    if ( not ( udg_MHUnits[2] == null ) ) then
        return false
    endif
    return true
endfunction

function Trig_Meat_Hook_Extend_Func001Func007A takes nothing returns nothing
    if ( Trig_Meat_Hook_Extend_Func001Func007Func001001() ) then
        set udg_MHUnits[2] = GetEnumUnit()
    else
        call DoNothing(  )
    endif
    if ( Trig_Meat_Hook_Extend_Func001Func007Func002C() ) then
        call UnitDamageTargetBJ( udg_MHUnits[1], udg_MHUnits[2], ( I2R(udg_MHLevel) * 100.00 ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_ENHANCED )
    else
    endif
    if ( Trig_Meat_Hook_Extend_Func001Func007Func003C() ) then
        call DoNothing(  )
    else
        call DisableTrigger( GetTriggeringTrigger() )
        call EnableTrigger( gg_trg_Meat_Hook_Retract )
    endif
endfunction

function Trig_Meat_Hook_Extend_Func001C takes nothing returns boolean
    if ( not ( udg_ChainLinkNumber < ( 5 + ( 6 * udg_MHLevel ) ) ) ) then
        return false
    endif
    return true
endfunction

function Trig_Meat_Hook_Extend_Actions takes nothing returns nothing
    if ( Trig_Meat_Hook_Extend_Func001C() ) then
        set udg_ChainLinkNumber = ( udg_ChainLinkNumber + 1 )
        call CreateNUnitsAtLoc( 1, 'u00H', GetOwningPlayer(udg_MHUnits[1]), PolarProjectionBJ(GetUnitLoc(udg_MHUnits[1]), ( I2R(udg_ChainLinkNumber) * 40.00 ), udg_MHAngle), udg_MHAngle )
        set udg_ChainLinks[udg_ChainLinkNumber] = GetLastCreatedUnit()
        call ForGroupBJ( GetUnitsInRangeOfLocMatching(115.00, GetUnitLoc(GetLastCreatedUnit()), Condition(function Trig_Meat_Hook_Extend_Func001Func007001003)), function Trig_Meat_Hook_Extend_Func001Func007A )
    else
        call DisableTrigger( GetTriggeringTrigger() )
        call EnableTrigger( gg_trg_Meat_Hook_Retract )
    endif
endfunction

//===========================================================================
function InitTrig_Meat_Hook_Extend takes nothing returns nothing
    set gg_trg_Meat_Hook_Extend = CreateTrigger(  )
    call DisableTrigger( gg_trg_Meat_Hook_Extend )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Meat_Hook_Extend, 0.03 )
    call TriggerAddAction( gg_trg_Meat_Hook_Extend, function Trig_Meat_Hook_Extend_Actions )
endfunction

//===========================================================================
// Trigger: Meat Hook Retract
//===========================================================================
function Trig_Meat_Hook_Retract_Func004C takes nothing returns boolean
    if ( not ( udg_ChainLinkNumber == 0 ) ) then
        return false
    endif
    return true
endfunction

function Trig_Meat_Hook_Retract_Actions takes nothing returns nothing
    call SetUnitPositionLoc( udg_MHUnits[2], GetUnitLoc(udg_ChainLinks[udg_ChainLinkNumber]) )
    call RemoveUnit( udg_ChainLinks[udg_ChainLinkNumber] )
    set udg_ChainLinkNumber = ( udg_ChainLinkNumber - 1 )
    if ( Trig_Meat_Hook_Retract_Func004C() ) then
        set udg_MHUnits[2] = null
        call DisableTrigger( GetTriggeringTrigger() )
    else
    endif
endfunction

//===========================================================================
function InitTrig_Meat_Hook_Retract takes nothing returns nothing
    set gg_trg_Meat_Hook_Retract = CreateTrigger(  )
    call DisableTrigger( gg_trg_Meat_Hook_Retract )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Meat_Hook_Retract, 0.03 )
    call TriggerAddAction( gg_trg_Meat_Hook_Retract, function Trig_Meat_Hook_Retract_Actions )
endfunction

//===========================================================================
-Sniper's scatter shot
Based of Cluster Rockets I believe.

Oh sorry I have to go now post the rest up later. Try www.wc3sear.ch and in the spell section you'll find better versions of many spells.

-Crystal Maiden's freezing field
Code:
===========================================================================
// Trigger: Freezing field Cast
//===========================================================================
function Trig_Freezing_field_Cast_Func001C takes nothing returns boolean
    if ( ( GetSpellAbilityId() == 'A03R' ) ) then
        return true
    endif
    if ( ( GetSpellAbilityId() == 'A0AV' ) ) then
        return true
    endif
    return false
endfunction

function Trig_Freezing_field_Cast_Conditions takes nothing returns boolean
    if ( not Trig_Freezing_field_Cast_Func001C() ) then
        return false
    endif
    return true
endfunction

function Trig_Freezing_field_Cast_Func003C takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A03R' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Freezing_field_Cast_Actions takes nothing returns nothing
    set udg_FFHero = GetTriggerUnit()
    if ( Trig_Freezing_field_Cast_Func003C() ) then
        set udg_FFLv = GetUnitAbilityLevelSwapped('A03R', GetTriggerUnit())
    else
        set udg_FFLv = ( GetUnitAbilityLevelSwapped('A0AV', GetTriggerUnit()) + 1 )
    endif
    call EnableTrigger( gg_trg_FreezingFieldSpawn2 )
endfunction

//===========================================================================
function InitTrig_Freezing_field_Cast takes nothing returns nothing
    set gg_trg_Freezing_field_Cast = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Freezing_field_Cast, EVENT_PLAYER_UNIT_SPELL_CHANNEL )
    call TriggerAddCondition( gg_trg_Freezing_field_Cast, Condition( function Trig_Freezing_field_Cast_Conditions ) )
    call TriggerAddAction( gg_trg_Freezing_field_Cast, function Trig_Freezing_field_Cast_Actions )
endfunction

//===========================================================================
// Trigger: Freezing field end
//===========================================================================
function Trig_Freezing_field_end_Func002C takes nothing returns boolean
    if ( ( GetSpellAbilityId() == 'A03R' ) ) then
        return true
    endif
    if ( ( GetSpellAbilityId() == 'A0AV' ) ) then
        return true
    endif
    return false
endfunction

function Trig_Freezing_field_end_Conditions takes nothing returns boolean
    if ( not Trig_Freezing_field_end_Func002C() ) then
        return false
    endif
    return true
endfunction

function Trig_Freezing_field_end_Func004001003001 takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_FFHero)) == false )
endfunction

function Trig_Freezing_field_end_Func004001003002 takes nothing returns boolean
    return ( GetUnitTypeId(GetFilterUnit()) == 'e00C' )
endfunction

function Trig_Freezing_field_end_Func004001003 takes nothing returns boolean
    return GetBooleanAnd( Trig_Freezing_field_end_Func004001003001(), Trig_Freezing_field_end_Func004001003002() )
endfunction

function Trig_Freezing_field_end_Func004A takes nothing returns nothing
    call RemoveUnit( GetEnumUnit() )
endfunction

function Trig_Freezing_field_end_Actions takes nothing returns nothing
    set bj_wantDestroyGroup = true
    call DisableTrigger( gg_trg_FreezingFieldSpawn2 )
    call ForGroupBJ( GetUnitsInRangeOfLocMatching(1200.00, GetUnitLoc(udg_FFHero), Condition(function Trig_Freezing_field_end_Func004001003)), function Trig_Freezing_field_end_Func004A )
endfunction

//===========================================================================
function InitTrig_Freezing_field_end takes nothing returns nothing
    set gg_trg_Freezing_field_end = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Freezing_field_end, EVENT_PLAYER_UNIT_SPELL_ENDCAST )
    call TriggerAddCondition( gg_trg_Freezing_field_end, Condition( function Trig_Freezing_field_end_Conditions ) )
    call TriggerAddAction( gg_trg_Freezing_field_end, function Trig_Freezing_field_end_Actions )
endfunction

//===========================================================================
// Trigger: FreezingFieldSpawn2
//===========================================================================
function Trig_FreezingFieldSpawn2_Actions takes nothing returns nothing
    set udg_TempLoc = GetUnitLoc(udg_FFHero)
    call CreateNUnitsAtLoc( 1, 'e00C', GetOwningPlayer(udg_FFHero), PolarProjectionBJ(GetUnitLoc(udg_FFHero), GetRandomReal(125.00, 635.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
    call RemoveLocation(udg_TempLoc)
    call UnitAddAbilityBJ( 'A03X', GetLastCreatedUnit() )
    call SetUnitAbilityLevelSwapped( 'A03X', GetLastCreatedUnit(), udg_FFLv )
    call SetUnitPathing( GetLastCreatedUnit(), false )
    call IssueTargetOrderBJ( GetLastCreatedUnit(), "frostnova", GetLastCreatedUnit() )
    call UnitApplyTimedLifeBJ( 0.25, 'BTLF', GetLastCreatedUnit() )
endfunction

//===========================================================================
function InitTrig_FreezingFieldSpawn2 takes nothing returns nothing
    set gg_trg_FreezingFieldSpawn2 = CreateTrigger(  )
    call DisableTrigger( gg_trg_FreezingFieldSpawn2 )
    call TriggerRegisterTimerEventPeriodic( gg_trg_FreezingFieldSpawn2, 0.10 )
    call TriggerAddAction( gg_trg_FreezingFieldSpawn2, function Trig_FreezingFieldSpawn2_Actions )
endfunction

//===========================================================================
-Prophet's tree surrounder thing
Code:
===========================================================================
// Trigger: sprout
//===========================================================================
function Trig_sprout_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A06Q' ) ) then
        return false
    endif
    return true
endfunction

function Trig_sprout_Actions takes nothing returns nothing
    local destructable array dx
    call CreateFogModifierRadiusLocBJ( true, GetOwningPlayer(GetTriggerUnit()), FOG_OF_WAR_VISIBLE, GetUnitLoc(GetSpellTargetUnit()), 1000.00 )
    set bj_forLoopBIndex = 1
    set bj_forLoopBIndexEnd = 8
    loop
        exitwhen bj_forLoopBIndex > bj_forLoopBIndexEnd
        call CreateDestructableLoc( 'LTlt', PolarProjectionBJ(GetUnitLoc(GetSpellTargetUnit()), 130.00, ( I2R(GetForLoopIndexB()) * 45.00 )), GetRandomDirectionDeg(), 1, 0 )
        set dx[GetForLoopIndexB()] = GetLastCreatedDestructable()
        set bj_forLoopBIndex = bj_forLoopBIndex + 1
    endloop
    call TriggerSleepAction( ( 2.00 + I2R(GetUnitAbilityLevelSwapped('A06Q', GetTriggerUnit())) ) )
    set bj_forLoopAIndex = 1
    set bj_forLoopAIndexEnd = 8
    loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        call KillDestructable( dx[GetForLoopIndexA()] )
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
    call DestroyFogModifier( GetLastCreatedFogModifier() )
    call TriggerSleepAction( 4.00 )
    set bj_forLoopAIndex = 1
    set bj_forLoopAIndexEnd = 8
    loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        call RemoveDestructable( dx[GetForLoopIndexA()] )
        set dx[GetForLoopIndexA()] =null
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
endfunction

//===========================================================================
function InitTrig_sprout takes nothing returns nothing
    set gg_trg_sprout = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_sprout, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_sprout, Condition( function Trig_sprout_Conditions ) )
    call TriggerAddAction( gg_trg_sprout, function Trig_sprout_Actions )
endfunction

//===========================================================================

-Avalanche's throw
Based of Cluster Rockets I believe.

-Treant Protector's overgrowth
Code:
===========================================================================
// Trigger: overgrowth
//
// SPELLCASTER
//===========================================================================
function Trig_overgrowth_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A07Z' ) ) then
        return false
    endif
    return true
endfunction

function Trig_overgrowth_Func001001003001 takes nothing returns boolean
    return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction

function Trig_overgrowth_Func001001003002001 takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(GetTriggerUnit())) == true )
endfunction

function Trig_overgrowth_Func001001003002002 takes nothing returns boolean
    return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction

function Trig_overgrowth_Func001001003002 takes nothing returns boolean
    return GetBooleanAnd( Trig_overgrowth_Func001001003002001(), Trig_overgrowth_Func001001003002002() )
endfunction

function Trig_overgrowth_Func001001003 takes nothing returns boolean
    return GetBooleanAnd( Trig_overgrowth_Func001001003001(), Trig_overgrowth_Func001001003002() )
endfunction

function Trig_overgrowth_Func001A takes nothing returns nothing
    set udg_TempLoc = GetUnitLoc(GetTriggerUnit())
    call CreateNUnitsAtLoc( 1, 'e00E', GetOwningPlayer(GetTriggerUnit()), udg_TempLoc, bj_UNIT_FACING )
    call RemoveLocation(udg_TempLoc)
    call UnitAddAbilityBJ( 'A06T', GetLastCreatedUnit() )
    call SetUnitAbilityLevelSwapped( 'A06T', GetLastCreatedUnit(), GetUnitAbilityLevelSwapped('A07Z', GetTriggerUnit()) )
    call IssueTargetOrderBJ( GetLastCreatedUnit(), "entanglingroots", GetEnumUnit() )
endfunction

function Trig_overgrowth_Actions takes nothing returns nothing
    call ForGroupBJ( GetUnitsInRangeOfLocMatching(750.00, GetUnitLoc(GetTriggerUnit()), Condition(function Trig_overgrowth_Func001001003)), function Trig_overgrowth_Func001A )
endfunction

//===========================================================================
function InitTrig_overgrowth takes nothing returns nothing
    set gg_trg_overgrowth = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_overgrowth, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_overgrowth, Condition( function Trig_overgrowth_Conditions ) )
    call TriggerAddAction( gg_trg_overgrowth, function Trig_overgrowth_Actions )
endfunction

//===========================================================================
 
jaz did you jsut get an unprotected DOTA and copy the jass spells and paste them in, i doubt that copying those into a map along with the units and abilities needed and changing the raw codes to match teh copyied ones, as well as having the correct abilities, units and such for the raw codes would work, then again maybe it would....who knows

but yea if you really want something like this that you can not do yourself, propse it to vex in his section, if he likes the idea hell make it, probably even better then what is in the game right now


btw freezing field is very easy to make,, very little gui triggering needed, and all you need is the ability, a caster unit and an ability for the caster unit..... there is an example the tut. section if you want it
 
is it really necesary to have them all in JASS? Wouldnt it be more simple with GUI well as im a noob in the JASS-area i dont really know how much you can do with JASS.. But i think it would work in GUI too... Well.. And could you explain what those abilities do? I never played dota either .. xD
 
I guess that all those spell script you have can be writed with the GUI.

All those script follows the pattern of a gui generated jass, and noone that know justa little jass whould ever write such a poor script.

What I am saying is that that is only converted gui scripts. Not 'real' jass, of course it is jass but it isnt good at all.
 
This shows how sucky DOTA really is.
The creator doesn't even bother to remove leaks with the gui shit.
 
vile said:
This shows how sucky DOTA really is.
The creator doesn't even bother to remove leaks with the gui shit.
What you talking about man? What leaks? You mean that everyone knows what the spells are based off? :nuts:
 
LOL
No my friend. I meant memory leaks.

Using the kind of method DOTA uses, when defining any type of locations, they will reside in your memory unless you clear those locations.

Not only locations but it can be dummy units which aren't removed, or rects.
You should read a beginner's guide to jass and see what I mean.
 
emjlr3 said:
jaz did you jsut get an unprotected DOTA and copy the jass spells and paste them in, i doubt that copying those into a map along with the units and abilities needed and changing the raw codes to match teh copyied ones, as well as having the correct abilities, units and such for the raw codes would work, then again maybe it would....who knows

but yea if you really want something like this that you can not do yourself, propse it to vex in his section, if he likes the idea hell make it, probably even better then what is in the game right now


btw freezing field is very easy to make,, very little gui triggering needed, and all you need is the ability, a caster unit and an ability for the caster unit..... there is an example the tut. section if you want it

Actually, Jaz is a DotA hero triggering maker. But since ALL credits goes to IceFrog, you never knew. =)
 
rofl Ine Frog has made like 4 heroes over the past year, I doubt he needs anyones help to accomplish that, however if Guinsoo before him, who implemented most of the abilities, needed someone to make them for him, since none of them are very difficult at all, aside from toss and meat hook, then he sucked worse then I thought, if that is the case and Jaz did make some of the spells, then good for him
 
I have a sneaking suspicion that the JASS posted for the dota abilities were not what we might call 'finalized'. Memory leaks might become an issue, don't you think, in multiple hour long games of dota, and yet it's all completely normal the whole way through. Also, this is not a place to bash Guinsoo or Icefrog or whoever. They created the singular most popular map on battle.net and by insulting them, you insult the judgment and preferences of everyone who plays it.
 
I'm not insulting them, I was just pointing out that poor Jaz didn't get any credits. :(
 
Neophyte said:
I have a sneaking suspicion that the JASS posted for the dota abilities were not what we might call 'finalized'. Memory leaks might become an issue, don't you think, in multiple hour long games of dota, and yet it's all completely normal the whole way through. Also, this is not a place to bash Guinsoo or Icefrog or whoever. They created the singular most popular map on battle.net and by insulting them, you insult the judgment and preferences of everyone who plays it.

they were as you call 'finalized" and no neither of them created dota, actually eul did, and I dont even think it was his game to begin with
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • Varine Varine:
    Mayo also has vinegar. Vinegar is a very important part of it, it's effectively a delivery method FOR vinegar but hidden
    +1
  • Varine Varine:
    It's a neat ingredient. But yeah it's eggs. But a LOT of people think eggs count as dairy because of the fucking food pyramid the US keeps trying to make a thing
  • Varine Varine:
    I think on the new one they did change it, but idk. I don't really care whatever the government is doing right now because it's consistently absurd. Like what is RFK doing in charge of health anything? I love the bear story because WTF was that, but also, pretty much every time he talks it's WTF. Like even his voice sounds microwaved
    +1
  • Varine Varine:
    The pyramid is fucking dumb as shit, no matter how you arrange it.
  • Varine Varine:
    It's actually remarkably easy to make mayonnaise though. Fun fact, it USED to kind of be a French mother sauce. I believe that Careme considered it one, it may have been aioli but that has also built a different meaning than it used to. An aioli is just mayonnaise I mixed with other shit typically, I didn't start it don't come at me
  • Varine Varine:
    It's very hard to do it on a large scale though
  • Varine Varine:
    Depending on how you pour the oil the consistency can vary wildly, but that's true for most emulsions. I can only make about two quarts at a time with my robo coup, and if I have to make several in series because I forgot to order it becomes really obvious even when I do it. We have to wait and mix them all together to make sure we have the same thing.
  • Varine Varine:
    Hollandaise is also kind of like that, emulsions require a very steady hand to do exactly the same every time.
  • Varine Varine:
    Luckily I live in an age with electricity so it's way fucking faster, but when I was just a boy trying to find my place I had some hardcore chefs that made use do things like that by hand. It is WAY easier to get right by hand because you control it and can feel it, but it takes soooooo much longer. And on the scale a modern kitchen requires... I serve 400-500 guests on average per day right now, if I had 100 then we could do things way better
  • Varine Varine:
    But we can't do that. In the winter yeah, but I HAVE to get people through here right now so I can afford the staff that we CAN do that. We have about 100 days of summer, and if that summer doesn't make us what it will, then I can't operate the other most of the year with my staff. The owner is talking about closing two days a week to cut down on labor, I told him he should cut down on vacations and it did not go great. I do think I won though, I have to keep my fucking core staff and they have to be gainfully employed
  • Varine Varine:
    Sure some of them might take a second job, but I can't just cut my entire staff to unlivable hours, nor can I can cut them off all winter if I want them to come back.
  • Varine Varine:
    And also, there is no fucking way I'm pulling these hours come september. I only do this right now because I have to, the second I don't have to be the one doing it I won't be
  • Varine Varine:
    I have a 5 person core staff in the kitchen, not including me or Chef Ben
  • Varine Varine:
    Though two of those people are likely not making it this year. One of them has been replaced, the other I am kind of trying to. He's being a giant bitch, today I had to get onto him because in the three hours before I left he had taken like thirty minutes for cigarette breaks
  • Varine Varine:
    And he was also complaining to me the other day that he was out of weed so couldn't smoke any before work that day, and was confused about why I was annoyed he was telling me, his boss, that he is smoking weed everyday before work.
    +1
  • Varine Varine:
    Like yeah I can tell. I don't need to fucking know.
  • Varine Varine:
    So now he's getting scrutinized and will not be top of the list. I know I don't have the smartest people but I do expect them to have some common fucking sense
  • Varine Varine:
    I did do a rare thing for me and hire a girl last month without warning. Everyone was made at me because I started her at like 21, but she worked with me before and I was like don't care. She made 19 at her old job and I wanted her to come work with me, she is the best
    +1
  • Varine Varine:
    I'm going to get her a raise at the end of the summer. She wants to go to school again, but I want her to still work with me so.... she kind of can just tell me what the price is. I can go to 25 if she keeps up. I need to get her onto line more, that's what she wants, but I need her where she is and it's not fair that she doesn't get the little bit of raise that comes with it. She can do it no problem, I've worked with her there.
  • Varine Varine:
    It's just hard to move and train people unnecessarily right now. And also the line fucking sucks, it's not any more fun. This is turn and burn so I have the bankroll, and everyone suffers for it
  • Varine Varine:
    Eventually we'll get it balanced, we'
  • Varine Varine:
    we're starting online orders and stuff, but I also turn that off all the time because I barely keep up trying to be the best at Sysco shit
  • Varine Varine:
    I think it's gonna be a good fall and winter though. We're going to have a good staff, they will get along, they will be able to manage the workload and the complications, they know how to really cook this year, like every person on line knows their steak temps. Some of them use thermometers a lot and they don't always use them right, but they do know how to do it. Failure, especially in this field, is the only way to get better. They'll get it
  • Varine Varine:
    They won't get feel down while they do the thermometer, but we didn't have an instant read probe when I was learning. Like they did but god knows how off it is, you HAD to do it by feel. Even if the chef was fine with me bringing my own, it takes too long. Poke and know
  • The Helper The Helper:
    420 threads in the Artificial Intelligence forum :)

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials
      Top