mirror of
https://github.com/tribes2/SkillSector.git
synced 2026-01-19 19:44:48 +00:00
Update README.md to refocus on core components so I can finish this project and quit Tribes 2, minor changes
This commit is contained in:
parent
9ffd8008d4
commit
2bbf5c658f
45
README.md
45
README.md
|
|
@ -4,49 +4,20 @@ SkillSector is a game mode for Tribes 2 for building skills you will need to pla
|
||||||
|
|
||||||
# Mode plan
|
# Mode plan
|
||||||
Building on the concepts seen in the [Training Grounds](https://github.com/jakraska/Tribes-2-Training-Grounds/) game mode by [jakraska](https://github.com/jakraska), SkillSector hopes to achieve the following features for the following modes.\
|
Building on the concepts seen in the [Training Grounds](https://github.com/jakraska/Tribes-2-Training-Grounds/) game mode by [jakraska](https://github.com/jakraska), SkillSector hopes to achieve the following features for the following modes.\
|
||||||
#### Movement and shooting
|
#### Aim training
|
||||||
- [ ] Flying aim training, multiple difficulty levels
|
- [x] Static aim training
|
||||||
|
- [ ] Dynamic aim training
|
||||||
|
- [ ] LakRabbit aim training
|
||||||
|
#### Duelling
|
||||||
- [ ] Human duel arena(s)
|
- [ ] Human duel arena(s)
|
||||||
- [ ] Robot duel arena(s)
|
- [ ] Robot duel arena(s)
|
||||||
#### Flag handling
|
#### Flag handling
|
||||||
- [ ] Flag toss practice
|
- [x] Flag toss practice
|
||||||
- [ ] Baseball machine flag catch practice (CTF, TR2)
|
- [x] Baseball machine flag catch practice (CTF, TR2)
|
||||||
- [ ] Human flag practice (CTF, TR2)
|
- [x] Human flag practice (CTF, TR2)
|
||||||
#### Toys
|
#### Toys
|
||||||
- [ ] Grav cycle racing
|
- [ ] Grav cycle racing
|
||||||
- [ ] Ski racing
|
- [ ] Ski racing
|
||||||
|
|
||||||
# Modes
|
|
||||||
## Flying aim training
|
|
||||||
### Beginner difficulty
|
|
||||||
Static targets. Shots will only count when the player is...
|
|
||||||
- In the air
|
|
||||||
- Travelling at a minimum velocity
|
|
||||||
|
|
||||||
Different weapons will have different scores based on their 'ease' of hitting a static target.\
|
|
||||||
Static targets will be both on the ground and in the air.\
|
|
||||||
Hitting a static target with splash damage will count, but won't grant much score compared to a direct hit.
|
|
||||||
|
|
||||||
### Moderate difficulty
|
|
||||||
Moving targets. Splash damage does not count. Same rules as previous.
|
|
||||||
|
|
||||||
### Advanced difficulty
|
|
||||||
Fast moving targets. Same rules as previous.
|
|
||||||
|
|
||||||
## Human duel arena(s)
|
|
||||||
Humans should be able to schedule a duel between themselves. I like the way that TG did it.
|
|
||||||
|
|
||||||
## Robot duel arena(s)
|
|
||||||
Humans should be able to select from various difficulty robots for dueling.
|
|
||||||
|
|
||||||
## Flag toss/catch practice
|
|
||||||
Flag tossing and flag catching require a fair bit of practice. Doing so manually or between players
|
|
||||||
|
|
||||||
#### auxiliary todo list / odds and ends
|
#### auxiliary todo list / odds and ends
|
||||||
- noIndividualDamage could be set for the roof's power stations, making it possible to annoy other players by disabling FloatingBank's inventory station(s)
|
- noIndividualDamage could be set for the roof's power stations, making it possible to annoy other players by disabling FloatingBank's inventory station(s)
|
||||||
|
|
||||||
|
|
||||||
# map ideas
|
|
||||||
# twin towers 9/11 map is a good meme
|
|
||||||
|
|
||||||
# flying aim training thinking
|
|
||||||
|
|
@ -37,6 +37,10 @@ function SkillSectorGame::missionLoadDone(%game) {
|
||||||
function SkillSectorGame::initGameVars(%game) {
|
function SkillSectorGame::initGameVars(%game) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function SkillSectorGame::onClientLeaveGame(%client) {
|
||||||
|
CLWaypointWrangler(%client);
|
||||||
|
}
|
||||||
|
|
||||||
// No longer dispatching 'primary' waypoints because they can't be made semi-permanent.
|
// No longer dispatching 'primary' waypoints because they can't be made semi-permanent.
|
||||||
function SkillSectorGame::clientMissionDropReady(%game, %client) {
|
function SkillSectorGame::clientMissionDropReady(%game, %client) {
|
||||||
messageClient(%client, 'MsgClientReady',"", %game.class);
|
messageClient(%client, 'MsgClientReady',"", %game.class);
|
||||||
|
|
@ -52,7 +56,6 @@ function SkillSectorGame::clientMissionDropReady(%game, %client) {
|
||||||
DefaultGame::clientMissionDropReady(%game, %client);
|
DefaultGame::clientMissionDropReady(%game, %client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function SkillSectorGame::gameOver(%game) {
|
function SkillSectorGame::gameOver(%game) {
|
||||||
DefaultGame::gameOver(%game);
|
DefaultGame::gameOver(%game);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ function BankTeleporter::onCollision(%data, %obj, %collider) {
|
||||||
messageClient(%collider.client, 'MsgStationDenied', '\c2Teleporter is recharging please stand by. ~wfx/powered/nexus_deny.wav');
|
messageClient(%collider.client, 'MsgStationDenied', '\c2Teleporter is recharging please stand by. ~wfx/powered/nexus_deny.wav');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
messageClient(%collider.client, 'MsgTeleportStart', '\c2Teleporter is calculating transport coherence... ~wfx/misc/nexus_idle.wav');
|
//messageClient(%collider.client, 'MsgTeleportStart', '\c2Teleporter is calculating transport coherence... ~wfx/misc/nexus_idle.wav');
|
||||||
%collider.setVelocity("0 0 0");
|
%collider.setVelocity("0 0 0");
|
||||||
%collider.setMoveState(true);
|
%collider.setMoveState(true);
|
||||||
%collider.startFade(1000, 0, true);
|
%collider.startFade(1000, 0, true);
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,11 @@ function WaypointWranglerZone::onLeaveTrigger(%this, %trigger, %obj) {
|
||||||
function WaypointWranglerZone::onTickTrigger(%this, %trigger) {
|
function WaypointWranglerZone::onTickTrigger(%this, %trigger) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function CLWaypointWrangler(%client) {
|
||||||
|
// cancel any ongoing waypoint wrangler scheduler
|
||||||
|
cancel(%client.wwsched);
|
||||||
|
}
|
||||||
|
|
||||||
function ShutdownWaypointWrangler() {
|
function ShutdownWaypointWrangler() {
|
||||||
%count = ClientGroup.getCount();
|
%count = ClientGroup.getCount();
|
||||||
for (%i = 0; %i < %count; %i++) {
|
for (%i = 0; %i < %count; %i++) {
|
||||||
|
|
@ -112,9 +117,12 @@ function WWDispatch(%client, %zoneIndex) {
|
||||||
for (%i = 1; %i < $WPZPoints[%zoneIndex, 0]+1; %i++) {
|
for (%i = 1; %i < $WPZPoints[%zoneIndex, 0]+1; %i++) {
|
||||||
showWaypoint(%client, $WPZPoints[%zoneIndex, %i]);
|
showWaypoint(%client, $WPZPoints[%zoneIndex, %i]);
|
||||||
}
|
}
|
||||||
|
cancel(%client.wwsched); // can't be dispatched for more than one zone at once
|
||||||
%client.wwsched = schedule(1900, 0, WWDispatch, %client, %zoneIndex);
|
%client.wwsched = schedule(1900, 0, WWDispatch, %client, %zoneIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This function is unnecessarily expensive, this lookup could be done by attaching the zone and index to the trigger.
|
||||||
|
// I'm also too lazy to re-write it now
|
||||||
function WWStartWaypointDispatch(%client, %zone) {
|
function WWStartWaypointDispatch(%client, %zone) {
|
||||||
// echo("zone count:" @ $WPZNextFree);
|
// echo("zone count:" @ $WPZNextFree);
|
||||||
for (%i = 0; %i < $WPZNextFree; %i++) {
|
for (%i = 0; %i < $WPZNextFree; %i++) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue