Announcement

Collapse
No announcement yet.

Satore Doesn't see and reconize my monster spawning?!?!?!

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

    Satore Doesn't see and reconize my monster spawning?!?!?!

    For some reason the Satore Monster Pack doesn't see my monster spawn and is not counted for. Because of this, the wave ends before my monsters die and they overlap into the next way. If any of you guys want to look at the monster's .uc codes, here they are.

    Code:
    class SSPEmperor extends SMPQueen config(satoreMonsterPack);
    
    var bool bRocketDir;
    var ColorModifier EmperorFadeOutSkin;
    var sound eScreamSound[2];
    
    var() sound Cryout;
    
    function PostBeginPlay()
    {
    	Super.PostBeginPlay();
        GroundSpeed = GroundSpeed * (1 + 0.1 * MonsterController(Controller).Skill);
        EmperorFadeOutSkin= new class'ColorModifier';
    	EmperorFadeOutSkin.Material=Skins[0];
    	Skins[0]=EmperorFadeOutSkin;
    }
    
    simulated function Destroyed()
    {
    	EmperorFadeOutSkin=none;
        if(Shield!=none)
        	Shield.Destroy();
        super.Destroyed();
    }
    
    function bool SameSpeciesAs(Pawn P)
    {
    	return ( Monster(P) != none &&
    		(P.IsA('SSPEmperor') || P.IsA('SMPQueen') || P.IsA('SSPMetalSkaarjII') || P.IsA('SSPIceSkaarjII') || P.IsA('SSPFireSkaarjII') || P.IsA('SSPBioBug')));
    }
    function vector GetFireStart(vector X, vector Y, vector Z)
    {
        return Location + 0.5 * CollisionRadius * (X+Z-Y);
    }
    
    simulated function Tick(float DeltaTime)
    {
    	if(bTeleporting)
    	{
    		AChannel-=300 *DeltaTime;
    	}
    	else
    		AChannel=255;
    	EmperorFadeOutSkin.Color.A=AChannel;
    
    	if(MonsterController(Controller)!=none && Controller.Enemy==none)
    	{
    		if(MonsterController(Controller).FindNewEnemy())
    		{
    			SetAnimAction('Meditate');
    			GotoState('Teleporting');
    			bJustScreamed = false;
    	    }
    	}
    
    
    	super.Tick(DeltaTime);
    }
    
    function Scream()
    {
    	local Actor A;
    	local int EventNum;
    
    
    //	PlaySound(ScreamSound, SLOT_Talk, 2 * TransientSoundVolume);
    //	PlaySound(ScreamSound, SLOT_None, 2 * TransientSoundVolume);
    //	PlaySound(ScreamSound, SLOT_None, 2 * TransientSoundVolume);
    	PlaySound(eScreamSound[Rand(2)], SLOT_None, 3 * TransientSoundVolume);
    	SetAnimAction('Scream');
    	Controller.bPreparingMove = true;
    	Acceleration = vect(0,0,0);
    	bJustScreamed = true;
    
    
    	if ( ScreamEvent == '' )
    		return;
    	ForEach DynamicActors( class 'Actor', A, ScreamEvent )
    	{
    		A.Trigger(self, Instigator);
    		EventNum++;
    	}
    	if(EventNum==0)
    		SpawnChildren();
    }
    
    function SpawnChildren()
    {
    	local NavigationPoint N;
    	local SSPBioBug B;
    
    	For ( N=Level.NavigationPointList; N!=None; N=N.NextNavigationPoint )
    	{
    		if(numChildren>=MaxChildren)
    			return;
    		else if(vsize(N.Location-Location)<2000 && FastTrace(N.Location,Location))
    		{
    			B=spawn(class 'SSPBioBug' ,self,,N.Location);
    		    if(B!=none)
    		    {
    		    	B.LifeSpan=20+Rand(10);
    				numChildren++;
    			}
    		}
    
    	}
    
    }
    
    function SpawnShot()
    {
    		local vector FireStart,X,Y,Z;
            local rotator ProjRot;
    		local EmperorSeekingProjectile S;
    		if ( Controller != None )
    		{
    			GetAxes(Rotation,X,Y,Z);
    			FireStart = GetFireStart(X,Y,Z);
    			if ( !SavedFireProperties.bInitialized )
    			{
    				SavedFireProperties.AmmoClass = MyAmmo.Class;
    				SavedFireProperties.ProjectileClass = MyAmmo.ProjectileClass;
    				SavedFireProperties.WarnTargetPct = MyAmmo.WarnTargetPct;
    				SavedFireProperties.MaxRange = MyAmmo.MaxRange;
    				SavedFireProperties.bTossed = MyAmmo.bTossed;
    				SavedFireProperties.bTrySplash = MyAmmo.bTrySplash;
    				SavedFireProperties.bLeadTarget = MyAmmo.bLeadTarget;
    				SavedFireProperties.bInstantHit = MyAmmo.bInstantHit;
    				SavedFireProperties.bInitialized = true;
    			}
    
                ProjRot = Controller.AdjustAim(SavedFireProperties,FireStart,1000);
    
                if ( bRocketDir )
    				ProjRot.Yaw += 3072;
    			else
    				ProjRot.Yaw -= 3072;
    			bRocketDir = !bRocketDir;
    			S = Spawn(class'EmperorSeekingRocket',,,FireStart,ProjRot);
    	        S.Seeking = Controller.Enemy;
    			PlaySound(FireSound,SLOT_Interact);
    
    			if ( bRocketDir )
    				ProjRot.Yaw += 3072;
    			else
    				ProjRot.Yaw -= 3072;
    			bRocketDir = !bRocketDir;
    			S = Spawn(class'EmperorSeekingRocket',,,FireStart,ProjRot);
    	        S.Seeking = Controller.Enemy;
    			PlaySound(FireSound,SLOT_Interact);
            }
    }
    
    
    
    simulated function PlayDying(class<DamageType> DamageType, vector HitLoc)
    {
    	AmbientSound = None;
        bCanTeleport = false;
        bReplicateMovement = false;
        bTearOff = true;
        bPlayedDeath = true;
    
    	HitDamageType = DamageType; // these are replicated to other clients
        TakeHitLocation = HitLoc;
    	LifeSpan = RagdollLifeSpan;
        if(Shield!=none)
        	Shield.Destroy();
        GotoState('Dying');
    
    	Velocity += TearOffMomentum;
        BaseEyeHeight = Default.BaseEyeHeight;
        SetPhysics(PHYS_Falling);
    
    
    	PlayAnim('OutCold',0.7, 0.1);
    }
    
    state Dying
    {
        ignores AnimEnd, Trigger, Bump, HitWall, HeadVolumeChange, PhysicsVolumeChange, Falling, BreathTimer;
        simulated function Proces****FX(){}
    }
    
    DefaultProperties
    {
         ClawDamage=140
         StabDamage=180
         bMeleeFighter=True
         DrawScale=1.5
         eScreamSound(0)=Sound'satoreMonsterPackSound.Queen.yell3Q'
         eScreamSound(1)=Sound'satoreMonsterPackSound.Queen.nearby2Q'
         AmmunitionClass=Class'SpecialSkaarjPackv2.EmperorAmmo'
         Skins(0)=Texture'SSkaarjPackTexturev2.Skins.JEmperor1'
         Skins(1)=Texture'SSkaarjPackTexturev2.Skins.JEmperor1'
         MaxChildren=3
         CollisionRadius=135.000000
         CollisionHeight=158.500000
    }

    #2
    How does the satoreMonsterPack detect a newly spawned monster?

    Comment


      #3
      you have to add your monster to the satoreMonsterPack.ini which is in your system folder

      in the [satoreMonsterPackv120.SMPMonsterTable] section add your monster

      MonsterTable=(MonsterName="SSPEmperor",MonsterClas sName=PutPackageNameHere.SSPEmperor)

      oh yeah if you gonna use it online remember to add your monster to the server packages as well

      Comment

      Working...
      X