Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Son of the King

Pages: 1 [2] 3 4
16
Stories and AARs / The Kingdom of Macedonia - A Persian Invasion AAR
« on: March 02, 2012, 09:55:06 PM »
So, Persian Invasion is finally released, and I thought I would make an AAR of my first campaign on it!

I looked at the factions in custom battles, and decided to play a Greek Hegemony campaign as Athens. I conquered a city, then ended my first turn. The a stroke of ridiculous bad luck as my faction leader died causing game over to occur. His son comes of age on turn 2 or 3...

I decided to try again, but this time with...




Alexander woke up from his dream. He had been dreaming of a time when Greece had been known to rule the world. A time when even the great Persian Empire was no more, and the people living in its bounds were heavily influenced by the Greek culture he knew. He had dreamt that the Greeks had ruled the world, rather than being a collection of city states fighting amongst themselves.

Alexander thought this was a good dream. Indeed, his opinion of it was made even better when the man's voice had proclaimed that the fallen empire was all the work of 'Alexander'. Whether this dream was a vision of his own future, a vision of the future of a descendant of his, or even just a simple dream he did not know. All he knew was what he wanted; to be this 'Alexander' spoken of in his dream, and lead all of the known world under the banner of the Kingdom of Macedonia!


Alexander's Kingdom

He ordered the creation of road infrastructure across his kingdom, as well as commissioning the building of places for the Macedonian Levies who defend the kingdom's borders from the Greek city states in the south and the barbaric tribesmen to the north to be trained more effectively. If one wishes to conquer the world, these things are a simple necessity.



Over a year had passed, and still Alexander's kingdom had not grown. He had become restless and hungry to begin his expansion some months earlier, and had sent his adopted heir Nearchos with a company of Royal Guards and a number of Levies to take the rebellious city state of Olynthus in the name of Macedonia. They had finally prepared to launch an assault by the winter...




Olynthus' days are numbered

I surveyed the scene outside the town. My first thought was that "city state" was too good a name for these backward rebels. Their so called city was little larger that some Macedonian villages I have seen, at least from the outside. I met with my commanders, and we decided on a frontal assault, seeing as how the town was defended by only a single troop of Hoplites. Arrogant rebels!

The rams we needed to break through their walls were soon constructed, and I sounded the order through the camp at dawn to prepare for a battle. Only a few hours later, the lines were assembled outside the town walls with our rams ready to move into position. I shouted some meaningless words of encouragement to the men and sounded the advance.



Rams advance towards the town

The rams seemed to take an eternity to break through, but when the walls were breached we met no resistance. I realised this must mean the garrison was protecting the centre of the town, having decided it impractical to defend their walls. Perhaps they are less arrogant than I imagined.


The walls are breached

Once again I sounded the advance and my men marched through the newly made openings and into the town. I ordered my most experienced troops, the Royal Guards, to lead the offensive and to head straight to the city, backed up by three of my units of Levies. One unit of Levies was kept back, in case the hoplites fought well enough to require a more refined manouver.


The advance begins

The Royal Guards had not long since engaged the hoplites when word reached me that these rebels are indeed stronger than anticipated! My Royal Guards were being crushed, the hoplites pinning them against walls with their long spears. I ordered the reserve Levies to join the fight, and lead my bodyguards into the city and around to the rear entrance to the town centre.


Guards are being crushed.
Levies reinforce.

Before the tide of the battle can be turned however the remaining Royal Guards decide that they have had enough, and turn to run from the battle. I would normally detest this kind of behaviour, but accept that a tactical error on my part caused them to lose far more men than they should. The hoplites began to push into the ranks of my weaker Levies, carving a path into their ranks.

Guards flee
Levies are cut down

As I turned the final corner to enter the town plaza, the sound of hooves behind the hoplites must have broken their resolve, as those left cast their spears on the ground and begged for mercy. Impressed by their bravery and fighting ability I give them their lives. The town however, is now under the rule of King Alexander I of Macedonia!


The town is ours!



Almost two years after the Siege of Olynthus, the town had grown to a respectable size and had been fully integrated into the kingdom. This was a period of calm as troops were replenished and buildings were improved. However, worrying news reached Alexander in early summer of the year 487BC. A messenger arrived from the city of Styberra, bringing news of a moderately sized Illyrian force near the region's north border. They were seemingly preparing to enter Macedonian lands.

The King ordered a deterrant to be placed in the city of Styberra in the form of a number of Macedonian Levies being moved from their various posts to garrison the city. Sure enough, upon hearing news of this the Illyrian army disappeared back into their own territory and once again Alexander began to dream of conquest...


17
Total War Mods - The Engineer's Shed / SotK's Spain Mod
« on: February 09, 2012, 02:00:47 AM »





So, I mentioned I always thought it would be fun to play as Spain (Carthage crossed with barbarians seemed good). Phoenix said that they are bad, but I tried them out anyway. Sure enough, their unit selection made me want to cry. Just Carthage-lite with some naked guys. Oh and a couple of decent unique units, but they are only available from cities. When a nation that was famed for the prowess of its warriors has RTW's Iberian Infantry as their most easily accessible unit that isn't Town Militia/Peasants, and their only good troops come from a maxed out barracks or a single temple, there is a problem.

Problems are fixed by modding!

Spoiler: More info... (click to show/hide)




I recently played the swap game with Thrace and was struck by their limited roster and similar to Spain they felt like Macedon-lite with a bit of Dacia thrown in. While this is a bit more exotic than Carthage and naked fanatics, they still didn't feel like they were a faction with their own identity that would give a memorable experience to play as. So I added some hoplites and some more cavalry. Then things escalated!

Spoiler: More info... (click to show/hide)

18
Game & program tutorials / SotK's Python Tutorials - Part 5: User Input
« on: January 30, 2012, 11:28:29 PM »
SotK's Python Tutorials
Part 5: User Input



User Input:

In the last tutorial, we used the input() function for the first time. Now we will explore this in more detail.

Imagine we want to make a program that we can tell our name and it will then say hello to us. Think of it as an extension of the Hello World program from earlier.

First we will need to ask the user to input their name. We do this by using the input() function, with something like 'What is your name?' as the prompt:

Code: (Input) [Select]
name = input('Please enter your name: ')
Now we need to print out the name that the user entered.

Code: (Output) [Select]
print(name)
We don't need quotes because name is a variable. Putting this together, we get:

Code: (Hello <name>!) [Select]
# Get name
name = input('Please enter your name: ')

# Print a welcome message
print('Hello, ' + name + '!')

How about if we want to input a number. That is apparently easy enough as we saw in the last tutorial.

Code: (Input a number) [Select]
num = int(input('Enter a number: '))
How about if we want to use that number in a string, e.g. asking a person their age and repeating it (a possible extension of our hello program).

Code: [Select]
name = input('Please enter your name: ')
age = int(input('Please enter your age: '))

print('Hello. Your name is ' + name + '. You are ' + age + ' years old.')

This code gives an error! This is because we tried to add an integer (age) to a string. In the case where you don't need the number you input to be an integer (as in this case), you don't need the int() around the input().

We now have all the tools needed to make a command-based program (indeed you could make a text RPG now :P ). Lets make a simple calculator that runs on the command line!

Breaking down the problem:

We know we want to make a calculator, but where to start? We split down the program into different parts, for example we want to be able to:

  • Enter a number
  • Enter an operator (+, -, x, /)
  • Enter another number
  • Calculate the answer

We want to be able to do all of those things an unlimited amount of times. This means that the first thing we need is a loop:

Code: (Main loop) [Select]
running = True
while running:
    # Calculator stuff here

At the moment, that creates an infinite loop, so we need a way of breaking out of it.

Code: (Main loop) [Select]
running = True
while running:
    command = input('Enter a command: ')
    if command == 'quit':
        running = False
    # Calculator stuff here

Now we will be prompted to enter a command until we type quit. Lets think how we add two numbers together!

Code: (Adding) [Select]
first = int(input('Enter first number: '))
second = int(input('Enter second number: '))

print(first + second)

Now lets combine this with our loop.

Code: (Start of the calculator!) [Select]
running = True
while running:
    command = input('Enter a command: ')
    if command == 'quit':
        running = False
    elif command == 'add':
        first = int(input('Enter first number: '))
        second = int(input('Enter second number: '))

        print(first + second)

