Random Update:

- Napalm nerfed.
- Changelog updated.
- Cook(ed) book icon added for eventual cooking overhaul.
- Tech tree framework added (very WIP though).

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@894 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
morikou@gmail.com
2011-01-21 00:25:41 +00:00
parent 76170858b2
commit a63ea22e7c
5 changed files with 235 additions and 1 deletions

View File

@@ -296,7 +296,7 @@ datum
var/datum/gas_mixture/napalm = new
napalm.toxins = created_volume * created_volume
napalm.toxins = created_volume
napalm.temperature = 400+T0C
target_tile.assume_air(napalm)

View File

@@ -0,0 +1,207 @@
/***************************************************************
Science Research and Development System (Designed and Developed by the /tg/station crew)
*insert stuff here later*
*****************************************
Integrating Objects into the Science Research and Development System
First of all, the root /obj/ define has to have two variables added to it if it doesn't have them already:
var/list/origin_tech = list()
var/reliability = 100
* The origin_tech list is a list of all the technolgies (by ID) and their level at the time the object was created (format: "ID" = #).
If an object can't be reversed engineered, you're just going to leave this variable alone.
* The relability var is the reliability of an object before tech modifiers. Items that start spawned and items that aren't part of the
R&D system should just leave the reliability var at 100 and ignore it. Otherwise, you'll want to adjust it down based on the
pre-technology-modifier reliability you want for the object. You'd also want to add some sort of mechanic that deals with that
var as well.
*SPECIAL NOTE: For non-carriable objects that you can deconstruct into RE'able parts, make sure to include some way of passing on
the data from the components to the finished procuct and back again.
***************************************************************/
/***************************************************************
** Master Types **
** Includes all the helper procs and basic tech processing. **
***************************************************************/
/datum/research //Holder for all the existing, archived, and known tech. Individual to console.
var
list //Datum/tech go here.
possible_tech = list() //List of all tech in the game that players have access to (barring special events).
known_tech = list() //List of locally known tech.
New() //Insert techs into possible_tech and known_tech at start here.
proc
//Checks to see if tech has all the required pre-reqs. Input: Tech datum/tech; Output: 0/1 (false/true)
HasTechReqs(var/datum/tech/T)
if(T.req_tech.len == 0)
return 1
var/matches = 0
for(var/req in T.req_tech)
for(var/known in known_tech)
if(req == known && T.req_tech[req] <= known_tech[known])
matches++
if(matches == T.req_tech.len)
return 1
else
return 0
//Adds a tech to known_tech list. Checks to make sure there aren't duplicates. Input: datum/tech; Output: Null
AddTech2Known(var/datum/tech/T)
for(var/datum/tech/known in known_tech)
if(T.id == known.id)
if(T.level > known.level)
known.level = T.level
return
known_tech += T
RefreshKnownTech()
return
//Refreshes known_tech list with entries in archived and possible techs. Input/Output: Null.
RefreshKnownTech()
for(var/datum/tech/P in possible_tech - known_tech)
if(HasTechReqs(P, possible_tech))
AddTech2Known(P)
RefreshKnownTech()
return
//Makes a new instance of a tech with inputed ID. Input: ID; Output: /datum/tech
NewTech(var/ID)
for(var/datum/tech/newtech in typesof(/datum/tech) - /datum/tech)
if(newtech.id == ID)
return newtech
return null
//Finds the reliability of a given object based on it's base reliablity and related technologies.
//Input: Object; Output: Number
//CompositeReliability() //Saving until I get a better guideline of how reliability should calculate.
/***************************************************************
** Technology Datums **
** Includes all the various technoliges and what they make. **
***************************************************************/
/datum/tech //Datum of individual technologies.
var
name = "name" //Name of the technology.
desc = "description" //General description of what it does and what it makes.
id = "id" //An easily referenced ID. Must be alphanumeric, lower-case, and no symbols.
level = 1 //A simple number scale of the research level. 1 = theoretical, 10 = tried-and-true.
list/req_tech = list() //List of ids associated values of techs required to research this tech. "id" = #
//Trunk Technologies (don't actually build anything and don't require any other techs).
materials
name = "Materials Research"
desc = "Development of new and improved materials."
id = "materials"
plasmatech
name = "Plasma Research"
desc = "Research into the mysterious substance colloqually known as 'plasma'"
id = "plasmatech"
powerstorage
name = "Power Storage Technology"
desc = "The various technologies behind the storage of electicity."
id = "powerstorage"
bluespace
name = "'Blue-space' Research"
desc = "Research into the sub-reality of 'blue-space'"
id = "bluespace"
biotech
name = "Biological Technology"
desc = "Research into the deeper mysteries of life and organic substances."
id = "biotech"
magnets
name = "Electromagnetic Spectrum Research"
desc = "Research into the electromagnetic spectrum. No clue how they actually work, though."
id = "magnets"
programming
name = "Data Theory Research"
desc = "The development of new computer and artificial intelligence systems."
id = "programming"
//Branch Tech: Materials
metaltech
name = "Metallurgy Research"
desc = "Development of new and improved metal alloys for different purposes."
id = "metaltech"
req_tech = list("materials" = 2)
glasstech
name = "Transparent Material Research"
desc = "Development of new and stronger transparent materials (glass, crystal, transparent aluminum, etc)."
id = "glasstech"
req_tech = list("materials" = 2)
explosives
name = "Explosives Research"
desc = "The creation and application of explosive materials."
id = "explosives"
req_tech = list("materials" = 3)
//Branch Tech: Power Storage and Generation
generators
name = "Power Generation Technology"
desc = "Research into more powerful and more reliable sources."
id = "generators"
req_tech = list("powerstorage" = 2)
celltech
name = "Power Cell Technology"
desc = "Design better, portable power cells for use in devices."
id = "celltech"
req_tech = list("powerstorage" = 2)
smestech
name = "Super-Magnetic Energy Storage Technology"
desc = "Design better, stationary power storage devices."
id = "smestech"
req_tech = list("powerstorage" = 3, "magnets" = 3)
//Major Branch: Biotechnology
cybernetics
name = "Cybernetic Technology"
desc = "The development of advanced man/machine interfaces."
id = "cybernetics"
req_tech = list("biotech" = 3, "programming" = 3)
/***************************************************************
** Design Datums **
** All the data for building stuff and tracking reliability. **
***************************************************************/
#define IMPRINTER 1 //For circuits.
#define PROTOLATHE 2 //For stuff with reliability issues.
#define AUTOLATHE 4 //For general use or 100% reliability items.
/datum/design //Datum for object designs, used in construction
var
name = "Name" //Name of the created object.
id = "id" //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols
req_tech = list() //IDs of that techs the object originated from and the minimum level requirements.
reliability = 100 //Reliability of the device.
build_type = PROTOLATHE //Flag as to what kind machine the design is built in. See defines.
build_path = "" //The file path of the object that gets created.

