Help for monster

Discuss all aspects related to modding Zandronum here.
Post Reply
manuelspark
 
Posts: 66
Joined: Mon Aug 13, 2012 1:36 am
Location: Viva Chile Mierda!!!

Help for monster

#1

Post by manuelspark » Tue Feb 05, 2013 7:36 pm

How do I make a monster disappears and appears in faraway places?

Llewellyn
Forum Regular
Posts: 578
Joined: Mon Jul 02, 2012 7:12 am

RE: Help for monster

#2

Post by Llewellyn » Tue Feb 05, 2013 7:39 pm

A bit more descriptive please...

Cruduxy
Zandrone
Posts: 1059
Joined: Fri Jun 08, 2012 4:24 pm

RE: Help for monster

#3

Post by Cruduxy » Tue Feb 05, 2013 7:41 pm

teleporters without fog?
[][][][][][][][][][][][][][][]
Nothing to see here
[][][][][][][][][][][][][][][]

User avatar
Lord_of_D:
Posts a lot
Posts: 691
Joined: Sun Aug 26, 2012 5:31 am
Location: Mexico
Contact:

RE: Help for monster

#4

Post by Lord_of_D: » Tue Feb 05, 2013 8:56 pm

i think he means something alike Sjas in Ghoul Forest 3, but by the monsters will, not being damaged. as far as i know, you need scripts for do this shit.
Image

User avatar
ibm5155
Addicted to Zandronum
Posts: 1641
Joined: Tue Jun 05, 2012 9:32 pm
Location: Somewhere, over the rainbow

RE: Help for monster

#5

Post by ibm5155 » Wed Feb 06, 2013 12:08 am

I did this on my monster called ravishing, it use a counter, when he pass some time, he enter on a flag that do it disapear and set noclip and fly actived, and passing sometime he go back to the normal states

Here´s the actual code, it´s not the best because it was adapted from a workin monster for gzdoom, and i didn´t knew the inventory system to replace var...

[spoiler]decorate part

Code: Select all

actor ravishing 31198
{
  MONSTER
  Radius 20//31
  Height 66
  Health 5000000
  Mass 10000
  Speed 16
  Vspeed 16
  scale 0.065
  PainChance 180
   +FLOORCLIP +DONTHURTSPECIES +NOTARGET +BOSS +INVULNERABLE
  SeeSound "EFF6"
  PainSound "EFF9"
  DeathSound "EFF7"
  ActiveSound ""
  AttackSound ""
  MeleeSound ""
  MeleeDamage  15
  Obituary "%o was killed by the ravishing"
  states
  {
  Spawn:
    ghou A 1 A_Look
    Loop
  See:
	ghou A 2 A_Chase
	ghou B 2 A_FaceTarget
	ghou C 2 A_Chase
	ghou D 2 A_FaceTarget
	ghou E 2 A_Chase
	ghou F 2 A_FaceTarget
	ghou G 2 A_Chase
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(9,0)==1,"GHOULALPHAIN")
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(10,0)==2,"GHOULALPHAOUT")
    Loop
  Melee:
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(8,0)==1,"WAITGHOUL")
	ghou A 1 A_SetTranslucent (1.0,0)
	ghou G 0 A_Playsound("EFF8")
    ghou G 1 A_FaceTarget
    ghou G 1 A_MeleeAttack
    ghou HIJKJIH 1
	ghou A 0 A_ChangeFlag("NOCLIP",0) 
	ghou A 0 A_ChangeFlag("NOGRAVITY",0)
	ghou A 0 A_UnsetFloat
	Goto See
  Pain:
    ghou a 2 A_Pain
	Goto See
  WAITGHOUL:
    TNT1 A 1
	Goto See
  
  GHOULALPHAIN:
    ghou A 0 A_ChangeFlag("NOCLIP",1)
	ghou A 0 A_ChangeFlag("NOGRAVITY",1)
	ghou A 0 A_SetFloat
    ghou A 1 A_SetTranslucent (1.0,0)
	ghou A 1 A_SetTranslucent (0.9,0)
	ghou A 1 A_SetTranslucent (0.8,0)
	ghou A 1 A_SetTranslucent (0.7,0)
	ghou A 1 A_SetTranslucent (0.6,0)
	ghou A 1 A_SetTranslucent (0.5,0)
	ghou A 1 A_SetTranslucent (0.4,0)
	ghou A 1 A_SetTranslucent (0.3,0)
	ghou A 1 A_SetTranslucent (0.2,0)
	ghou A 1 A_SetTranslucent (0.1,0)
	ghou A 1 A_SetTranslucent (0.0,0)
	Goto see
  GHOULALPHAOUT:
    ghou A 1 A_SetTranslucent (0.0,0)
	ghou A 1 A_SetTranslucent (0.1,0)
	ghou A 1 A_SetTranslucent (0.2,0)
	ghou A 1 A_SetTranslucent (0.3,0)
	ghou A 1 A_SetTranslucent (0.4,0)
	ghou A 1 A_SetTranslucent (0.5,0)
	ghou A 1 A_SetTranslucent (0.6,0)
	ghou A 1 A_SetTranslucent (0.7,0)
	ghou A 1 A_SetTranslucent (0.8,0)
	ghou A 1 A_SetTranslucent (0.9,0)
	ghou A 1 A_SetTranslucent (1.0,0)
    ghou A 0 A_ChangeFlag("NOCLIP",0)
	ghou A 0 A_ChangeFlag("NOGRAVITY",0)
	ghou A 0 A_UnsetFloat
	Goto see
  Death:
	ghou A 8 
    ghou B 8 A_Scream
    ghou C 8
    ghou D 8 A_SetTranslucent(1.0,0)
    ghou E 8 A_Fall
	ghou D 8
	ghou E 8
    tnt1 A -1 A_SetFloorClip
    Stop
  Raise:
    SCPG A 8 A_UnSetFloorClip
    SCPG A 8
    Goto See
  }
}
ACS part

