How did you do the zealot charge?
Basically, I use the unit's energy as a counter for the charge ability. If the energy is full and the target is in range I set energy to 0 and set the unit's stim timer to the value I want.
Where is the code for the stalker blink?
Where is the code for the psionic transfer?
Here I have a namespace with all the available plugins implemented via game-loop.
What exactly is meant by "improved shield regen"?
By default, SC:BW regenerates shields at a fixed rate. The "improve" I added is the SCII behaviour: If the unit is not attacked within X seconds (using a unit's value as a timer) recharge the shields (with a bigger rate than the SC:BW default).
Here you can take a look to some of the changes I made to make it work.
What changes in Firegraft do I have to make to implement the charge, blink, and transfer?
That's a tricky one... I do not remember

I think the changes in GPTP should do the work.
For the blink and transfer you may need a button to trigger the plugin's behavior.
Maybe I should write more
tutorials to explain how the plugins work, but I do not know if it is worth the effort as I don't see many people using the already written (or asking for others).
Many thanks!
I guess I can't have everything handed to me and I'll have to figure things out
None.
for the Burrow movement to give nice single button for unburrow / burrow. I create 2x button set in firegraft (for zergling and samir duran(burrow zergling)) and replace the button set as the zergling burrow.
samir duran button set, when zergling use burrow movement

//KYSXD - Burrow movement start
void runBurrowedMovement(CUnit *unit) {
if(unit->id == UnitId::ZergZergling &&
scbw::hasTechResearched(unit->playerId, TechId::UnusedTech26) &&
unit->playerId == *LOCAL_HUMAN_ID)
{
if(unit->mainOrderId == OrderId::Burrow) {
unit->_unused_0x106 = (u8)true;
unit->currentButtonSet = UnitId::Hero_InfestedDuran;
}
if(unit->_unused_0x106
&& unit->status & UnitStatus::Burrowed
&& unit->status & UnitStatus::CanNotReceiveOrders) {
unit->status &= ~UnitStatus::Burrowed;
unit->status &= ~UnitStatus::CanNotReceiveOrders;
unit->status |= UnitStatus::IsGathering;
unit->flingyMovementType = 0;
unit->flingyTopSpeed = 853; //match templar. 1280 default by KSYXD
unit->flingyAcceleration = 27; //128
unit->flingyTurnSpeed = 40;
}
if(unit->_unused_0x106
&& unit->mainOrderId != OrderId::Unburrow
&& unit->sprite->mainGraphic->animation != IscriptAnimation::Burrow) {
unit->playIscriptAnim(IscriptAnimation::Burrow);
}
if(unit->_unused_0x106
&& OrderId::Attack1 <= unit->mainOrderId
&& unit->mainOrderId <= OrderId::AttackMove) {
if(unit->orderTarget.unit) {
unit->orderTo(OrderId::Move, unit->orderTarget.unit);
}
else if(unit->orderTarget.pt.x
&& unit->orderTarget.pt.y) {
unit->orderTo(OrderId::Move, unit->orderTarget.pt.x, unit->orderTarget.pt.y);
}
else unit->orderTo(OrderId::Nothing2);
}
if(unit->mainOrderId == OrderId::ReaverStop
&& unit->_unused_0x106) {
unit->_unused_0x106 = (u8)false;
unit->currentButtonSet = UnitId::zergling;
unit->status &= ~UnitStatus::IsGathering;
unit->status |= UnitStatus::Burrowed;
unit->flingyMovementType = 2;
unit->orderTo(OrderId::Unburrow);
}
}
} //KYSXD - Burrow movement end
None.
Not sure if you still browse here @KYSXD, is the 0.1 branch the stable code for the hooks you were working on here:
https://github.com/KYSXD/GPTP-For-VS2008/tree/0.1/GPTP ?