Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void createWarpPortal(CUnit* unit) {
- CExtendedUnitLayout* extendedStatus = unit->extendedStatus();
- if(extendedStatus) {
- if(extendedStatus->linkedWarpPortal) {
- extendedStatus->linkedWarpPortal->remove();
- }
- Point16 coords;
- coords.x = unit->orderTarget.pt.x;
- coords.y = unit->orderTarget.pt.y;
- fixTargetLocation(&coords,UnitId::Spell_DarkSwarm);
- CUnit* dark_swarm_unit = scbw::createUnitAtPos(UnitId::Spell_DarkSwarm,unit->playerId,coords.x,coords.y);
- if(dark_swarm_unit) {
- unit->energy -= 25600;
- replaceUnitWithType(dark_swarm_unit, UnitId::Powerup_YoungChrysalis);
- CExtendedUnitLayout* ds_extendedStatus = (CExtendedUnitLayout*)calloc(1, sizeof(CExtendedUnitLayout));
- extendedStatusTable.insert(std::make_pair((void*)dark_swarm_unit, (void*)ds_extendedStatus));
- ds_extendedStatus->linkedWarpPortal = unit;
- extendedStatus->linkedWarpPortal = dark_swarm_unit;
- dark_swarm_unit->status |= UnitStatus::NoCollide;
- dark_swarm_unit->sprite->elevationLevel = 11; //0x0B
- scbw::minimapPing(dark_swarm_unit->sprite->position.x, dark_swarm_unit->sprite->position.y, 0xFF0000, 8);
- for(int i = 0; i < 7; i++) {
- scbw::showErrorMessageWithSfx(i, 1516, 1132);
- }
- //update various stuff (set hp, set shield...) not finished on CreateUnit
- function_004A01F0(dark_swarm_unit);
- updateUnitStrength(dark_swarm_unit);
- }
- unit->mainOrderId = OrderId::Nothing2;
- unit->currentButtonSet = 227;
- unit->sprite->removeOverlay(ImageId::WarpGateOverlay);
- unit->sprite->createOverlay(ImageId::WarpGateOverlay, 0, 0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement