Customisable Ivan Bombs have bugs - and now so do original Ivan Bombs
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ares |
Fix Released
|
Medium
|
DCoder DCoder |
Bug Description
IvanBomb.Warhead, .Damage, .Delay and .Detachable appear to function okay.
.AttachSound and .TickingSound do not work - original Ivan still has sounds, but new unit with custom settings does not.
.Image does not work. It is always the default dynamite image. There is no "Loading Ivan image failed" message in debug.txt.
.FlickerRate does not work correctly
Without changing the default settings, original Ivan's animation now proceeds through the frames rather quickly, and then the image disappears for the remainder of the Delay.
Flicker rate appears to affect how long the animation lasts rather than the rate at which it plays the anim frames back and forth.
I'd never seen the skull frame before. As mentioned in the Features, this appears to be a bug that has been fixed by Ares, albeit introducing a new bug of the animation no longer playing for the full duration of the Delay.
I believe the problem lies with this calculation:
int frame = 2 * (Unsorted:
Assuming original Ivan settings, at 200 frames into the Delay, frame should be calculated as 5 (and thus toggling between 5 and 6). However, using the above calculation, frame is actually calculated as 11. I think the 'multiply by 2' part should be taken out (that multiplier is only for the next line of code), although I could be wrong.
CellSpread does not work with IvanBomb warheads (to attach dynamite to multiple units simultaneously) - not sure if this was an implemented feature or not yet.
IvanBomb.
Ack. Committed the source code for revision 56 moments ago, which fixes most of these. In turn:
.AttachSound and .TickingSound - seem to be fixed, though TickingSound needs to have Control=loop set in sound controls. ;Not my hack.
.Image - seems to be fixed now.
.FlickerRate and skull frame - flicker rate fixed. But the logic was hardcoded to balance out 12 frames over the charge time, instead of shp frame amount. In addition the 13th frame of the shp was not displayed. My code balances the accurate shp frame count instead of 12, which means the 13th skull frame is shown at the very end. I see these choices:
a) ignore the last frame on all SHPs
b) hardcode a check, ignore last frame only if setting to BOMBCURS.SHP
c) never ignore the last frame
CellSpread - not implemented yet, though will certainly use its own cellspread tag and might be seriously overpowered without balancing it out somehow (make rof delay proportional to the amount of objects rigged, perhaps?)
IvanBomb. DestroysBridges - not implemented yet, just a non-functional ini flag.