FFA-KTC (game mode)

hihihilolHI

Member
Joined
Jan 12, 2012
Messages
440
Reaction score
532
Points
63
FFA-Kill the Carrier is an FFA game mode. The goal is to remain as the carrier the longest. To become the carrier, you kill the current carrier. While you are the carrier, you gain time/points like on KOTH maps. The person with the longest total time gets first, the second longest, second, and the third longest, third. 30 seconds into the game, one person is randomly chosen as the carrier (during that period you would not be able to fight). Before the carrier is chosen, there would be a countdown:

Carrier is chosen in:
10
9
8
etc.

KTC maps would just be modified (if necessary) FFA maps. Typing /teams would show:

Referees (2): example, example
Rogues (6): example, example, example (carrier), example, example, example

Wom top right:

[Blocktopia] TNT Wars Server
Welcome -hax
Current leader: example 7:12 Time: 0:34
Current carrier: example

/score:

Time: 0:38
Current leader: example 7:12
There are 6 rogues playing
Current kill streak: 0
Kills: 0 Deaths: 0

Edit: If the carrier suicides, another carrier will be randomly chosen.
 

Duffie

Member
Joined
Aug 6, 2011
Messages
2,880
Reaction score
5,076
Points
138
Website
duffieshirayuki.deviantart.com
It could always be team based, where the carrier wins points for their team as they remain the carrier.

Kind of like Vampire on Soldier Front, only slightly different. The main guy would have an overly large head, prone to headshots, but with tons of HP.

But, basically, they would be the main guy, getting more points for killing people than others, but more prone to being killed.

Of course, that can't really happen here. So, I like the idea of the Carrier being passed onto the killer. I could see loopholes, though, such as committing suicide.
 

hihihilolHI

Member
Joined
Jan 12, 2012
Messages
440
Reaction score
532
Points
63
Hmmm, If you commit suicide, then I guess another carrier would be randomly chosen? I'll edit that in. And I don't think it should be team based, as FFA makes it more hectic and fun
 
  • Agree
Reactions: Luigi

smokingkills

The Friendly DoD VetOp
Joined
Aug 10, 2011
Messages
243
Reaction score
205
Points
43
I think it's worth trying this out. It seems good on paper, and as long as it works out in-game, then I think it could be an awesome addition.

And I agree that this shouldn't be put into team games, and should only be for FFA. Reason being team games are for the whole team. We already have bounties that could cause people to be targeted, we don't need this as well that could dramatically effect the game, players kills / deaths and the overall outcome of the game. For example it could cause a good player to get a tonne more kills as they are being targeted but it could also cause the new players to constantly be targeted and killed.

Let's do it.
 

asaechao

─═☆The Blue Bird☆═─
Joined
Nov 24, 2011
Messages
852
Reaction score
1,292
Points
93
I'm just wondering, what if the flag carrier goes offline, will it be the same as if s/he suicides?
Other than that, this game mode will be fun to play in.
 

Alkatraz

Member
Joined
Aug 6, 2011
Messages
485
Reaction score
537
Points
93
Unless I am mistaken, we currently can only specify the team which wins via commands/blocks.
Whilst I imagine it would not be excessively difficult to change the code, at the moment I don't believe it would be possible.
Similarly I'm not sure whether it would be possible to edit /teams to add (Carrier), although this doesn't seem necessary for the gamemode.

I think initially it might be confusing, but probably would be well received by players. As Razinao seems happy to give coding it a try, I personally would be happy for it to be tried in game.

PS: I think I've mentally worked out how Raz would code this. (With the exception of randomly choosing the player)
 

Razinao

:_;
Joined
Aug 6, 2011
Messages
834
Reaction score
757
Points
63
Alike in CTF gamemodes, if the 'carrier' goes offline it will reset.

So... we have several methods for victories


1:
• We use the FFA Rogue method, and whoever is the carrier is either on red or blue team.
• Whomever has the most points at the end will be changed to red team and endrounded for them. Or they will get 100 points and the round resets.

2:
• We don't have the team system, but we use reset and give the individual with the most points 100 pts.

› Arrays

Now with the random player thing, I would -love- to have Variable Arrays. And the ability to 'destroy' a variable, so that it doesn't exist anymore but that's neither here nor there. With the array system, it would be rather simple.

Variable arrays would store under "variable" a long set of numbers. So, worldvara [world variable array] $name would store all the names in an array under that variable name. Like so:

name[1]: Razinao
name[2]: Alkatraz
name[3]: KingSam

