Jump to content

Photo

Script to activate Combo Flags


  • Please log in to reply
3 replies to this topic

#1 BrawlPurist

BrawlPurist

    Newbie

  • Members
  • Real Name:Andrew

Posted 19 April 2010 - 06:11 PM

Here's my current item script:
CODE
item script Plasma_Beam{
  void run(int Damage,  int tile1,  int tile2,  int tile3,  int tile4, int CSet)
  {
    if(NumLWeaponsOf(LW_SCRIPT1) == 2){
      CanShoot = 1;
    }
    if(CanShoot == 0){
      lweapon HBeam = Screen->CreateLWeapon(LW_SCRIPT1);
      HBeam->X = Link->X;
      HBeam->Y = Link->Y;
      int x = HBeam->X;
      int y = HBeam->Y;
      HBeam->Dir = Link->Dir;
      HBeam->Step = 500;
      HBeam->Damage = Damage;
      HBeam->OriginalTile = tile1;
      HBeam->NumFrames = 1;
      HBeam->OriginalCSet = CSet;
      Link->Action = LA_ATTACKING;
      Game->PlaySound(SFX_BEAM);
      int HBeamX = HBeam->X;
      int HBeamY = HBeam->Y;
      if(HBeam->Dir == DIR_UP){
        HBeam->OriginalTile = tile1;
      }
      else if(HBeam->Dir == DIR_DOWN){
        HBeam->OriginalTile = tile2;
      }
      else if(HBeam->Dir == DIR_LEFT){
        HBeam->Y = Link->Y + 4;
        HBeam->OriginalTile = tile3;
      }
      else if(HBeam->Dir == DIR_RIGHT){
        HBeam->Y = Link->Y + 4;
        HBeam->OriginalTile = tile4;
      }
      if(ComboFI(HBeam->X, HBeam->Y, CF_SWORD1BEAM) == true){
        Screen->TriggerSecrets();
        Screen->State[ST_SECRET] = true;
      }
    }
    CanShoot = 0;
  }
}


I need a function that checks the flag that the LWeapon is traveling over and then activates it.
Thanks in advance! icon_wink.gif

#2 Joe123

Joe123

    Retired

  • Members

Posted 20 April 2010 - 03:17 AM

CODE
void LWeaponTrigger(int type, int flag){
    for(int i=Screen->NumLWeapons();i>0;i--){ //Iterate across lweapons
        lweapon l = Screen->LoadLWeapon(i); //Load each one
        if(l->ID != type) continue; //If it's not the right type of lweapon, skip to the next one
        if(Screen->ComboF[ComboAt(l->X+8,l->Y+8)] != flag && Screen->ComboI[ComboAt(l->X+8,l->Y+8)] != flag) continue; //If it's not on the right flag skip to the next one
        Screen->TriggerSecrets(); //Trigger secrets temporarily
        Screen->State[ST_SECRETS] = true; //Set permanent secrets state to true
        l->DeadState = WDS_DEAD; //Kill LWeapon
    }
}


Put this in your global script so as it's called once per frame.

#3 BrawlPurist

BrawlPurist

    Newbie

  • Members
  • Real Name:Andrew

Posted 20 April 2010 - 07:51 PM

CODE
bool Trigger = true;

global script slot_2{
  void run(){
    while(true){
      if(Trigger) LWeaponTrigger();
    }
    Waitframe();
  }
  void LWeaponTrigger(){
    for(int i=Screen->NumLWeapons();i>0;i--){
          lweapon l = Screen->LoadLWeapon(i);
      if(l->ID != LW_SCRIPT1) continue;
      if(Screen->ComboF[ComboAt(l->X+8,l->Y+8)] != CF_SWORD1BEAM && Screen->ComboI[ComboAt(l->X+8,l->Y+8)] != CF_SWORD1BEAM) continue;
      Screen->TriggerSecrets();
      Screen->State[ST_SECRET] = true;
      l->DeadState = WDS_DEAD;
    }
  }
}


Something like this? icon_confused.gif

Edited by BrawlPurist, 20 April 2010 - 08:49 PM.


#4 Joe123

Joe123

    Retired

  • Members

Posted 23 April 2010 - 03:19 PM

No, you don't need that trigger variable just call the function.


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users