Skip to content

Instantly share code, notes, and snippets.

@Rio6
Last active October 3, 2023 05:00
Show Gist options
  • Save Rio6/bd3f57afd0ecbb9cf6a22849854f247d to your computer and use it in GitHub Desktop.
Save Rio6/bd3f57afd0ecbb9cf6a22849854f247d to your computer and use it in GitHub Desktop.
Istrolid Magic Server Guide

Istrolid Magic Server Guide

Old guide by Uthel can be found here.

The Magic server is a server made by R26. It's main goal is to let people change the variables for testing or for fun.

Commands

These are the commands avaiable on Magic server. Some of the commands can only be issued by the host.

!mode <game mode>

Change the game mode. Type !mode alone to get the list of game mode available.

!script

Display some useful client scripts.

  • FFA UI: Display players and their command points better in FFA and IO mode.
  • Big Build: Allows you to build ships bigger than the default size.
  • Community Parts: Contains serveral player-made parts including battle cannon, needle gun, mod projectors, and more.

!start

Start the game.

!end

End the game.

!join <side>

For some game modes, join team button doesn't display in the client. Use this command to join a side.

!addai <name> <side>

Add an ai to a team. If the name matches any default ai, that ai would be added. Or else your current fleet would be added as an ai.

!repick

Vote to repick host.

!runtext [on|off]

Toggle the ability to use #message in chat.

!trail <color>

Changes the trail color.

!changes

Display the variables that had been changed.

!reset

Reset the variables to their default values.

!export

Generate a unit in the middle of the map containing current variable changes. If the number of changes is too large to be stored as a ship, you'll have to use a copyscript to get its ai.

!import <slot>

Import variable changes from the unit you copied from !export command previously.

!debug [on|off]

Toggle debug information. Can be viewed by pressing *Shift + * key.

!restart

Restart the whole server. It's helpful when some variable change break the server.

!help [command]

Display help message.

!set <target> <field> <value>

Change a variable of the game.

This is the magic command. target can be one of Sim, Unit, or the code name of any parts or projectiles. Some fields, like hp or mass, doesn't effect units that are already spawned. Only units that are spawned after changing the variables would have the new stats.

Some examples:

!set sim defaultMoney 5000 # changes the default money to 5000
!set TeslaTurret damage 1 # nerf tesla to have 1 damage
!set HArmor2x2 hp 5000 # increase 2x2 heavy armor hp
!set BattleCannon disable false # enable battle cannon in game
!set PlasmaBullet missile true # turns plasma into PDable bullet

There are many variables that can be changed, so I'm not going to list them all. But here are some:

Sim

variable datatype default note
mapScale number 1.2
numComPoints number 8 for most modes
numSpawns number 2
tickTime number 63
defaultMoney number 2000
costLimit number 1000
unitLimit number 100
moneyRatio number 1
enableAI boolean true
NxN number 24 maximum build size
check boolean true need to also use window.hasIssue = () => {} in console
viewRange number Infinity set to positive number to enable fog of war
newCollision boolean false whether to use convex hull collision
rotation number 0 rotating map because why not

Special Sim variables for different gamemodes

variable datatype default mode note
numFlags number 8 CTF
flagImage string parts/decals/Symbol12.png CTF
minSpawnDist number 600 FFA how close to center the map will shrink to
shrinkStep number 200 FFA how much distance map shrinks each time
shrinkFreq number 300 FFA shrinking frequency in seconds
victoryGoal number * Football, IO
moneyInc number 100 IO how much a size 1 point give
deathPenalty number 0.2 IO
firstWave number 10 survival
waveFreq number 30 survival
startAIMoney number 1500 survival
waveAIMoneyMul number 500 survival how moew money AI gets each wave
waveAIPow number 1.3 survival how much more waveAIMoneyMul ai gets each wave

CommandPoint

variable datatype default note
size [number, number] [1, 1] visual scaling of the sprite
radius number 250
gainsMoney boolean true
gravity number 0 strength of gravity, can be negative too
gravRange number 1500 range of gravity

Unit