We can do the other 3 operators similarly, giving us the following.

Code: (Calculator!) [Select]
print('This is a calculator!\n\n')
running = True
while running:
    command = input('Enter a command: ')
    if command == 'quit':
        running = False
    elif command == 'add':
        first = int(input('Enter first number: '))
        second = int(input('Enter second number: '))

        print(first + second)
    elif command == 'subtract':
        first = int(input('Enter first number: '))
        second = int(input('Enter second number: '))

        print(first - second)
    elif command == 'multiply':
        first = int(input('Enter first number: '))
        second = int(input('Enter second number: '))

        print(first * second)
    elif command == 'divide':
        first = int(input('Enter first number: '))
        second = int(input('Enter second number: '))

        print(first / second)

While this is pretty nice, it would be better if we could have a graphical interface like most people are used to. That's for next time!


19
SotK's Python Tutorials
Part 4: Lists, More Strings and For Loops



Arrays, Lists and Tuples:

An array is simply a collection of other data types, for example it could be a collection of strings, a collection of integers etc. A 1-dimensional array can be imagined as just a column or row of numbers or other data, eg.

Code: (1-dimensional array) [Select]
(0, 1, 2, 3, 4, 5, 6)
Similarly, a 2-dimensional array could be imagined as a table of numbers, with rows and columns. This would be represented by what is effectively an array of arrays, so

Code: (2-dimensional array) [Select]
( (0, 1), (0, 2), (1, 1), (1, 2) )
Could be visualised by taking the big array to represent the columns, and each smaller array as the things in the columns:

0011
1212

You can see the first column contains the two numbers in the first position of the big array, and the second is the two number in the second position etc.

In most programming languages, arrays must contain data of all one type (you can have an array of integers, an array of strings, but not an array containing integers and strings). However, in Python an array can contain integers and strings and any data type you care to think of.

In Python, there are two types of arrays that you can use; Lists or Tuples. A list is an array which can be changed after it has been created (i.e. new stuff added onto it), and a tuple is an array which cannot be changed after it has been created (immutable).

To make a list in Python, you would use code like this:

Code: (Python List) [Select]
myList = [0, 1, 'some words', 982.23]
A list can also be created that contains nothing. This is a useful concept for initialising lists that are going to store things that are created at runtime.

Code: (Empty List) [Select]
emptyList = []
A tuple is created in exactly the same way, except using () instead of [].

We can 'index into' a list, to get the item in a certain position in the following way:

Code: (Getting an item from a list) [Select]
item = myList[2]
That will get the item in position 2 of myList. Bear in mind that the first item is in position 0, so position 2 is the third item in the list. In this case, item will be 'some words'.

More Strings

We have looked at strings as a data type for storing text, now we will look at things we can do to that text. A string in Python is basically a list, with each element (item) in the list being a character. This means that we can get individual characters from a string the same way as we do with lists. Since strings act like lists we can also loop through each character in a string, like we can loop through each item in a list (see next section).

We can also manipulate strings using string methods. A few examples of these are:

Code: (String Methods) [Select]
string = 'Hello World!'
lowerCase = string.lower()    # Puts the string in lower case
upperCase = string.upper()    # Puts the string in upper case
words = string.split()    # Splits the string into words stored in a list. You can pass a character to this method to split on a character other than space.
splitO = string.split('o')    # Splits the string wherever the character o appears

>>> print(words)
['Hello', 'World!']

>>> print(splitO)
['Hell', ' W', 'rld!']

For Loops

In the strings section, we mentioned looping through lists. This basically means making a loop which looks at each item in a list/tuple/array/whatever. Currently, we would use a while loop for that. We want to go look at each item, so we need to change which item we access each time we go through the loop:

Code: (Looping through a list with a while loop) [Select]
pos = 0
while pos < len(myList):
    print(myList[pos])
    pos += 1
...

The len(list) function returns the number of items in the list (this can also be used on a string to get its length). Since the list indices start at 0, the last item is position len(myList) - 1. However, there is an easier way!

Code: (For Loop) [Select]
for item in myList:
    print(item)
...