Code: Select all

script 11 (void)//SCRIPT THAT GIVIE RAVISHING LIFE, REPLACING DECORATE FUNCTIONs BY ACS
{
    
//ravishing tag:24
    ACS_EXECUTE(12,0,0,0,0);//RAVISHING SOUND CODE
    while(true)
    {
    //    print(s:"\nuser_ghoulactivesound:",d:user_ghoulactivesound,s:"\nuser_ghoulinvisible:",d:user_ghoulinvisible,s:"\nsound_toplay:",d:sound_toplay,s:"\nuser_ghoulinvisiblecount:",d:user_ghoulinvisiblecount,s:"\ntimer_GHOUL:",d:timer_GHOUL,s:"\nuser_invisible:",d:user_invisible,s:"\nscript_test:",d:script_test,s:"\nout_invisible:",d:out_invisible);

        /*SIMPLE TIMER TO COUNT IF THE RAVISHING IS NOT TOO MUCH TIME INVISIBLE*/
        if(timer_GHOUL>=12 && user_invisible==1)
        {
            
            user_ghoulinvisible=2;
            while(script_test!=1)//WHILE THE DECORATE DIDN´T SHECK THE SCRIPT DO...
            { 

 				//						 print(s:"loop1");
                user_ghoulinvisible=2;
                delay(1);
            }
            delay(35);
            user_invisible=0;
            timer_GHOUL=0;
            user_ghoulinvisible=0;
            sound_toplay=0;
            SetActorProperty(59,APROP_Speed,16.0);
        }
        /*SIMPLE TIMER TO COUNT IF THE RAVISHING IS NOT TOO MUCH TIME VISIBLE*/
        else if(timer_GHOUL>=7 && user_invisible==0)
        {
            
            user_ghoulinvisible=1;
            while(script_test!=1)//WHILE THE DECORATE DIDN´T SHECK THE SCRIPT DO...
            {
        //        print(s:"loop2");
                user_ghoulinvisible=1;
                delay(1);
            }
            delay(35);
            user_ghoulinvisible=0;
            timer_GHOUL=0;
            user_invisible=1;
            SetActorProperty(59,APROP_Speed,20.0);
        
        
        }
        //----------------------------------------------------
        
        
        /*FILTER IF THE MONSTER IS NEAR TO ATTACK A MARINE OR ZOMBIE AND PUT HE TO GO BACK TO FIGHT*/
        if(out_invisible==1 && user_invisible==1)
        {
            timer_GHOUL=0;
            user_invisible=0;
            user_ghoulinvisible=2;
            while(script_test!=1)//WHILE THE DECORATE DIDN´T SHECK THE SCRIPT DO...
            {
          //      print(s:"loop3");
                user_ghoulinvisible=2;
                delay(1);
            }
            delay(35);
            timer_GHOUL=0;
            user_ghoulinvisible=0;
            out_invisible=0;
            SetActorProperty(59,APROP_Speed,16.0);
        }
        else
        {
            out_invisible=0;
            
        }
        //----------------------------------------------------
        
        /*START SIMPLE FILTER TO SELECT WHAT SOUND TO PLAY*/
        if(user_invisible==1)
        {
            sound_toplay=1;
        }
        else if(user_invisible==0)
        {
            sound_toplay=0;
        }
        //----------------------------------------------------
        
        script_test=0;
        delay(1);    
    }
}

