school-game/godot/Pupil.gd

147 lines
4.5 KiB
GDScript

extends Node
@onready var game_time = get_node("/root/GameTimer")
@onready var player_vars = get_node("/root/PlayerVariables")
@onready var name_gen = get_node("/root/NameGenerator")
@onready var registers = get_node("/root/Registers")
@onready var pupil_manager = get_node("/root/Main/Pupils")
var pupil_neg_chance : int
var pupil_id : int
var pupil_first_name : String
var pupil_last_name : String
var pupil_full_name : String
var pupil_gender : bool
var pupil_achievement : int
var pupil_enjoyment : int
var pupil_wellbeing : int
var pupil_report_card : int
var pupil_year_group : int
var pupil_disorder : int
var pupil_diagnosed : bool
var pupil_in_game : int # The day ticker for how long the pupil was in the school
# Money related variables
var pupil_income : float # Both dailies added together
var pupil_daily_income : float # Daily income from Pupil Fee
var pupil_state_income : float # Daily income from State Funding
# For the portrait generator
var pupil_face : int
var pupil_eyes : int
var pupil_hair : int
var pupil_shirt : int
func _ready():
randomize()
pupil_neg_chance = (randi() % 20) + 1
game_time.connect("year_heartbeat", Callable(self, "pupil_on_year_heartbeat"))
game_time.connect("month_heartbeat", Callable(self, "pupil_on_month_heartbeat"))
game_time.connect("heartbeat", Callable(self, "pupil_on_heartbeat"))
player_vars.pupil_baseid += 1
pupil_gender = (randi() & 1)
randomize()
pupil_last_name = name_gen.last_name[randi() % name_gen.last_name.size()]
randomize()
if pupil_gender == true:
pupil_first_name = name_gen.boy_first_name[randi() % name_gen.boy_first_name.size()]
if pupil_gender == false:
pupil_first_name = name_gen.girl_first_name[randi() % name_gen.girl_first_name.size()]
pupil_id = player_vars.pupil_baseid
pupil_full_name = pupil_first_name + " " + pupil_last_name
registers.PupilRegister.append(pupil_full_name)
decide_year_group()
# SEN Need
randomize()
if pupil_neg_chance == 7:
pupil_disorder = randi() % 8
func decide_year_group():
if pupil_manager.year8_pop < pupil_manager.year1_max_pop:
pupil_year_group = 8
pupil_manager.year8_pop += 1
elif pupil_manager.year7_pop < pupil_manager.year2_max_pop:
pupil_year_group = 7
pupil_manager.year7_pop += 1
elif pupil_manager.year6_pop < pupil_manager.year3_max_pop:
pupil_year_group = 6
pupil_manager.year6_pop += 1
elif pupil_manager.year5_pop < pupil_manager.year4_max_pop:
pupil_year_group = 5
pupil_manager.year5_pop += 1
elif pupil_manager.year4_pop < pupil_manager.year5_max_pop:
pupil_year_group = 4
pupil_manager.year4_pop += 1
elif pupil_manager.year3_pop < pupil_manager.year6_max_pop:
pupil_year_group = 3
pupil_manager.year3_pop += 1
elif pupil_manager.year2_pop < pupil_manager.year7_max_pop:
pupil_year_group = 2
pupil_manager.year2_pop += 1
elif pupil_manager.year1_pop < pupil_manager.year8_max_pop:
pupil_year_group = 1
pupil_manager.year1_pop += 1
# pupil_year_group = (randi() % 8) + 1
func pupil_on_too_many():
if pupil_year_group == 1: pupil_manager.year1_pop -= 1
if pupil_year_group == 2: pupil_manager.year1_pop -= 2
if pupil_year_group == 3: pupil_manager.year1_pop -= 3
if pupil_year_group == 4: pupil_manager.year1_pop -= 4
if pupil_year_group == 5: pupil_manager.year1_pop -= 5
if pupil_year_group == 6: pupil_manager.year1_pop -= 6
if pupil_year_group == 7: pupil_manager.year1_pop -= 7
if pupil_year_group == 8: pupil_manager.year1_pop -= 8
registers.PupilRegister.remove(pupil_full_name)
queue_free()
func pupil_on_year_heartbeat():
pupil_year_group += 1
if pupil_year_group == 2:
pupil_manager.year1_pop -= 1
pupil_manager.year2_pop += 1
if pupil_year_group == 3:
pupil_manager.year2_pop -= 1
pupil_manager.year3_pop += 1
if pupil_year_group == 4:
pupil_manager.year3_pop -= 1
pupil_manager.year4_pop += 1
if pupil_year_group == 5:
pupil_manager.year4_pop -= 1
pupil_manager.year5_pop += 1
if pupil_year_group == 6:
pupil_manager.year5_pop -= 1
pupil_manager.year6_pop += 1
if pupil_year_group == 7:
pupil_manager.year6_pop -= 1
pupil_manager.year7_pop += 1
if pupil_year_group == 8:
pupil_manager.year7_pop -= 1
pupil_manager.year8_pop += 1
if pupil_year_group == 9:
pupil_manager.year8_pop -= 1
queue_free()
func pupil_on_month_heartbeat():
# Too many pupils
if player_vars.max_pupils < player_vars.pupil_pop:
pupil_on_too_many()
func pupil_on_heartbeat():
pupil_in_game += 1
player_vars.pupils_income += (player_vars.pupil_fee / 20) + (player_vars.pupil_funding / 20)
# PupilTracker stuff
pupil_manager.pa_pool += 1
pupil_manager.pe_pool += 1
pupil_manager.pw_pool += 1