Make good/bad mutations dynamically assigned.

Conflicts:
	code/game/dna/dna2_helpers.dm
This commit is contained in:
Rob Nelson
2014-02-27 15:52:54 -08:00
committed by ZomgPonies
parent 034a54cc62
commit 1a2adaaadb
3 changed files with 38 additions and 31 deletions
+3
View File
@@ -45,6 +45,9 @@ var/global/list/assigned_blocks[DNA_SE_LENGTH]
var/global/list/datum/dna/gene/dna_genes[0]
var/global/list/good_blocks[0]
var/global/list/bad_blocks[0]
/////////////////
// GENE DEFINES
/////////////////
+2 -2
View File
@@ -24,14 +24,14 @@
/proc/randmutb(var/mob/living/M)
if(!M) return
M.dna.check_integrity()
var/block = pick(GLASSESBLOCK,COUGHBLOCK,FAKEBLOCK,NERVOUSBLOCK,CLUMSYBLOCK,TWITCHBLOCK,HEADACHEBLOCK,BLINDBLOCK,DEAFBLOCK,HALLUCINATIONBLOCK)
var/block = pick(bad_blocks)
M.dna.SetSEState(block, 1)
// Give Random Good Mutation to M
/proc/randmutg(var/mob/living/M)
if(!M) return
M.dna.check_integrity()
var/block = pick(HULKBLOCK,XRAYBLOCK,FIREBLOCK,COLDBLOCK,TELEBLOCK,NOBREATHBLOCK,REMOTEVIEWBLOCK,REGENERATEBLOCK,INCREASERUNBLOCK,REMOTETALKBLOCK,MORPHBLOCK,NOPRINTSBLOCK,SHOCKIMMUNITYBLOCK,SMALLSIZEBLOCK)
var/block = pick(good_blocks)
M.dna.SetSEState(block, 1)
// Random Appearance Mutation
+33 -29
View File
@@ -1,9 +1,13 @@
/proc/getAssignedBlock(var/name,var/list/blocksLeft, var/activity_bounds=DNA_DEFAULT_BOUNDS)
/proc/getAssignedBlock(var/name,var/list/blocksLeft, var/activity_bounds=DNA_DEFAULT_BOUNDS, var/good=0)
if(blocksLeft.len==0)
warning("[name]: No more blocks left to assign!")
return 0
var/assigned = pick(blocksLeft)
blocksLeft.Remove(assigned)
if(good)
good_blocks += assigned
else
bad_blocks += assigned
assigned_blocks[assigned]=name
dna_activity_bounds[assigned]=activity_bounds
//Debug message_admins("[name] assigned to block #[assigned].")
@@ -32,10 +36,10 @@
// Standard muts
BLINDBLOCK = getAssignedBlock("BLIND", numsToAssign)
DEAFBLOCK = getAssignedBlock("DEAF", numsToAssign)
HULKBLOCK = getAssignedBlock("HULK", numsToAssign, DNA_HARD_BOUNDS)
TELEBLOCK = getAssignedBlock("TELE", numsToAssign, DNA_HARD_BOUNDS)
FIREBLOCK = getAssignedBlock("FIRE", numsToAssign, DNA_HARDER_BOUNDS)
XRAYBLOCK = getAssignedBlock("XRAY", numsToAssign, DNA_HARDER_BOUNDS)
HULKBLOCK = getAssignedBlock("HULK", numsToAssign, DNA_HARD_BOUNDS, good=1)
TELEBLOCK = getAssignedBlock("TELE", numsToAssign, DNA_HARD_BOUNDS, good=1)
FIREBLOCK = getAssignedBlock("FIRE", numsToAssign, DNA_HARDER_BOUNDS, good=1)
XRAYBLOCK = getAssignedBlock("XRAY", numsToAssign, DNA_HARDER_BOUNDS, good=1)
CLUMSYBLOCK = getAssignedBlock("CLUMSY", numsToAssign)
FAKEBLOCK = getAssignedBlock("FAKE", numsToAssign)
COUGHBLOCK = getAssignedBlock("COUGH", numsToAssign)
@@ -46,17 +50,17 @@
// Bay muts
HEADACHEBLOCK = getAssignedBlock("HEADACHE", numsToAssign)
NOBREATHBLOCK = getAssignedBlock("NOBREATH", numsToAssign, DNA_HARD_BOUNDS)
REMOTEVIEWBLOCK = getAssignedBlock("REMOTEVIEW", numsToAssign, DNA_HARDER_BOUNDS)
REGENERATEBLOCK = getAssignedBlock("REGENERATE", numsToAssign, DNA_HARDER_BOUNDS)
INCREASERUNBLOCK = getAssignedBlock("INCREASERUN", numsToAssign, DNA_HARDER_BOUNDS)
REMOTETALKBLOCK = getAssignedBlock("REMOTETALK", numsToAssign, DNA_HARDER_BOUNDS)
MORPHBLOCK = getAssignedBlock("MORPH", numsToAssign, DNA_HARDER_BOUNDS)
COLDBLOCK = getAssignedBlock("COLD", numsToAssign)
NOBREATHBLOCK = getAssignedBlock("NOBREATH", numsToAssign, DNA_HARD_BOUNDS, good=1)
REMOTEVIEWBLOCK = getAssignedBlock("REMOTEVIEW", numsToAssign, DNA_HARDER_BOUNDS, good=1)
REGENERATEBLOCK = getAssignedBlock("REGENERATE", numsToAssign, DNA_HARDER_BOUNDS, good=1)
INCREASERUNBLOCK = getAssignedBlock("INCREASERUN", numsToAssign, DNA_HARDER_BOUNDS, good=1)
REMOTETALKBLOCK = getAssignedBlock("REMOTETALK", numsToAssign, DNA_HARDER_BOUNDS, good=1)
MORPHBLOCK = getAssignedBlock("MORPH", numsToAssign, DNA_HARDER_BOUNDS, good=1)
COLDBLOCK = getAssignedBlock("COLD", numsToAssign, good=1)
HALLUCINATIONBLOCK = getAssignedBlock("HALLUCINATION", numsToAssign)
NOPRINTSBLOCK = getAssignedBlock("NOPRINTS", numsToAssign, DNA_HARD_BOUNDS)
SHOCKIMMUNITYBLOCK = getAssignedBlock("SHOCKIMMUNITY", numsToAssign)
SMALLSIZEBLOCK = getAssignedBlock("SMALLSIZE", numsToAssign, DNA_HARD_BOUNDS)
NOPRINTSBLOCK = getAssignedBlock("NOPRINTS", numsToAssign, DNA_HARD_BOUNDS, good=1)
SHOCKIMMUNITYBLOCK = getAssignedBlock("SHOCKIMMUNITY", numsToAssign, good=1)
SMALLSIZEBLOCK = getAssignedBlock("SMALLSIZE", numsToAssign, DNA_HARD_BOUNDS, good=1)
//
// Goon muts
@@ -70,23 +74,23 @@
CHAVBLOCK = getAssignedBlock("CHAV", numsToAssign)
SWEDEBLOCK = getAssignedBlock("SWEDE", numsToAssign)
SCRAMBLEBLOCK = getAssignedBlock("SCRAMBLE", numsToAssign)
TOXICFARTBLOCK = getAssignedBlock("TOXICFART", numsToAssign)
STRONGBLOCK = getAssignedBlock("STRONG", numsToAssign)
TOXICFARTBLOCK = getAssignedBlock("TOXICFART", numsToAssign, good=1)
STRONGBLOCK = getAssignedBlock("STRONG", numsToAssign, good=1)
HORNSBLOCK = getAssignedBlock("HORNS", numsToAssign)
// Powers
SOBERBLOCK = getAssignedBlock("SOBER", numsToAssign)
PSYRESISTBLOCK = getAssignedBlock("PSYRESIST", numsToAssign, DNA_HARD_BOUNDS)
SHADOWBLOCK = getAssignedBlock("SHADOW", numsToAssign, DNA_HARDER_BOUNDS)
CHAMELEONBLOCK = getAssignedBlock("CHAMELEON", numsToAssign, DNA_HARDER_BOUNDS)
CRYOBLOCK = getAssignedBlock("CRYO", numsToAssign, DNA_HARD_BOUNDS)
EATBLOCK = getAssignedBlock("EAT", numsToAssign, DNA_HARD_BOUNDS)
JUMPBLOCK = getAssignedBlock("JUMP", numsToAssign, DNA_HARD_BOUNDS)
MELTBLOCK = getAssignedBlock("MELT", numsToAssign)
IMMOLATEBLOCK = getAssignedBlock("IMMOLATE", numsToAssign)
EMPATHBLOCK = getAssignedBlock("EMPATH", numsToAssign, DNA_HARD_BOUNDS)
SUPERFARTBLOCK = getAssignedBlock("SUPERFART", numsToAssign, DNA_HARDER_BOUNDS)
POLYMORPHBLOCK = getAssignedBlock("POLYMORPH", numsToAssign, DNA_HARDER_BOUNDS)
SOBERBLOCK = getAssignedBlock("SOBER", numsToAssign, good=1)
PSYRESISTBLOCK = getAssignedBlock("PSYRESIST", numsToAssign, DNA_HARD_BOUNDS, good=1)
SHADOWBLOCK = getAssignedBlock("SHADOW", numsToAssign, DNA_HARDER_BOUNDS, good=1)
CHAMELEONBLOCK = getAssignedBlock("CHAMELEON", numsToAssign, DNA_HARDER_BOUNDS, good=1)
CRYOBLOCK = getAssignedBlock("CRYO", numsToAssign, DNA_HARD_BOUNDS, good=1)
EATBLOCK = getAssignedBlock("EAT", numsToAssign, DNA_HARD_BOUNDS, good=1)
JUMPBLOCK = getAssignedBlock("JUMP", numsToAssign, DNA_HARD_BOUNDS, good=1)
MELTBLOCK = getAssignedBlock("MELT", numsToAssign, good=1)
IMMOLATEBLOCK = getAssignedBlock("IMMOLATE", numsToAssign, good=1)
EMPATHBLOCK = getAssignedBlock("EMPATH", numsToAssign, DNA_HARD_BOUNDS, good=1)
SUPERFARTBLOCK = getAssignedBlock("SUPERFART", numsToAssign, DNA_HARDER_BOUNDS, good=1)
POLYMORPHBLOCK = getAssignedBlock("POLYMORPH", numsToAssign, DNA_HARDER_BOUNDS, good=1)
//
// Static Blocks