Skill Script Simple
Version: 1.1
Author: Twb6543
Date: 18-07-2011
Version History
- Version 1.1 2011.07.18 - Bug Fixes
- Version 1.0 2011.06.04 - Original Release
Planned Future Versions
- Version 2.0 - Full Re-Release for Add-on functionality
Description
All Information can be found in the Documentation Script included.
This script is the simplified and WORKING version of my original Skill Script that can still be found on chaos-project.com. This is the 7th Generation of this script (Spanning across XP and VX), and may not include all the features the previous generations contained.
This script works as a core for creating skills that Level Up, currently the user has to create the skill in events as such (See demo), Add-ons that add more functions and actually allow for the skill in battle etc are in development.
Features
- Easy Skill Creation
- Add/Sub/Set/Check/Show xp/level/temporary level
- Capped Xp and Level
- 2 options - Auto set temp to level when level up, Cap temp to level
Instructions
See documentation section...
Use the same set up as the original skill script ...
$skillscript.skill('SKILL_HERE') // sometimes not required, check to see if the command contains skill as a variable...
$skillscript.command(variables)
Script
Currently their are three sections - 2 Code sections (1 Setup and 1 Coded Commands) - 1 Documentation section. sections with * are required (all except Documentation)
Download .txt files of each section here...
- *Set-up - (http://dl.dropbox.com/u/29385297/Class%20Skill%20Script%20Setup.txt)
- *Body - (http://dl.dropbox.com/u/29385297/Class%20Skill%20Script%20Body.txt)
- Documentation - (http://dl.dropbox.com/u/29385297/Class%20Skill%20Script%20Documentation.txt)
[SPOILER= Documentation]
#===============================================================================
# SkillScript Simple
# Ver 1.1
# By Twb6543
#===============================================================================
#===============================================================================
# Introduction:
#
# This script is the simplified and WORKING version of my original Skill Script
# that can still be found on chaos-project.com.
# This is the 7th Generation of this script (Spanning across Xp and VX), and
# may not include all the features the previous generations contained.
#
#===============================================================================
#===============================================================================
# Instructions:
#
# - Installation -
# Install bellow Class Game and above the main and any plugins for this script
# Plugin and change the options in the Initialisation section.
#
# - Requirements -
#
# - Usage -
# The Script automatically creates a new global variable called $skillscript
# which can (/mostly will) be used to call any command or function of the
# script.
# Use $skillscript.* // With the * being the command to carry out that function
# of the script
#
#===============================================================================
#===============================================================================
# Command List:
#
# // * is representitive of $skillscript
# o *.skill(NAME) // USE '' surrounding the Name
# - uses NAME to set the skill, use any _NAME_ listed in $Skill_Name except
# from 'Empty'
#
# o *.levelup?(SKILL) // USE "" surrounding the Skill
# // This command is not normally used
# - check if xp is higher than the required xp to level up in the skill SKILL,
# use any Skill listed in $Skill_Name except from "Empty"
#
# o *.xpfromlevel(SKILL) // USE "" surrounding the Skill
# // This command is not normally used
# - sets the xp to the xp required to reach a level in the skill SKILL.
#
# o *.levelfromxp(SKILL,reset) // USE "" surrounding the Skill
# // This command is not normally used
# - sets the level according to the xp in the skill SKILL.
# - if reset != 0 then resettemp will be called
#
# o *.tempcheck(SKILL) // USE "" surrounding the Skill
# - checks if the temporary level of skill SKILL is smaller than or larger
# than the limmits
#
# o *.resettemp(SKILL) // USE "" surrounding the Skill
# - resets temporary level of skill SKILL to the level of skill SKILL
#
# o *.addxp(num) // USE a Number
# - adds xp to the skill set by the command *.skill
#
# o *.addlvl(num) // USE a Number
# - add levels to the skill set by the command *.skill
#
# o *.addtemp(num) // USE a Number
# - adds temp lvls to the skill set by the command *.skill
#
# o *.subxp(num) // USE a Number
# - subtracts xp from the skill set by the command *.skill
#
# o *.sublvl(num) // USE a Number
# - subtracts levels from the skill set by the command *.skill
#
# o *.subtemp(num) // USE a Number
# - subtracts temp lvls from the skill set by the command *.skill
# o *.setxp(num) // USE a Number
# - Sets the xp to num in the skill set by the command *.skill
#
# o *.setlvl(num) // USE a Number
# - Sets the level to num in the skill set by the command *.skill
#
# o *.settemp(num) // USE a Number
# - Sets the temp lvl to num in the skill set by the command *.skill
#
#o *.checkxp(skill,num,a) // USE a Number for num and skill ""
# - Sets $Skill_Check_results to true if skill's xp is >= num, if a is ! 0 then
# returns true or false instead. Can leave a out...
#
# o *.checklvl(skill,num,a) // USE a Number for num and skill ""
# - Sets $Skill_Check_results to true if skill's lvl is >= num, if a is ! 0
# then returns true or false instead. Can leave a out...
#
# o *.checktemp(skill,num,a) // USE a Number for num and skill ""
# - Sets $Skill_Check_results to true if skill's temp level is >= num, if a is
# ! 0 then returns true or false instead. Can leave a out...
#
# o *.show(which,varid1,varid2,varid3)
# - if which is 1 then sets game_variables[varid1] to xp of $Skill
# - if which is 2 then sets game_variables[varid1] to lvl of $Skill
# - if which is 3 then sets game_variables[varid1] to temp of $Skill
# - if which is 4 then sets game_variables[varid1] to xp of $Skill and sets
# game_variables[varid2] to lvl of $Skill
# - if which is 5 then sets game_variables[varid1] to xp of $Skill and sets
# game_variables[varid2] to temp of $Skill
# - if which is 6 then sets game_variables[varid1] to lvl of $Skill and sets
# game_variables[varid2] to temp of $Skill
# - if which is 7 then sets game_variables[varid1] to xp of $Skill and sets
# game_variables[varid2] to lvl of $Skill and sets game_variables[varid3]
# to temp of $Skill
#
#===============================================================================
#===============================================================================
# Compatibility Problems:
#
# Version 1.0
# - None Known
#
#===============================================================================
#===============================================================================
# Version History and Change Log:
#
# - Version 1.1 - Bug Fixes
# - Version 1.0 - Initial Release
#
#===============================================================================
#===============================================================================
# Contact Information and Author Notes:
#
# - Contact Information -
# http://forum.chaos-project.com
# Twb6543
#
# Thread:
# http://forum.chaos-project.com/index.php/topic,9841
# http://http://rmrk.net/index.php/topic,43328
#
# - Author Notes -
# None Really
#===============================================================================
[/SPOILER]
[SPOILER= *Initialization and Setup]
#===============================================================================
# Aliasing
#===============================================================================
# Alias the neccessary methods to change SkillScript_Simple to $skillscript
# // Is currently here do to strange errors if I place it anywhere else
# (might not happen to other users)...
#===============================================================================
class Scene_Title < Scene_Base
alias :old_skillscript_create_game_objects :create_game_objects
def create_game_objects
old_skillscript_create_game_objects
$skillscript = SkillScript_Simple.new
end
end
class Scene_File < Scene_Base
alias :old_skillscript_write_save_data :write_save_data
def write_save_data(file)
old_skillscript_write_save_data(file)
Marshal.dump($skillscript, file)
end
alias :old_skillscript_read_save_data :read_save_data
def read_save_data(file)
$skillscript = Marshal.load(file)
old_skillscript_read_save_data(file)
end
end
#===============================================================================
# Class SkillScript_Simple Base Ver 1.1
# by Twb6543
#===============================================================================
# Adds a base to allow users to create skills
# use $skillscript.command to use a command ...
# All variables are preset (e.g. *.skill(NAME="Empty"))
# Change options on lines:
# 52, 57, ...
#===============================================================================
class SkillScript_Simple
attr_accessor :_SkillScript_Option_Temporary_Cap
def initialize
# Whether the script should cap the temporary level to the level of the
# skill relating to it...
@@_SkillScript_Option_Temporary_Cap = false
# Whether if a skill levels up should the temporary level be set to
# the level of the $Skill
# 0 = False/no - Anything else = yes
@@_RESETTEMPAUTO_ = 1
# $Skill = _NAME_
$Skill = 'Skill_A' # Change this to whatever name you wish
# Do not change
$Skill_Check_result = false
# The skill name that will be used to call up data
# Skill => _NAME_
$Skill_Name = {
"Skill_A" => 'Skill_A',
"Skill_B" => 'Skill_B',
"Skill_C" => 'Skill_C',
"Skill_D" => 'Skill_D',
"Skill_E" => 'Skill_E',
"Skill_F" => 'Skill_F',
"Skill_G" => 'Skill_G',
"Skill_H" => 'Skill_H',
"Skill_I" => 'Skill_I',
"Skill_J" => 'Skill_J',
"Skill_K" => 'Skill_K',
"Skill_L" => 'Skill_L',
"Skill_M" => 'Skill_M',
"Skill_N" => 'Skill_N',
"Skill_O" => 'Skill_O',
"Skill_P" => 'Skill_P',
"Skill_Q" => 'Skill_Q',
"Skill_R" => 'Skill_R',
"Skill_S" => 'Skill_S',
"Skill_T" => 'Skill_T',
"Skill_U" => 'Skill_U',
"Skill_V" => 'Skill_V',
"Skill_W" => 'Skill_W',
"Skill_X" => 'Skill_X',
"Skill_Y" => 'Skill_Y',
"Skill_Z" => 'Skill_Z',
"Skill_Empty" => 'Skill_Empty' # Do Not Change
}
# The starting level of the skill
# Skill => _LEVEL_
$Skill_Level = {
"Skill_A" => 1,
"Skill_B" => 1,
"Skill_C" => 1,
"Skill_D" => 1,
"Skill_E" => 1,
"Skill_F" => 1,
"Skill_G" => 1,
"Skill_H" => 1,
"Skill_I" => 1,
"Skill_J" => 1,
"Skill_K" => 1,
"Skill_L" => 1,
"Skill_M" => 1,
"Skill_N" => 1,
"Skill_O" => 1,
"Skill_P" => 1,
"Skill_Q" => 1,
"Skill_R" => 1,
"Skill_S" => 1,
"Skill_T" => 1,
"Skill_U" => 1,
"Skill_V" => 1,
"Skill_W" => 1,
"Skill_X" => 1,
"Skill_Y" => 1,
"Skill_Z" => 1,
"Skill_Empty" => 1 # Do not change
}
# The starting xp of the skill
# Must be equal or in the xp boundary for the level
# set above // Look at the table below
# Skill => _XP_
$Skill_Xp = {
"Skill_A" => 1,
"Skill_B" => 1,
"Skill_C" => 1,
"Skill_D" => 1,
"Skill_E" => 1,
"Skill_F" => 1,
"Skill_G" => 1,
"Skill_H" => 1,
"Skill_I" => 1,
"Skill_J" => 1,
"Skill_K" => 1,
"Skill_L" => 1,
"Skill_M" => 1,
"Skill_N" => 1,
"Skill_O" => 1,
"Skill_P" => 1,
"Skill_Q" => 1,
"Skill_R" => 1,
"Skill_S" => 1,
"Skill_T" => 1,
"Skill_U" => 1,
"Skill_V" => 1,
"Skill_W" => 1,
"Skill_X" => 1,
"Skill_Y" => 1,
"Skill_Z" => 1,
"Skill_Empty" => 1 # Do not change
}
# The starting temporary level of the skill,
# Can be between or equal to 0 and the starting level of the
# skill
# Skill => _TEMP_
$Skill_Temp = {
"Skill_A" => 1,
"Skill_B" => 1,
"Skill_C" => 1,
"Skill_D" => 1,
"Skill_E" => 1,
"Skill_F" => 1,
"Skill_G" => 1,
"Skill_H" => 1,
"Skill_I" => 1,
"Skill_J" => 1,
"Skill_K" => 1,
"Skill_L" => 1,
"Skill_M" => 1,
"Skill_N" => 1,
"Skill_O" => 1,
"Skill_P" => 1,
"Skill_Q" => 1,
"Skill_R" => 1,
"Skill_S" => 1,
"Skill_T" => 1,
"Skill_U" => 1,
"Skill_V" => 1,
"Skill_W" => 1,
"Skill_X" => 1,
"Skill_Y" => 1,
"Skill_Z" => 1,
"Skill_Empty" => 1 # Do not change
}
# The Maximum level in a skill that can be reached must be
# bellow or equal to the highest level set in the Really
# Long List of Hashes Containing the Xp required for Each Levels
# Skill => _MAXLEVEL_
$Skill_Max_Level = {
"Skill_A" => 100,
"Skill_B" => 100,
"Skill_C" => 100,
"Skill_D" => 100,
"Skill_E" => 100,
"Skill_F" => 100,
"Skill_G" => 100,
"Skill_H" => 100,
"Skill_I" => 100,
"Skill_J" => 100,
"Skill_K" => 100,
"Skill_L" => 100,
"Skill_M" => 100,
"Skill_N" => 100,
"Skill_O" => 100,
"Skill_P" => 100,
"Skill_Q" => 100,
"Skill_R" => 100,
"Skill_S" => 100,
"Skill_T" => 100,
"Skill_U" => 100,
"Skill_V" => 100,
"Skill_W" => 100,
"Skill_X" => 100,
"Skill_Y" => 100,
"Skill_Z" => 100,
"Skill_Empty" => 1 # Do not change
}
# The Maximum xp in a skill that can be reached, must be higher
# than 1
# Skill => _MAXXP_
$Skill_Max_Xp = {
"Skill_A" => 2000000000,
"Skill_B" => 2000000000,
"Skill_C" => 2000000000,
"Skill_D" => 2000000000,
"Skill_E" => 2000000000,
"Skill_F" => 2000000000,
"Skill_G" => 2000000000,
"Skill_H" => 2000000000,
"Skill_I" => 2000000000,
"Skill_J" => 2000000000,
"Skill_K" => 2000000000,
"Skill_L" => 2000000000,
"Skill_M" => 2000000000,
"Skill_N" => 2000000000,
"Skill_O" => 2000000000,
"Skill_P" => 2000000000,
"Skill_Q" => 2000000000,
"Skill_R" => 2000000000,
"Skill_S" => 2000000000,
"Skill_T" => 2000000000,
"Skill_U" => 2000000000,
"Skill_V" => 2000000000,
"Skill_W" => 2000000000,
"Skill_X" => 2000000000,
"Skill_Y" => 2000000000,
"Skill_Z" => 2000000000,
"Skill_Empty" => 1 # Do not change
}
# Default Skill Table
# Level => _XP_
$Skill_Xp_Table = {
1 => 0, 31 => 14833, 61 => 302288, 91 => 5902831,
2 => 83, 32 => 16456, 62 => 333804, 92 => 6517253,
3 => 174, 33 => 18247, 63 => 368599, 93 => 7195629,
4 => 276, 34 => 20224, 64 => 407015, 94 => 7944614,
5 => 388, 35 => 22406, 65 => 449428, 95 => 8771558,
6 => 512, 36 => 24815, 66 => 496254, 96 => 9684577,
7 => 650, 37 => 27473, 67 => 547953, 97 => 10692629,
8 => 801, 38 => 30408, 68 => 605032, 98 => 11805606,
9 => 969, 39 => 33648, 69 => 668051, 99 => 13034431,
10 => 1154, 40 => 37224, 70 => 737627, 100 => 14391160,
11 => 1358, 41 => 41171, 71 => 814445, 101 => 15889109,
12 => 1584, 42 => 45529, 72 => 899257, 102 => 17542976,
13 => 1833, 43 => 50339, 73 => 992895, 103 => 19368992,
14 => 2107, 44 => 55649, 74 => 1096278, 104 => 23611006,
15 => 2411, 45 => 61512, 75 => 1210421, 105 => 23611006,
16 => 2746, 46 => 67983, 76 => 1336443, 106 => 26068632,
17 => 3115, 47 => 75127, 77 => 1475581, 107 => 28782069,
18 => 3523, 48 => 83014, 78 => 1629200, 108 => 31777943,
19 => 3973, 49 => 91721, 79 => 1798808, 109 => 35085654,
20 => 4470, 50 => 101333, 80 => 1986068, 110 => 38737661,
21 => 5018, 51 => 111945, 81 => 2192818, 111 => 42769801,
22 => 5624, 52 => 123660, 82 => 2421087, 112 => 47221641,
23 => 6291, 53 => 136594, 83 => 2673114, 113 => 52136869,
24 => 7028, 54 => 150872, 84 => 2951373, 114 => 57563718,
25 => 7842, 55 => 166636, 85 => 3258594, 115 => 63555443,
26 => 8740, 56 => 184040, 86 => 3597792, 116 => 70170840,
27 => 9730, 57 => 203254, 87 => 3972294, 117 => 77474828,
28 => 10824, 58 => 224466, 88 => 4385776, 118 => 85539082,
29 => 12031, 59 => 247886, 89 => 4842295, 119 => 94442737,
30 => 13363, 60 => 273742, 90 => 5346332, 120 => 104273167, }
end
end
[/SPOILER]
[SPOILER= *Main Body (Coded Commands)]
#===============================================================================
# Main - SkillScript_Simple Ver 1.1
#===============================================================================
class SkillScript_Simple
def skill(skill="Empty")
if $Skill_Name.has_value?(skill) == true
$Skill = $Skill_Name.index(skill)
else
$Skill = $Skill_Name["Empty"]
end
end
def levelup?(skill="Empty")
if $Skill_Name.has_key?(skill) == true and skill != "Empty"
if $Skill_Xp[skill] > $Skill_Max_Xp[skill]
$Skill_Xp[skill] = $Skill_Max_Xp[skill]
levelfromxp(skill,@@_RESETTEMPAUTO_)
end
if $Skill_Xp[skill] < 0
$Skill_Xp[skill] = 0
levelfromxp(skill,@@_RESETTEMPAUTO_)
end
if $Skill_Xp[skill] >= $Skill_Xp_Table[$Skill_Level[skill]+1]
levelfromxp(skill,@@_RESETTEMPAUTO_)
end
end
end
def xpfromlevel(skill="Empty")
if skill != "Empty" and $Skill_Name.has_key?(skill) == true
$Skill_Xp[skill] = $Skill_Xp_Table[$Skill_Level[skill]]
end
end
def levelfromxp(skill="Empty",reset=0)
if skill != "Empty" and $Skill_Name.has_key?(skill) == true
$Skill_Xp_Table.each_key do |i|
if $Skill_Xp[skill] >= $Skill_Xp_Table[i]
$Skill_Level[skill] = i
end
end
if reset != 0
resettemp(skill)
end
end
end
def tempcheck(skill="Empty")
if $Skill != "Empty" and $Skill_Name.has_key?(skill) == true
if $Skill_Temp[skill] < 0
$Skill_Temp[skill] = 0
end
if @@_SkillScript_Option_Temporary_Cap == true and $Skill_Temp[skill] > $Skill_Level[skill]
$Skill_Temp[skill] = $Skill_Level[skill]
end
end
end
def resettemp(skill="Empty")
if $Skill != "Empty" and $Skill_Name.has_key?(skill) == true
$Skill_Temp[skill] = $Skill_Level[skill]
end
end
def addxp(num=0)
if $Skill == "Empty"
num = 0
end
$Skill_Xp[$Skill] += num
levelup?($Skill)
end
def addlvl(num=0)
if $Skill == "Empty"
num = 0
end
$Skill_Level[$Skill] += num
xpfromlevel($Skill)
end
def addtemp(num=0)
if $Skill == "Empty"
num = 0
end
$Skill_Temp[$Skill] += num
tempcheck($Skill)
end
def subxp(num=0)
if $Skill == "Empty"
num = 0
end
$Skill_Xp[$Skill] -= num
levelup?($Skill)
end
def sublvl(num=0)
if $Skill == "Empty"
num = 0
end
$Skill_Level[$Skill] -= num
xpfromlevel($Skill)
end
def subtemp(num=0)
if $Skill == "Empty"
num = 0
end
$Skill_Temp[$Skill] -= num
tempcheck($Skill)
end
def setxp(num=$Skill_Xp[$Skill])
if $Skill == "Empty"
num = 1
end
$Skill_Xp[$Skill] = num
levelup?($Skill)
end
def setlvl(num=$Skill_Level[$Skill])
if $Skill == "Empty"
num = 0
end
$Skill_Level[$Skill] = num
xpfromlevel($Skill)
end
def settemp(num=$Skill_Temp[$Skill])
if $Skill == "Empty"
num = 0
end
$Skill_Temp[$Skill] = num
tempcheck($Skill)
end
def checkxp(skill="Empty",num=0,a=0)
if skill != "Empty" and $Skill_Name.has_value?(skill) == true
$Temp_Skill = $Skill_Name.index(skill)
if $Skill_Xp[$Temp_Skill] >= num
if a != 0
return true
else
$Skill_Check_result = true
end
else
if a != 0
return false
else
$Skill_Check_result = false
end
end
end
end
def checklvl(skill="Empty",num=0,a=0)
if skill != "Empty" and $Skill_Name.has_value?(skill) == true
$Temp_Skill = $Skill_Name.index(skill)
if $Skill_Level[$Temp_Skill] >= num
if a != 0
return true
else
$Skill_Check_result = true
end
else
if a != 0
return false
else
$Skill_Check_result = false
end
end
end
end
def checktemp(skill="Empty",num=0,a=0)
if skill != "Empty" and $Skill_Name.has_value?(skill) == true
$Temp_Skill = $Skill_Name.index(skill)
if $Skill_Temp[$Temp_Skill] >= num
if a != 0
return true
else
$Skill_Check_result = true
end
else
if a != 0
return false
else
$Skill_Check_result = false
end
end
end
end
def show(which=0,varid1=0,varid2=0,varid3=0)
if $Skill != "Empty"
if which == 1 or which == "Xp"
$game_variables[varid1] = $Skill_Xp[$Skill]
elsif which == 2 or which == "Level"
$game_variables[varid1] = $Skill_Level[$Skill]
elsif which == 3 or which == "Temp"
$game_variables[varid1] = $Skill_Temp[$Skill]
elsif which == 4 or which == "Xp and Level"
$game_variables[varid1] = $Skill_Xp[$Skill]
$game_variables[varid2] = $Skill_Level[$Skill]
elsif which == 5 or which == "Xp and Temp"
$game_variables[varid1] = $Skill_Xp[$Skill]
$game_variables[varid2] = $Skill_Temp[$Skill]
elsif which == 6 or which == "Level and Temp"
$game_variables[varid1] = $Skill_Level[$Skill]
$game_variables[varid2] = $Skill_Temp[$Skill]
elsif which == 7 or which == "Xp and Level and Temp"
$game_variables[varid1] = $Skill_Xp[$Skill]
$game_variables[varid2] = $Skill_Level[$Skill]
$game_variables[varid3] = $Skill_Temp[$Skill]
end
end
end
end
[/SPOILER]
Credit
Thanks
- Enterbrain for Rmvx
- Blizzard for Chaos-Project.com - Original Topic
- MMORPGs for the Idea
Support
For a swift response contact me on Chaos-Project.com
Twb6543 (http://forum.chaos-project.com/index.php?action=profile;u=1577)
Topic (http://forum.chaos-project.com/index.php/topic,9841)
Known Compatibility Issues
Version 1.0 and 1.1 - None Known
Demo
V0.8 for Script Version 1.1
DEMO 0.8 (http://dl.dropbox.com/u/29385297/SkillScript%20Simple%20Demo%200.8.rar)
Mirror (http://www.mediafire.com/?gl68w22oppa1ttt)
Author's Notes
Also Sorry If this was posted in the wrong place. (First actual Topic here)
Currently this is just a core script it does not actual do anything in the game unless you make it, add-ons/reliant scripts are planned and in development.
Restrictions
QuoteCreative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
( http://creativecommons.org/licenses/by-nc-sa/3.0/ (http://creativecommons.org/licenses/by-nc-sa/3.0/) )
You are free:
to Share - to copy, distribute and transmit the work
to Remix - to adapt the work
Under the following conditions:
Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
Noncommercial. You may not use this work for commercial purposes.
Share alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.
- For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page.
- Any of the above conditions can be waived if you get permission from the copyright holder.
- Nothing in this license impairs or restricts the authors moral rights.
Thanks.
Currently in development are 2 add-ons:
- one that may be integrated into the main script at a later date
- one that will be almost an example of how you could use the script (Which will probably be made into a proper add-on at a later date)
Just to give something to talk about I'm posting a Teaser Image that should give you a fairly good idea what the add-ons are. Note nothing you see in the image is definite I still hold the right to change what the final add-ons will do and how they manifest into the game.
[spoiler](https://rmrk.net/proxy.php?request=http%3A%2F%2Fpenguingames.ucoz.co.uk%2FTwb6543%2Fteaser_SIC_and_SIB.bmp&hash=3dc3d7ca5edb4b6025690c2fe285337d257ab193)[/spoiler]