This does exactly the same as the while loop, but looks far neater. You can (and should!) use a for loop wherever you already know the amount of times you want to carry out a loop. For example, if we wanted to ask the user to enter 5 numbers and then show the average, we could use the following loop:

Code: (For Loop) [Select]
total = 0
for x in range(0, 5):
    num = int(input('Enter a number: '))
    total += num

print('Average is ' + str(total / 5))

There are a few functions here that I haven't mentioned.

  • range(x, y) - This returns a list of the numbers between x and y (x is included in the list, y is not)
  • input(x) - This prompts the user to enter some data. The prompt displayed is x.
  • int(x) - This converts x from whatever data type x is into an integer
  • str(x) - Similar to int(), but converts to string rather than to integer

In that example, x is just used as a counter so the loop executes the right number of times, similar to a while loop with a counter. However, in the first example item was a useful variable. Both types are useful, eg. looping through a list of sprites in a game.

Next, we will have some nice input!

<-- Part 3: While Loops
--> Part 5: User Input

20
SotK's Python Tutorials
Part 3: While Loops



Loops:

The end of the last section mentioned loops and iterable data structures. An iterable data structure is simply a data structure made up of elements that can be looped through, imagine a list of things for example. A loop would allow you to look at each item in a list, which is useful in many areas of programming. Also loops allow the same action to be performed many times with only a small amount of code, or even an indefinite amount of times which means that programs for entering data and the like can be simplified greatly/are even possible.

In Python, a simple while loop looks like this:

Code: (Python Loop) [Select]
while <condition>:
    ...
    ...
...

A while loop performs the code in the loop (in Python this is the code indented below the line with the loop condition in) while a specified condition is true. This condition can be anything that gives a boolean result (or a result that can be interpreted as a boolean). You should be careful when using loops that your condition evaluated to false when you need the loop to stop, or you will have an infinite loop. A simple example of an infinite loop could be:

Code: (Infinite Loop) [Select]
while True:
    print('This is an infinite loop')
...

Since the condition of this loop is always true, the loop will never stop and This is an infinite loop would be printed to the command line infinitely, or until you force the program to terminate or your computer gives up.

One way to fix this is to use a variable to count the number of times the loop has performed the code inside it, and to make it stop after a certain number.

Code: (Loop with counter) [Select]
count = 0
while count <= 9:
    print('This code is performed 10 times')
    count += 1
...
...

This will print This code is performed 10 times onto the command line 10 times before stopping. The integer count has 1 added to its value at the end of each iteration, so that after 10 times count = 10, meaning the condition count <= 9 is false and the loop finishes. This means you can now create a loop of any length you need. But what happens if you don't know how many iterations you need?

If you are making a game loop (more on this concept if I ever write part of this about game programming), then you will not know how many times it should run. The game loop generally draws each frame, and handles any events that occur (such as user interaction) during the frame. Since we don't know how many times we will need to go through this loop, we need it to be similar to the infinite loop above but with the ability to get out of it if needs be. This can be done in two ways. Firstly, you can use a boolean variable to decide when to stop the loop like so:

Code: (With Boolean Variable) [Select]
running = True
while running:
    ...
    if game closed:
        running = False

This way, the loop runs until the game is closed, when we set running to False. This means that the condition for the loop to keep running is False, and so it stops.

Alternatively, we can use the break statement to exit a loop at a chosen point. This works as follows:

Code: (With Break Statement) [Select]
while True:
    ...
    if game closed:
        break

This will force the program to exit the loop at the point where the break statement is. Note in these two examples, "game closed" cannot be a real variable name, it is just there as an example of when it would be useful to want to exit an infinite loop. That's about everything I can think of about basic while loops for now. Next time we will see a for loop for the first time, and then more complex data structures such as lists.

<-- Part 2: Variables, Data Types, Conditional Statements
--> Part 4: Lists, More Strings and For Loops

21
General Gaming - The Arcade / No Warez, CD-Cracks, CD Keygens, etc.
« on: June 09, 2011, 03:42:42 AM »
This is a warning that discussion, and/or requesting illegal programs including Warez, Cracks, Keygens, or even whole programs (basically all forms of software piracy) is forbidden.

Any violation of this rule will lead to administrative action, most probably a ban.

