Staredit Network > Forums > Modding Assistance > Topic: [solved] Dark Templar decloak when attack - code malfunction
[solved] Dark Templar decloak when attack - code malfunction
Aug 12 2019, 2:30 pm
By: Lagi  

Aug 12 2019, 2:30 pm Lagi Post #1



below code make Dark Templar become visible when he receive order to Attack.
Basing his invisiblity is very crude and is one big exploit. I would like DT to Decloak when he make attack (not when receive order).

someone has any advice/idea/ready to copypaste code how to limit DTemp cloak elegant?

also its cause bug: when warp into Dark Archon, DA become permanently cloaked.


//decloak Dark Templar when attacking /*unit->orderSignal & 0x20*/

if(unit->id == UnitId::ProtossDarkTemplar &&
!(unit->mainOrderId == OrderId::AttackUnit)){
unit->secondaryOrderId = OrderId::Cloak;
}
if(unit->id == UnitId::ProtossDarkTemplar &&
unit->mainOrderId == OrderId::AttackUnit){
unit->secondaryOrderId = OrderId::Decloak;
}

//decloak Dark Templar when attacking[/code]



edit
i try this one, but it doesnt work
//decloak Dark Templar when attacking /*unit->orderSignal & 0x20*/
if(unit->id == UnitId::ProtossDarkTemplar && unit->orderSignal & 0x20 &&

(unit->sprite->mainGraphic->animation == IscriptAnimation::GndAttkRpt
|| unit->sprite->mainGraphic->animation == IscriptAnimation::GndAttkInit)) {
unit->orderSignal &= ~(0x20);
unit->secondaryOrderId = OrderId::Decloak;
}


Post has been edited 3 time(s), last time on Aug 26 2019, 7:23 am by Lagi.



None.

Aug 16 2019, 4:31 pm Lagi Post #2



below works good. only this stim timer is clunky (increase attack speed :/ ), will try other timers after.

and need confirm warp to Darchon bug if still occur.

//decloak Dark Templar when attacking
if(unit->id == UnitId::ProtossDarkTemplar && unit->hitPoints > 0 )
{
if (unit->stimTimer <1){
unit->secondaryOrderId = OrderId::Cloak;
}

if ((unit->sprite->mainGraphic->animation == IscriptAnimation::GndAttkRpt
|| unit->sprite->mainGraphic->animation == IscriptAnimation::GndAttkInit)
|| (unit->mainOrderId == OrderId::WarpingDarkArchon))
{
unit->secondaryOrderId = OrderId::Decloak;
unit->stimTimer = 5;
}



}




None.

Aug 19 2019, 3:20 am Corbo Post #3

ALL PRAISE YOUR SUPREME LORD CORBO

Try this code:

Code
if (unit->id == UnitId::ProtossDarkTemplar){
                if (unit->mainOrderId == OrderId::AttackMove || unit->mainOrderId == OrderId::AttackUnit){
                    unit->setSecondaryOrder(OrderId::Decloak);
                } else {
                    unit->setSecondaryOrder(OrderId::Cloak);
                }
            }


You will need to uncheck the "Permanently Cloaked" box in units.dat for the Dark Templar unit, though.
Also you can add your dark archon thing if you wish. I did not really understand what you wanted there.



fuck you all

Aug 19 2019, 7:13 am Lagi Post #4



Hi Corbo,

I test the cloak/decloak with order:

1. DT become visible when he receive order being away from target (instead being invisible until he do the melee attack)



2. you increase micro with attack / stop dance. Because DT become invisible back immediately.



i need a timer to delay becoming cloak - I check almost all of them, and all have additional feature (ensmare slow templars down, stim speed up f.ex.)



None.

Aug 19 2019, 7:46 am Lagi Post #5



this seems to work, need some more testing

//decloak Dark Templar when attacking /*unit->orderSignal & 0x20*/
if(unit->id == UnitId::ProtossDarkTemplar && unit->hitPoints > 0 )
{
if (unit->rankIncrease>0){//cooldown
unit->rankIncrease--;
}

if (unit->rankIncrease==0)
unit->secondaryOrderId = OrderId::Cloak;



if ((unit->sprite->mainGraphic->animation == IscriptAnimation::GndAttkRpt
|| unit->sprite->mainGraphic->animation == IscriptAnimation::GndAttkInit)
|| (unit->mainOrderId == OrderId::WarpingDarkArchon)
|| (unit->mainOrderId == OrderId::ReaverStop))
{
unit->secondaryOrderId = OrderId::Decloak;
unit->rankIncrease = 90;
}
}
//end decloak Dark Templar when attacking


new button order allow to decloak all Dark templar and strike at whatever target (workers).
add in Firegraft new button for Dark templar with condition Always and action ReaverStop
in Firegraft in dat requirments, in order tab, add for Reaver stop [7] : Or / Current unit is .. / Dark templar

Post has been edited 1 time(s), last time on Sep 8 2019, 3:45 pm by Lagi.



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[07:12 pm]
NudeRaider -- but we already had this discussion a few months ago when it was cheap, but not as cheap as it is now. You didn't believe me all this time :sadwalk:
[07:09 pm]
NudeRaider -- Vrael
Vrael shouted: I paid like $500 for 64GB back in 2015
wow. It's like 200 now
[04:17 pm]
Vrael -- and here I've been grouching about RAM prices all this time
[04:16 pm]
Vrael -- I paid like $500 for 64GB back in 2015
[04:16 pm]
Vrael -- yep I'm an idiot
[04:14 pm]
Vrael -- I think I've accidentally been referencing current prices as what I paid back in 2015
[04:14 pm]
Vrael -- nevermind I am wrong
[02:48 pm]
Vrael -- smells like 5 years of stagnation to me
[02:48 pm]
Vrael -- instead its $2-300 for 64GB RAM which is the same price point I paid back in like 2015
[02:45 pm]
Vrael -- I thought we'd be getting 128GB for around $200 by now
Please log in to shout.


Members Online: Roy