ID:1119512
 
Keywords: datums, teams, vars
(See the best response by Jemai1.)
Code:
var/global
teams
red_team/r_team = new
blue_team/b_team = new
mob
var
teams/team = null //this is the var i am trying to access

player
parent_type = /mob
New()
..()

proc
AUTO_PICK() //picks at interface
if(r_team.members.len==b_team.members.len) //if even teams, rand pick
var/teams/n = pick(r_team,b_team)
n.ADD_MEMBER(src)
return
if(r_team.members.len>b_team.members.len) b_team.ADD_MEMBER(src)
else r_team.ADD_MEMBER(src)

//////////////////////////////
teams
var
list
members = list()
myhud = list()
hud_score = list()
score = 0
name = null
color = null

turf/spawn_point = null

red_team
name = "Red Team"
color = "#ff0000"
UPDATE_SCORE(usr)
var/list/new_score = hud_score
hud_score = SET_NUMBER_SMALL(score,2,4,9,1)
for(var/player/p in world)
p.client.screen-=new_score
p.client.screen+=hud_score

blue_team
name = "Blue Team"
color = "#0000ff"
UPDATE_SCORE(src)
var/list/new_score = hud_score
hud_score = SET_NUMBER_SMALL(score,2,4,7,8)
for(var/player/p in world)
p.client.screen-=new_score
p.client.screen+=hud_score
proc
ADD_MEMBER(player/p)
members.Add(p)
p.team = src // <-- cannot reference "team" from outside datum
world << "p.team = [p.team]"
RESPAWN(p)
members << "<font color=[color]>[p] has joined the [name]. src = [src]!</font>"

REMOVE_MEMBER(player/p)
members.Remove(p)
p.team=null
members << "<font color=[color]>[p] has left the [name]!</font>"
return content_list


Problem description:
For some strange reason I am unable to use the "player.team" variable from outside the Team datum. It's as if the data just disappears.

Best response
Please make sure you didn't redefine the parent_type of your /player datum somewhere else.

PS: It is weird to have usr and src as parameters in your UPDATE_SCORE proc.
var/global
teams
red_team/r_team = null
blue_team/b_team = null

World/New()
..()
r_team = new()
b_team = new()
That bit is fine, as Hulio did it.
Thanks guys. It definitely was a /player issue. I traced things back to this function. The team datum was taking an older version of /player rather then the new /player I just created.

Before (bad) :
        play_game()
set
hidden = TRUE
instant = TRUE

world << "play game test"
var/selected = params2list(winget(usr, "AWarrior;LTamer;Rhino;redteam;blueteam;yellowteam;autoteam", "is-checked"))
var/player/playerMob = null
src.toggle_class(src)
if(selected["AWarrior.is-checked"] == "true") playerMob = new /player/antelope_warrior
if(selected["LTamer.is-checked"] == "true") playerMob = new /player/lion_tamer
if(selected["Rhino.is-checked"] == "true") class = "Rhino"
if(selected["redteam.is-checked"] == "true") r_team.ADD_MEMBER(usr)
if(selected["blueteam.is-checked"] == "true") b_team.ADD_MEMBER(usr)
if(selected["yellowteam.is-checked"] == "true") y_team.ADD_MEMBER(usr)
if(selected["autoteam.is-checked"] == "true") AUTO_PICK()
world << "play game:::::: usr.team = [usr.team]"
client.mob = playerMob
world << "play game:::::: playerMob.team = [playerMob.team]"
playerMob.loc = locate(6,32,1)
world << "appear!"

After (working) :
        play_game()
set
hidden = TRUE
instant = TRUE

world << "play game test"
var/selected = params2list(winget(usr, "AWarrior;LTamer;Rhino;redteam;blueteam;yellowteam;autoteam", "is-checked"))
var/player/playerMob = null
src.toggle_class(src)
if(selected["AWarrior.is-checked"] == "true") playerMob = new /player/antelope_warrior
if(selected["LTamer.is-checked"] == "true") playerMob = new /player/lion_tamer
if(selected["Rhino.is-checked"] == "true") class = "Rhino"
if(selected["redteam.is-checked"] == "true") r_team.ADD_MEMBER(playerMob)
if(selected["blueteam.is-checked"] == "true") b_team.ADD_MEMBER(playerMob)
if(selected["yellowteam.is-checked"] == "true") y_team.ADD_MEMBER(playerMob)
if(selected["autoteam.is-checked"] == "true") AUTO_PICK(playerMob)
world << "play game:::::: usr.team = [usr.team]"
client.mob = playerMob
world << "play game:::::: playerMob.team = [playerMob.team]"
playerMob.loc = locate(6,32,1)
world << "appear!"