variable datatype default note
stopFriction number 0.9 higher number = lower friction
maxJump number 500
minJump number 50
canCapture boolean true
visibleTime number 32 time units stay visible after discovered in fog of war, in ticks.

Parts

variable datatype note
hp number
cost number
mass number
disable boolean
range number
reloadTime number
damage number
bulletSpeed number
hitsMissiles boolean shoots PDables
volleyDelay number AutoTurret only
maxZap number TeslaTurret only

Projectiles

variable datatype note
size number,number image size
radius number
missile boolean PDable
aoe number

You can discover more variables in the game code yourself.

Community Parts

To enable a community part, simply use !set PartName disable false command. Avaiable parts are: Leech Beam, Battle Cannon, NeedleGun, ModProjector, Burst Cannon.

Since spawning unknown parts breaks unmodded clients, the server wouldn't send packets containing custom parts to them. Load these parts using this script. When loading the script, the background image may become scrambled for a few seconds. It should return to normal after the part images are loaded. The script also tells the server to start sending packets to this client, so rejoining the server after loading the script should let you see and use the parts.

In-game Part Names

Follow is a list of code names

Parts

- AOEWarhead
- Ai1
- Ai3
- Ai4
- ArtilleryTurret
- AutoTurret
- Battery1x1
- Battery1x2
- Battery2x1
- Battery2x2
- BattleCannon
- BombGun
- BulletSpeedMod
- BurstTurret
- CloakGenerator
- DamageMod
- DampenerMod
- DroneBody
- EMPGun
- EMPGun2
- EMPWarhead
- EnergyBeamTurret
- EnergyTransfer
- Engine01
- Engine02
- Engine03
- Engine03Long
- Engine04
- Engine043Long
- Engine05
- Engine06
- Engine07
- Engine08
- Engine09
- Faction1
- Faction2
- Faction3
- Faction4
- Faction5
- Faction6
- Faction7
- FlackTurret
- FlameTurret
- FlameWarhead
- HArmor1x1
- HArmor1x1Angle
- HArmor1x1AngleBack
- HArmor1x2
- HArmor1x2Back1
- HArmor1x2Back2
- HArmor1x2Curved
- HArmor1x2Font1
- HArmor1x2Front2
- HArmor2x1
- HArmor2x1Curved
- HArmor2x2
- HArmor2x2Angle
- HArmor2x2AngleBack
- HArmor2x2Back1
- HArmor2x2Back2
- HArmor2x2Curved
- HArmor2x2Front1
- HArmor2x2Front2
- HeavyBeamTurret
- HeavyPDTurret
- JumpEngine
- Letter0
- Letter1
- Letter2
- Letter3
- Letter4
- Letter5
- Letter6
- Letter7
- Letter8
- Letter9
- LetterA
- LetterB
- LetterC
- LetterD
- LetterDot
- LetterE
- LetterF
- LetterG
- LetterH
- LetterI
- LetterJ
- LetterK
- LetterL
- LetterM
- LetterN
- LetterO
- LetterP
- LetterPound
- LetterQ
- LetterR
- LetterS
- LetterT
- LetterU
- LetterV
- LetterW
- LetterX
- LetterY
- LetterZ
- LightBeamTurret
- LightPlasmaTurret
- MachineGun
- MissileTurret
- ModProjector
- Mount10Demi
- Mount10Range
- Mount180
- Mount270
- Mount30
- Mount360
- Mount360Micro
- Mount90
- NeedleGun
- OverKillAi
- PDTurret
- Pad2x2
- PlasmaTurret
- RamTurret
- Reactor1x1
- Reactor1x2
- Reactor2x1
- Reactor2x2
- ReloaderMod
- RingTurret
- ShadowNArmor1x1
- ShadowNArmor1x1Angle
- ShadowNArmor1x1Corner
- ShadowNArmor1x1CornerInner
- ShadowNArmor1x2
- ShadowNArmor1x2Curved
- ShadowNArmor1x2Font1
- ShadowNArmor2x1
- ShadowNArmor2x1Curved
- ShadowNArmor2x2
- ShadowNArmor2x2Angle
- ShadowNArmor2x2Curve
- ShapedWarhead
- ShieldGen1x1
- ShieldGen2x1
- ShieldGen2x2
- Shotgun
- SidewinderTurret
- SniperGun
- Solar1x1
- Solar2x2
- Solar3x3
- StasisField
- Stripe1x1
- Stripe1x1Corner
- Stripe1x1Fill1
- Stripe1x1Fill2
- Stripe1x1Fill3
- Stripe1x1Fill4
- Stripe1x1Fill5
- Stripe1x1Fill6
- Stripe1x1Slash
- Stripe1x1SlashInside
- Stripe1x2
- Stripe2x1
- Stripe2x2
- Stripe2x2Corner
- Stripe2x2End
- Stripe2x2Round
- Stripe2x2Slash
- StripeDouble2x1
- StripeDouble2x2
- SupercapitalBridge
- SymbolDecal1
- SymbolDecal10
- SymbolDecal11
- SymbolDecal12
- SymbolDecal13
- SymbolDecal14
- SymbolDecal15
- SymbolDecal16
- SymbolDecal17
- SymbolDecal18
- SymbolDecal19
- SymbolDecal2
- SymbolDecal20
- SymbolDecal21
- SymbolDecal22
- SymbolDecal23
- SymbolDecal24
- SymbolDecal25
- SymbolDecal26
- SymbolDecal27
- SymbolDecal28
- SymbolDecal29
- SymbolDecal3
- SymbolDecal30
- SymbolDecal31
- SymbolDecal32
- SymbolDecal33
- SymbolDecal34
- SymbolDecal35
- SymbolDecal36
- SymbolDecal37
- SymbolDecal38
- SymbolDecal39
- SymbolDecal4
- SymbolDecal40
- SymbolDecal5
- SymbolDecal6
- SymbolDecal7
- SymbolDecal8
- SymbolDecal9
- TargetingMod
- TeslaTurret
- TorpTurret
- UArmor1x1
- UArmor1x1Angle
- UArmor1x1AngleBack
- UArmor1x1Notch1
- UArmor1x1Notch2
- UArmor1x1Spike
- UArmor1x2
- UArmor1x2Notch1
- UArmor1x2Notch2
- UArmor2x1
- UArmor2x2
- VArmor1x1
- VArmor1x1Angle
- VArmor1x1Corner1
- VArmor1x1Corner2
- VArmor1x1Corner3
- VArmor1x1CornerBack
- VArmor1x1Curve
- VArmor1x1Hook
- VArmor1x2
- VArmor1x2Corner4
- VArmor1x2Curved
- VArmor1x2End
- VArmor1x2IBeam
- VArmor1x2SideBar
- VArmor1x2SideBarFilled
- VArmor2x1Curved
- VArmor2x2
- VArmor2x2Angle
- VArmor2x2Curve
- VArmor2x2Curved
- VShadowNArmor1x1
- VShadowNArmor1x1Angle
- VShadowNArmor1x1Corner
- VShadowNArmor1x1CornerInner
- VShadowNArmor1x2
- VShadowNArmor2x1
- VShadowNArmor2x2
- VShadowNArmor2x2Angle
- VShadowNArmor2x2Curve
- WavePullTurret
- WavePushTurret
- Wing1x1Angle
- Wing1x1Notch
- Wing1x1Round
- Wing1x2
- Wing2x1
- Wing2x2

Projectiles

- ArtilleryBullet
- ArtilleryExplosion
- AutoBullet
- BattleCannonBullet
- Bomb
- BombExplosion
- EMPOrb
- EMPOrb2
- EnergyBeam
- FlackBullet
- FlackExplosion
- Flag
- FlameBullet
- FlameBulletGhost
- HeavyBeam
- HeavyPDBullet
- LightBeam
- LightPlasmaBullet
- MachineBullet
- MissileBullet
- NeedleGunBullet
- PDLaserBullet
- PlasmaBullet
- RamBullet
- RingBullet
- ShotgunBullet
- SidewinderBullet
- SniperLaser
- TeslaBolt
- TorpBullet
- WavePullArch
- WavePushArch

Have fun in the server!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment