#include "net_common.h" /* float fCurTime = 0; float fCycleTime = 0.5; float fEffectTime = -1; */ float CannonTimer[8]; float ReloadTime = 8; float ShootV[8]; ShootV[0] = 350; ShootV[1] = 420; ShootV[2] = 420; ShootV[3] = 350; ShootV[4] = -350; ShootV[5] = -300; ShootV[6] = -300; ShootV[7] = -350; int ObjectID, i; float x, y, z; float dx, dy, dz; void OnCache() { LoadScene("SW01"); CacheLevelModel("boom02"); PlayNetGameMusic(sw01_music); PlaySound("bgs_08_warship"); SetAudioEnvironment(ENVIRONMENT_PLAIN); SetCameraEffect(4, 0, 0.5, 0.03); } void OnHostGame() { } void ShootBomb(float x, float y, float z, float vx, float vy, float vz) { ObjectID = SpawnItem("Bomb", x, y, z); ThrowItem(ObjectID, vx, vy, vz); Play3DSound("impa_01_bomb_small_01", x, y, z); } void OnUpdate(float t) { // reload cannon for (i = 0 ; i < 8 ; i++) { if (CannonTimer[i] > 0) { CannonTimer[i] = CannonTimer[i] - t; } } /* // natu_38_lightning fCurTime = fCurTime + t; if (fCurTime > fCycleTime) { PlaySound("natu_38_lightning"); SetSceneLightFunction("Ambient", "function=InvSawTooth,min=1,max=50,cycle0=0.2,cycle1=0.5,loop=1"); fEffectTime = 0; while (fCurTime > fCycleTime) fCurTime = fCurTime - fCycleTime; fCycleTime = (rand() % 10001)/10000.0; fCycleTime = 5.0 + fCycleTime*(15.0-5.0); } if (fEffectTime >= 0) fEffectTime = fEffectTime + t; if (fEffectTime > 1.2) { fEffectTime = -1; SetSceneLightFunction("Ambient", "function=none,min=1,max=1,value=1"); } */ } // ------------- // Cannon // ------------- void CANNON_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "cannon", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_NONE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); } void CANNON_OnAttack(int id, int charaId, int damage) { for (i = 0 ; i < 8 ; i++) { ObjectID = FindItem(NumToStr("cannon_%02d", i)); if (ObjectID == id) break; } if (i >= 8) return; if (CannonTimer[i] <= 0) { GetEntityPos(id, x, y, z); GetEntityDir(id, dx, dy, dz); ShootBomb(x+90*dx, y+90*dy, z+10, 0, ShootV[i], 0); CannonTimer[i] = ReloadTime; } } // --------- // Bomb // --------- void BOMB_InitItem(int id) { SetItemAttrib(id, ITEM_MODEL, "boom02", 1); SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_SLEEP); SetItemAttrib(id, ITEM_LIFTABLE, 1); SetItemAttrib(id, ITEM_PICKABLE, 0); SetItemAttrib(id, ITEM_MASS, 3); SetItemAttrib(id, ITEM_GRAVITY, -500); SetItemAttrib(id, ITEM_BOUNCE, 0.1); SetItemAttrib(id, ITEM_FRICTION, 0.5); SetItemAttrib(id, ITEM_DAMAGE, 25); // OLD 50 // SetItemAttrib(id, ITEM_LIGHT_SFX, "OBJ_Dart_Normal"); SetItemAttrib(id, ITEM_FLY_SFX, "OBJ_Bomb01Drag"); SetItemAttrib(id, ITEM_HITWALL_SFX, "OBJ_Bomb01Down"); } void BombExplode2(int id) { float x, y, z; GetEntityPos(id, x, y, z); SpawnAttackSFX("OBJ_Bomb01", x, y, z, 2, 200, 0, GetItemThrower(id)); Destroy(id); // BreakItem(id, 500); } void BOMB_OnHitWall(int id) { BombExplode2(id); } void BOMB_OnHitItem(int id, int item) { BombExplode2(id); } void BOMB_OnHitChara(int id, int c) { BombExplode2(id); } void BOMB_OnAttack(int id, int c, int damage) { BombExplode2(id); } // ------- // Hint // ------- void CLTRGHINTSW011_InitItem(int id) { SetItemAttrib(id, ITEM_PHYSICS, ITEM_PHYSICS_NONE); SetItemAttrib(id, ITEM_LIFTABLE, 0); SetItemAttrib(id, ITEM_PICKABLE, 0); } void CLTRGHINTSW011_OnTouch(int id, int charaId) { if (!IsLocalPlayerChara(charaId)) return; ShowHint(HINT_SW01_1); }