Gametype Ideas

WhoronaVirus

Silver Host
Oct 6, 2020
22
3
36
This is the place to discuss and propose any fun modded gametype ideas you might have. Please be as specific as possible in terms of what you want the gametype to include, actions you want performed, etc. There's no obligation for anyone to make it for you, but most everyone is happy to help get it going for you, so post away.

If you want to learn how to make a gametype yourself, feel free to ask for help in the "General Gametyping Help/FAQ" thread. We will have a wiki coming soon, with detailed, easy to understand instructions on how to get started, so stay tuned!!
 
Jul 28, 2021
1
0
1
I need some help with Megalo scripting. I want to create a Free For All custom game where all players are on the same team. I prefer Reach but I don't mind if it's Halo 4 or Halo 2A. The goal is to fight players on your own team so that it's the same as having a regular FFA match with aim assist turned off. Betrayal booting would be disabled. My ideal goal would be to have some setup that would work in the Custom Game Browser but I don't mind if it only works in regular custom games.

I'm thinking I could make it a CTF gametype where you score +1 for betrayals, then end the game after 50 points. That would make the game end when everyone has killed each other a total of 50 times. I wonder if I could make it a one-life mode (or two lives + a respawn player trashcan) but how would I end it? If one player was left alive would it still end the game since it's not FFA? I don't think it will. If I did a KoTH gametype then it would always be captured since there would be no opposing player to contest it. I wonder if I could use the code from Drag Race+ to force everyone in the game to be on the same team.

Any suggestions about what commands I should use?

To talk more in-depth about an ideal vision here is how I'd like to make it. I'm willing to compromise in order to make it work, this is just to paint a picture.
I'd call the gametype "the Infinite FFA experience". Everyone would be forced to play as a spartan and team color would not be applied. There would be no waypoints but players could still see other player names. A popup at the start would say "Betrayals score +1 points. Betrayal booting is off." The second sentence would be on a new line. If a player suicides then it would not subtract a point. I would either make capturing the neutral flag give 0 points or move the flag spawn or capture plate out of reach. If reaching 50 points to win is awkward then I would make it an unlimited score cap and put a timer on instead. I don't believe it will be possible to make the game end when an individual reaches 25 points but if I could then I would do that. When carrying a flag I would nerf the melee power so that it takes two hits to kill instead of one (ideally matching the power of a regular melee).
 

sofasleeper5

Novice
Oct 11, 2020
3
1
8
Reach will be far easier to do this in since we have the Reach Variant Tool, which is far easier to use than tools available for other games.

To assign players to the same team (in an otherwise free for all game) use this code.
Code:
on local: do
    for each player do
        current_player.team = team[0]
    end
end

You'll probably be doing lots of the code in a for each player loop like above (although doing it within "on local: do" won't be necessary most of the time.

You can use player.killer_type_is(guardians | suicide | kill | betrayal | quit) in an if statement to detect if a player has died (changing the arguments to detect different causes of death). Then you can use player.get_killer() to track who killed them and increase the killer's score accordingly.

player.set_round_card title() can be used to change the text shown in the window that usually describes the gametype at the start of each round.

The hard part is the CTF stuff. You'll want to detect where to place it with a "for each object with label "example_forge_label" do" loop. From there you'll want to use the object.place_at_me() function to place a flag and store it in an object.object[n] variable if that same variable has no object. You'll want to use another loop on objects with another forge label and a for each player loop within that to detect if a player holding a flag is in that forge object's zone using the object.shape_contains() player.try_get_weapon() and object.is_of_type() functions.
 
  • Like
Reactions: WhoronaVirus