Thank you for your co-operation,

The Admin Team

22
SotK's Python Tutorials
Part 2: Variables, Data Types and Conditional Statements



More On Variables and Data Types:
 
In the last section, we learnt about how you can use variables to represent whole numbers, fractional numbers and True/False values. There are many other data types and structures that can be stored as variables. In Python, these include the following:

  • Integers
  • Floating Point Numbers (Floats)
  • Booleans
  • Strings
  • Lists
  • Tuples
  • Dictionaries

Lists, Tuples and Dictionaries will be covered later, so for now lets talk about the basics of strings.

Note: Variable names can be anything, except keywords such as True, False or If. In Python, function and variable names are not protected, so be careful you don't accidentally name a variable the same as a function.
 


Strings:
 
Strings are simply sequences of characters. In many programming languages, a character is a separate data type and a string is effectively an array/list of these. In Python, a character is simply stored as a string of length 1. To set a variable to be a string, use the same syntax as when assigning numerical values etc. to variables. The string itself must be enclosed in quotation marks ( ' or " ).

Code: (Strings) [Select]
>>> myString = 'Hello World'
>>> myString
'Hello World'

If the quotes aren't included then an exception/error will be raised. In Python, either single quotes or double quotes can be used to enclose strings. However, if there is a quotation mark of the same type as you chose to enclose the string then the string will be seen to finish where the second quotation mark is, rather than the actual end. This will cause errors.

Code: (Quotation Mark Examples) [Select]
>>> a = 'It's a beautiful day.'
SyntaxError: invalid syntax
>>> a = "It's a beautiful day."

The first attempt at making the string fails because the computer only sees 'It' as the string, and does not know how to deal with the rest of it. The second attempt works because the single quote/apostrophe doesn't close the double quotes that enclose the string.

Pressing return midway through a standard string will also cause an error, because the computer will think that it has reached the end of a line of code and won't find the closing quote of the string, causing a exception. This can be avoided by either using the newline character \n or using triple quotes to enclose the string:

Code: (Newline in Python Strings) [Select]
>>> a = 'test\ntest'
>>> print(a)
test
test
>>> b = """test
test"""
>>> print(b)
test
test

The second method (triple quotes) also allows you to use the same type of quotation mark in the string as is used to enclose it, and so is useful if you need a string with both types of quotation marks in.

Note the lines print(a) and print(b) in the previous example. These are examples of the function print being called, with a and b the parameters used. The print simply displays whatever parameters you pass to it on the console, so print(a) told the computer to display 'test\ntest.
 


Writing a Program:
 
You have probably realised by now that Python doesn't work just using the Python Shell/Interpreter to enter lines of code each time you want to run them. This would be tedious for even tiny programs, and for anything else its practically impossible, not to mention a waste of time. Its time to write your first Python program.

Assuming you are running IDLE, click File-->New Window. Otherwise open up a text editor. Once the new window appears, you can begin writing your program. To start with, we will write one of the most basic programs you can write in Python. Type the following and hit save (if using a text editor, then save it with the extension .py).

Code: (Hello World) [Select]
print('Hello World')
Once you have saved the code, try running it. To do this in IDLE, click Run-->Run Module or just hit F5. If you aren't using IDLE, then use the command prompt/terminal/whatever to navigate to the location of your program and run it using Python (probably something like python <program name> assuming your environment variables are set up correctly). In IDLE, the Python Shell window will refresh itself, then Hello World should be displayed.

Congratulations, you have just written your first program!
 


Conditional Statements:
 
Now its time to flesh your program out a little. We are going to use a conditional (IF) statement to let your program make a choice.

Code: (Conditional Hello World!) [Select]
name = input('Enter your name: ')
if name == 'SotK':
    print('Hello World!')
else:
    print('Hello ', name)

There is a lot of new stuff in here, so I'll start from the top. The first line simply assigns the result of the function input() (more on this in the next section) to a variable called name. The next line then checks if the variable name is the same as 'SotK' ( = is an assignment operator, whereas == is for checking for equality between two things). The condition name == 'SotK' will evaluate to either True or False. If it is True, then the code immediately below the if <condition>: line is executed. If the condition evaluates to False, then the program skips forward to the next part of the conditional statement. In this case, that is the else: line, however you can have as many different conditions in the same if statement using elif <condition>: between the if and the else. The else: line tells the program that it has run out of conditions to check against, and so it should just do what is on the next lines.

Notice that the code underneath the if and else lines is indented. This is of vital importance in Python, since indentation is used to work out when to run code. In general:

Code: (Conditional Statement) [Select]
if <condition>:
    ...
    ...
elif <condition>:
    ...
    ...
else:
    ...
    ...
...
...



And that is the basics of strings and conditional statements. The next section will introduce you to loops, and also talk about a few basic functions included in Python's standard library (like print() and input()). Iterable data structures such as lists and tuples will also be explained, as well as more detail on strings in Python.

<-- Part 1: Introduction, Basic Maths and Variables
--> Part 3: Strings and Loops

23
SotK's Python Tutorials
Part 1: Introduction, Basic Maths and Variables



Introduction:

This tutorial intends to explain the basics of programming, and also teach you some Python to use this knowledge with. Mainly the Python part, since the basic "building blocks" of programming are fairly easy to understand.

To start off, if you want to program in Python, you're going to need to download Python. Since this tutorial will be using Python 3.x you will need to download the latest version (3.2) for the operating system you will be using. I also suggest you install the IDLE GUI so that you have a basic environment in which to develop your program, rather than relying on Notepad and Command Prompt (assuming you are running Windows).



Some Basic Maths:

Once you have Python installed, you're probably going to want to do something with it. Firstly, open IDLE to bring up the Python Shell. As a very basic demonstration, enter a basic sum and press return. You should see something like this:

Code: (First Maths) [Select]
>>> 2 + 1
3

Multiplication is done with an asterisk (2 * 4) and division is done using a forward slash (4 / 2). Addition and subtraction are done using the +/- keys with the same syntax. Also, ** is used to find the square of a number, for example 2 ** 3 reads 23.

Code: (Basic Operations) [Select]
>>> 2 + 1
3
>>> 3 - 2
1
>>> 2 * 4
8
>>> 4 / 2
2.0

Notice the result of 4 / 2 was given as a fractional number (i.e. with decimal places). This is because / actually performs a 'floating point division', that is it returns the result as a floating point number (more on this later) rather than a simple integer, even if the answer is a whole number as in the example. The operator for an integer division is // . Integer division has drawbacks if used for mathematical calculations, in that fractional answers are rounded down to the nearest integer.

Code: (Integer Division) [Select]
>>> 4 // 2
2
>>> 3 // 2
1
>>> 1 // 2
0



Suddenly, Variables!

As I'm sure most of you know, the logical next step from doing maths with numbers is to do it with letters! In programming, as in maths, using letters in place of numbers is perfectly possible. Go ahead and try. Just try to add a letter to a number like you were adding numbers before.

Code: (Oops...) [Select]
>>> a + 2
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    a + 2
NameError: name 'a' is not defined

Your first (probably) error! This is because a + 2 confuses the interpreter. The a refers to a place in the computer's memory where a variable is stored. A variable is simply a piece of data. It can be a number, a letter, a true/false (Boolean) value, or even a string of letters. There are many other data types and structures that you can use as variables to make your program work how you want it to.

To fix the error, you first need to define a as a variable. To do this, just type a = 5 (or any number).

Code: (Defining a Variable) [Select]
>>> a = 5
You can now type an expression such as a + 2 and the correct answer will be returned. In Python, you do not need to declare the type of your variable when you are writing your code. This means that you can use a as a number, and then use the same variable as a boolean (true/false).

Code: (Variables) [Select]
>>> a = 5
>>> a + 2
7
>>> a = True
>>> a
True

Note that True is a keyword in Python, whilst true is not. Capitals are important. The same is true of variable names, MyVariable is not the same as Myvariable.

Variables can also be assigned the value of a different variable. For example you could do this:

Code: (More Variables) [Select]
>>> a = True
>>> a
True
>>> b = a
>>> b
True
>>> b = False
>>> b
False
>>> a
True

Note that changing b did not change a. You can also write an equation such as y = x + 5 to define a variable. Integer or floating point variables such as this work just like the numbers did earlier.

That's the lesson in basic algebra and maths over with, the next section will cover programming constructs such as the IF statement and various loops, as well as actually writing a basic Python program rather than messing around with stuff in the interpreter.


24
Spamfest! / Speaking of spam...
« on: April 15, 2011, 12:32:59 PM »
Just got this email...
Spoiler (click to show/hide)

25
General Gaming - The Arcade / Amnesia: The Dark Descent
« on: March 04, 2011, 10:32:59 PM »
Who has played it? Anyone?

If not then why not? :P

26
Township / Township - Development Thread
« on: August 18, 2010, 12:13:16 AM »
Township



Township is a Castle Defence style game with an RTS twist. Starting out life with one villager lost in the wild, you must help him build a village to defend himself from the monsters which stalk the land. As the monsters become more powerful and more common, your small township will need to both have a good income of resources and enough soldiers ready to die for it that it doesn't fall the moment it is discovered. How long can you hold out?

The current version is 0.2, and is available here, along with install instructions and info about how to use it (interaction such as building is all keyboard based in 0.2).


27
Welcome to The Village of the Damned
It is now Day 2. There are 6 players alive, so it takes 4 to lynch.

I'll need at least 7 people for the game to go ahead. However, the more people that sign up, the better. To sign up, post here saying that you wish to play. I will use the PM system to send out roles and night action results, unless a majority of people would prefer email. PM night actions to me, or if you would rather, email them to me at adamcoldrick[at]hotmail[dot]com.

Hellsby, 999 CE. A few months ago, a member of the village was savaged by a wolf, and as the doctors cooked up potions to save him, the full moon changed the man's soul inside. It left him so that whenever touched by the light of the full moon, he would change, and become a wolf, and hunt for more human prey. As the months wore on, the man's condition got worse, and affected his mind. Soon, he could shapeshift into a wolf whenever he wished, but only at night. Upon discovering this, the villagers decided that he was out of control, and had become more wolf than man. He was murdered by the terrified townsfolk, and his body burnt. Little did they know that the man's curse had already spread to others in the town, and soon there would be Hell to pay for the blood of the wolf-man.

Procedures/Rules
Shamelessly ripped from assorted people

If you break one of these rules, you will be either warned, replaced, or modkilled, depending on which rule it is and the severity.

The game will follow the usual day-night sequence of all Mafia games, with lynchings taking place during the day.
  • Any player that doesn't post for three days in a row will be removed from the game or replaced.
  • Dead players do not speak. Giving away any information after death will not be tolerated.
  • Roles and numbers of each side will not be revealed.
  • Be bold with voting. A vote that isn't in bold won't be counted.
  • Lynches require a majority of votes. Once a player has reached the majority, his/her pleas are useless and any attempts to unvote will be ignored. You may also vote for no lynch.
  • NO EDITING YOUR POSTS. Edit and die. No second chances.
  • Do not post often during the night. A little small talk is allowed to keep the thread bumped, but keep night posting to a minimum. Do not reveal any important game information.
  • Once your death scene has been posted, stop posting. You can make a farewell post or two, but no discussion of the game.
  • Do not quote anything I say outside of the thread. This includes your role emails when you are claiming. Paraphrase please.
  • No communication with other players outside this thread unless I say it is permitted in your role email. This excludes mafia.
Current Living Players
  • Jubal
  • Dripping D
  • Boyninja616
  • +CN2+
  • Evil2828
  • Andalus
Dead Players
  • stormcloud
  • Zephron/Dante

28
General Chatter - The Boozer / HTML/CSS help
« on: July 14, 2009, 05:10:11 PM »
I have a problem. And I don't know how to fix it. Basically, I want to know why the background for the images on this page are not behind the whole image, and how to fix it so that they are. Here is the CSS source:

Code: [Select]
.image a
{
padding : 5px;
text-align : left;
background-color        : #252a33;
        border                          : solid 2px #e6efff;
}

.image a:hover
{
padding : 5px;
text-align : left;
background-color        : #e6efff;
        border                          : solid 2px #252a33;
}

And the HTML:

Code: [Select]
<span class="image">
<a href="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/newshields.png" target="_blank">
<img src="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/th_newshields.png"></a> </span>
 
<span class="image">
<a href="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/0020.jpg" target="_blank">
<img src="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/th_0020.jpg"></a> </span>
 
<span class="image">
<a href="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/IceniSwordsmen.jpg" target="_blank">
<img src="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/th_IceniSwordsmen.jpg"></a> </span>
 
<span class="image">
<a href="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/DismountedRaiders.jpg" target="_blank">
<img src="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/th_DismountedRaiders.jpg"></a></span>
 <br>
<span class="image">
<a href="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/Raiders.jpg" target="_blank">
<img src="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/th_Raiders.jpg"></a> </span>
 
<span class="image">
<a href="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/0037.jpg" target="_blank">
<img src="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/th_0037.jpg"></a></span>
 
<span class="image">
<a href="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/0044.jpg" target="_blank">
<img src="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/th_0044.jpg"></a></span>
 
<span class="image">
<a href="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/0043.jpg" target="_blank">
<img src="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/th_0043.jpg"></a></span>
 <br>
<span class="image">
<a href="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/0042.jpg" target="_blank">
<img src="http://i124.photobucket.com/albums/p9/Son_Of_The_King/RTW/Britannia%20BC/th_0042.jpg"></a></span>

Any help would be appreciated :). Thanks in advance.

