Massassi Forums Logo

This is the static archive of the Massassi Forums. The forums are closed indefinitely. Thanks for all the memories!

You can also download Super Old Archived Message Boards from when Massassi first started.

"View" counts are as of the day the forums were archived, and will no longer increase.

ForumsCog Forum → Sith single player cogs
Sith single player cogs
2003-01-02, 6:43 PM #1
I was wondering how to make it so one sith can have all dark force powers and a double bladed saber?
it could reallllly help, thanx [http://forums.massassi.net/html/biggrin.gif]
Diego

------------------
All is fair in love and war.

[This message has been edited by diego f3tt (edited January 02, 2003).]
2003-01-03, 5:34 AM #2
For the dark jedi cog, here's one of mine, it works, just modify the random numbers test to get the results you want.
Code:
# Jedi Knight Cog Script
#
# DARKJEDI_STX.COG
#
# DARK JEDI Script - Stormtrooper X Alpha Verion
# Modified to work with double bladed sabers
#
# [DP]
#

symbols

message        startup
message        newplayer
message        damaged
message        killed
message        user0
message        user1
message        pulse
message        timer
message        skill

thing          darkjedi                      mask=0xfff

# SABER
material       tip_mat=saberred0.mat         local
material       side_mat=saberred1.mat        local

template       tpl_wall=+ssparks_wall        local
template       tpl_blood=+ssparks_blood      local
template       tpl_saber=+ssparks_saber      local

# FORCE BASICS
int            victim                        local
int            forcepower                    local
int            forcepulse                    local

int            count                         local
int            limit                         local
int            dummy                         local

# FORCE LIGHTING
template       lightning=+force_lightning    local
sound          lightningSound=ForceLightnin01.wav  local

# FORCE DESTRUCTION
template       destProj=+force_dest_p4       local
sound          destSound=ForceDestruct01.wav local

# FORCE DEADLY SIGHT
sound       deadlySound=ForceDSight01.WAV    local
sound       deadlySound2=ForceDSight02.WAV   local
int         channel=-1                       local

template    smoke_tpl=+heavysmoke            local
int         smoke                            local

# FORCE PULL
sound          pullSound=ForcePull01.WAV     local

template       tpl=BryarPistol               local
template       tpl1=BryarPistol              local
template       tpl2=BryarPistol              local
template       tpl3=STrifle                  local
template       tpl4=SingleDetonator          local
template       tpl5=Crossbow                 local
template       tpl6=RepeaterGun              local
template       tpl7=RailGun                  local
template       tpl8=SingleSeqCharge          local
template       tpl9=ConcRifle                local

# FORCE BLINDING
template    cone_tpl=+force_blind            local
sound       blindingSound=ForceBlind01.WAV   local
int         effectHandle=-1                  local

# OTHER
flex           autoAimFOV=10                 local
flex           autoAimMaxDist=5              local
flex           starthealth                   local

int            PulledWeapon                  local
int            okay                          local

float          choice                        local

end

# ========================================================================================

code

startup:
newplayer:
   jkSetPersuasionInfo(darkjedi, 0, 5);
   jkSetSaberInfo(darkjedi, side_mat, tip_mat, 0.003, 0.001, 0.101, tpl_wall, tpl_blood, tpl_saber);
   jkSetFlags(darkjedi, 0x15);
   Return;

# ........................................................................................

killed:
   SetPulse(0);
   jkSetFlags(darkjedi, 0x8);

   Return;

# ........................................................................................

damaged:
   damage = GetParam(0);
   damageType = GetParam(1);

   if(damageType & 1)                        // IMPACT
      damage = damage / 2;
   else
   if(damageType & 2)                        // ENERGY
      damage = damage / 2;
   else
   if(damageType & 4)                        // FIRE
      damage = damage / 10;
   else
   if(damageType & 8)                        // FORCE
      damage = damage;
   else
   if(damageType & 16)                       // SABER
      damage = damage;

   ReturnEx(damage);
   Return;

# ........................................................................................

user1:
   // Receives message from 21b_camera.cog or 21_rahnlines.cog
   okay = 1;
   return;


user0:
   // Don't start using force powers until message is received
   if(okay == 0) return;

   victim = GetParam(0);
   forcepower = GetParam(1);

   if(forcepower == 1)
   {
   choice = rand();
   if(choice < 0.45)
   {
      // Print("Force Power 1a : FORCE LIGHTNING...");
      FireProjectile(darkjedi, lightning, lightningSound, 35, '0 0 0', '0 0 0', 1.0, 0, autoAimFOV, autoAimMaxDist);
   }
   else
   if(choice < 0.65)
   {
      // Print("Force Power 1b : FORCE GRIP...");
      if(!IsInvActivated(victim, 29))
      {
         PlayMode(darkjedi, 24);
         SetActorFlags(darkjedi, 0x40000);
         Sleep(0.3);
         // He could die during the sleep
         if(GetThingHealth(darkjedi) <= 0) Return;

         SetActorFlags(victim, 0x40000);
         PlayMode(victim, 25);
         count = 0;
         limit = 5;
         forcepulse = 10;
         SetPulse(0.5);
      }
   }
   else
   {
      if(effectHandle == -1)
      {
         // Print("Force Power 1c : FORCE BLINDING...");
         PlayMode(darkjedi, 24);
         Sleep(0.3);
         // He could die during the sleep
         if(GetThingHealth(darkjedi) <= 0) Return;

         dummy = CreateThingAtPos(cone_tpl, GetThingSector(darkjedi), VectorAdd(GetThingPos(darkjedi), '0.0 0.0 0.04'), '0.0 0.0 0.0');
         SetThingLook(dummy, VectorSub(GetThingPos(victim), GetThingPos(darkjedi)));
         PlaySoundThing(blindingSound, darkjedi, 1.0, -1, -1, 0x80);

         // If the player doesn't have Seeing active.
         if(!IsInvActivated(victim, 23))
         {
            effectHandle = newColorEffect(0, 0, 0, 0, 0, 0, 180, 260, 230, 1.0);
            SetActorFlags(victim, 0x800);
            forcepulse = 7;
            SetPulse(5.0);
         }
      }
   }
   }
   else
   if(forcepower == 2)
   {
   choice = rand();
   if(choice < 0.5)
   {
      // Print("Force Power 2a : FORCE DESTRUCTION");
      AddDynamicTint(victim, 0.3, 0.0, 0.15);
      FireProjectile(darkjedi, destProj, destSound, 24, '0 0 0', '0 0 0', 1.0, 0, autoAimFOV, autoAimMaxDist );
   }
   else
   if(choice < 0.7)
   {
      // Print("Force Power 2b : FORCE DEADLY SIGHT...");
      PlayMode(darkjedi, 24);
      Sleep(0.3);

      // He could die during the sleep
      if(GetThingHealth(darkjedi) <= 0) Return;

      SetActorFlags(darkjedi, 0x40000);

      // Play activation sound
      PlaySoundThing(deadlySound, victim, 1.0, -1, -1, 0x80);

      // Play loop sound at 0.0 volume and fade it in to 1.0 volume in 0.75 secs
      channel = PlaySoundThing(deadlySound2, victim, 0.0, -1, -1, 0x81);
      if(channel != -1) ChangeSoundVol(channel, 1.0, 0.75);

      count = 0;
      limit = 16;
      forcepulse = 14;
      SetPulse(0.5);
   }
   else
   {
      // Print("Force Power 2c : FORCE PERSUASION...");
      PlayMode(darkjedi, 24);
      Sleep(0.3);
      // He could die during the sleep
      if(GetThingHealth(darkjedi) <= 0) Return;

      SetActorFlags(darkjedi, 0x80);
      SetThingCurGeoMode(darkjedi, 0);
      jkSetFlags(darkjedi, 0x20);
      forcepulse = 6;
      SetPulse(10.0);
   }
   }
   else
   if(forcepower == 3)
   {
      // Print("Force Power 3 : FORCE PULL");
      if(!IsInvActivated(victim, 28))
      {
         forcepulse = 4;
         SetPulse(0.1);
      }
   }

   Return;

# ........................................................................................

pulse:
   if(forcepulse == 4)                       // FORCE PULL
   {
      SetPulse(0);
      if(GetHealth(victim) > 0)
      {
         if((GetCurWeapon(victim) != 1) && (GetCurWeapon(victim) != 10))
         {
            PlayMode(darkjedi, 36);
            Sleep(0.3);

            PlaySoundThing(pullSound, victim, 1.0, -1, -1, 0x80);

            // Create a powerup corresponding to the current weapon
            PulledWeapon = CreateThingAtPos(tpl[GetCurWeapon(victim)], GetThingSector(victim), GetThingPos(victim), '0 0 0');

            // Set the created powerup to no collide for now...
            SetCollideType(PulledWeapon, 0);

            // ...and set a timer to make it collide again later
            SetTimerEx(0.3, 1, PulledWeapon, 0);

            // Throw the powerup at the DJ
            ApplyForce(PulledWeapon, VectorScale(VectorNorm(VectorSub(GetThingPos(darkjedi), GetThingPos(victim))), 30));

            // Remove the weapon from the player
            ChangeInv(victim, GetCurWeapon(victim), -1);

            SelectWeapon(victim, 1);
         }
      }
   }

   if(forcepulse == 6)
   {
      ClearActorFlags(darkjedi, 0x80);
      jkClearFlags(darkjedi, 0x20);
      SetThingCurGeoMode(darkjedi, GetThingGeoMode(darkjedi));
      SetPulse(0);
   }

   if(forcepulse == 7)
   {
      if(effectHandle!=-1)
      {
         freeColorEffect(effectHandle);
         effectHandle = -1;
         AddDynamicAdd(victim, 180, 260, 230);
      }
      ClearActorFlags(victim, 0x800);
      SetPulse(0);
   }

   if(forcepulse == 10)                      // FORCE GRIP
   {
      if((count > limit) ||
         (GetThingHealth(darkjedi) < starthealth) ||
         (GetHealth(victim) < 1) ||
         !HasLOS(darkjedi, victim)
        )
      {
         ClearActorFlags(victim, 0x40000);
         ClearActorFlags(darkjedi, 0x40000);
         SetPulse(0);
         Return;
      }

      // Print("You are taking Grip damage");
      jkPrintUNIString(victim, 300);

      DamageThing(victim, 5, 0x8, darkjedi);

      if(griptrackID != -1)
      {
         StopKey(player, griptrackID);
         griptrackID = -1;
      }
      count = count + 1;
   }

   if(forcepulse == 14)                      // FORCE DEADLY SIGHT
   {
      if((count > limit) ||
         (GetThingHealth(darkjedi) < starthealth) ||
         (GetHealth(victim) < 1) ||
         !HasLOS(darkjedi, victim)
        )
      {
         SetPulse(0);
         ClearActorFlags(darkjedi, 0x40000);
         if(channel != -1)
         {
            StopSound(channel, 0.0);
            channel = -1;
         }
         Return;
      }

      // Print("You are taking Deadly Sight damage");
      jkPrintUNIString(player, 301);
      DamageThing(victim, 5, 0x8, darkjedi);
      smoke = CreateThingAtPos(smoke_tpl, GetThingSector(victim), GetThingPos(victim), '0 0 0');

      count = count + 1;

      // Add a tint if the victim is in 1st person view
      if((victim == GetLocalPlayerThing()) && (GetCurrentCamera() == 0))
      {
         AddDynamicTint(victim, 0.3, 0.0, 0.15);
      }
   }

   Return;

# ........................................................................................

timer:
   if(GetSenderId() == 1)                    // Pull
   {
      // A pulled weapon must be made takeable again
      SetCollideType(GetParam(0), 1);

      // Set gravity to them so they don't float around
      SetPhysicsFlags(GetParam(0), 1);

      // Make the powerup last hours
      SetLifeLeft(GetParam(0), 36000);
   }
   if(GetSenderId() == 2)                    // blinding protection
   {
      // This makes the DJ nearly immune to blinding
      // by removing the blind flag every 3 seconds
      ClearActorFlags(darkjedi, 0x800);
      SetTimerEx(3, 2, 0, 0);
   }

   Return;

# ........................................................................................

skill:
   bin = GetParam(0);
   if(bin == 31)                             // Force Grip
   {
      ReturnEx(10);
      Return;
   }
   else
   if(bin == 34)                             // Deadly Sight
   {
      ReturnEx(5);
      Return;
   }

   ReturnEx(-1);
   Return;

end

As for your double bladed question, open up the model's pup file and his model file. Send me the model and pup files you want so I can change them. It's simple to do, but complecated to explain without the model and puppet files shown. [http://forums.massassi.net/html/redface.gif]

------------------
The Sniper Missions. Current project, The Sniper Missions

The Magician Saber System.

[This message has been edited by Descent_pilot (edited January 03, 2003).]
Major projects working on:
SATNRT, JK Pistol Mod, Aliens TC, Firearms

Completed
Judgement Day (HLP), My level pack
2003-01-03, 7:09 AM #3
hey tahnx ill try it out [http://forums.massassi.net/html/biggrin.gif]
2003-01-03, 3:28 PM #4
If you want it to work, recopy the cog (I made 1 small mistake with the flags) and tell me what model you plan to use, I can help with that if I just know the model.

------------------
The Sniper Missions. Current project, The Sniper Missions

The Magician Saber System.
Major projects working on:
SATNRT, JK Pistol Mod, Aliens TC, Firearms

Completed
Judgement Day (HLP), My level pack

↑ Up to the top!