script 12(void)//RAVISHING SOUND SCRIPT
{
   while(true)
   {
    /*TWO LOOPS TO PLAY THE SOUNDS*/
    if(sound_toplay==0)
    {
        while(user_ghoulactivesound<4 && user_invisible==0)
        {
          user_ghoulactivesound++;
          delay(35);
        }
        timer_GHOUL++;
        user_ghoulactivesound=0;
        if(user_invisible==1)
        {
            ThingSound(59,"EFF5",127);
        }
        else if(user_ghoulinvisible==0)
        {
            ThingSound(59,"EFF10",127);
        }
     }
     else
     {
        while(user_ghoulactivesound<2 && user_invisible==1)
        {
           user_ghoulactivesound++;
           delay(35);
        }
        timer_GHOUL++;
        user_ghoulactivesound=0;
        if(user_invisible==1)
       { 
          ThingSound(59,"EFF5",127);
       }
       else if(user_ghoulinvisible==0)
       {
         ThingSound(59,"EFF10",127);
       }
     }
        //----------------------------------------------------
    Thing_Activate(23);
   delay(1);
   }
}

script 13 (void)//active ravishing
{
   // SetFont("BIGFONT");
   // HudMessageBold(s:"the ravishing is alive, run!!!"; HUDMSG_FADEOUT, 998, CR_RED, 0.5, 0.4, 5.5, 0.5);
    SetMusic("ibmsnd2");
    SpawnSpot ("ravishing",25,59,24);
    delay(35);
    acs_execute(11,0,0,0,0);
}

/*  END OF RAVISHING CODE*/
[/spoiler]

If it helps here´s the original code

Code: Select all

