/* HitWeapId_S44.h -- Rock the unit when it takes a hit for S44 */ #ifndef __HITWEAPID_S44_H_ #define __HITWEAPID_S44_H_ #ifndef HIT_ROCK_SPEED #define HIT_ROCK_SPEED <105> #endif #ifndef HIT_RESTORE_SPEED #define HIT_RESTORE_SPEED <30> #endif //#ifndef ARMOUR //#define ARMOUR get MAX_HEALTH #define COBSCALE 65536 #define ExCOBSCALE 178145 #ifndef QUALITY #define QUALITY 1801 // =0.0275 #endif #define AT_WEAPON 100 HitAnim(anglez, anglex) { signal 16; set-signal-mask 16; turn base to z-axis anglez speed HIT_ROCK_SPEED; turn base to x-axis anglex speed HIT_ROCK_SPEED; wait-for-turn base around z-axis; wait-for-turn base around x-axis; turn base to z-axis <0> speed HIT_RESTORE_SPEED; turn base to x-axis <0> speed HIT_RESTORE_SPEED; } HitByWeaponId(anglez,anglex,id,damage) { var armour, newDamage, tempDamage; if (Id>49 && Id<300) start-script HitAnim(anglez, anglex); if (id == AT_WEAPON) { armour = ARMOUR; newDamage = 100; tempDamage = damage / 100; if (tempDamage < armour) newDamage = (tempDamage/100 * get POW (ExCOBSCALE, ((0-QUALITY) * (armour/100 - tempDamage/100))))/COBSCALE; #ifdef DEBUG get PRINT (tempDamage, newDamage, newDamage * 10000 / tempDamage); #endif return newDamage * 10000 / tempDamage; } else return 100; } setSFXoccupy (terrain) { if (terrain == 0 AND !(get BUILD_PERCENT_LEFT)) turn base to y-axis <90> now; else turn base to y-axis 0 now; } #endif