With each new name, another [#] would be added. Obviously with 'destroy' I would be able to remove someones specific variable# from the list, although that's getting complicated. Anyways, with this, I could then get a random person with ($name[$rnd(0,15)] and use their name from that.

› PlayerIDs

Another possibility of making the system clean is to allocate everyone in TNTWars who is either on red, blue, or rogue team, an ID. Possibly in the order that /teams displays it, or in the order of them joining. Obviously when someone leaves the list is brought down so that if the 4th person leaves, 5th becomes 4th. This would then allow a collection of someones name with $rnd(player).

› Ineffective, but currently possible storage.

Now this one would be a real killer. I've already made referral to it to you before, Alkatraz.

if "$wname1"=="0": worldvar wname1 $nameif "$wname1"!="0" and "$wname2"=="0": worldvar wname2 $nameif "$wname1"!="0" and "$wname2"!="0" and "$wname3"=="0": worldvar wname3 $name
if "$wname1"!="0" and "$wname2"!="0" and "$wname3"!="0" and "$wname4"=="0": worldvar wname4 $name
etc. etc.

This would be very implausible to store and refer from, although $rnd($wname$rnd1,??) would always be possible. The rest is rather easy to do. The points tally would have to be done in a similar array / under playerIDs like the previous system, because no way / unlikely am I to sort out the current system.

If you're going to install any of the systems, Destroyer, do the PlayerIDs.
 

Thymos

Thy Friendly Moose
Joined
Aug 8, 2011
Messages
96
Reaction score
155
Points
18
The issue with borrowing from Zombie Survival is that our server and theirs are written in two completely different programming languages. They use C++, we use python, so there is absolutely no way we could do that.
 
  • Agree
Reactions: chris360kss

Razinao

:_;
Joined
Aug 6, 2011
Messages
834
Reaction score
757
Points
63
It is more reliable to have a system set up for command blocks. It means everyone is able to customize it rather than an individual, that individual being destroyerx1.

...Although I suppose it's unfair to say everyone can customize command blocks too. But having this kind of functionality, at least the PlayerID one, opens up many more options and features.
 

KingSam

The Head Pyromaniac
Joined
Aug 6, 2011
Messages
489
Reaction score
1,606
Points
93
Seems like a decent enough idea, I quite like it!

There'd have to be some sort of prevention of people being afk with it, or being assigned the carrier when you're in a spawn area, but those are the only issues I've thought of that haven't been mentioned already.
 

Razinao

:_;
Joined
Aug 6, 2011
Messages
834
Reaction score
757
Points
63
When a player spawns, their $name variable is set to 0. When they enter the portal, it is set to 1, therefore allowing them to meet a condition, else it randoms again.

People AFKing with it... not much we can do. I also fear this will only work on ob only maps so people don't hide.

Just to prove i've started.

Code:
Variable Key:

A = Top Points
B = Top Player
C = Car1rier
D = Potential Candidate
$name = Point Storage per head
x$name = Player in actual play

Command Swaps:

getrand - The function to get a random player on red/blue/rogue.

Events:

on leave;
/gcmd if "$leaver"=="$c": worldvar c 0;

at 2;
/gcmd setpoints $wb ###;
/gcmd worldmsg &a* &9$wb &ewins with &a$wa&e points!;
/gcmd reset;

every 1;
/gcmd if $exist(b)==0: worldvar b 0
/gcmd if $exist(a)==0: worldvar a 0
/gcmd if $exist(c)==0: worldvar c 0
/gcmd if $exist(d)==0: worldvar d 0
/gcmd if "$wc"!="0" and "$wb"=="$wc": worldvar a $eval($wa+1)
/gcmd if "$wc"!="0" and "$wb"=="$wc": worldvar $wc $eval($wc+1)
/gcmd if "$wc"!="0" and "$wb"!="$wc": worldvar $wc $eval($wc+1)
/gcmd if "$wc"!="0" and "$wb"!="$wc" and $wa=$w$wc: worldvar $wb $wc
/gcmd if "$wc"=="0": worldvar d $getrand
/gcmd if "$wc"=="0" and $wx$wd==1: worldmsg &a* &eThe new Carrier is &9$wd
/gcmd if "$wc"=="0" and $wx$wd==1: worldvar c $wd

every 60;
/gcmd if "$wc"!="0": worldmsg &a* &eKill &9$wd &a[$w$name] &eto become the Carrier!

Commands:

Spawn:
/gcmd if $exist($w$name)==0: worldvar $name 0
/gcmd worldvar d$name 0
/gcmd if "$name"=="$wc" and "$kby"!="0": worldmsg &a* &9$name &ewas killed by &9$kby
/gcmd if "$name"=="$wc" and "$kby"!="0": worldmsg &a* &eThe new Carrier is &9$kby
/gcmd if "$name"=="$wc" and "$kby"!="0": worldvar c $kby
/gcmd if "$name"=="$wc" and "$kby"=="0": worldmsg &a* &9$name &ekilled himself. Selecting new carrier.
/gcmd if "$name"=="$wc" and "$kby"=="0": worldvar c 0
/gcmd goto SPAWNAREA

Exit Spawn:
/gcmd worldvar d$name 1
/gcmd self &a* &eKill &9$wc &e to become the carrier1
/gcmd goto $eval(random.choice(["X Y Z O", "X Y Z O"]))
Supposedly finished! Time to Rubber-Duck my way through the script.
 

superstein

Ex-Admin
Contributor
Joined
Mar 31, 2012
Messages
1,503
Reaction score
2,998
Points
288
Is it in the code that if someone waits in a spawn the time will not be counted, or will those portal spawn areas not be implemented into the maps (random spawns?)

EDIT: I mean by this a respawn into the spawn.
 

Razinao

:_;
Joined
Aug 6, 2011
Messages
834
Reaction score
757
Points
63
Is it in the code that if someone waits in a spawn the time will not be counted, or will those portal spawn areas not be implemented into the maps (random spawns?)

EDIT: I mean by this a respawn into the spawn.
Yes. When you die your variable involving your name is 0, and when it checks for a new person it checks for that as well. If you enter the portal and get teleported it becomes 1 and you're now eligible to become the next random person.