Announcement

Collapse
No announcement yet.

Marines APC and dropship

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #31
    yay good to hear and nice pic !

    so it release soon ?

    Comment


      #32
      The onlything holding up the release of the dropship to the public is needing the stuff worked out so it will do the deploy animation for the weapons.

      Comment


        #33
        also lol why did you give it the thumbs down lol

        Comment


          #34
          ok here is the code for my dropship
          I got it so the deploy code is in there but it will not play the deploy anim for the weapon pods.

          Code:
          //-----------------------------------------------------------
          //
          //-----------------------------------------------------------
          
          class Dropship extends ONSChopperCraft
          placeable;
          
          
          #exec OBJ LOAD FILE=..\Animations\Dropship.ukx
          #exec OBJ LOAD FILE=..\Textures\Dropshiptexts.utx
          #exec OBJ LOAD FILE=..\textures\VMVehicles-TX.utx
          #exec OBJ LOAD FILE=..\Sounds\MenuSounds.uax
          
          var()   float							MaxPitchSpeed;
          
          var()   array<vector>					TrailEffectPositions;
          var     class<ONSAttackCraftExhaust>	TrailEffectClass;
          var     array<ONSAttackCraftExhaust>	TrailEffects;
          
          var()	array<vector>					StreamerEffectOffset;
          var     class<ONSAttackCraftStreamer>	StreamerEffectClass;
          var		array<ONSAttackCraftStreamer>	StreamerEffect;
          
          var()	range							StreamerOpacityRamp;
          var()	float							StreamerOpacityChangeRate;
          var()	float							StreamerOpacityMax;
          var		float							StreamerCurrentOpacity;
          var		bool							StreamerActive;
          
          var()       sound   DeploySound;
          var()       sound   HideSound;
          var()		string	DeployForce;
          var()		string	HideForce;
          var         EPhysics    ServerPhysics;
          
          var			bool	bDeployed;
          var			bool	bOldDeployed;
          
          
          
          
          
          
          
          function bool Dodge(eDoubleClickDir DoubleClickMove)
          {
          	if ( FRand() < 0.7 )
          	{
          		VehicleMovingTime = Level.TimeSeconds + 1;
          		Rise = 1;
          	}
          	return (Rise != 0);
          }
          
          function Died(Controller Killer, class<DamageType> damageType, vector HitLocation)
          {
              local int i;
          
              if(Level.NetMode != NM_DedicatedServer)
          	{
              	for(i=0;i<TrailEffects.Length;i++)
                  	TrailEffects[i].Destroy();
                  TrailEffects.Length = 0;
          
          		for(i=0; i<StreamerEffect.Length; i++)
          			StreamerEffect[i].Destroy();
          		StreamerEffect.Length = 0;
              }
          
          	Super.Died(Killer, damageType, HitLocation);
          }
          
          simulated function Destroyed()
          {
              local int i;
          
              if(Level.NetMode != NM_DedicatedServer)
          	{
              	for(i=0;i<TrailEffects.Length;i++)
                  	TrailEffects[i].Destroy();
                  TrailEffects.Length = 0;
          
          		for(i=0; i<StreamerEffect.Length; i++)
          			StreamerEffect[i].Destroy();
          		StreamerEffect.Length = 0;
              }
          
              Super.Destroyed();
          }
          
          
          
          
          function VehicleFire(bool bWasAltFire)
          {
          	if (bWasAltFire && PlayerController(Controller) != None)
          		PlayerController(Controller).ClientPlaySound(sound'MenuSounds.Denied1');
          }
          
          function ChooseFireAt(Actor A)
          {
          	Fire(0);
          }
          
          auto state UnDeployed
          {
          	function Deploy()
          	{
          		AltFire(0);
          	}
          
          	function ChooseFireAt(Actor A)
          	{
          		local Bot B;
          
          		B = Bot(Controller);
          		if ( B == None || B.Squad == None || ONSPowerCore(B.Squad.SquadObjective) == None )
          		{
          			Fire(0);
          			return;
          		}
          
          		if ( ONSPowerCore(B.Squad.SquadObjective).LegitimateTargetOf(B) && CanAttack(B.Squad.SquadObjective) )
          			AltFire(0);
          		else
          			Fire(0);
          	}
          
          	function VehicleFire(bool bWasAltFire)
              {
              	if (bWasAltFire)
              	{
                      if (PlayerController(Controller) != None && VSize(Velocity) > 15.0)
                          PlayerController(Controller).ClientPlaySound(sound'MenuSounds.Denied1');
                      else
                          GotoState('Deploying');
                  }
              	else
              		bWeaponIsFiring = True;
              }
          }
          
          state Deployed
          {
          	function MayUndeploy()
          	{
          		GotoState('UnDeploying');
          	}
          
          	function bool IsDeployed()
          	{
          		return true;
          	}
          
              function VehicleFire(bool bWasAltFire)
              {
              	if (bWasAltFire)
                      GotoState('UnDeploying');
              	else
              		bWeaponIsFiring = True;
              }
          }
          
          state UnDeploying
          {
          Begin:
              if (Controller != None)
              {
              	if (PlayerController(Controller) != None)
              	{
          	        PlayerController(Controller).ClientPlaySound(HideSound);
                  	if (PlayerController(Controller).bEnableGUIForceFeedback)
          			PlayerController(Controller).ClientPlayForceFeedback(HideForce);
          	}
                  Weapons[1].bForceCenterAim = True;
                  Weapons[1].PlayAnim('RightWingDeploy');
                  sleep(2.3);
                 PlayAnim('RightWingDeploy');
          
                  sleep(4.03);
                  bMovable = True;
              	SetPhysics(PHYS_Karma);
              	ServerPhysics = PHYS_Karma;
              	bStationary = False;
              	SetActiveWeapon(0);
              	    	bDeployed = False;
                  GotoState('UnDeployed');
              }
          }
          
          state Deploying
          {
          Begin:
              if (Controller != None)
              {
              	SetPhysics(PHYS_None);
              	ServerPhysics = PHYS_None;
              	bMovable = True;
              	bStationary = False;
              	if (PlayerController(Controller) != None)
              	{
          	        PlayerController(Controller).ClientPlaySound(DeploySound);
                  	if (PlayerController(Controller).bEnableGUIForceFeedback)
          			PlayerController(Controller).ClientPlayForceFeedback(DeployForce);
          	}
                  PlayAnim('RightWingDeploy');
                  sleep(3.46);
                  Weapons[1].PlayAnim('RightWingDeploy');
                  sleep(2.873);
                  Weapons[1].bForceCenterAim = False;
                  SetActiveWeapon(1);
              	bWeaponisFiring = false; //so bots don't immediately fire until the gun has a chance to move
                  	bDeployed = True;
                  GotoState('Deployed');
              }
          }
          
          
          
          
          
          
          
          
          simulated event DrivingStatusChanged()
          {
          	local vector RotX, RotY, RotZ;
          	local int i;
          
          	Super.DrivingStatusChanged();
          
              if (bDriving && Level.NetMode != NM_DedicatedServer && !bDropDetail)
          	{
                  GetAxes(Rotation,RotX,RotY,RotZ);
          
                  if (TrailEffects.Length == 0)
                  {
                      TrailEffects.Length = TrailEffectPositions.Length;
          
                  	for(i=0;i<TrailEffects.Length;i++)
                      	if (TrailEffects[i] == None)
                      	{
                          	TrailEffects[i] = spawn(TrailEffectClass, self,, Location + (TrailEffectPositions[i] >> Rotation) );
                          	TrailEffects[i].SetBase(self);
                              TrailEffects[i].SetRelativeRotation( rot(0,32768,0) );
                          }
                  }
          
                  if (StreamerEffect.Length == 0)
                  {
              		StreamerEffect.Length = StreamerEffectOffset.Length;
          
              		for(i=0; i<StreamerEffect.Length; i++)
                  		if (StreamerEffect[i] == None)
                  		{
                  			StreamerEffect[i] = spawn(StreamerEffectClass, self,, Location + (StreamerEffectOffset[i] >> Rotation) );
                  			StreamerEffect[i].SetBase(self);
                  		}
              	}
              }
              else
              {
                  if (Level.NetMode != NM_DedicatedServer)
              	{
                  	for(i=0;i<TrailEffects.Length;i++)
                  	   TrailEffects[i].Destroy();
          
                  	TrailEffects.Length = 0;
          
              		for(i=0; i<StreamerEffect.Length; i++)
                          StreamerEffect[i].Destroy();
          
                      StreamerEffect.Length = 0;
                  }
              }
          }
          
          simulated function Tick(float DeltaTime)
          {
              local float EnginePitch, DesiredOpacity, DeltaOpacity, MaxOpacityChange, ThrustAmount;
          	local TrailEmitter T;
          	local int i;
          	local vector RelVel;
          	local bool NewStreamerActive, bIsBehindView;
          	local PlayerController PC;
          
              if(Level.NetMode != NM_DedicatedServer)
          	{
                  EnginePitch = 64.0 + VSize(Velocity)/MaxPitchSpeed * 32.0;
                  SoundPitch = FClamp(EnginePitch, 64, 96);
          
                  RelVel = Velocity << Rotation;
          
                  PC = Level.GetLocalPlayerController();
          		if (PC != None && PC.ViewTarget == self)
          			bIsBehindView = PC.bBehindView;
          		else
                      bIsBehindView = True;
          
              	// Adjust Engine FX depending on being drive/velocity
          		if (!bIsBehindView)
          		{
          			for(i=0; i<TrailEffects.Length; i++)
          				TrailEffects[i].SetThrustEnabled(false);
          		}
                  else
                  {
          			ThrustAmount = FClamp(OutputThrust, 0.0, 1.0);
          
          			for(i=0; i<TrailEffects.Length; i++)
          			{
          				TrailEffects[i].SetThrustEnabled(true);
          				TrailEffects[i].SetThrust(ThrustAmount);
          			}
          		}
          
          		// Update streamer opacity (limit max change speed)
          		DesiredOpacity = (RelVel.X - StreamerOpacityRamp.Min)/(StreamerOpacityRamp.Max - StreamerOpacityRamp.Min);
          		DesiredOpacity = FClamp(DesiredOpacity, 0.0, StreamerOpacityMax);
          
          		MaxOpacityChange = DeltaTime * StreamerOpacityChangeRate;
          
          		DeltaOpacity = DesiredOpacity - StreamerCurrentOpacity;
          		DeltaOpacity = FClamp(DeltaOpacity, -MaxOpacityChange, MaxOpacityChange);
          
          		if(!bIsBehindView)
                      StreamerCurrentOpacity = 0.0;
                  else
              		StreamerCurrentOpacity += DeltaOpacity;
          
          		if(StreamerCurrentOpacity < 0.01)
          			NewStreamerActive = false;
          		else
          			NewStreamerActive = true;
          
          		for(i=0; i<StreamerEffect.Length; i++)
          		{
          			if(NewStreamerActive)
          			{
          				if(!StreamerActive)
          				{
          					T = TrailEmitter(StreamerEffect[i].Emitters[0]);
          					T.ResetTrail();
          				}
          
          				StreamerEffect[i].Emitters[0].Disabled = false;
          				StreamerEffect[i].Emitters[0].Opacity = StreamerCurrentOpacity;
          			}
          			else
          			{
          				StreamerEffect[i].Emitters[0].Disabled = true;
          				StreamerEffect[i].Emitters[0].Opacity = 0.0;
          			}
          		}
          
          		StreamerActive = NewStreamerActive;
              }
          
              Super.Tick(DeltaTime);
          }
          
          function float ImpactDamageModifier()
          {
              local float Multiplier;
              local vector X, Y, Z;
          
              GetAxes(Rotation, X, Y, Z);
              if (ImpactInfo.ImpactNorm Dot Z > 0)
                  Multiplier = 1-(ImpactInfo.ImpactNorm Dot Z);
              else
                  Multiplier = 1.0;
          
              return Super.ImpactDamageModifier() * Multiplier;
          }
          
          function bool RecommendLongRangedAttack()
          {
          	return false;
          }
          
          //FIXME Fix to not be specific to this class after demo
          function bool PlaceExitingDriver()
          {
          	local int i;
          	local vector tryPlace, Extent, HitLocation, HitNormal, ZOffset;
          
          	Extent = Driver.default.CollisionRadius * vect(1,1,0);
          	Extent.Z = Driver.default.CollisionHeight;
          	Extent *= 2;
          	ZOffset = Driver.default.CollisionHeight * vect(0,0,1);
          	if (Trace(HitLocation, HitNormal, Location + (ZOffset * 5), Location, false, Extent) != None)
          		return false;
          
          	//avoid running driver over by placing in direction perpendicular to velocity
          	if ( VSize(Velocity) > 100 )
          	{
          		tryPlace = Normal(Velocity cross vect(0,0,1)) * (CollisionRadius + Driver.default.CollisionRadius ) * 1.25 ;
          		if ( FRand() < 0.5 )
          			tryPlace *= -1; //randomly prefer other side
          		if ( (Trace(HitLocation, HitNormal, Location + tryPlace + ZOffset, Location + ZOffset, false, Extent) == None && Driver.SetLocation(Location + tryPlace + ZOffset))
          		     || (Trace(HitLocation, HitNormal, Location - tryPlace + ZOffset, Location + ZOffset, false, Extent) == None && Driver.SetLocation(Location - tryPlace + ZOffset)) )
          			return true;
          	}
          
          	for( i=0; i<ExitPositions.Length; i++)
          	{
          		if ( ExitPositions[0].Z != 0 )
          			ZOffset = Vect(0,0,1) * ExitPositions[0].Z;
          		else
          			ZOffset = Driver.default.CollisionHeight * vect(0,0,2);
          
          		if ( bRelativeExitPos )
          			tryPlace = Location + ( (ExitPositions[i]-ZOffset) >> Rotation) + ZOffset;
          		else
          			tryPlace = ExitPositions[i];
          
          		// First, do a line check (stops us passing through things on exit).
          		if ( bRelativeExitPos && Trace(HitLocation, HitNormal, tryPlace, Location + ZOffset, false, Extent) != None )
          			continue;
          
          		// Then see if we can place the player there.
          		if ( !Driver.SetLocation(tryPlace) )
          			continue;
          
          		return true;
          	}
          	return false;
          }
          
          static function StaticPrecache(LevelInfo L)
          {
              Super.StaticPrecache(L);
          
          	L.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorWing');
          	L.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorTailWing');
          	L.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorGun');
          	L.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris2');
          	L.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris1');
          	L.AddPrecacheStaticMesh(StaticMesh'WeaponStaticMesh.RocketProj');
          
              L.AddPrecacheMaterial(Material'AW-2004Particles.Energy.SparkHead');
              L.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp2_frames');
              L.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp1_frames');
              L.AddPrecacheMaterial(Material'ExplosionTex.Framed.we1_frames');
              L.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.SmokePanels2');
              L.AddPrecacheMaterial(Material'AW-2004Particles.Fire.NapalmSpot');
              L.AddPrecacheMaterial(Material'EpicParticles.Fire.SprayFire1');
              L.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.RaptorColorRed');
              L.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.RaptorColorBlue');
              L.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.AttackCraftNoColor');
          	L.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.TrailBlura');
              L.AddPrecacheMaterial(Material'Engine.GRADIENT_Fade');
              L.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.raptorCOLORtest');
              L.AddPrecacheMaterial(Material'AW-2004Particles.Fire.SmokeFragment');
          }
          
          simulated function UpdatePrecacheStaticMeshes()
          {
          	Level.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorWing');
          	Level.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorTailWing');
          	Level.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.RAPTORexploded.RaptorGun');
          	Level.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris2');
          	Level.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris1');
          	Level.AddPrecacheStaticMesh(StaticMesh'WeaponStaticMesh.RocketProj');
          
          	Super.UpdatePrecacheStaticMeshes();
          }
          
          simulated function UpdatePrecacheMaterials()
          {
              Level.AddPrecacheMaterial(Material'AW-2004Particles.Energy.SparkHead');
              Level.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp2_frames');
              Level.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp1_frames');
              Level.AddPrecacheMaterial(Material'ExplosionTex.Framed.we1_frames');
              Level.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.SmokePanels2');
              Level.AddPrecacheMaterial(Material'AW-2004Particles.Fire.NapalmSpot');
              Level.AddPrecacheMaterial(Material'EpicParticles.Fire.SprayFire1');
              Level.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.RaptorColorRed');
              Level.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.RaptorColorBlue');
              Level.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.AttackCraftNoColor');
          	Level.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.TrailBlura');
              Level.AddPrecacheMaterial(Material'Engine.GRADIENT_Fade');
              Level.AddPrecacheMaterial(Material'VMVehicles-TX.AttackCraftGroup.raptorCOLORtest');
              Level.AddPrecacheMaterial(Material'AW-2004Particles.Fire.SmokeFragment');
          
          	Super.UpdatePrecacheMaterials();
          }
          
          defaultproperties
          {
               
          DeployForce="RightWingDeploy"
               HideForce="RightWingDeploy"
          
          bReplicateAnimations=True
          
          UprightStiffness=500.000000
               UprightDamping=300.000000
               MaxThrustForce=100.000000
               LongDamping=0.050000
               MaxStrafeForce=80.000000
               LatDamping=0.050000
               MaxRiseForce=50.000000
               UpDamping=0.050000
               TurnTorqueFactor=600.000000
               TurnTorqueMax=200.000000
               TurnDamping=50.000000
               MaxYawRate=1.500000
               PitchTorqueFactor=200.000000
               PitchTorqueMax=35.000000
               PitchDamping=20.000000
               RollTorqueTurnFactor=450.000000
               RollTorqueStrafeFactor=50.000000
               RollTorqueMax=50.000000
               RollDamping=30.000000
               StopThreshold=100.000000
               MaxRandForce=3.000000
               RandForceInterval=0.750000
          
          
          DriverWeapons(0)=(WeaponClass=Class'MarinesDropship.LeftWing',WeaponBone="MainleftBackWeaponPod")
          DriverWeapons(1)=(WeaponClass=Class'MarinesDropship.RightWing',WeaponBone="MainRightBackWeaponPod")
          
          
          HeadlightCoronaOffset(0)=(X=500.000000,Y=45.000000,Z=10.000000)
               HeadlightCoronaOffset(1)=(X=500.000000,Y=-45.000000,Z=10.000000)
               HeadlightCoronaMaterial=Texture'EpicParticles.Flares.FlashFlare1'
               HeadlightCoronaMaxSize=100.000000
               HeadlightProjectorMaterial=Texture'VMVehicles-TX.NEWprvGroup.PRVprojector'
               HeadlightProjectorOffset=(X=135.000000,Z=10.000000)
               HeadlightProjectorRotation=(Pitch=-1000)
               HeadlightProjectorScale=0.650000
          
          
          
               IdleSound=Sound'ONSVehicleSounds-S.AttackCraft.AttackCraftIdle'
               StartUpSound=Sound'2029SS.Spinnersounds.Spinner'
               ShutDownSound=Sound'ONSVehicleSounds-S.AttackCraft.AttackCraftShutDown'
               StartUpForce="AttackCraftStartUp"
               ShutDownForce="AttackCraftShutDown"
               DestroyedVehicleMesh=StaticMesh'BRcrashed.Damaged.spincrash'
               DestructionEffectClass=Class'Onslaught.ONSVehicleExplosionEffect'
               DisintegrationEffectClass=Class'Onslaught.ONSVehDeathAttackCraft'
               DestructionLinearMomentum=(Min=50000.000000,Max=150000.000000)
               DestructionAngularMomentum=(Min=100.000000,Max=300.000000)
               DamagedEffectOffset=(X=-120.000000,Y=10.000000,Z=65.000000)
               ImpactDamageMult=0.001000
               VehicleMass=4.000000
               bDrawDriverInTP=True
               bTurnInPlace=True
               bShowDamageOverlay=True
               bDrawMeshInFP=false
               bDriverHoldsFlag=False
               bCanCarryFlag=False
               DrivePos=(X=-42.000000,Y=-34.000000,Z=18.000000)
               ExitPositions(0)=(Y=-165.000000,Z=100.000000)
               ExitPositions(1)=(Y=165.000000,Z=100.000000)
               EntryPosition=(X=-40.000000)
               EntryRadius=210.000000
               FPCamPos=(X=-46.000000,Y=-34.000000,Z=8.000000)
               TPCamDistance=500.000000
               TPCamLookat=(X=0.000000,Z=0.000000)
               TPCamWorldOffset=(Z=200.000000)
               DriverDamageMult=0.000000
               VehiclePositionString="in a Spinner"
               VehicleNameString="AliensMovie"
               RanOverDamageType=Class'Onslaught.DamTypeAttackCraftRoadkill'
               CrushedDamageType=Class'Onslaught.DamTypeAttackCraftPancake'
               FlagBone="PlasmaGunAttachment"
               FlagOffset=(Z=80.000000)
               FlagRotation=(Yaw=32768)
               HornSounds(0)=Sound'2029SS.Spinnersounds.spinr'
               HornSounds(1)=Sound'2029SS.Spinnersounds.spinr'
               bCanBeBaseForPawns=True
               GroundSpeed=2000.000000
               HealthMax=300.000000
               Health=300
               Mesh=SkeletalMesh'Dropship.Dropship'
               SoundVolume=160
               Begin Object Class=KarmaParamsRBFull Name=KParams0
                   KInertiaTensor(0)=1.000000
                   KInertiaTensor(3)=3.000000
                   KInertiaTensor(5)=3.500000
                   KCOMOffset=(X=-0.250000)
                   KLinearDamping=0.000000
                   KAngularDamping=0.000000
                   KStartEnabled=True
                   bKNonSphericalInertia=True
                   KActorGravScale=0.000000
                   bHighDetailOnly=False
                   bClientOnly=False
                   bKDoubleTickRate=True
                   bKStayUpright=True
                   bKAllowRotate=True
                   bDestroyOnWorldPenetrate=True
                   bDoSafetime=True
                   KFriction=0.500000
                   KImpactThreshold=300.000000
               End Object
               KParams=KarmaParamsRBFull'Dropship.Dropship.KParams0'
          
          }

          Comment


            #35
            no I seeing thumbs up for me ..

            Originally posted by barnEbiss View Post
            also lol why did you give it the thumbs down lol
            this Forums sometime mess up up & down .. it self

            Comment


              #36
              barnEbiss, do yourself a favor and
              1. Post only the code that's the problem.
              2. Post in the scripting forum. I doubt you'll get much technical assistance here.

              Comment


                #37
                2 things about that dropship, it looks really plasticy and rounded but other than that its great.

                Comment


                  #38
                  But the main question is...

                  is it done?

                  Comment


                    #39
                    im curious to see the weapon effects >=)

                    Comment


                      #40
                      yes is coming soon ??

                      I hope coming soon hope ....

                      Comment


                        #41
                        The skin looks a bit flat and monochromous, to be honest.

                        Comment


                          #42
                          At least it's something.

                          Comment


                            #43
                            Well...in the pics it looks like the rocketpods are just hovering, is this true?

                            Comment


                              #44
                              ive got the movie and the model is great but in the movie it looked like iron and i think it was slightly rusty. i think that your dropship is 2 bright and smooth.

                              Comment


                                #45
                                It's a W.I.P.

                                deal with it!

                                Comment

                                Working...
                                X