Announcement

Collapse
No announcement yet.

Gametype idea: Every Man For Himself CTF

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

    #16
    Yea, the map converters are pretty neat (are there any for other gametypes?). Though manually converting maps works better, since they often need altered pathing to work correctly.

    Comment


      #17
      Not with this, it generally works very well. Maps you wouldn't think work too well as CTF, do.

      edit: So I am wondering if anyone is willing to make this happen. If so, I'll put more thought into it and address whatever issues you see. If not, I'll just leave it.

      Comment


        #18
        CTF with DM rules more or less
        Check out Meowcat's gametype "YARM Flag King":

        - any player who picks up the flag scores XX points every YY seconds for however long he can hold onto it

        - score 1 point for fragging any opponent

        - an icon of the flag's current location displays as a HUD overlay

        The gametype populates its maplist from available DM maps, though (not CTF maps)

        Comment


          #19
          convert any map...
          ...Hides or removes JB, BR, ONS and DOM goals, lights, etc.
          For the BeyondAssassin gametype, I wrestled with many of those "map conversion" considerations. Mods to handle Assault maps, which often contain complex scripted triggers (e.g. AS-Blazing-Chase ) seemed like the hardest to build a generic set of rules for.

          Code:
          BeyondAssassin.xAssassinGame.uc
          
          simulated function PostNetBeginPlay()
          {    
          
          //  GETTING THE GAMETYPE TO GRACEFULLY
          //  ACCOMODATE NON-DEATHMATCH MAPS
          //  SEEMS MORE TROUBLE THAN ITS WORTH
          
          local ONSVehicleFactory OVF;
          local Vehicle V;
          local DestroyableObjective DYO;
          local CTFBase CB;
          local ProximityObjective PO;
          local DestroyVehicleObjective DVO;
          local xBombDelivery XBD;
          local xBombSpawn XBS;
          local ASVehicleFactory ASVF;
          local Teleporter TP;
          
          if( bRandomizeTeleporterDestinations ) {
                  ForEach AllActors(class'Teleporter', TP) {    
                          TP.SetPropertyText( "Tag" , "telerandom" );
                          TP.SetPropertyText( "URL" , "telerandom" );
                  }
          }
          
          if(bAllowVehicleFactories == True) {
                  // -------- doesn't encompass ONSManualGunPawn
                  ForEach AllActors(class'ONSVehicleFactory',OVF) {            
                                  OVF.Activate(0);
                  }
                  ForEach AllActors(class'Vehicle',V) {
                          V.SetTeamNum(0);
                          V.bTeamLocked = false;
                  }
          } else {
                  ForEach AllActors(class'ONSVehicleFactory',OVF) {
                          OVF.MaxVehicleCount=0;
                          OVF.bActive=false;
                          ovf.bNeverActivate=true;
                  }
                  ForEach AllActors(class'Vehicle', V) {
                          bHidden=true;
                          bGameRelevant=false;
                  }
          }
          
          
          // TRIGGERS AND MOVERS RELATED TO 
          // DESTROYABLEOBJECTIVE ACTORS
          // MAY BE CHAINED "SEVERAL STEPS DEEP"
          
          Foreach AllActors(class'DestroyableObjective', DYO) {
                  DYO.bPlayCriticalAssaultAlarm=false;
                  DYO.bMonitorUnderAttack=false;
                  // DYO.DisableObjective()
                  TriggerEvent(DYO.Event, self, None);
                  DYO.bInitiallyActive = false;             
                  // --- somewhere, maybe PostLogin(),
                  // --- the native code handles bringing
                  // --- late-joining player's client up to date
                  // --- by syncing mover events which have occurred.
                  //
                  // --- May need to change the DO state
                  // --- in that code block instead.
                  DYO.bActive=false;                                 
                  DYO.Health=0;
                  DYO.Destroyed();                        
                  // --- unsure whether the actor's event
                  // --- will trigger action of tagged movers 
                  // --- (hope to open scripted doors and remove barriers)
                  DYO.bDisabled=true;
                  // DYO.bAlwaysRelevant=false;
                  //  ^----- the prototype is bNoDelete true. leave it be
                  // DYO.bCollideActors=false;
                  //  ^----- CAN'T ASSIGN CONST VARIABLES
                  // DYO.bBlockKarma=false;
                  //  ^-----  CAN'T ASSIGN CONST VARIABLES
                  DYO.SetCollision(false, false , false);                     
                  DYO.bHidden = true;
          }
          Foreach AllActors(class'CTFBase', CB) {
                  CB.bInitiallyActive = false;
                  CB.bHidden = true;
          }
          Foreach AllActors(class'ProximityObjective', PO) {
                  PO.bInitiallyActive = false;
                  PO.bHidden = true;
          }
          Foreach AllActors(class'DestroyVehicleObjective', DVO) {
                  DVO.bInitiallyActive = false;
                  DVO.bHidden = true;
          }
          Foreach AllActors(class'xBombDelivery', XBD) {
                  XBD.bInitiallyActive = false;
                  XBD.bHidden = true;
          }
          Foreach AllActors(class'xBombSpawn', XBS) {
                  XBS.bInitiallyActive = false;
                  XBS.bHidden = true;
          }
          ForEach AllActors(class'ASVehicleFactory', ASVF) {
                  if( !( 
                    ASVF.VehicleClass == class'ASVehicle_SpaceFighter_Human' 
                    ||  ASVF.VehicleClass == class'ASVehicle_SpaceFighter_Skaarj' ) 
                  ) {
                          ASVF.bEnabled = false;
                  }
          }
          // ------- not calling Super here
          }

          Comment


            #20
            Originally posted by melissa_jo View Post
            Check out Meowcat's gametype "YARM Flag King":

            - any player who picks up the flag scores XX points every YY seconds for however long he can hold onto it

            - score 1 point for fragging any opponent

            - an icon of the flag's current location displays as a HUD overlay

            The gametype populates its maplist from available DM maps, though (not CTF maps)
            That sounds like Domination, not Capture the Flag.

            Comment


              #21
              There's a "YARM Domination" gametype also, but THAT is team-based. Plays on DM maps & domination points get spawned onto random pathnodes (different random locations each match). The gametype has excellent bot team AI.

              Comment

              Working...
              X