29
Welcome to The Village of the Damned
Sign Up Here

I'll need at least 7 people for the game to go ahead. However, the more people that sign up, the better. To sign up, post here saying that you wish to play. I will use the PM system to send out roles and night action results, unless a majority of people would prefer email. PM night actions to me, or if you would rather, email them to me at adamcoldrick[at]hotmail[dot]com.

Hellsby, 999 CE. A few months ago, a member of the village was savaged by a wolf, and as the doctors cooked up potions to save him, the full moon changed the man's soul inside. It left him so that whenever touched by the light of the full moon, he would change, and become a wolf, and hunt for more human prey. As the months wore on, the man's condition got worse, and affected his mind. Soon, he could shapeshift into a wolf whenever he wished, but only at night. Upon discovering this, the villagers decided that he was out of control, and had become more wolf than man. He was murdered by the terrified townsfolk, and his body burnt. Little did they know that the man's curse had already spread to others in the town, and soon there would be Hell to pay for the blood of the wolf-man.

Procedures/Rules
Shamelessly ripped from assorted people

If you break one of these rules, you will be either warned, replaced, or modkilled, depending on which rule it is and the severity.

The game will follow the usual day-night sequence of all Mafia games, with lynchings taking place during the day.
  • Any player that doesn't post for three days in a row will be removed from the game or replaced.
  • Dead players do not speak. Giving away any information after death will not be tolerated.
  • Roles and numbers of each side will not be revealed.
  • Be bold with voting. A vote that isn't in bold won't be counted.
  • Lynches require a majority of votes. Once a player has reached the majority, his/her pleas are useless and any attempts to unvote will be ignored. You may also vote for no lynch.
  • NO EDITING YOUR POSTS. Edit and die. No second chances.
  • Do not post often during the night. A little small talk is allowed to keep the thread bumped, but keep night posting to a minimum. Do not reveal any important game information.
  • Once your death scene has been posted, stop posting. You can make a farewell post or two, but no discussion of the game.
  • Do not quote anything I say outside of the thread. This includes your role emails when you are claiming. Paraphrase please.
  • No communication with other players outside this thread unless I say it is permitted in your role email. This excludes mafia.
Current Players
  • Jubal
  • Dripping D
  • Boyninja616
  • stormcloud
  • +CN2+
  • Dante
  • Evil2828
  • Andalus
  • ...
  • ...

30
M&B Mods - The Explorer's Society / A few scene editing questions
« on: January 26, 2009, 12:56:47 AM »
I have gotten the hang of edit mode now I think, but there are a few things I still want to know. Firstly, is it possible to add new places for passages to link to, like they do to enter the Tavern, Castle etc.? As in can I make a door lead to another part of the city, and how would I go about creating a new scene for this?

Also, is there a list anywhere of which scene corresponds to which village/castle?

Here is my first scene. It is based on the terrain of the city of Tihr.


Pages: 1 [2] 3 4