mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 19:13:30 +01:00
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:
@@ -4,6 +4,7 @@
|
||||
icon = 'mob.dmi'
|
||||
icon_state = "ghost"
|
||||
layer = 4
|
||||
stat = DEAD
|
||||
density = 0
|
||||
canmove = 0
|
||||
blinded = 0
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user