Merge pull request #3433 from Zuhayr/feature

Fixes from master, language/species adjustment.
This commit is contained in:
Mloc
2013-08-05 14:44:21 -07:00
22 changed files with 149 additions and 103 deletions
+16
View File
@@ -17,6 +17,10 @@ var/global/list/landmarks_list = list() //list of all landmarks created
var/global/list/surgery_steps = list() //list of all surgery steps |BS12
var/global/list/mechas_list = list() //list of all mechs. Used by hostile mobs target tracking.
//Languages/species
var/global/list/all_species[0]
var/global/list/all_languages[0]
//Preferences stuff
//Hairstyles
var/global/list/hair_styles_list = list() //stores /datum/sprite_accessory/hair indexed by name
@@ -69,6 +73,18 @@ var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Al
var/datum/surgery_step/S = new T
surgery_steps += S
sort_surgeries()
//Languages and species.
paths = typesof(/datum/language)-/datum/language
for(var/T in paths)
var/datum/language/L = new T
all_languages[L.name] = L
paths = typesof(/datum/species)-/datum/species
for(var/T in paths)
var/datum/species/S = new T
all_species[S.name] = S
/* // Uncomment to debug chemical reaction list.
/client/verb/debug_chemical_list()
+9
View File
@@ -118,7 +118,10 @@
var/gateway_delay = 18000 //How long the gateway takes before it activates. Default is half an hour.
var/ghost_interaction = 0
var/comms_password = ""
var/use_irc_bot = 0
var/irc_bot_host = ""
var/main_irc = ""
var/admin_irc = ""
var/python_path = "" //Path to the python executable. Defaults to "python" on windows and "/usr/bin/env python2" on unix
@@ -407,6 +410,12 @@
if("ghost_interaction")
config.ghost_interaction = 1
if("comms_password")
config.comms_password = value
if("irc_bot_host")
config.irc_bot_host = value
if("main_irc")
config.main_irc = value
+9 -5
View File
@@ -754,13 +754,13 @@ client
usr << "This can only be done to instances of type /mob/living/carbon/human"
return
var/datum/species/new_species = input("Please choose a new species.","Species",null) as null|anything in (typesof(/datum/species)-/datum/species)
var/new_species = input("Please choose a new species.","Species",null) as null|anything in all_species
if(!H)
usr << "Mob doesn't exist anymore"
return
if(H.set_species(new new_species))
if(H.set_species(new_species))
usr << "Set species of [H] to [H.species]."
else
usr << "Failed! Something went wrong."
@@ -773,13 +773,13 @@ client
usr << "This can only be done to instances of type /mob"
return
var/datum/language/new_language = input("Please choose a language to add.","Language",null) as null|anything in (typesof(/datum/language)-/datum/language)
var/new_language = input("Please choose a language to add.","Language",null) as null|anything in all_languages
if(!H)
usr << "Mob doesn't exist anymore"
return
if(H.add_language(new new_language))
if(H.add_language(new_language))
usr << "Added [new_language] to [H]."
else
usr << "Mob already knows that language."
@@ -792,13 +792,17 @@ client
usr << "This can only be done to instances of type /mob"
return
if(!H.languages.len)
usr << "This mob knows no languages."
return
var/datum/language/rem_language = input("Please choose a language to remove.","Language",null) as null|anything in H.languages
if(!H)
usr << "Mob doesn't exist anymore"
return
if(H.remove_language(rem_language))
if(H.remove_language(rem_language.name))
usr << "Removed [rem_language] from [H]."
else
usr << "Mob doesn't know that language."
+2 -2
View File
@@ -95,12 +95,12 @@ var/global/vox_kills = 0 //Used to check the Inviolate.
var/mob/living/carbon/human/vox = raider.current
vox.languages += new /datum/language/vox
vox.real_name = capitalize(newname)
vox.name = vox.real_name
vox.age = rand(12,20)
vox.set_species(new /datum/species/vox)
vox.dna.mutantrace = "vox"
vox.set_species("Vox")
vox.add_language("Vox-pidgin")
vox.h_style = "Short Vox Quills"
vox.equip_vox_raider()
vox.regenerate_icons()
+1 -1
View File
@@ -117,7 +117,7 @@ Growing it to term with nothing injected will grab a ghost from the observers. *
podman.gender = NEUTER
podman.dna = new /datum/dna()
podman.dna.real_name = podman.real_name
podman.set_species(new /datum/species/diona)
podman.set_species("Diona")
podman.dna.mutantrace = "plant"
podman.update_mutantrace()
+11 -11
View File
@@ -312,17 +312,7 @@
if(usr.stat || usr.restrained())
return
if(istype(usr,/mob/living/silicon))
if(istype(usr,/mob/living/silicon/robot))
var/mob/living/silicon/robot/R = usr
if(!(R.module && istype(R.module,/obj/item/weapon/robot_module/butler) ))
usr << "\red The vending machine refuses to interface with you, as you are not in its target demographic!"
return
else
usr << "\red The vending machine refuses to interface with you, as you are not in its target demographic!"
return
if(href_list["remove_coin"])
if(href_list["remove_coin"] && !istype(usr,/mob/living/silicon))
if(!coin)
usr << "There is no coin in this machine."
return
@@ -338,6 +328,16 @@
usr.set_machine(src)
if ((href_list["vend"]) && (src.vend_ready) && (!currently_vending))
if(istype(usr,/mob/living/silicon))
if(istype(usr,/mob/living/silicon/robot))
var/mob/living/silicon/robot/R = usr
if(!(R.module && istype(R.module,/obj/item/weapon/robot_module/butler) ))
usr << "\red The vending machine refuses to interface with you, as you are not in its target demographic!"
return
else
usr << "\red The vending machine refuses to interface with you, as you are not in its target demographic!"
return
if ((!src.allowed(usr)) && (!src.emagged) && (src.wires & WIRE_SCANID)) //For SECURE VENDING MACHINES YEAH
usr << "\red Access denied." //Unless emagged of course
flick(src.icon_deny,src)
+3 -2
View File
@@ -507,13 +507,14 @@ client/proc/one_click_antag()
i++
newname += pick(list("ti","hi","ki","ya","ta","ha","ka","ya","chi","cha","kah"))
new_vox.languages += new /datum/language/vox
new_vox.real_name = capitalize(newname)
new_vox.name = new_vox.real_name
new_vox.age = rand(12,20)
new_vox.dna.ready_dna(new_vox) // Creates DNA.
new_vox.set_species(new /datum/species/vox) // Actually makes the vox! How about that.
new_vox.dna.mutantrace = "vox"
new_vox.set_species("Vox") // Actually makes the vox! How about that.
new_vox.add_language("Vox-pidgin")
new_vox.mind_initialize()
new_vox.mind.assigned_role = "MODE"
new_vox.mind.special_role = "Vox Raider"
+7 -7
View File
@@ -1,14 +1,14 @@
/proc/send2irc(var/channel, var/msg)
if(config.use_irc_bot)
ext_python("ircbot_message.py", "[channel] [msg]")
if(config.use_irc_bot && config.irc_bot_host)
ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [channel] [msg]")
return
/proc/send2mainirc(var/msg)
if(config.use_irc_bot && config.main_irc)
ext_python("ircbot_message.py", "[config.main_irc] [msg]")
if(config.use_irc_bot && config.main_irc && config.irc_bot_host)
ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [config.main_irc] [msg]")
return
/proc/send2adminirc(var/msg)
if(config.use_irc_bot && config.admin_irc)
ext_python("ircbot_message.py", "[config.admin_irc] [msg]")
return
if(config.use_irc_bot && config.admin_irc && config.irc_bot_host)
ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [config.admin_irc] [msg]")
return
+1 -1
View File
@@ -6,4 +6,4 @@
var/command = config.python_path + " " + script + " " + args
return shell(command)
return shell(command)
+26 -1
View File
@@ -30,4 +30,29 @@
name = "Vox-pidgin"
speech_verb = "shrieks"
colour = "vox"
key = "v"
key = "v"
// Language handling.
/mob/proc/add_language(var/language)
for(var/datum/language/L in languages)
if(L && L.name == language)
return 0
var/datum/language/new_language = all_languages[language]
if(!istype(new_language,/datum/language))
return 0
languages += new_language
return 1
/mob/proc/remove_language(var/rem_language)
for(var/datum/language/L in languages)
if(L && L.name == rem_language)
languages -= L
return 1
return 0
+12 -16
View File
@@ -13,22 +13,22 @@
/mob/living/carbon/human/skrell/New()
h_style = "Skrell Male Tentacles"
set_species(new /datum/species/skrell(src))
set_species("Skrell")
..()
/mob/living/carbon/human/tajaran/New()
h_style = "Tajaran Ears"
set_species(new /datum/species/tajaran(src))
set_species("Tajara")
..()
/mob/living/carbon/human/unathi/New()
h_style = "Unathi Horns"
set_species(new /datum/species/unathi(src))
set_species("Unathi")
..()
/mob/living/carbon/human/vox/New()
h_style = "Short Vox Quills"
species = new /datum/species/vox(src)
set_species("Vox")
..()
/mob/living/carbon/human/diona/New()
@@ -41,7 +41,9 @@
set_species()
if(species.language)
languages += species.language
var/datum/language/L = all_languages[species.language]
if(L)
languages += L
var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
@@ -1260,21 +1262,15 @@ mob/living/carbon/human/yank_out_object()
else
usr << "\blue [self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)]."
/mob/living/carbon/human/proc/set_species(var/datum/species/new_species)
/mob/living/carbon/human/proc/set_species(var/new_species)
if(!new_species)
new_species = new /datum/species/human
new_species = "Human"
if(species)
if(species && (species.name && species.name == new_species))
return
if(species.name == new_species.name)
return
var/temp = species
species = new_species
del(temp)
else
species = new_species
species = all_species[new_species]
spawn(0)
update_icons()
+5 -5
View File
@@ -25,7 +25,7 @@
var/tail // Name of tail image in species effects icon file.
var/primitive // Lesser form, if any (ie. monkey for humans)
var/datum/language/language // Default racial language, if any.
var/language // Default racial language, if any.
var/attack_verb = "punch" // Empty hand hurt intent verb.
var/breath_type // Non-oxygen gas breathed, if any.
@@ -56,7 +56,7 @@
name = "Unathi"
icobase = 'icons/mob/human_races/r_lizard.dmi'
deform = 'icons/mob/human_races/r_def_lizard.dmi'
language = new /datum/language/unathi
language = "Sinta'unathi"
tail = "sogtail"
attack_verb = "scratch"
@@ -66,7 +66,7 @@
name = "Tajara"
icobase = 'icons/mob/human_races/r_tajaran.dmi'
deform = 'icons/mob/human_races/r_def_tajaran.dmi'
language = new /datum/language/tajaran
language = "Siik'mas"
tail = "tajtail"
attack_verb = "scratch"
@@ -76,7 +76,7 @@
name = "Skrell"
icobase = 'icons/mob/human_races/r_skrell.dmi'
deform = 'icons/mob/human_races/r_def_skrell.dmi'
language = new /datum/language/skrell
language = "Skrellian"
flags = WHITELISTED | HAS_LIPS | HAS_UNDERWEAR
@@ -84,7 +84,7 @@
name = "Vox"
icobase = 'icons/mob/human_races/r_vox.dmi'
deform = 'icons/mob/human_races/r_def_vox.dmi'
language = new /datum/language/vox
language = "Vox-pidgin"
eyes = "vox_eyes_s"
breath_type = "nitrogen"
+1 -20
View File
@@ -955,23 +955,4 @@ mob/verb/yank_out_object()
pinned -= O
if(!pinned.len)
anchored = 0
return 1
// Language handling.
/mob/proc/add_language(var/datum/language/new_language)
for(var/datum/language/L in languages)
if(L && L.name == new_language.name)
return 0
languages += new_language
return 1
/mob/proc/remove_language(var/datum/language/rem_language)
for(var/datum/language/L in languages)
if(L && L.name == rem_language.name)
languages -= L
return 1
return 0
return 1
+9 -9
View File
@@ -349,26 +349,26 @@
if(client.prefs.species == "Tajaran") //This is like the worst, but it works, so meh. - Erthilo
if(is_alien_whitelisted(src, "Tajaran") || !config.usealienwhitelist)
new_character.set_species(new /datum/species/tajaran)
new_character.languages += new /datum/language/tajaran
new_character.set_species("Tajara")
new_character.add_language("Siik'mas")
if(client.prefs.species == "Unathi")
if(is_alien_whitelisted(src, "Soghun") || !config.usealienwhitelist)
new_character.set_species(new /datum/species/unathi)
new_character.languages += new /datum/language/unathi
new_character.set_species("Unathi")
new_character.add_language("Sinta'unathi")
if(client.prefs.species == "Skrell")
if(is_alien_whitelisted(src, "Skrell") || !config.usealienwhitelist)
new_character.set_species(new /datum/species/skrell)
new_character.languages += new /datum/language/skrell
new_character.set_species("Skrell")
new_character.add_language("Skrellian")
if(client.prefs.language == "Tajaran")
if(is_alien_whitelisted(src, "Language_Tajaran") || !config.usealienwhitelist)
new_character.languages += new /datum/language/tajaran
new_character.add_language("Siik'mas")
if(client.prefs.language == "Unathi")
if(is_alien_whitelisted(src, "Language_Soghun") || !config.usealienwhitelist)
new_character.languages += new /datum/language/unathi
new_character.add_language("Sinta'unathi")
if(client.prefs.language == "Skrell")
if(is_alien_whitelisted(src, "Language_Skrell") || !config.usealienwhitelist)
new_character.languages += new /datum/language/skrell
new_character.add_language("Skrellian")
if(ticker.random_players)
new_character.gender = pick(MALE, FEMALE)
+16 -10
View File
@@ -189,18 +189,11 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
. = ..()
vessel.remove_reagent("blood",amount) // Removes blood if human
//Transfers blood from container ot vessels, respecting blood types compatability.
/mob/living/carbon/human/proc/inject_blood(obj/item/weapon/reagent_containers/container, var/amount)
var/datum/reagent/blood/our = get_blood(vessel)
//Transfers blood from container ot vessels
/mob/living/carbon/proc/inject_blood(obj/item/weapon/reagent_containers/container, var/amount)
var/datum/reagent/blood/injected = get_blood(container.reagents)
if (!injected)
return
if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"]) )
reagents.add_reagent("toxin",amount * 0.5)
reagents.update_total()
else
vessel.add_reagent("blood", amount, injected.data)
vessel.update_total()
src.virus2 |= virus_copylist(injected.data["virus2"])
if (injected.data["antibodies"] && prob(5))
antibodies |= injected.data["antibodies"]
@@ -208,11 +201,24 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
chems = params2list(injected.data["trace_chem"])
for(var/C in chems)
src.reagents.add_reagent(C, (text2num(chems[C]) / 560) * amount)//adds trace chemicals to owner's blood
//world << "added [(text2num(chems[C])/560) * amount] = [text2num(chems[C])]/560*[amount] units of [C] to [src]" //DEBUG
reagents.update_total()
container.reagents.remove_reagent("blood", amount)
//Transfers blood from container ot vessels, respecting blood types compatability.
/mob/living/carbon/human/inject_blood(obj/item/weapon/reagent_containers/container, var/amount)
var/datum/reagent/blood/our = get_blood(vessel)
var/datum/reagent/blood/injected = get_blood(container.reagents)
if (!injected || !our)
return
if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"]) )
reagents.add_reagent("toxin",amount * 0.5)
reagents.update_total()
else
vessel.add_reagent("blood", amount, injected.data)
vessel.update_total()
..()
//Gets human's own blood.
/mob/living/carbon/proc/get_blood(datum/reagents/container)
var/datum/reagent/blood/res = locate() in container.reagent_list //Grab some blood
@@ -73,8 +73,8 @@
A.randomize_appearance_for(new_mob)
var/mob/living/carbon/human/H = new_mob
var/newspecies = pick(typesof(/datum/species)-/datum/species)
H.set_species(new newspecies)
var/newspecies = pick(all_species)
H.set_species(newspecies)
else
return
@@ -154,9 +154,9 @@
B = d
break
var/trans
if(B && ishuman(target))
var/mob/living/carbon/human/H = target
H.inject_blood(src,5)
if(B && istype(target,/mob/living/carbon))
var/mob/living/carbon/C = target
C.inject_blood(src,5)
else
trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
user << "\blue You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units."
+1 -1
View File
@@ -13,7 +13,7 @@
flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
/obj/item/device/antibody_scanner/attack(mob/living/carbon/human/M as mob, mob/user as mob)
/obj/item/device/antibody_scanner/attack(mob/living/carbon/M as mob, mob/user as mob)
if(!istype(M))
user << "<span class='notice'>Incompatible object, scan aborted.</span>"
return
+2
View File
@@ -82,6 +82,8 @@
sleep_offline = 1
send2mainirc("Server starting up on [config.server? "byond://[config.server]" : "byond://[world.address]:[world.port]"]")
master_controller = new /datum/controller/game_controller()
spawn(1)
master_controller.setup()
+8 -2
View File
@@ -211,15 +211,21 @@ USEALIENWHITELIST
##Remove the # to let ghosts spin chairs
#GHOST_INTERACTION
## Password used for authorizing ircbot and other external tools.
#COMMS_PASSWORD
## Uncomment to enable sending data to the IRC bot.
#USE_IRC_BOT
## Host where the IRC bot is hosted. Port 45678 needs to be open.
#IRC_BOT_HOST localhost
## IRC channel to send information to. Leave blank to disable.
#MAIN_IRC #main
## IRC channel to send adminhelps to. Leave blank to disable adminhelps-to-irc.
#ADMIN_IRC #admin
## Path to the python executable on the system. Leave blank for default.
## Path to the python2 executable on the system. Leave blank for default.
## Default is "python" on Windows, "/usr/bin/env python2" on UNIX.
PYTHON_PATH
#PYTHON_PATH
Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

+5 -5
View File
@@ -6,18 +6,18 @@
import sys,cPickle,socket
def pack():
ip = sys.argv[1]
passwd = sys.argv[1]
ip = sys.argv[3]
try:
data = sys.argv[2:] #The rest of the arguments is data
data = sys.argv[4:] #The rest of the arguments is data
except:
data = "NO DATA SPECIFIED"
dictionary = {"ip":ip,"data":["PASSWORD"] + data}
dictionary = {"ip":ip,"data":[passwd] + data}
pickled = cPickle.dumps(dictionary)
nudge(pickled)
def nudge(data):
HOST = "IRCBOT IP"
HOST = sys.argv[2]
PORT = 45678
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST,PORT))
s.send(data)