bool PetActionUnicorn::Effect(OBJECT* obj, CHARACTER* Owner, int targetKey, double tick, bool bForceRender)
{
if (NULL == obj || NULL == Owner) return FALSE;
BMD* b = gmClientModels->GetModel(obj->Type);
vec3_t Position, vRelativePos, Light;
VectorCopy(obj->Position, b->BodyOrigin);
Vector(0.f, 0.f, 0.f, vRelativePos);
b->Animation(BoneTransform, obj->AnimationFrame, obj->PriorAnimationFrame, obj->PriorAction, obj->Angle, obj->HeadAngle);
Vector(0.f, 0.f, 0.f, vRelativePos);
b->TransformPosition(BoneTransform[11], vRelativePos, Position, false);
Vector(1.0f, 0.7f, 0.0f, Light);
CreateSprite(BITMAP_MAGIC, Position, 0.15f, Light, obj);
Vector(1.0f, 0.7f, 0.3f, Light);
if (rand() % 3 == 0)
CreateEffectSync(BITMAP_PIN_LIGHT, Position, obj->Angle, Light, 4, obj, -1, 0, 0, 0, 0.45f);
b->TransformPosition(BoneTransform[4], vRelativePos, Position, false);
Vector(0.5f, 0.5f, 1.0f, Light);
CreateSprite(BITMAP_SMOKE, Position, 1.2f, Light, obj);
CreateSprite(BITMAP_LIGHT, Position, 4.0f, Light, obj);
if (rand() % 2 == 0)
CreateParticleSync(BITMAP_SMOKE, Position, obj->Angle, Light, 67, 1.0f);
Vector(0.7f, 0.7f, 1.0f, Light);
b->TransformPosition(BoneTransform[4], vRelativePos, Position, false);
CreateParticleSync(BITMAP_SMOKELINE1, Position, obj->Angle, Light, 4, 0.6f, obj);
CreateParticleSync(BITMAP_SMOKELINE2, Position, obj->Angle, Light, 4, 0.6f, obj);
CreateParticleSync(BITMAP_SMOKELINE3, Position, obj->Angle, Light, 4, 0.6f, obj);
vec3_t LightAura;
vec3_t PosAura;
VectorCopy(obj->Position, PosAura);
PosAura[2] += 30.0f;
Vector(1.0f, 0.2f, 0.2f, LightAura);
CreateEffectSync(BITMAP_PIN_LIGHT, PosAura, obj->Angle, LightAura, 4, obj, -1, 0, 0, 0, 1.3f);
vec3_t Light2;
vec3_t Position2;
vec3_t vRelative2;
Vector(0.f, 0.f, 0.f, vRelative2);
Vector(0.7f, 0.2f, 0.6f, Light2);
b->TransformPosition(BoneTransform[3], vRelative2, Position2, false);
CreateSprite(BITMAP_LIGHTMARKS_FOREIGN, Position2, 1.8f, Light2, obj);
CreateSprite(BITMAP_LIGHTMARKS_FOREIGN, Position2, 1.0f, Light2, obj);
Vector(0.6f, 0.2f, 0.2f, Light2);
b->TransformPosition(BoneTransform[5], vRelative2, Position2, false);
Position2[2] -= 25.0f;
CreateEffectSync(MODEL_FEATHER_FOREIGN, Position2, obj->Angle, Light2, 4, NULL, -1, 0, 0, 0, 0.4f);
Vector(1.0f, 0.3f, 0.2f, Light2);
b->TransformPosition(BoneTransform[45], vRelative2, Position2, false);
CreateSprite(BITMAP_FLARE, Position2, 0.7f, Light2, obj);
b->TransformPosition(BoneTransform[48], vRelative2, Position2, false);
CreateSprite(BITMAP_FLARE, Position2, 0.7f, Light2, obj);
b->TransformPosition(BoneTransform[51], vRelative2, Position2, false);
CreateSprite(BITMAP_FLARE, Position2, 0.7f, Light2, obj);
vec3_t SmokeLight;
Vector(0.9f, 0.2f, 0.2f, SmokeLight);
CreateParticleSync(BITMAP_SMOKE, PosAura, obj->Angle, SmokeLight, 10, 1.6f);
return TRUE;
}
Find : w_PetActionUnicorn.cpp
-0000.jpg)
-0001.jpg)
-0002.jpg)