ghosts now have stat=DEAD so certain verbs don't break.

replaced canweaken and canstun variables with status_flags bitfield. Current flags are CANWEAKEN CANSTUN CANPARALYSE. Although you could add stuff like CANDAMAGE, CANBLIND, CANDEAFEN etc. to add additional flexibility to mob code and reduce on duplication.

Added humans_need_surnames as a config option. If when spawning  a human has only one name it will give them a random surname. I'd recommend leaving it on so that people can't name themselves "floor" "Unknown" etc.

totally removed autolowercasing of names (except for first letter) due to people pestering me. inb4 everyone starts CRUISECONTROLLING.

allowed a few characters like @ # etc for when the flag allow_numbers is set. So AIs can use those symbols (numbers and symbols cannot be used as the first character because of syntax.

Added alium nests. They're basically beds that only aliums can use. They are made of sticky resin which aliums secure their prey too for sexytimes.

Weed nodes are no longer dense.

Tidied up some alium verbs so that they are more structured. This will allow me to add Alt-Click neurotoxin shooting for queens and sentinels

Queens can secrete resin now to build nests/walls/membranes (doors to come!)
Drones that evolve into queens when there is already a live Queen will become princesses instead so the hive can tell them how stupid they are for splitting from the will of the hive. It also gives them a number so they can be differentiated between.

Credits to 39kk9t for fixing larva/death.dm, hissing which I forgot to do and some of the alium verbs. You're awesome <3

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3983 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
elly1989@rocketmail.com
2012-07-04 20:53:13 +00:00
parent 188b487542
commit 86effe3429
29 changed files with 263 additions and 374 deletions
+1
View File
@@ -4,6 +4,7 @@
icon = 'mob.dmi'
icon_state = "ghost"
layer = 4
stat = DEAD
density = 0
canmove = 0
blinded = 0
+1 -2
View File
@@ -16,5 +16,4 @@
var/move_delay_add = 0 // movement delay to add
canstun = 0
canweaken = 0 // aliens cannot be stunned or knocked down. Massive buff!
status_flags = CANPARALYSE
+1 -2
View File
@@ -22,8 +22,7 @@
// canstun and canweaken don't affect metroids because they ignore stun and weakened variables
// for the sake of cleanliness, though, here they are.
canstun = 0
canweaken = 0
status_flags = CANPARALYSE
var/amount_grown = 0// controls how long the metroid has been overfed, if 10, grows into an adult
// if adult: if 10: reproduces
+1 -1
View File
@@ -4,7 +4,7 @@
icon_state = "ai"
anchored = 1 // -- TLE
density = 1
canweaken = 0
status_flags = CANSTUN|CANPARALYSE
var/network = "SS13"
var/obj/machinery/camera/current = null
var/list/connected_robots = list()
+7 -1
View File
@@ -686,10 +686,16 @@
var/mob/living/buckled_mob
/obj/structure/stool/bed/alien
name = "Resting contraption"
name = "resting contraption"
desc = "This looks similar to contraptions from earth. Could aliens be stealing our technology?"
icon_state = "abed"
/obj/structure/stool/bed/nest
name = "alien nest"
desc = "It's a gruesome pile of thick, sticky resin shaped like a nest."
icon = 'alien.dmi'
icon_state = "nest"
var/health = 100
/obj/structure/stool/bed/chair //YES, chairs are a type of bed, which are a type of stool. This works, believe me. -Pete
name = "chair"
+35 -30
View File
@@ -146,46 +146,51 @@
//removes doublespaces and double apostrophes
//lowercases everything and capitalises the first letter of each word (or characters following an apostrophe)
//prevents names which are too short, have too many space, or not enough normal letters
/proc/reject_bad_name(var/t_in, var/minimum_words=2, var/allow_numbers=0, var/max_length=MAX_NAME_LEN)
/proc/reject_bad_name(var/t_in, var/allow_numbers=0, var/max_length=MAX_NAME_LEN)
if(length(t_in) > max_length) return //name too long
var/number_of_alphanumeric = 0
var/number_of_spaces = 0
var/last_char_group = 0
var/t_out = ""
for(var/i=1, i<=length(t_in), i++)
var/ascii_char = text2ascii(t_in,i)
switch(ascii_char)
if(65 to 90) //Uppercase letters allowed
if(65 to 90) //Uppercase Letters
t_out += ascii2text(ascii_char)
number_of_alphanumeric++
last_char_group = 4
if(97 to 122) //Lowercase Letters
if(last_char_group<2) t_out += ascii2text(ascii_char-32) //Force uppercase first character
else t_out += ascii2text(ascii_char)
number_of_alphanumeric++
last_char_group = 4
if(48 to 57) //Numbers
if(!last_char_group) continue //suppress at start of string
if(!allow_numbers) continue
t_out += ascii2text(ascii_char)
number_of_alphanumeric++
last_char_group = 3
if(39,45,46) //Common name punctuation
t_out += ascii2text(ascii_char)
last_char_group = 2
if(126,124,64,58,35,36,37,38,42,43) //Other crap that's harmless
if(!last_char_group) continue //suppress at start of string
if(!allow_numbers) continue
t_out += ascii2text(ascii_char)
last_char_group = 2
if(32) //Space
if(last_char_group <= 1) continue //suppress double-spaces and spaces at start of string
t_out += ascii2text(ascii_char)
last_char_group = 1
number_of_alphanumeric++
if(97 to 122) //Lowercase letters allowed
switch(last_char_group)
if(3,4,0) t_out += ascii2text(ascii_char-32) //Force uppercase if preceeded by space or '
else t_out += ascii2text(ascii_char)
last_char_group = 2
number_of_alphanumeric++
if(32) //Space
switch(last_char_group)
if(3,0) continue
else t_out += ascii2text(ascii_char) //so we don't get double-spaces
last_char_group = 3
number_of_spaces++
if(39,45,46) //Apostrophe for dem Oirish names like "O'Neil", dashes for double-barreled names and periods for "James T. Kirk" and AI's
switch(last_char_group)
if(4,0) continue
else t_out += ascii2text(ascii_char) //so we don't get double apostrophes or whatever
last_char_group = 4
if(48 to 57)
if(allow_numbers)
t_out += ascii2text(ascii_char) //Allow numbers (i.e. for borgs andd AIs)
number_of_alphanumeric++
last_char_group = 5
else
return
if(last_char_group == 3) number_of_spaces--
if(number_of_alphanumeric < 4) return //protects against tiny names like "A" and also names like "' ' ' ' ' ' ' '"
if(number_of_spaces > 4 || number_of_spaces < minimum_words-1) return //protects against single-word names like "Unknown" and names like "I ' M A D E R P Spaces Lul"
if(number_of_alphanumeric < 2) return //protects against tiny names like "A" and also names like "' ' ' ' ' ' ' '"
return t_out
/proc/strip_html_simple(var/t,var/limit=MAX_MESSAGE_LEN)
@@ -739,7 +744,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
if(0)
if(1 to 5) M << "<font color='red'>Invalid name. Your name should be at least 4 alphanumeric characters but under [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, 0-9, -, ' and .</font>"
else break
newname = reject_bad_name(input(M,"You are the AI. Would you like to change your name to something else?", "Name change",randomname),1,1)
newname = reject_bad_name(input(M,"You are the AI. Would you like to change your name to something else?", "Name change",randomname),1)
iterations++
if((world.time-time_passed)>300)//If more than 20 game seconds passed.