Files
seeding-planets/entities/plants/scripts/plant_mutation.gd
Zacharie Guet 7b09f2ba7c Dev de la démo
* Modification de l'apparence de l'UI des dialogues
* Changement de l'ordre de déblocage des mutations
* Ajout d'une confirmation pour l'abandon
* Ajout de la scène de fin avec la base Boréa, en tant que fin de démo
* Modification des icône de durée de vie, temps de pousse, et de mort
* Ajout d'un icône au dessus du joueur quand il n'a plus d'énergie
* Amélioration des dialogues du jeu
* Changement du modèle du téléphone
* Ajout de cellule d'énergie et de cellule de talion trouvable sur la carte
* Il est à nouveau possible de se recharger après la fin d'une région
* Buff des mutations ancien sociale et solide
* Modification de la mutation fertile (ne donne de gain de graine qu'à la maturation)
* Ajout d'une récupération automatique des graines
* Ajout de deux cartons de tutoriel ainsi qu'une option pour les revoir dans l'aide de jeu
* Amélioration générale du tutoriel
* Ajout d'un écran titre digne de ce nom
* Lors de l'arrivée à destination, ne téléporte plus le joueur sur une map vide, mais directement dans les lieux de cinématique
* Ajout graphique de plus de pattern de mousse et de roche
* Le talion apparait maintenant sur toute la carte
* La roche peut désormais apparaitre sur la zone de départ
* Ajout dud modificateur de région Canyon
* Equilibrage général
* Fix de bugs en tout genre
2026-05-28 10:18:36 +02:00

131 lines
2.9 KiB
GDScript

@abstract
extends Resource
class_name PlantMutation
const MAX_RARITY = 6
@export var level: int = 1
var id: String: get = get_mutation_id
var name: String: get = get_mutation_name
func _init(_level: int = 1):
level = _level
func get_icon() -> Texture:
return preload("res://common/icons/dna.svg")
func get_base_rarity() -> int:
return 0
@abstract func get_mutation_id() -> String
func get_mutation_name() -> String:
return tr(get_mutation_id())
@abstract func get_mutation_description() -> String
func mutate_plant_data(_plant_data: PlantData):
pass
func mutate_score(_plant_data: PlantData, score: int) -> int:
return score
func mutate_score_multiplier(_plant_data: PlantData, multiplier: float) -> float:
return multiplier
func mutate_lifetime(_plant_data: PlantData, lifetime: int) -> int:
return lifetime
func mutate_growing_time(_plant_data: PlantData, growing_time: int) -> int:
return growing_time
func mutate_seed_number(_plant_data: PlantData, seed_number: int) -> int:
return seed_number
func mutate_seed_random_loose(_plant_data: PlantData, seed_random_loose) -> int:
return seed_random_loose
func mutate_lifetime_buff(_plant_data: PlantData, lifetime_buff : int) -> int:
return lifetime_buff
func mutate_seed_buff(_plant_data: PlantData, seed_buff : int) -> int:
return seed_buff
func mutate_score_buff(_plant_data: PlantData, score_buff : int) -> int:
return score_buff
func _start_planted_effect(_plant: Plant):
pass
func _start_day_effect(_plant: Plant):
pass
func _start_maturation_effect(_plant: Plant):
pass
func _start_dead_effect(_plant: Plant):
pass
func _start_harvested_effect(_plant: Plant):
pass
func get_level_for_rarity(rarity: int) -> int:
return rarity - get_base_rarity() + 1
func get_rarity() -> int:
return get_base_rarity() + level - 1
func card_info() -> CardInfo:
var info = CardInfo.new(
get_mutation_name(),
tr("MUTATION")
)
info.important_stat_icon = get_icon()
var desc_section := CardSectionInfo.new(
tr("DESCRIPTION"),
get_mutation_description(),
)
desc_section.title_icon = InspectableEntity.DESC_ICON
info.sections.append(desc_section)
return info
func card_section() -> CardSectionInfo:
var section = CardSectionInfo.new(
get_mutation_name() + (" %d" % level if level > 1 else ""),
get_mutation_description()
)
section.color = PlantMutation.get_rarity_color(get_rarity())
section.title_icon = get_icon()
return section
static func get_rarity_text(rarity) -> String:
var rarity_text: Array[String] = [
"COMMON",
"RARE",
"VERY_RARE",
"IMPOSSIBLE",
"ABSURD",
]
if rarity < len(rarity_text):
return rarity_text[rarity]
else:
return rarity_text[len(rarity_text) - 1]
static func get_rarity_color(rarity: int) -> Color:
var rarity_colors: Array[Color] = [
Color("25c147"),
Color("00c6ca"),
Color("8b2dff"),
Color("ff006e"),
Color("ff5427"),
Color("FFA617"),
]
return rarity_colors[min(rarity, len(rarity_colors) - 1)]