actor ravishing 31198
{
  MONSTER
  Radius 16//31
  Height 66
  Health 500
  Mass 100
  scale 0.065
  Speed 12
  PainChance 100
  +DONTHURTSPECIES +NOTARGET +FULLVOLDEATH 
  SeeSound "EFF6"
  PainSound "EFF9"
  DeathSound "EFF7"
  ActiveSound ""
  AttackSound ""
  MeleeSound ""
  MeleeDamage  1
  Obituary "You was killed by the ravishing"
  var int user_ghoulactivesound;
  var int user_ghoulactivesound2;
  var int user_ghoulinvisible;//variavel fala se esta invisivel ou nao
  var int user_ghoulinvisiblecount;//conta tempo que esta invisivel
  var int user_ghoulfirsttime;
  
  States
  {
  Spawn:
    ghou A 0 A_SetUserVar ("user_ghoulfirsttime",1)
    ghou A 0 A_SetUserVar ("user_ghoulactivesound",0)
	ghou A 0 A_SetUserVar ("user_ghoulactivesound2",0)
	ghou A 0 A_SetUserVar ("user_ghoulinvisible",1)
    ghou A 1 A_Look
    Loop
  See:
    ghou A 0 A_JumpIf(user_ghoulfirsttime==1,"GHOULALPHAIN")
    ghou A 0 A_SetUserVar("user_ghoulinvisiblecount",user_ghoulinvisiblecount+1)//0 1 2 3 4 5 6 7 - 8 9 0 1
    ghou A 0 A_JumpIf(user_ghoulactivesound>=7,"GHOULSND")//0 1 2 3 4 5 6 7 0 1 2 - -
	ghou A 0 A_JumpIf(user_ghoulactivesound2>=7,"GHOULSND2")
	ghou A 0 A_JumpIf(user_ghoulinvisible==1,"GHOULNSEE")// 1 1 1 1 1 1 1 - 1 1 1 0 0
	ghou A 0 A_JumpIf(user_ghoulinvisible==0,"GHOULSEE")//  - - - - - - - - - - - 1 1
    Loop
 GHOULNSEE://ghoul invisivel
    ghou A 0 A_ChangeFlag("INVULNERABLE",1)
    ghou A 0 A_SetUserVar("user_ghoulinvisiblecount",user_ghoulinvisiblecount+1)//1 2 3 4 5 6 7 0 1 2 3
    ghou A 0 A_ChangeFlag("NOCLIP",1)
	ghou A 0 A_SetUserVar ("user_ghoulactivesound",user_ghoulactivesound+1)//contador som 1 2 3 4 5 6 7 8 9 10
	ghou G 0 A_JumpIf(user_ghoulinvisiblecount>=60,"GHOULALPHAOUT")//0 0 0 0 0 0 0 0 0 1
    ghou ABCDEFG 2 A_Chase
	Goto see
 GHOULSEE://GHOUL VISIVEL
    ghou A 0 A_ChangeFlag("INVULNERABLE",0)
    ghou A 0 A_ChangeFlag("NOCLIP",0)
	ghou A 0 A_SetUserVar ("user_ghoulactivesound2",user_ghoulactivesound2+1)
	ghou G 0 A_JumpIf(user_ghoulinvisiblecount>=30,"GHOULALPHAIN")
    ghou ABCDEFG 2 A_Chase
	Goto see
 GHOULSND://toca som ativo invisivel
	ghou A 0 A_SetUserVar ("user_ghoulactivesound",0)
	ghou A 0 A_Playsound("EFF5")
	Goto see
 GHOULSND2://toca som ativo visivel
	ghou A 0 A_SetUserVar ("user_ghoulactivesound2",0)
	ghou A 0 A_Playsound("EFF10")
	Goto see
 GHOULALPHAIN://ghoul entrando invisibilidade
	ghou A 0 A_SetUserVar("user_ghoulfirsttime",0)
    ghou A 1 A_SetTranslucent (1.0,0)
	ghou A 1 A_SetTranslucent (0.9,0)
	ghou A 1 A_SetTranslucent (0.8,0)
	ghou A 1 A_SetTranslucent (0.7,0)
	ghou A 1 A_SetTranslucent (0.6,0)
	ghou A 1 A_SetTranslucent (0.5,0)
	ghou A 1 A_SetTranslucent (0.4,0)
	ghou A 1 A_SetTranslucent (0.3,0)
	ghou A 1 A_SetTranslucent (0.2,0)
	ghou A 1 A_SetTranslucent (0.1,0)
	ghou A 1 A_SetTranslucent (0.0,0)
	ghou A 0 A_SetUserVar("user_ghoulinvisiblecount",0)
	ghou A 0 A_SetUserVar("user_ghoulinvisible",1)
	Goto see
 GHOULALPHAOUT://ghoul saindo invisibilidade 
	ghou A 0 A_SetUserVar("user_ghoulfirsttime",0)
    ghou A 1 A_SetTranslucent (0.0,0)
	ghou A 1 A_SetTranslucent (0.1,0)
	ghou A 1 A_SetTranslucent (0.2,0)
	ghou A 1 A_SetTranslucent (0.3,0)
	ghou A 1 A_SetTranslucent (0.4,0)
	ghou A 1 A_SetTranslucent (0.5,0)
	ghou A 1 A_SetTranslucent (0.6,0)
	ghou A 1 A_SetTranslucent (0.7,0)
	ghou A 1 A_SetTranslucent (0.8,0)
	ghou A 1 A_SetTranslucent (0.9,0)
	ghou A 1 A_SetTranslucent (1.0,0)
	ghou A 0 A_SetUserVar("user_ghoulinvisiblecount",0)
	ghou A 0 A_SetUserVar("user_ghoulinvisible",0)
	Goto see
    
  Pain:
    ghou a 0 A_Pain
	Goto See
  Melee:
    ghou G 0 A_JumpIf(user_ghoulinvisible==1,"GHOULNSEE")
	ghou G 0 A_Playsound("EFF8")
    ghou G 1 A_FaceTarget
	ghou G 0 A_MeleeAttack
    ghou HIJKJIH 1 
	Goto See


  Death:
    ghou A 8 
    ghou B 8 A_Scream
    ghou C 8
    ghou D 8 A_SetTranslucent(1.0,0)
    ghou E 8 A_Fall
	ghou D 8
	ghou E 8
    tnt1 A -1 A_SetFloorClip
    Stop
  Raise:
    pair L 8 A_UnSetFloorClip
    pair KJIHG 8
    Goto See

  }
}
Or other way would be, when the monster enter in pain state or other counter, it call an acs that teleport he to otherplace...
Last edited by ibm5155 on Wed Feb 06, 2013 12:10 am, edited 1 time in total.

manuelspark
 
Posts: 66
Joined: Mon Aug 13, 2012 1:36 am
Location: Viva Chile Mierda!!!

RE: Help for monster

#6

Post by manuelspark » Wed Feb 06, 2013 7:30 pm

Yeah i want something like SJAS but appears elsewhere anytime

User avatar
ibm5155
Addicted to Zandronum
Posts: 1641
Joined: Tue Jun 05, 2012 9:32 pm
Location: Somewhere, over the rainbow

RE: Help for monster

#7

Post by ibm5155 » Wed Feb 06, 2013 7:49 pm

whe it enter in pain it just use ACS_Execute(script number) on decorate
and teleport it to another place using random function on acs
Projects
Cursed Maze: DONE, V2.0
Zombie Horde - ZM09 map update: [3/15/13]
Need help with English? Then you've come to the right place!

<this post is proof of "Decline">

HexaDoken
Forum Regular
Posts: 352
Joined: Wed Jul 04, 2012 8:27 am
Location: Void. Russian Void.

RE: Help for monster

#8

Post by HexaDoken » Mon Feb 11, 2013 5:28 am

http://realm667.com/index.php/component ... 9-overlord
Study.
It's not exactly Sjas but it doesn't require ACS.

Post Reply