AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Plugins (https://forums.alliedmods.net/forumdisplay.php?f=108)
-   -   RuneTF gamemode (https://forums.alliedmods.net/showthread.php?t=219463)

happs 06-29-2013 04:42

RuneTF gamemode
 
4 Attachment(s)

Runes are power-ups that grant special abilities. You can have only one rune active at a time, and it will remain active until death.


Design Rationale
The original Quake Runes mod was a free-for-all player deathmatch. Many of the runes had abilities increasing the players survivability or fragging efficiency. When porting the concept to Team Fortress, it became apparent that some of the runes were too strong in a team objective-based setting. Similar to the design philosophy of the weapon alternatives, runes that increase a players damage output come with negative effects.

When designing new runes, the focus was to complement team-play more than buffing individual players. Some runes can become more effective when used in coordination with teammates. Because of the random nature of the rune drops, runes that only effect certain classes were avoided. However some runes are certainly more effective in the hands of certain classes. To facilitate teamplay runes can be shared with teammates by dropping them on the ground.

Although most runes have passive abilities, some runes require activating with the command +use.


List of Runes
Aware - Periodically scans your nearby surroundings. Shows class and health of nearby players.

Recall - Teleport to a previous location. +use sets or clears teleport destination. When far enough away, teleports player to destination.

Blink - Teleports between two locations. +use to toggle destinations.

IronDome - Launches interceptor rockets upon death. Interceptor rockets cause knockback only. Based on javalia

DeadMansTrigger - Triggers explosion upon death. +use to activate with greater effect. When fully detonated the affected players are temporarily stunned. Contact with interceptor rockets negate this runes effects.

Sharing - Healthkits and ammokits picked up are shared with nearby teammates.

Rage - Increases rate of fire upon damaging an enemy. Prolonged usage can cause adverse effects.

Powerplay - Instantly respawns fallen teammates when you kill three enemies in under 10 seconds.

Shared Sacrifice - Incoming damage is divided among nearby teammates.

Diamond Skin - Damage reduced by 10. The bleed, jarate, milk, and stun conditions have no effect.

Engineering - Grants speed boost when carrying objects. Steals enemy sentries upon death.

Ammo - Passively replenishes ammo. Active with +use to restore your weapon clip. Additionally, engineers gain metal, and spies gain cloak time.

Pounce - Passively grants more control over movement when in the air. Shamelessly copied from Chanz

Vault - Passively increases height of jumps.

Assault - Grants a speed boost when ubered.

Vanguard - Redirects damage from nearby weaker teammates to you.

AirBud - Increased air movement. Decreased gravity.

Sabotage - Deal extra damage to buildings and take extra damage from engineers. Stronger spy sappers.

Melee - Melee attacks only. Damage increased.

Haste - Slight buff to player movement speed. Penality when under the effects of jarate, bleed, milk, or daze.

Repulsion - Enemy rockets, flares, and arrows are pushed away from the player.


Installation
Requires sdkhooks

Copy materials, models and sound directories into respective tf mod folder. Copy plugins, extensions, gamedata, data into the respective sourcemod folder.

Add to your server.cfg tf_allow_player_use 1, it is required!

Alternatively add exec happs.cfg to your server.cfg, provides useful aliases for testing runetf.


Currently, only stock maps have rune spawn points. But an in-game menu is provided to add spawn points to custom maps.


cvars
Code:

rune_enable                        Enables runetf game-mode
rune_version                        Version
rune_spawn_interval                Time between random spawns
rune_spawn_lifetime                Time until a spawned rune expires
rune_spawn_droptime                Time until a rune dropped by a player expires
rune_round_start_clear                Clear runes on map and from players when a new round starts
rune_round_end_clear                Clear runes on map and from players when a mini-round ends

st_gamedesc_override                Changes game type to RuneTF.  Set to empty string to disable.

rune_vote_threshold                Percentage of players needed to toggle runetf
rune_vote_allow_enable                Allow rune voting to enable
rune_vote_allow_disable                Allow rune voting to disable

rune_update_mapcfg                If you modify the map spawn configuration files, you should set this to 0
rune_update_branch                Change the branch the autoupdater will use to sync with

You can change these cvars on a per map basis by adding them to a cfg/mapname.cfg file.


User Commands
Code:

+use                                players must have bound a key to +use
!drop                                drop your currently held rune
!inspect_rune                        shows rune held by player or targeting
!runes                                vote to enable runetf
!norunes                        vote to disable runetf
!info_rune                        display a runes abilities

Dev Commands
Code:

!spawn_rune                        spawn a specific rune
!menu_rune                        manipulate spawn generators
/toggle_spawn_rune                enable !spawn__rune for everyone
/sm_give                        give the target player a specific rune
/sm_take                        take from the target player a specific rune

sm_give and sm_take bypass the checks if a player already has a rune, and should only be used when developing new runes.

Use !spawn_rune when play-testing.


Spawn Generator
Runes do not spawn at random locations in the map. All spawn locations have a fixed origin, angle and force. Each spawn point has a unique number. There are two arrays, a global array and a disabled array. Periodically, as configurable by rune_spawn_interval, a random rune from the global array will be selected and spawned. You can group spawn points into named clusters.

The !menu_rune command is the interface you should use to create new rune generators. It is a wrapper around most of the lower-level commands listed below.

There is a third array, the working set, that is used when creating new spawn points. The working set is not saved to disk, and must be merged for changes to take effect.

Code:

sm_gen                        list the contents of all three arrays
sm_gen set <...>        manipulate properties of spawn point
sm_it                                iterate through an array

Before you can do anything useful with the spawn points, you have to create a cluster. Clusters can have any number of spawn points, and each spawn point can be a member of any number of clusters. Currently, it is not possible to remove a cluster from the config unless you manually edit the map config file and remove all references to it; so choose wisely.

Code:

sm_gen cluster create <cluster>
All spawn points that are currently in the working set will automatically be added to the created cluster.


Code:

sm_cluster <cluster?>                                                                list cluster membership and events
sm_gen cluster <add|remove> <cluster> [id|lower-upper]                change cluster membership status of a sequence of spawn points
sm_gen cluster load <cluster>                                                loads all spawn points in the cluster from the working set
sm_gen cluster drop <cluster>                                                drop all spawn points in the cluster from the working set


Each spawn point has a boolean flag that assigns it's membership to the global array or disabled array when the map is started. (or new full round)
Code:

sm_gen cluster <enable|disable> <cluster name>                Change the startup membership of every spawn point in a cluster.

To get an idea of what a cluster will look like, you can spawn an entire cluster at once. This is how I created the graphic in the logo.
Code:

sm_gen cluster spawn <cluster>                        Spawn temporary runes from cluster

Clusters can be tied to map entity outputs to create events that will do one of four actions:
  1. Spawn cluster of runes at once.
  2. Add spawn points into global array if not already
  3. Remove spawn points from global array if not already
  4. Toggle each spawn point between global and disabled.


Code:

sm_cluster <cluster?>                        display cluster events
sm_gen event <cluster> remove <#>                        remove event #number from cluster, starting at 0
sm_gen event <cluster> <create|clone>                        low-level event tools; use !menu_rune


The event that is triggered can either be from an output of any classname, or a named entitiy of a particular classname.

For example;
Code:

sm_gen event blue_forward create Add ByEnt control_point_1 OnCapTeam2
This will add all rune spawn points from blue_forward when the team_control_point entity named control_point_1 is captured by team blu.

Code:

sm_gen event center_ramps create Spawn ByClass trigger_capture_area OnEndCap
All spawn points in the cluster center_ramps will be spawn a rune when any team_control_point is captured by either team.



When you are done, always make sure to merge and save your changes.
Code:

sm_gen merge                Copy working set into persistent arrays, overriding changes if id already exists.
sm_gen_save                        Save persistant arrays to disk.
test_spawn                        Test your changes with spawn_test.




Optional Plugins
The only required plugins are spawn_test, spawn_gen and the runetf extension.
Code:

rune_vote                Handles the !runes and !norunes vote commands, and rune_enable forwards.
rune_help                Greets players with a description of the game-mode, and warns players every ~5 mins if they have never used +use.
rune_info                Displays rune descriptions with the !info_rune command.
rune_plugin_updater        Periodically check for new releases of the plugin.
rune_updater                Separately check for new map spawn generator files.  If you modify any, set rune_update_mapcfg 0!

Compiling
Source is located at github if you wish to contribute.

Requires sdkhooks, steamtools, smlib, color.inc

Updater required for plugin autoupdates.

happs 06-29-2013 04:44

Re: RuneTF gamemode
 
I am currently looking for balance-testers and bug finders.

Trosty 06-29-2013 04:53

Re: RuneTF gamemode
 
wow sounds like a new awesome gamemode.... I will test it:)

Root_ 06-29-2013 06:15

Re: RuneTF gamemode
 
Very nice! I wanted to release something like that, but havent enough time and motivation
Good job happs! I'll definitely use this :up:

friagram 06-29-2013 16:55

Re: RuneTF gamemode
 
It would be better to generate the runes off of scanned / stored player locations automatically .. not near spawn rooms... And just vary the distances using adt array to keep track of old ones.

Also, almost nobody has +use bound in tf2, why not use in_attack3 or even a combination of keys like in_attack and in_attack2 ?

Also the base quake poweup system of haste, invisibility, quad damage, regeneration, shield.. Etc would be great.. Also if you use physprops you can make the runes spawn/get knocked out of players and bounce and such when people die by teleporting them with velocity that the player recieves from their deathblow, which would look awsome..

I was going to write a mod like this ages agi, but never got around to it other than making the models and sounds :(

rowedahelicon 06-29-2013 17:23

Re: RuneTF gamemode
 
Aww can't wait till it works on Windows!

deadmau54 07-01-2013 09:17

Re: RuneTF gamemode
 
Doesnt work for me. It says .smx files are not loading because extension is not working. Its driving me crazy, I think I installed everything alright. Help please.

Skyrider 07-05-2013 12:01

Re: RuneTF gamemode
 
Works fine, but runes are simply being dropped on the floor. Don't they fly around like in the first picture? Or is that just a gimmick?

Quote:

+use players must have bound a key to +use
Not sure why use is exactly used. I hear no sounds + it seems runes are auto-activated. Could be me, but I see or hear no activation text/sound.

tatercrisp 07-05-2013 12:29

Re: RuneTF gamemode
 
This looks promising gonna try this out on our test server. Ive been running war3source on tf2 for a long time our players have been wanting a new server with something different.

[05] <FAILED> file "runetf.ext.so": Extension version is too new to load (6, max is 5)

DJ Data 07-06-2013 12:39

Re: RuneTF gamemode
 
[14] <FAILED> file "runetf.ext.dll": Kan opgegeven module niet vinden.

means:

[14] <failed> file "runetf.ext.dll": Can not find specified module.


All times are GMT -4. The time now is 06:43.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.