Admin Controlled Events
By: Brian
Green
Date: October 10, 2002
Assassin's Game
Original Design
Information
This is a PK minigame found in Meridian 59. The object is for
players to "assassinate" the player they are assigned to while avoiding
assassination by the player that has been assigned to them. The
assassin's game is controlled by the NPC Roq. You can find Roq by
going to RID_ASSHQ, which is a room in the Barloque sewers.
Admin controls
This document is in English, but the commands can be localized through
the resources found in assassin.rsc.
- dm accept mode - This
makes the Assassin's Game accept new people for a new round of play
before it would normally be scheduled.
- dm start game - This
makes the Assassin's game start the game. There must be at least
2 combatants for the game to start properly
- dm reset game - This
ends
the current game with no winner.
Admins can also set prizes for the winner of the admin game. To
do this, you must find the admin game object by enter send object 0 GetAssassinGame in
the
admin window. Then you can send
object (assassin's game) SetPrize what object (prize).
Enter the appropriate object numbers instead of the words in
parentheses. The assassin's game will move the prize out of the
container or character that had the prize previously and will
automatically add it to the inventory of the last player in the
assassin's game.
Reign of Blood Frenzy
Also called simply "frenzy" is a free-for-all fight between all players
with no consequences. Players take no penalties for attacking
other players, and death carries none of the usual punishment (players
keep all items and lose no skill or spell percents). The skies
turn red to signfy this event in the game. Players enjoy frenzies
because it is a chance to fight other people with no consequences.
Frenzies are strictly admin controlled. Before starting the
frenzy, you are advised to saved the game twice. Double-check
that
the files were saved properly before kicking off the frenzy because you
must restore the saved game after the frenzy is over. Copy the lastsave.txt file from the
server's game
directory
to another location. At the end of the frenzy, you will copy this
file back into the game
directory before restarting the server so that the game restores to the
proper pre-frenzy save.
In order to set off the frenzy, you must type send object 0 StartChaosNight.
While the frenzy is going on, players will be free to kill each
other practically anywhere. Normal restrictions for guild
fighting
in towns or angeled fighting no longer apply. Now would be a good
time to give out items to the players so that they can have some extra
fun!
During testing, you can end the frenzy by typing send object 0 EndChaosNight. Please note that you should not end the
frenzy this way on the commercial servers! The only way to stop
the frenzy properly is to shut down the server and copy the lastsave.txt file into the
server's game
directory
and then restart the server.
Giving out items during a frenzy:
You can give out items to everyone during a Frenzy. (You can also
do this when the server is set to "Beta" state.) To do this, you
type send object 0 ChaosNightLoot
to give items to everyone. This will give a set number of items
and reagents to all players.
The items given out are controlled by the variable plChaosNightLoot located in the
system object (object 0). This list contains basic objects that
will be given out. So, if a scimitar is in the list, all players
will get a scimitar. Note that any special abilities (item
attributes) on the objects will not
be carried over into the objects given to players. Any stackable
items will note the number when giving out items, so a stack of 50
inky-cap mushrooms in the list will result in every player being given
50 inky-caps. In order to reset the list, set plChaostNightLoot to $ 0 (NIL), and
the list will recreate itself from default when the message is called.
At default, the list contains: 50 inky-cap mushrooms, 100 mints,
scimitar, long sword, longbow, battle bow, 2 berzerker rings, 150
normal arrows, 150 nerudite arrows, 2 jewels of froz, and 1 gift (which
contains a random godsgift).
Reagents are also given out based on a player's spells. Calling ChaosNightLoot also calls AddReagentsForSpells on each player.
There are two parameters to this message. The first, logged_on defaults to TRUE.
If
TRUE, then only players logged on at the time get the items. (Known bug: If you have too many
player objects, the code will stop execution before all players have
goten items if logged_on is
set to FALSE.) In addition, you can set the parameter iNumCasts,
which defaults to 100. This determines how many times you can
cast all your spells. A value of 100 means that a player has
enough reagents to cast every spell they have 100 times.
Important note: This will
screw up the carrying capacity of all players it affects. ChaosNightLoot will add the items
to
a player's inventory without respect to their max carrying
capacity. This means that if they drop item, they may not be able
to pick up additional items, even if they drop all the items they got
in this manner.
War Event
The War event is a special event that can be run during a Frenzy.
In basic terms, it allows players to divide into teams to fight
against each other. Each kill scored against a member of an
opposing team gives a point to the killer's team.
There are 3 different ways to organize the war: by faction, by
hometown, and by generic teams. There are also 2 types of wars:
restricted and unrestricted. Restricted wars mean that a player
must meet the qualifications to join a side and can only join that side
(IE, they must be in the Duke faction to join the Duke side of the
war).
Unrestricted wars mean that anyone can join any side; by
definition, generic team wars should be unrestricted. In
unrestricted wars, teams are limited by number; no team may have a 25%
advantage in numbers over any other team. If a player tries to
join a team with such a large advantage, they are told to wait until
later to join the team.
During a war event, all players will automatically remove their shirts
and robes. Every player's base shirt will change to grey to
indicate neutrality. Each player will also receive a war pendant
for each side they can join. Using the pendant will cause them to
join that team and will force the player's basic shirt color to match
that team's color. Players cannot wear any clothing that would
cover their basic shirt; the only exception is disciple's robes, which
will turn the color of the team the player has joined instead of the
color indicating the player's proficiency at that school.
Note: There are some issues
with
Invisibility, Shadow Form, Illusionary Form, and Morph. These
spells will hide a player's side from other players.
Admin Commands
To find the war event object, you can type in send object 0 GetWarEvent.
This will return the current war object.
To setup the war, there are 4 different commands to quickly set up a
war..
- send object (war event)
SetupFactionWar - This sets up a restricted faction war
with all three sides.
- send object (war event)
SetupTownWar - This sets up a restricted hometown war with all
five towns.
- send object (war event)
SetupTeamWar number int (sides) - This sets up an unrestricted
war with the specified number of sides. There can be from two to
four sides.
- send object (war event) Reset
- This will reset the war to a neutral condition with no teams selected.
In addition, an administrator can set up a custom war.
- send object (war event) AddSide side int
(side constant) - The "side constant" is either the faction
constant (FACTION_PRINCESS, FACTION_DUKE, FACTION_REBEL), the hometown
room ID (RID_BARLOQUE, RID_TOS, RID_CORNOTH, RID_MARION, RID_JASPER),
or
the generic team constant (WAR_TEAM_ALPHA, WAR_TEAM_BETA,WAR_
TEAM_GAMMA, WAR_TEAM_DELTA). These sides do not have to match, so
you could have the Duke faction invading Barloque and Cor Noth, etc.
Note that using the team constants in addition to faction or
hometown constants could cause duplicate colors to be used, creating
confusion.
- The variable pbRestricted
indicates if the war is restricted or not. True (1) means it is,
False (0) means it is not. Once again, note that you cannot
restrict people from joining a generic team.
To start the war, simply enter send
object (war event) StartWar. Note that there must be a
frenzy active at the time for the war event to start properly.
To end the war, type send object
(war event) EndWar [reporter
object (admin)]. The optional paramter will specify an admin
object to send a gmail to with final scores. This admin can
download the gmail before restarting the servers to have a record of
the
scores to post afterwards. You can also specify an admin to
report
the final scores to by send object
(war event) SetReporter who object (admin). This will set
a
default reporter to send the final score gmail to should the optional
parameter for EndWar not be
supplied.
During the event you can have the scores for the game printed to
everyone by typing send object (war
event) GetScores. This will simply print out the current
scores for each side for all to see.
Event Signs
These are signs that can be placed around the game to notify players
about events. A DM with pbActor set to 1 can place these signs
with the command dm event sign.
Admins can customize the sign to give time/date information.
- piHour is the hour of
the
event, in 24 hour format. This gets translated into an AM/PM time
on the sign. For example, if piHour is 15, the time shown willl
be
3:00 PM.
- piDay is the day of the
week. 1 is Sunday, 2 is Monday, etc.
These signs do not delete themselves. Sending the Delete message will clean them up
properly.
Monster Budget
An admin (or DM with say commands) can set a "monster budget" for a
DM-level character. This allows the DM to create a limited number
of monsters without giving them the unlimited creation ability of an
Admin.
The DM is able to create a certain number of hit points worth of
monsters as specified. This is determined by the base hit points
of the monster defined in the game. For example, if a DM can make
giant rats (base hit points of 30) and can make 210 hit points worth of
monsters, he can make a total of 7 rats before his budget is used
up. If the DM could also make ve'xeochicatl (150 base hit
points), he could make one of those and have 60 points left to create 2
giant rats (or he create the 7 giant rats mentioned before without
creating the ve'xeochicatl).
It is recommended that Admins give the DMs a small selection of monters
appropriate to a pre-planned event since a high budget can allow the
DMs to create a lot of high level monsters and create potential
problems, especially those that are inexperienced.
Admin Commands
Any DM level (or above) character with pbSay_commands and
pbMonsterMaker set to TRUE can use these commands. These commands
target any DM level (or higher) character who has the pbActor flag set
to TRUE, even those offline.
dm monster authorize <DM name>
- This command shows the monsters that the DM specified can create and
how many hit points are in the budget.
dm monster authorize <DM name>
<monster name> - This command authorizes the DM specified
to create one monster of the indicated type, using the monster name
resource.
dm monster authorize <DM name>
none - This command clears the
monster budget for the DM specified.
DM Commands
The DM must have pbActor set to TRUE before these commands will work.
dm monster budget - Shows the
DM's available monster budget. As the note says, this shows the
maximum number of monsters of that type that can be created with the
budget.
dm monster <monster name>
- Works just like it does for admins, but it keeps track of monster
created in the budget.
Details
The monster budget works by storing the monster classes available to
create in a list called plMonsterBudgetTypes.
The total hit point budget is stored in the variable piMonsterBudgetTotalLevels.
As a suggestion: Admins can authorize the different types of monsters,
then manually set the piMonsterBudgetTotalLevels
variable directly to save time and avoid repeated dm commands.