Staredit Network > Forums > Modding Discussion > Topic: [idea/wish] Battlecruiser crash instead getting destroyed
[idea/wish] Battlecruiser crash instead getting destroyed
Nov 18 2018, 5:31 pm
By: Lagi  

Nov 18 2018, 5:31 pm Lagi Post #1





From campaign, the infestation of Command Center by Queen, have slip through into the melee games. Its very rare gambit to do, but it add a very nice flavor to the game (and ignites thoughts: "what if queen can infest also Barracks? or Protoss structure? what if there can be more infected units trained or hybrid?").

===============

Similar to above gimmick, could be idea (also borrow from campaign) of Battlecruiser, which when destroyed (= 0 HP) above ground (land-able terrain), is transform into ground structure "crashed battlecruiser" with 30% of health.

If "crashed battlecruiser" is repair to 100%, he become again a flying Battlecruiser unit.

===============

it dont fit for Protoss [nor Zerg]. Even if Carrier crashed like this, Protoss could not repair it.



None.

Dec 1 2018, 10:45 pm Voyager7456 Post #2

Responsible for my own happiness? I can't even be responsible for my own breakfast

game_hooks.cpp
namespace hooks {
const u32 Func_ReplaceUnitWithType = 0x0049FED0;
void replaceUnitWithType(CUnit* unit, u16 newUnitId) {
    u32 newUnitId_ = newUnitId;
 __asm {
   PUSHAD
   PUSH newUnitId_
   MOV EAX, unit
   CALL Func_ReplaceUnitWithType
   POPAD
 }

};

...

for (CUnit *unit = *firstVisibleUnit; unit; unit = unit->link.next) {
if(unit->id == UnitId::scv && unit->mainOrderId == OrderId::Repair1) {
                CUnit* orderTarget = unit->orderTarget.unit;
                if(orderTarget && orderTarget->id == UnitId::Special_CrashedNoradII &&
                    ((orderTarget->hitPoints + 255) / 256) == orderTarget->getMaxHpInGame()) {
                        replaceUnitWithType(orderTarget, UnitId::battlecruiser);
                }
            }
...
}


Also made some changes in die_order, too much to quote properly, so I've attached my file below.

Attachments:
die_order.cpp
Hits: 1 Size: 7.2kb



all i am is a contrary canary
but i'm crazy for you
i watched you cradling a tissue box
sneezing and sniffling, you were still a fox


Modding Resources: The Necromodicon [WIP] | Mod Night
My Projects: SCFC | ARAI | Excision [WIP] | SCFC2 [BETA] | Robots vs. Humans | Leviathan Wakes [BETA]


Dec 2 2018, 2:52 pm Lagi Post #3



:w00t:

that was the least thing I expected, you're the best.

edit::
so conversion double into s32 with hp - but its compiler bitching

1>die_order.obj : error LNK2005: "struct CUnit * __cdecl CreateUnit(unsigned int,int,int,unsigned int)" (?CreateUnit@@YAPAUCUnit@@IHHI@Z) already defined in use_tech.obj


maybe i do something wrong

edit:
i rename CreateUnit => CreateUnitB , compile succesfuly.



edit2:
sometimes the BC dont want to fly back after crash. Maybe the damages were to severe to be fix during field repairs?



edit3:
nah... SCV just make bungling again. I damage bc again, and repair back :lol:



Post has been edited 4 time(s), last time on Dec 2 2018, 6:31 pm by Lagi.



None.

Dec 2 2018, 6:48 pm KYSXD Post #4



Quote from Lagi
:w00t:

edit2:
sometimes the BC dont want to fly back after crash. Maybe the damages were to severe to be fix during field repairs?


The bug may be a desync between the repair order and the frame when the unit actually reaches full health.

Another approach could be replacing the unit when the CBC reaches full health rather than checking for SCV's target.




Dec 2 2018, 6:52 pm Voyager7456 Post #5

Responsible for my own happiness? I can't even be responsible for my own breakfast

Quote from KYSXD
Quote from Lagi
:w00t:

edit2:
sometimes the BC dont want to fly back after crash. Maybe the damages were to severe to be fix during field repairs?


The bug may be a desync between the repair order and the frame when the unit actually reaches full health.

Another approach could be replacing the unit when the CBC reaches full health rather than checking for SCV's target.

Yeah, this seems to be the case. Assuming you don't have any need for full health crashed BCs anywhere else, just take this approach - it's much simpler. :P



all i am is a contrary canary
but i'm crazy for you
i watched you cradling a tissue box
sneezing and sniffling, you were still a fox


Modding Resources: The Necromodicon [WIP] | Mod Night
My Projects: SCFC | ARAI | Excision [WIP] | SCFC2 [BETA] | Robots vs. Humans | Leviathan Wakes [BETA]


Dec 2 2018, 9:54 pm Lagi Post #6



Code
if(unit->id == UnitId::Special_CrashedNoradII && unit->hitPoints == unit->getMaxHpInGame()) {
                       replaceUnitWithType(unit, UnitId::battlecruiser);
               }


strange thing
with voyager code the repair take much more time (its very slow)

using above, the repair is as fast as with normal repairing building (very fast)



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[01:06 am]
SiberianTiger -- anyone wanna play footmen frenzy with me on us west?
[12:50 am]
O)FaRTy1billion[MM] -- NudeRaider
NudeRaider shouted: Lanthanide ya, I was pretty sure this must be the case, but I was referring to FaRTy1billion
i was mostly joking. I haven't seen any specs for it or anything other than vague comments
[10:02 pm]
Suicidal Insanity -- jjf28
jjf28 shouted: if you do parse those correctly I'll probably turn on sub-string recycling by default since it makes smaller map sizes, else I'll prompt the user before turning it on
I won't parse those correctly - I do not remember why, maybe it was the embedded nulls in stat_txt.tbl, but I clip strings at the next offset in the table header and don't search for a nul byte
[04:26 pm]
Dem0n -- ya he's in there
[03:52 pm]
NudeRaider -- Lanthanide
Lanthanide shouted: i don't know, but Armo does, so he can be asked
whcih discord? SEN?
[03:51 pm]
NudeRaider -- Lanthanide
Lanthanide shouted: and also there are tools right now that let you use it, so to say "no one can use it" is wrong
ya, I was pretty sure this must be the case, but I was referring to FaRTy1billion
FaRTy1billion shouted: nobody knows
[02:02 pm]
jjf28 -- if you do parse those correctly I'll probably turn on sub-string recycling by default since it makes smaller map sizes, else I'll prompt the user before turning it on
[02:01 pm]
jjf28 -- e.g. "asdf<NUL>" and "df<NUL" occupy the same space in character data but have two different offsets
[02:00 pm]
jjf28 -- hey SI, are you parsing STR sections with sub-string recycling?
[12:52 pm]
Moose -- spicy memes
Please log in to shout.


Members Online: Roy, SiberianTiger, Pr0nogo