View File

@@ -44,6 +44,31 @@
<strong>Thanks to:</strong> CDK Station devs, GoonStation devs, the original SpaceStation developers and Erikat for the new title image
<h4>Changelog</h4>
<h5>20.01.2011, r894</h5>
<ul>
<LI>Pipes can now be removed and re-attached by wrenching them.
<LI>Mining system continues to develop. Still unaccessible to players.
<LI>Various map changes. Some minor lag causing things were fixed.
<LI>Admins have a new tool: They can now give any spell to anyone. Hurray!
<LI>Imadolazine now works. Maybe?
<LI>Singularity now releases itself if fed too much and will potentially explode.
<LI>Magboots now successfully prevent you from getting pulled into the singularity.
<LI>Strike teams immune to facehuggers. Why? I dunno.
<LI>Many reagent containers are adjustable so you can pour the exact amount you need.
<LI>No more emitters working in space, Collectors and collector controllers now ID lockable.
<LI>Christmas Contest plaque finally added. It's near the armor/warden's office.
<LI>Rocks fall, everyone dies.
<LI>All cyborgs and robots can now be named. Just use a pen on the cyborg's frame before the brain is inserted.
<LI>Knock spell now unbolts doors as well as opens them.
<LI>New cultist runs and other changes.
<LI>Added surgery tools for eventual surgery system.
<LI>Autolathe and Circuit Printer animations redone. Yay pretty icons.
<LI>AI law changes/uploads are now tracked (admin viewable).
<LI>Revheads now get a PDA uplink instead of a headset one.
<LI>Added a penlight.
<LI>Science Research and Development tech tree uploaded. Not really accessible by anyone yet, though.
</ul>
<h5>14.01.2011, r853</h5>
<ul>
<LI>Changlings Overhauled. Now function kinda like alium (using an internal chemical reserve instead of plasma) with each ability requiring a certain amount of chemicals to activate. Both venoms removed. Several "Dart" abiliites added. They allow the changling to deafen, blind, mute, paralyze, or even transform (dead) targets.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@@ -14,6 +14,7 @@
#define FILE_DIR "code/datums"
#define FILE_DIR "code/datums/diseases"
#define FILE_DIR "code/datums/spells"
#define FILE_DIR "code/datums/technology"
#define FILE_DIR "code/defines"
#define FILE_DIR "code/defines/area"
#define FILE_DIR "code/defines/mob"
@@ -210,6 +211,7 @@
#include "code\datums\spells\magic_missile.dm"
#include "code\datums\spells\mutate.dm"
#include "code\datums\spells\teleport.dm"
#include "code\datums\technology\technology.dm"
#include "code\defines\atom.dm"
#include "code\defines\client.dm"
#include "code\defines\global.dm"