Compare commits

...

5 commits

Author SHA1 Message Date
TheThomaas 00bfe60c32 Allow riding on pokemons 2026-10-12 10:53:50 +02:00
TheThomaas 59b0c403ea MountRegistry is now an autoload 2026-10-12 10:53:35 +02:00
TheThomaas a6c0b9b43f Create Venusaur mount profile 2026-10-12 10:53:20 +02:00
TheThomaas 46b97baf92 Create pokemon debug menu 2026-10-12 10:30:15 +02:00
TheThomaas 0f2a3fc9fa Import venusaur 2026-10-12 10:30:02 +02:00
32 changed files with 2679 additions and 18 deletions

View file

@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="MountProfile" format=3 uid="uid://bpihsc6nvxvs0"]
[ext_resource type="Script" uid="uid://chdpnt5c4bel3" path="res://game/mount/mount_profile.gd" id="1_80e26"]
[ext_resource type="Resource" uid="uid://ykgkoo67gpr5" path="res://data/pokeapi/pokemon/0003_venusaur.tres" id="2_ubqjg"]
[resource]
script = ExtResource("1_80e26")
species = ExtResource("2_ubqjg")
metadata/_custom_type_script = "uid://chdpnt5c4bel3"

Binary file not shown.

View file

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://kajy4yhr6tcm"
path="res://.godot/imported/0003_venusaur.ogg-f276f4b637f6a78c8a94a9d15dffde5a.oggvorbisstr"
[deps]
source_file="res://data/pokeapi/cries/0003_venusaur.ogg"
dest_files=["res://.godot/imported/0003_venusaur.ogg-f276f4b637f6a78c8a94a9d15dffde5a.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View file

@ -0,0 +1,18 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://bghy1qjvaeaq8"
valid=false
[deps]
source_file="res://data/pokeapi/cries/10033_venusaur-mega.ogg"
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View file

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://omc82yw76oug"
path="res://.godot/imported/10195_venusaur-gmax.ogg-cb3b71681e896ddaac026a4b6caa57bb.oggvorbisstr"
[deps]
source_file="res://data/pokeapi/cries/10195_venusaur-gmax.ogg"
dest_files=["res://.godot/imported/10195_venusaur-gmax.ogg-cb3b71681e896ddaac026a4b6caa57bb.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View file

@ -0,0 +1,39 @@
[gd_resource type="Resource" script_class="EvolutionNode" format=3 uid="uid://do7jebvetd8cb"]
[ext_resource type="Script" uid="uid://bcfihr0vig1sm" path="res://addons/pokeapi_importer/data/evolution_edge.gd" id="1_s7vwr"]
[ext_resource type="Script" uid="uid://81p3aw271qyx" path="res://addons/pokeapi_importer/data/evolution_condition.gd" id="2_4e68g"]
[ext_resource type="Script" uid="uid://b364h4i46hwo1" path="res://addons/pokeapi_importer/data/evolution_node.gd" id="3_xb525"]
[sub_resource type="Resource" id="Resource_c8x75"]
script = ExtResource("2_4e68g")
trigger = "level-up"
min_level = 16
[sub_resource type="Resource" id="Resource_nlw71"]
script = ExtResource("2_4e68g")
trigger = "level-up"
min_level = 32
[sub_resource type="Resource" id="Resource_qogyd"]
script = ExtResource("3_xb525")
species_name = "venusaur"
[sub_resource type="Resource" id="Resource_5a814"]
script = ExtResource("1_s7vwr")
target = SubResource("Resource_qogyd")
conditions = Array[ExtResource("2_4e68g")]([SubResource("Resource_nlw71")])
[sub_resource type="Resource" id="Resource_bmsyw"]
script = ExtResource("3_xb525")
species_name = "ivysaur"
evolves_to = Array[ExtResource("1_s7vwr")]([SubResource("Resource_5a814")])
[sub_resource type="Resource" id="Resource_o4mni"]
script = ExtResource("1_s7vwr")
target = SubResource("Resource_bmsyw")
conditions = Array[ExtResource("2_4e68g")]([SubResource("Resource_c8x75")])
[resource]
script = ExtResource("3_xb525")
species_name = "bulbasaur"
evolves_to = Array[ExtResource("1_s7vwr")]([SubResource("Resource_o4mni")])

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,591 @@
[gd_resource type="Resource" script_class="PokemonData" format=3 uid="uid://dnojhau21w5bd"]
[ext_resource type="Script" uid="uid://cpejtpjkcrvfy" path="res://addons/pokeapi_importer/data/pokemon_ability.gd" id="1_c1xmq"]
[ext_resource type="Resource" uid="uid://cru4svckj5xpc" path="res://data/pokeapi/abilities/thick-fat.tres" id="2_78sgd"]
[ext_resource type="Script" uid="uid://bcfihr0vig1sm" path="res://addons/pokeapi_importer/data/evolution_edge.gd" id="3_ijrr7"]
[ext_resource type="Script" uid="uid://81p3aw271qyx" path="res://addons/pokeapi_importer/data/evolution_condition.gd" id="4_i0oaq"]
[ext_resource type="Script" uid="uid://b364h4i46hwo1" path="res://addons/pokeapi_importer/data/evolution_node.gd" id="5_3eomd"]
[ext_resource type="Script" uid="uid://fmgdjhptqo0d" path="res://addons/pokeapi_importer/data/pokemon_form.gd" id="6_cq6nj"]
[ext_resource type="Script" uid="uid://dxpd7ihc8eew5" path="res://addons/pokeapi_importer/data/learned_move.gd" id="7_2mvfb"]
[ext_resource type="Resource" uid="uid://ctfy1276ltl51" path="res://data/pokeapi/moves/seed-bomb.tres" id="8_c25k3"]
[ext_resource type="Resource" uid="uid://cleqeq57htu1t" path="res://data/pokeapi/moves/poison-jab.tres" id="9_hkxfg"]
[ext_resource type="Resource" uid="uid://cuyrd0yc8oeug" path="res://data/pokeapi/moves/worry-seed.tres" id="10_78j6o"]
[ext_resource type="Resource" uid="uid://ctbij6a85pk1n" path="res://data/pokeapi/moves/frenzy-plant.tres" id="11_5gfct"]
[ext_resource type="Resource" uid="uid://cgiw8hrvruw6i" path="res://data/pokeapi/moves/block.tres" id="12_25hdl"]
[ext_resource type="Resource" uid="uid://7xf7ewhe7osg" path="res://data/pokeapi/moves/bullet-seed.tres" id="13_grmg5"]
[ext_resource type="Resource" uid="uid://jc1xlfl7b51f" path="res://data/pokeapi/moves/weather-ball.tres" id="14_qs857"]
[ext_resource type="Resource" uid="uid://b8wa247rquhrd" path="res://data/pokeapi/moves/secret-power.tres" id="15_jvfae"]
[ext_resource type="Resource" uid="uid://bp00f6ei6s4p8" path="res://data/pokeapi/moves/knock-off.tres" id="16_x47w8"]
[ext_resource type="Resource" uid="uid://bxywa7oko4rs5" path="res://data/pokeapi/moves/ingrain.tres" id="17_lggim"]
[ext_resource type="Resource" uid="uid://dm28ycjmj3e5o" path="res://data/pokeapi/moves/helping-hand.tres" id="18_jspyn"]
[ext_resource type="Resource" uid="uid://cjn37m65bipng" path="res://data/pokeapi/moves/nature-power.tres" id="19_yyc7n"]
[ext_resource type="Resource" uid="uid://cgqalxobpomac" path="res://data/pokeapi/moves/facade.tres" id="20_oehbk"]
[ext_resource type="Resource" uid="uid://doquo2kfba6p3" path="res://data/pokeapi/moves/rock-smash.tres" id="21_gky6c"]
[ext_resource type="Resource" uid="uid://dm0007udwanaq" path="res://data/pokeapi/moves/sunny-day.tres" id="22_k4vlv"]
[ext_resource type="Resource" uid="uid://dpenwas6ucryt" path="res://data/pokeapi/moves/hidden-power.tres" id="23_rmc4j"]
[ext_resource type="Resource" uid="uid://chk8v6el6c03p" path="res://data/pokeapi/moves/synthesis.tres" id="24_4400g"]
[ext_resource type="Resource" uid="uid://deog7g4ud572n" path="res://data/pokeapi/moves/sweet-scent.tres" id="25_hiqqh"]
[ext_resource type="Resource" uid="uid://du6h1xt524lko" path="res://data/pokeapi/moves/safeguard.tres" id="26_r47ei"]
[ext_resource type="Resource" uid="uid://cy5fxe0pjno15" path="res://data/pokeapi/moves/frustration.tres" id="27_gop80"]
[ext_resource type="Resource" uid="uid://c8ckk7mtvj48f" path="res://data/pokeapi/moves/return.tres" id="28_wqveh"]
[ext_resource type="Resource" uid="uid://cf40e7c31hp8e" path="res://data/pokeapi/moves/trailblaze.tres" id="29_aaf87"]
[ext_resource type="Resource" uid="uid://cfdvl3u26etjq" path="res://data/pokeapi/moves/terrain-pulse.tres" id="30_m4cjd"]
[ext_resource type="Resource" uid="uid://cploo0ewbamr8" path="res://data/pokeapi/moves/grassy-glide.tres" id="31_3du0w"]
[ext_resource type="Resource" uid="uid://bub04oxlhsx00" path="res://data/pokeapi/moves/stomping-tantrum.tres" id="32_anlur"]
[ext_resource type="Resource" uid="uid://xbxksihrkcjn" path="res://data/pokeapi/moves/confide.tres" id="33_pyu1q"]
[ext_resource type="Resource" uid="uid://csf8b80ikqys1" path="res://data/pokeapi/moves/grassy-terrain.tres" id="34_eds1k"]
[ext_resource type="Resource" uid="uid://4tnpm85ppb1d" path="res://data/pokeapi/moves/petal-blizzard.tres" id="35_a1mt8"]
[ext_resource type="Resource" uid="uid://cj45kp80b41nu" path="res://data/pokeapi/moves/work-up.tres" id="36_bn6pt"]
[ext_resource type="Resource" uid="uid://573gil8qpabf" path="res://data/pokeapi/moves/bulldoze.tres" id="37_2c6se"]
[ext_resource type="Resource" uid="uid://dnmdlt2smglcf" path="res://data/pokeapi/moves/grass-pledge.tres" id="38_sy5hm"]
[ext_resource type="Resource" uid="uid://bjcpqowj1rixy" path="res://data/pokeapi/moves/echoed-voice.tres" id="39_4n7jc"]
[ext_resource type="Resource" uid="uid://vpopj282g1gm" path="res://data/pokeapi/moves/round.tres" id="40_msli6"]
[ext_resource type="Resource" uid="uid://rfb7c6rkvtfa" path="res://data/pokeapi/moves/acid-spray.tres" id="41_s2edr"]
[ext_resource type="Resource" uid="uid://bcg2vtrddxrwb" path="res://data/pokeapi/moves/sludge-wave.tres" id="42_djxvw"]
[ext_resource type="Resource" uid="uid://cidnvolfop4r" path="res://data/pokeapi/moves/venoshock.tres" id="43_1huo7"]
[ext_resource type="Resource" uid="uid://bs3fkh4ilussn" path="res://data/pokeapi/moves/grass-knot.tres" id="44_rmx7q"]
[ext_resource type="Resource" uid="uid://cn1321iciwnhr" path="res://data/pokeapi/moves/power-whip.tres" id="45_nv575"]
[ext_resource type="Resource" uid="uid://djwedxd5evoq8" path="res://data/pokeapi/moves/leaf-storm.tres" id="46_vw00w"]
[ext_resource type="Resource" uid="uid://bebrkj5urox72" path="res://data/pokeapi/moves/giga-impact.tres" id="47_hk0n7"]
[ext_resource type="Resource" uid="uid://lwgwoj5uc77y" path="res://data/pokeapi/moves/earth-power.tres" id="48_hu5jy"]
[ext_resource type="Resource" uid="uid://b2qjwcep4v6g7" path="res://data/pokeapi/moves/energy-ball.tres" id="49_7tnlo"]
[ext_resource type="Resource" uid="uid://naew6l5ud1f" path="res://data/pokeapi/moves/toxic.tres" id="50_kkm3u"]
[ext_resource type="Resource" uid="uid://cwggxqu074deh" path="res://data/pokeapi/moves/earthquake.tres" id="51_177q1"]
[ext_resource type="Resource" uid="uid://bjqen1whogh1d" path="res://data/pokeapi/moves/petal-dance.tres" id="52_a0pn6"]
[ext_resource type="Resource" uid="uid://ugrxjcurnihw" path="res://data/pokeapi/moves/sleep-powder.tres" id="53_hvlo5"]
[ext_resource type="Resource" uid="uid://ohuqgjew44fr" path="res://data/pokeapi/moves/poison-powder.tres" id="54_rwsb0"]
[ext_resource type="Resource" uid="uid://bt0o5u1pbwrxu" path="res://data/pokeapi/moves/solar-beam.tres" id="55_gsefh"]
[ext_resource type="Resource" uid="uid://cjvqhj2q75l1n" path="res://data/pokeapi/moves/growth.tres" id="56_c7sqp"]
[ext_resource type="Resource" uid="uid://bpppf61ykiinv" path="res://data/pokeapi/moves/leech-seed.tres" id="57_rif3f"]
[ext_resource type="Resource" uid="uid://b7flbp6mpl1w1" path="res://data/pokeapi/moves/mega-drain.tres" id="58_5h5r1"]
[ext_resource type="Resource" uid="uid://bwto83a00ff0b" path="res://data/pokeapi/moves/strength.tres" id="59_y0lgk"]
[ext_resource type="Resource" uid="uid://davhe5r4uecql" path="res://data/pokeapi/moves/hyper-beam.tres" id="60_ovyr0"]
[ext_resource type="Resource" uid="uid://dkj8vehv6l14t" path="res://data/pokeapi/moves/roar.tres" id="61_32fed"]
[ext_resource type="Resource" uid="uid://cb1mf0ckx7b1h" path="res://data/pokeapi/moves/double-edge.tres" id="62_cwmyh"]
[ext_resource type="Resource" uid="uid://8yyxu8knsfbm" path="res://data/pokeapi/moves/body-slam.tres" id="63_u77yc"]
[ext_resource type="Resource" uid="uid://dv2f20drfg17s" path="res://data/pokeapi/moves/headbutt.tres" id="64_s5yc1"]
[ext_resource type="Resource" uid="uid://bt5uh03dntxsn" path="res://data/pokeapi/moves/bind.tres" id="65_osdru"]
[ext_resource type="Resource" uid="uid://5oot8j3sxl7a" path="res://data/pokeapi/moves/cut.tres" id="66_o2fh4"]
[ext_resource type="Resource" uid="uid://ck2g64kskv1an" path="res://data/pokeapi/moves/swords-dance.tres" id="67_0w7mj"]
[ext_resource type="Resource" uid="uid://bgfgvvbpry0vd" path="res://data/pokeapi/moves/sleep-talk.tres" id="68_tpb2b"]
[ext_resource type="Resource" uid="uid://dltc10wjdhhld" path="res://data/pokeapi/moves/attract.tres" id="69_58yrq"]
[ext_resource type="Resource" uid="uid://ba4g48w8bqe8q" path="res://data/pokeapi/moves/swagger.tres" id="70_rc4st"]
[ext_resource type="Resource" uid="uid://cjhd07v8kbv1v" path="res://data/pokeapi/moves/charm.tres" id="71_s2khm"]
[ext_resource type="Resource" uid="uid://bm43df4x55c6r" path="res://data/pokeapi/moves/endure.tres" id="72_bca5u"]
[ext_resource type="Resource" uid="uid://b6xom7dnm2538" path="res://data/pokeapi/moves/giga-drain.tres" id="73_gk2s0"]
[ext_resource type="Resource" uid="uid://doat7fskpkrvs" path="res://data/pokeapi/moves/outrage.tres" id="74_tuqan"]
[ext_resource type="Resource" uid="uid://2mwwcmj4m0w4" path="res://data/pokeapi/moves/sludge-bomb.tres" id="75_bsvyb"]
[ext_resource type="Resource" uid="uid://dncsf3kw16qsp" path="res://data/pokeapi/moves/scary-face.tres" id="76_6glkh"]
[ext_resource type="Resource" uid="uid://dktw6ewuu44qu" path="res://data/pokeapi/moves/protect.tres" id="77_2d8iw"]
[ext_resource type="Resource" uid="uid://bxnk846o6jcg4" path="res://data/pokeapi/moves/curse.tres" id="78_0f20x"]
[ext_resource type="Resource" uid="uid://dg7afm3yoep6e" path="res://data/pokeapi/moves/snore.tres" id="79_53rd8"]
[ext_resource type="Resource" uid="uid://djjl37qgyc2vd" path="res://data/pokeapi/moves/substitute.tres" id="80_y33ux"]
[ext_resource type="Resource" uid="uid://dxhav6cowphxh" path="res://data/pokeapi/moves/rest.tres" id="81_vj1uc"]
[ext_resource type="Resource" uid="uid://bsknvckemeq0t" path="res://data/pokeapi/moves/flash.tres" id="82_cpglo"]
[ext_resource type="Resource" uid="uid://c8d6lbrrbeslt" path="res://data/pokeapi/moves/amnesia.tres" id="83_hae3j"]
[ext_resource type="Resource" uid="uid://dc1lkwjcwajk1" path="res://data/pokeapi/moves/reflect.tres" id="84_pfie0"]
[ext_resource type="Resource" uid="uid://duk4vgcg1ditm" path="res://data/pokeapi/moves/light-screen.tres" id="85_7pfpe"]
[ext_resource type="Resource" uid="uid://dwwyu3s566d3k" path="res://data/pokeapi/moves/double-team.tres" id="86_tr6ti"]
[ext_resource type="Resource" uid="uid://cy3clsvbuqi3h" path="res://data/pokeapi/moves/growl.tres" id="87_nuvmp"]
[ext_resource type="Resource" uid="uid://bcxgovjltjt63" path="res://data/pokeapi/moves/tackle.tres" id="88_ji4va"]
[ext_resource type="Resource" uid="uid://drqhkk7q5d7jr" path="res://data/pokeapi/moves/vine-whip.tres" id="89_l8e70"]
[ext_resource type="Resource" uid="uid://vsxyib4kt382" path="res://data/pokeapi/moves/take-down.tres" id="90_rxm03"]
[ext_resource type="Resource" uid="uid://b31j1tpegk2jb" path="res://data/pokeapi/moves/razor-leaf.tres" id="91_ksb07"]
[ext_resource type="Texture2D" uid="uid://cs7drpafhlnqm" path="res://data/pokeapi/sprites/10033_venusaur-mega.png" id="92_730lx"]
[ext_resource type="Script" uid="uid://cwmxfian0pdjk" path="res://addons/pokeapi_importer/data/pokemon_data.gd" id="93_1ujyj"]
[ext_resource type="Texture2D" uid="uid://bv3ygad4ptmxq" path="res://data/pokeapi/sprites/10033_venusaur-mega_shiny.png" id="94_f8s0m"]
[ext_resource type="Script" uid="uid://cvvmd5x42xk8n" path="res://addons/pokeapi_importer/data/type_data.gd" id="95_5pw3e"]
[ext_resource type="Resource" uid="uid://b5innmgrb00rn" path="res://data/pokeapi/types/grass.tres" id="96_roigw"]
[ext_resource type="Resource" uid="uid://qxfeuyf5roo" path="res://data/pokeapi/types/poison.tres" id="97_mavnd"]
[sub_resource type="Resource" id="Resource_c71sm"]
script = ExtResource("1_c1xmq")
ability = ExtResource("2_78sgd")
[sub_resource type="Resource" id="Resource_c8x75"]
script = ExtResource("4_i0oaq")
trigger = "level-up"
min_level = 16
[sub_resource type="Resource" id="Resource_nlw71"]
script = ExtResource("4_i0oaq")
trigger = "level-up"
min_level = 32
[sub_resource type="Resource" id="Resource_qogyd"]
script = ExtResource("5_3eomd")
species_name = "venusaur"
[sub_resource type="Resource" id="Resource_5a814"]
script = ExtResource("3_ijrr7")
target = SubResource("Resource_qogyd")
conditions = Array[ExtResource("4_i0oaq")]([SubResource("Resource_nlw71")])
[sub_resource type="Resource" id="Resource_bmsyw"]
script = ExtResource("5_3eomd")
species_name = "ivysaur"
evolves_to = Array[ExtResource("3_ijrr7")]([SubResource("Resource_5a814")])
[sub_resource type="Resource" id="Resource_o4mni"]
script = ExtResource("3_ijrr7")
target = SubResource("Resource_bmsyw")
conditions = Array[ExtResource("4_i0oaq")]([SubResource("Resource_c8x75")])
[sub_resource type="Resource" id="Resource_81m1y"]
script = ExtResource("5_3eomd")
species_name = "bulbasaur"
evolves_to = Array[ExtResource("3_ijrr7")]([SubResource("Resource_o4mni")])
[sub_resource type="Resource" id="Resource_283t3"]
script = ExtResource("7_2mvfb")
move = ExtResource("8_c25k3")
method = "train"
[sub_resource type="Resource" id="Resource_rk3tl"]
script = ExtResource("7_2mvfb")
move = ExtResource("9_hkxfg")
method = "train"
[sub_resource type="Resource" id="Resource_777lq"]
script = ExtResource("7_2mvfb")
move = ExtResource("10_78j6o")
method = "train"
[sub_resource type="Resource" id="Resource_xcun5"]
script = ExtResource("7_2mvfb")
move = ExtResource("11_5gfct")
method = "train"
[sub_resource type="Resource" id="Resource_3rrhv"]
script = ExtResource("7_2mvfb")
move = ExtResource("12_25hdl")
method = "tutor"
[sub_resource type="Resource" id="Resource_r8e40"]
script = ExtResource("7_2mvfb")
move = ExtResource("13_grmg5")
method = "train"
[sub_resource type="Resource" id="Resource_rotks"]
script = ExtResource("7_2mvfb")
move = ExtResource("14_qs857")
method = "train"
[sub_resource type="Resource" id="Resource_nj0vp"]
script = ExtResource("7_2mvfb")
move = ExtResource("15_jvfae")
method = "machine"
[sub_resource type="Resource" id="Resource_ftieh"]
script = ExtResource("7_2mvfb")
move = ExtResource("16_x47w8")
method = "train"
[sub_resource type="Resource" id="Resource_mxjb2"]
script = ExtResource("7_2mvfb")
move = ExtResource("17_lggim")
method = "train"
[sub_resource type="Resource" id="Resource_ltax6"]
script = ExtResource("7_2mvfb")
move = ExtResource("18_jspyn")
method = "train"
[sub_resource type="Resource" id="Resource_4sg73"]
script = ExtResource("7_2mvfb")
move = ExtResource("19_yyc7n")
method = "machine"
[sub_resource type="Resource" id="Resource_xo7df"]
script = ExtResource("7_2mvfb")
move = ExtResource("20_oehbk")
method = "train"
[sub_resource type="Resource" id="Resource_fm1w1"]
script = ExtResource("7_2mvfb")
move = ExtResource("21_gky6c")
method = "machine"
[sub_resource type="Resource" id="Resource_4bpg4"]
script = ExtResource("7_2mvfb")
move = ExtResource("22_k4vlv")
method = "train"
[sub_resource type="Resource" id="Resource_cbvem"]
script = ExtResource("7_2mvfb")
move = ExtResource("23_rmc4j")
method = "machine"
[sub_resource type="Resource" id="Resource_dpt3l"]
script = ExtResource("7_2mvfb")
move = ExtResource("24_4400g")
method = "train"
[sub_resource type="Resource" id="Resource_3l8m1"]
script = ExtResource("7_2mvfb")
move = ExtResource("25_hiqqh")
method = "train"
[sub_resource type="Resource" id="Resource_r3wbg"]
script = ExtResource("7_2mvfb")
move = ExtResource("26_r47ei")
method = "machine"
[sub_resource type="Resource" id="Resource_1yhlo"]
script = ExtResource("7_2mvfb")
move = ExtResource("27_gop80")
method = "machine"
[sub_resource type="Resource" id="Resource_8rcjk"]
script = ExtResource("7_2mvfb")
move = ExtResource("28_wqveh")
method = "machine"
[sub_resource type="Resource" id="Resource_7eatg"]
script = ExtResource("7_2mvfb")
move = ExtResource("29_aaf87")
method = "train"
[sub_resource type="Resource" id="Resource_o36mi"]
script = ExtResource("7_2mvfb")
move = ExtResource("30_m4cjd")
method = "train"
[sub_resource type="Resource" id="Resource_k4e4p"]
script = ExtResource("7_2mvfb")
move = ExtResource("31_3du0w")
method = "train"
[sub_resource type="Resource" id="Resource_kiqmp"]
script = ExtResource("7_2mvfb")
move = ExtResource("32_anlur")
method = "train"
[sub_resource type="Resource" id="Resource_nsejl"]
script = ExtResource("7_2mvfb")
move = ExtResource("33_pyu1q")
method = "machine"
[sub_resource type="Resource" id="Resource_rbi63"]
script = ExtResource("7_2mvfb")
move = ExtResource("34_eds1k")
method = "train"
[sub_resource type="Resource" id="Resource_rai0h"]
script = ExtResource("7_2mvfb")
move = ExtResource("35_a1mt8")
method = "train"
[sub_resource type="Resource" id="Resource_qu4en"]
script = ExtResource("7_2mvfb")
move = ExtResource("36_bn6pt")
method = "machine"
[sub_resource type="Resource" id="Resource_50ye6"]
script = ExtResource("7_2mvfb")
move = ExtResource("37_2c6se")
method = "train"
[sub_resource type="Resource" id="Resource_8k8cu"]
script = ExtResource("7_2mvfb")
move = ExtResource("38_sy5hm")
method = "tutor"
[sub_resource type="Resource" id="Resource_v5sa1"]
script = ExtResource("7_2mvfb")
move = ExtResource("39_4n7jc")
method = "machine"
[sub_resource type="Resource" id="Resource_urlc8"]
script = ExtResource("7_2mvfb")
move = ExtResource("40_msli6")
method = "train"
[sub_resource type="Resource" id="Resource_hrsce"]
script = ExtResource("7_2mvfb")
move = ExtResource("41_s2edr")
method = "train"
[sub_resource type="Resource" id="Resource_w6pmf"]
script = ExtResource("7_2mvfb")
move = ExtResource("42_djxvw")
method = "train"
[sub_resource type="Resource" id="Resource_kiipx"]
script = ExtResource("7_2mvfb")
move = ExtResource("43_1huo7")
method = "train"
[sub_resource type="Resource" id="Resource_5fefd"]
script = ExtResource("7_2mvfb")
move = ExtResource("44_rmx7q")
method = "train"
[sub_resource type="Resource" id="Resource_ywv12"]
script = ExtResource("7_2mvfb")
move = ExtResource("45_nv575")
method = "train"
[sub_resource type="Resource" id="Resource_psr21"]
script = ExtResource("7_2mvfb")
move = ExtResource("46_vw00w")
method = "train"
[sub_resource type="Resource" id="Resource_ft73j"]
script = ExtResource("7_2mvfb")
move = ExtResource("47_hk0n7")
method = "train"
[sub_resource type="Resource" id="Resource_3lxi1"]
script = ExtResource("7_2mvfb")
move = ExtResource("48_hu5jy")
method = "train"
[sub_resource type="Resource" id="Resource_4avk3"]
script = ExtResource("7_2mvfb")
move = ExtResource("49_7tnlo")
method = "train"
[sub_resource type="Resource" id="Resource_qqpmw"]
script = ExtResource("7_2mvfb")
move = ExtResource("50_kkm3u")
method = "train"
[sub_resource type="Resource" id="Resource_ukr88"]
script = ExtResource("7_2mvfb")
move = ExtResource("51_177q1")
method = "train"
[sub_resource type="Resource" id="Resource_185h4"]
script = ExtResource("7_2mvfb")
move = ExtResource("52_a0pn6")
method = "train"
[sub_resource type="Resource" id="Resource_o05p8"]
script = ExtResource("7_2mvfb")
move = ExtResource("53_hvlo5")
method = "train"
[sub_resource type="Resource" id="Resource_is4k6"]
script = ExtResource("7_2mvfb")
move = ExtResource("54_rwsb0")
method = "train"
[sub_resource type="Resource" id="Resource_yvn34"]
script = ExtResource("7_2mvfb")
move = ExtResource("55_gsefh")
method = "train"
[sub_resource type="Resource" id="Resource_sucy1"]
script = ExtResource("7_2mvfb")
move = ExtResource("56_c7sqp")
method = "train"
[sub_resource type="Resource" id="Resource_upv3w"]
script = ExtResource("7_2mvfb")
move = ExtResource("57_rif3f")
method = "train"
[sub_resource type="Resource" id="Resource_kvu4w"]
script = ExtResource("7_2mvfb")
move = ExtResource("58_5h5r1")
method = "machine"
[sub_resource type="Resource" id="Resource_rdnep"]
script = ExtResource("7_2mvfb")
move = ExtResource("59_y0lgk")
method = "machine"
[sub_resource type="Resource" id="Resource_y4g4g"]
script = ExtResource("7_2mvfb")
move = ExtResource("60_ovyr0")
method = "train"
[sub_resource type="Resource" id="Resource_m0651"]
script = ExtResource("7_2mvfb")
move = ExtResource("61_32fed")
method = "train"
[sub_resource type="Resource" id="Resource_yt6xg"]
script = ExtResource("7_2mvfb")
move = ExtResource("62_cwmyh")
method = "train"
[sub_resource type="Resource" id="Resource_n5wpe"]
script = ExtResource("7_2mvfb")
move = ExtResource("63_u77yc")
method = "train"
[sub_resource type="Resource" id="Resource_mnril"]
script = ExtResource("7_2mvfb")
move = ExtResource("64_s5yc1")
method = "machine"
[sub_resource type="Resource" id="Resource_x1iak"]
script = ExtResource("7_2mvfb")
move = ExtResource("65_osdru")
method = "tutor"
[sub_resource type="Resource" id="Resource_weu1s"]
script = ExtResource("7_2mvfb")
move = ExtResource("66_o2fh4")
method = "machine"
[sub_resource type="Resource" id="Resource_24663"]
script = ExtResource("7_2mvfb")
move = ExtResource("67_0w7mj")
method = "train"
[sub_resource type="Resource" id="Resource_30yst"]
script = ExtResource("7_2mvfb")
move = ExtResource("68_tpb2b")
method = "train"
[sub_resource type="Resource" id="Resource_07b2d"]
script = ExtResource("7_2mvfb")
move = ExtResource("69_58yrq")
method = "machine"
[sub_resource type="Resource" id="Resource_0m58k"]
script = ExtResource("7_2mvfb")
move = ExtResource("70_rc4st")
method = "machine"
[sub_resource type="Resource" id="Resource_k5yp7"]
script = ExtResource("7_2mvfb")
move = ExtResource("71_s2khm")
method = "train"
[sub_resource type="Resource" id="Resource_jixho"]
script = ExtResource("7_2mvfb")
move = ExtResource("72_bca5u")
method = "train"
[sub_resource type="Resource" id="Resource_bcnnu"]
script = ExtResource("7_2mvfb")
move = ExtResource("73_gk2s0")
method = "train"
[sub_resource type="Resource" id="Resource_iwbuc"]
script = ExtResource("7_2mvfb")
move = ExtResource("74_tuqan")
method = "train"
[sub_resource type="Resource" id="Resource_0anyt"]
script = ExtResource("7_2mvfb")
move = ExtResource("75_bsvyb")
method = "train"
[sub_resource type="Resource" id="Resource_kgqk5"]
script = ExtResource("7_2mvfb")
move = ExtResource("76_6glkh")
method = "train"
[sub_resource type="Resource" id="Resource_ynucx"]
script = ExtResource("7_2mvfb")
move = ExtResource("77_2d8iw")
method = "train"
[sub_resource type="Resource" id="Resource_glb4i"]
script = ExtResource("7_2mvfb")
move = ExtResource("78_0f20x")
method = "train"
[sub_resource type="Resource" id="Resource_tui4y"]
script = ExtResource("7_2mvfb")
move = ExtResource("79_53rd8")
method = "train"
[sub_resource type="Resource" id="Resource_4hvii"]
script = ExtResource("7_2mvfb")
move = ExtResource("80_y33ux")
method = "train"
[sub_resource type="Resource" id="Resource_vihns"]
script = ExtResource("7_2mvfb")
move = ExtResource("81_vj1uc")
method = "train"
[sub_resource type="Resource" id="Resource_jumhn"]
script = ExtResource("7_2mvfb")
move = ExtResource("82_cpglo")
method = "machine"
[sub_resource type="Resource" id="Resource_1l6ut"]
script = ExtResource("7_2mvfb")
move = ExtResource("83_hae3j")
method = "train"
[sub_resource type="Resource" id="Resource_ojlp4"]
script = ExtResource("7_2mvfb")
move = ExtResource("84_pfie0")
method = "machine"
[sub_resource type="Resource" id="Resource_3befy"]
script = ExtResource("7_2mvfb")
move = ExtResource("85_7pfpe")
method = "train"
[sub_resource type="Resource" id="Resource_xyny6"]
script = ExtResource("7_2mvfb")
move = ExtResource("86_tr6ti")
method = "machine"
[sub_resource type="Resource" id="Resource_fdfif"]
script = ExtResource("7_2mvfb")
move = ExtResource("87_nuvmp")
level = 1
method = "level-up"
[sub_resource type="Resource" id="Resource_gbm55"]
script = ExtResource("7_2mvfb")
move = ExtResource("88_ji4va")
level = 1
method = "level-up"
[sub_resource type="Resource" id="Resource_l2yhd"]
script = ExtResource("7_2mvfb")
move = ExtResource("89_l8e70")
level = 5
method = "level-up"
[sub_resource type="Resource" id="Resource_e5wbg"]
script = ExtResource("7_2mvfb")
move = ExtResource("90_rxm03")
level = 22
method = "level-up"
[sub_resource type="Resource" id="Resource_e3ecr"]
script = ExtResource("7_2mvfb")
move = ExtResource("91_ksb07")
level = 31
method = "level-up"
[resource]
script = ExtResource("93_1ujyj")
id = 10033
api_name = "venusaur-mega"
names = {
"en": "Venusaur",
"fr": "Florizarre"
}
descriptions = {
"en": "A bewitching aroma wafts from its flower. The fragrance becalms those engaged in a battle.",
"fr": "Une douce senteur émane de sa plante. Cette fragrance calme tous ceux qui sont engagés dans un combat."
}
types = Array[ExtResource("95_5pw3e")]([ExtResource("96_roigw"), ExtResource("97_mavnd")])
abilities = Array[ExtResource("1_c1xmq")]([SubResource("Resource_c71sm")])
evolution_chain = SubResource("Resource_81m1y")
base_stats = {
"attack": 100.0,
"defense": 123.0,
"hp": 80.0,
"special-attack": 122.0,
"special-defense": 120.0,
"speed": 80.0
}
height = 2.4
weight = 155.5
menu_sprite = ExtResource("92_730lx")
shiny_menu_sprite = ExtResource("94_f8s0m")
learnset = Array[ExtResource("7_2mvfb")]([SubResource("Resource_283t3"), SubResource("Resource_rk3tl"), SubResource("Resource_777lq"), SubResource("Resource_xcun5"), SubResource("Resource_3rrhv"), SubResource("Resource_r8e40"), SubResource("Resource_rotks"), SubResource("Resource_nj0vp"), SubResource("Resource_ftieh"), SubResource("Resource_mxjb2"), SubResource("Resource_ltax6"), SubResource("Resource_4sg73"), SubResource("Resource_xo7df"), SubResource("Resource_fm1w1"), SubResource("Resource_4bpg4"), SubResource("Resource_cbvem"), SubResource("Resource_dpt3l"), SubResource("Resource_3l8m1"), SubResource("Resource_r3wbg"), SubResource("Resource_1yhlo"), SubResource("Resource_8rcjk"), SubResource("Resource_7eatg"), SubResource("Resource_o36mi"), SubResource("Resource_k4e4p"), SubResource("Resource_kiqmp"), SubResource("Resource_nsejl"), SubResource("Resource_rbi63"), SubResource("Resource_rai0h"), SubResource("Resource_qu4en"), SubResource("Resource_50ye6"), SubResource("Resource_8k8cu"), SubResource("Resource_v5sa1"), SubResource("Resource_urlc8"), SubResource("Resource_hrsce"), SubResource("Resource_w6pmf"), SubResource("Resource_kiipx"), SubResource("Resource_5fefd"), SubResource("Resource_ywv12"), SubResource("Resource_psr21"), SubResource("Resource_ft73j"), SubResource("Resource_3lxi1"), SubResource("Resource_4avk3"), SubResource("Resource_qqpmw"), SubResource("Resource_ukr88"), SubResource("Resource_185h4"), SubResource("Resource_o05p8"), SubResource("Resource_is4k6"), SubResource("Resource_yvn34"), SubResource("Resource_sucy1"), SubResource("Resource_upv3w"), SubResource("Resource_kvu4w"), SubResource("Resource_rdnep"), SubResource("Resource_y4g4g"), SubResource("Resource_m0651"), SubResource("Resource_yt6xg"), SubResource("Resource_n5wpe"), SubResource("Resource_mnril"), SubResource("Resource_x1iak"), SubResource("Resource_weu1s"), SubResource("Resource_24663"), SubResource("Resource_30yst"), SubResource("Resource_07b2d"), SubResource("Resource_0m58k"), SubResource("Resource_k5yp7"), SubResource("Resource_jixho"), SubResource("Resource_bcnnu"), SubResource("Resource_iwbuc"), SubResource("Resource_0anyt"), SubResource("Resource_kgqk5"), SubResource("Resource_ynucx"), SubResource("Resource_glb4i"), SubResource("Resource_tui4y"), SubResource("Resource_4hvii"), SubResource("Resource_vihns"), SubResource("Resource_jumhn"), SubResource("Resource_1l6ut"), SubResource("Resource_ojlp4"), SubResource("Resource_3befy"), SubResource("Resource_xyny6"), SubResource("Resource_fdfif"), SubResource("Resource_gbm55"), SubResource("Resource_l2yhd"), SubResource("Resource_e5wbg"), SubResource("Resource_e3ecr")])

View file

@ -0,0 +1,89 @@
[gd_resource type="Resource" script_class="PokemonData" format=3 uid="uid://ch4nt3khsx40f"]
[ext_resource type="Script" uid="uid://cpejtpjkcrvfy" path="res://addons/pokeapi_importer/data/pokemon_ability.gd" id="1_qs0qx"]
[ext_resource type="Resource" uid="uid://caln4rr2f6f1p" path="res://data/pokeapi/abilities/overgrow.tres" id="2_ndtf0"]
[ext_resource type="Resource" uid="uid://d07nwu46f1y5m" path="res://data/pokeapi/abilities/chlorophyll.tres" id="3_ls8p6"]
[ext_resource type="AudioStream" uid="uid://omc82yw76oug" path="res://data/pokeapi/cries/10195_venusaur-gmax.ogg" id="4_cikjm"]
[ext_resource type="Script" uid="uid://bcfihr0vig1sm" path="res://addons/pokeapi_importer/data/evolution_edge.gd" id="5_r1eli"]
[ext_resource type="Script" uid="uid://81p3aw271qyx" path="res://addons/pokeapi_importer/data/evolution_condition.gd" id="6_6gbgm"]
[ext_resource type="Script" uid="uid://b364h4i46hwo1" path="res://addons/pokeapi_importer/data/evolution_node.gd" id="7_2psrd"]
[ext_resource type="Script" uid="uid://fmgdjhptqo0d" path="res://addons/pokeapi_importer/data/pokemon_form.gd" id="8_7gqfp"]
[ext_resource type="Script" uid="uid://dxpd7ihc8eew5" path="res://addons/pokeapi_importer/data/learned_move.gd" id="9_thek8"]
[ext_resource type="Texture2D" uid="uid://doq62lwf2m32q" path="res://data/pokeapi/sprites/10195_venusaur-gmax.png" id="10_syca0"]
[ext_resource type="Script" uid="uid://cwmxfian0pdjk" path="res://addons/pokeapi_importer/data/pokemon_data.gd" id="11_fdwh0"]
[ext_resource type="Texture2D" uid="uid://bl2df7xngjypa" path="res://data/pokeapi/sprites/10195_venusaur-gmax_shiny.png" id="12_uwmwt"]
[ext_resource type="Script" uid="uid://cvvmd5x42xk8n" path="res://addons/pokeapi_importer/data/type_data.gd" id="13_d5mm5"]
[ext_resource type="Resource" uid="uid://b5innmgrb00rn" path="res://data/pokeapi/types/grass.tres" id="14_4dnjk"]
[ext_resource type="Resource" uid="uid://qxfeuyf5roo" path="res://data/pokeapi/types/poison.tres" id="15_1v4ge"]
[sub_resource type="Resource" id="Resource_07mtb"]
script = ExtResource("1_qs0qx")
ability = ExtResource("2_ndtf0")
[sub_resource type="Resource" id="Resource_leq0w"]
script = ExtResource("1_qs0qx")
ability = ExtResource("3_ls8p6")
is_hidden = true
[sub_resource type="Resource" id="Resource_c8x75"]
script = ExtResource("6_6gbgm")
trigger = "level-up"
min_level = 16
[sub_resource type="Resource" id="Resource_nlw71"]
script = ExtResource("6_6gbgm")
trigger = "level-up"
min_level = 32
[sub_resource type="Resource" id="Resource_qogyd"]
script = ExtResource("7_2psrd")
species_name = "venusaur"
[sub_resource type="Resource" id="Resource_5a814"]
script = ExtResource("5_r1eli")
target = SubResource("Resource_qogyd")
conditions = Array[ExtResource("6_6gbgm")]([SubResource("Resource_nlw71")])
[sub_resource type="Resource" id="Resource_bmsyw"]
script = ExtResource("7_2psrd")
species_name = "ivysaur"
evolves_to = Array[ExtResource("5_r1eli")]([SubResource("Resource_5a814")])
[sub_resource type="Resource" id="Resource_o4mni"]
script = ExtResource("5_r1eli")
target = SubResource("Resource_bmsyw")
conditions = Array[ExtResource("6_6gbgm")]([SubResource("Resource_c8x75")])
[sub_resource type="Resource" id="Resource_81m1y"]
script = ExtResource("7_2psrd")
species_name = "bulbasaur"
evolves_to = Array[ExtResource("5_r1eli")]([SubResource("Resource_o4mni")])
[resource]
script = ExtResource("11_fdwh0")
id = 10195
api_name = "venusaur-gmax"
names = {
"en": "Venusaur",
"fr": "Florizarre"
}
descriptions = {
"en": "A bewitching aroma wafts from its flower. The fragrance becalms those engaged in a battle.",
"fr": "Une douce senteur émane de sa plante. Cette fragrance calme tous ceux qui sont engagés dans un combat."
}
types = Array[ExtResource("13_d5mm5")]([ExtResource("14_4dnjk"), ExtResource("15_1v4ge")])
abilities = Array[ExtResource("1_qs0qx")]([SubResource("Resource_07mtb"), SubResource("Resource_leq0w")])
evolution_chain = SubResource("Resource_81m1y")
base_stats = {
"attack": 82.0,
"defense": 83.0,
"hp": 80.0,
"special-attack": 100.0,
"special-defense": 100.0,
"speed": 80.0
}
height = 24.0
weight = 1000.0
menu_sprite = ExtResource("10_syca0")
shiny_menu_sprite = ExtResource("12_uwmwt")
cry_latest = ExtResource("4_cikjm")

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bn7a8nehayplp"
path="res://.godot/imported/0003_venusaur.png-fc40445426176d12d8795497e9a3458d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/pokeapi/sprites/0003_venusaur.png"
dest_files=["res://.godot/imported/0003_venusaur.png-fc40445426176d12d8795497e9a3458d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c8chtutqpudsn"
path="res://.godot/imported/0003_venusaur_shiny.png-fc8e92debea3a35c2026c627176c380f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/pokeapi/sprites/0003_venusaur_shiny.png"
dest_files=["res://.godot/imported/0003_venusaur_shiny.png-fc8e92debea3a35c2026c627176c380f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cs7drpafhlnqm"
path="res://.godot/imported/10033_venusaur-mega.png-8cd2ada7297bf63ff06365755ffef1c5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/pokeapi/sprites/10033_venusaur-mega.png"
dest_files=["res://.godot/imported/10033_venusaur-mega.png-8cd2ada7297bf63ff06365755ffef1c5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bv3ygad4ptmxq"
path="res://.godot/imported/10033_venusaur-mega_shiny.png-9dab647a152995448ccda0b7e8f34221.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/pokeapi/sprites/10033_venusaur-mega_shiny.png"
dest_files=["res://.godot/imported/10033_venusaur-mega_shiny.png-9dab647a152995448ccda0b7e8f34221.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://doq62lwf2m32q"
path="res://.godot/imported/10195_venusaur-gmax.png-6ddb95d62e10fbb721b65bc1c6f92629.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/pokeapi/sprites/10195_venusaur-gmax.png"
dest_files=["res://.godot/imported/10195_venusaur-gmax.png-6ddb95d62e10fbb721b65bc1c6f92629.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bl2df7xngjypa"
path="res://.godot/imported/10195_venusaur-gmax_shiny.png-b369360296640099ac417646258a0db5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://data/pokeapi/sprites/10195_venusaur-gmax_shiny.png"
dest_files=["res://.godot/imported/10195_venusaur-gmax_shiny.png-b369360296640099ac417646258a0db5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,222 @@
extends CanvasLayer
# Autoload : DebugPokemonPanel
#panneau de test (build de debug uniquement) : liste des pokemon du Pokedex, un clic ajoute a l'equipe
const TOGGLE_ACTION : StringName = &"debug_pokemon_panel"
const DEFAULT_LEVEL : int = 10
var _root : Control
var _filter : LineEdit
var _level_spin : SpinBox
var _team_label : Label
var _scroll : ScrollContainer
var _list : VBoxContainer
var _message : Label
var _buttons : Array[Button] = []
var _populated : bool = false
var _was_paused : bool = false
var _prev_mouse_mode : Input.MouseMode = Input.MOUSE_MODE_VISIBLE
func _ready() -> void:
if !OS.is_debug_build():
queue_free()
return
layer = 100
process_mode = Node.PROCESS_MODE_ALWAYS #le panneau reste utilisable pendant que le jeu est en pause
_setup_input()
_build_ui()
_root.visible = false
func _setup_input() -> void:
if InputMap.has_action(TOGGLE_ACTION): return
InputMap.add_action(TOGGLE_ACTION)
var key := InputEventKey.new()
key.physical_keycode = KEY_F3
InputMap.action_add_event(TOGGLE_ACTION, key)
var pad := InputEventJoypadButton.new()
pad.button_index = JOY_BUTTON_BACK
InputMap.action_add_event(TOGGLE_ACTION, pad)
func _unhandled_input(event : InputEvent) -> void:
if _root == null: return
if event.is_action_pressed(TOGGLE_ACTION):
if _root.visible: _close()
else: _open()
get_viewport().set_input_as_handled()
elif _root.visible and event.is_action_pressed(&"ui_cancel"):
_close()
get_viewport().set_input_as_handled()
#---------- ouverture / fermeture ----------
func _open() -> void:
if !_populated: _populate()
_was_paused = get_tree().paused
_prev_mouse_mode = Input.mouse_mode
get_tree().paused = true
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
_root.visible = true
_message.text = ""
_refresh_team()
_focus_first.call_deferred()
func _close() -> void:
_root.visible = false
get_tree().paused = _was_paused
Input.mouse_mode = _prev_mouse_mode
func _focus_first() -> void:
for b in _buttons:
if b.is_visible_in_tree():
b.grab_focus()
return
#---------- interface ----------
func _build_ui() -> void:
_root = Control.new()
_root.set_anchors_preset(Control.PRESET_FULL_RECT)
add_child(_root)
var dim := ColorRect.new()
dim.color = Color(0.0, 0.0, 0.0, 0.6)
dim.set_anchors_preset(Control.PRESET_FULL_RECT)
_root.add_child(dim)
var center := CenterContainer.new()
center.set_anchors_preset(Control.PRESET_FULL_RECT)
_root.add_child(center)
var panel := PanelContainer.new()
panel.custom_minimum_size = Vector2(580, 640)
center.add_child(panel)
var margin := MarginContainer.new()
for side in ["left", "right", "top", "bottom"]:
margin.add_theme_constant_override("margin_" + side, 16)
panel.add_child(margin)
var box := VBoxContainer.new()
box.add_theme_constant_override("separation", 8)
margin.add_child(box)
var title := Label.new()
title.text = "Debug : ajouter un Pokémon à l'équipe"
title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
box.add_child(title)
var level_row := HBoxContainer.new()
box.add_child(level_row)
var level_label := Label.new()
level_label.text = "Niveau"
level_row.add_child(level_label)
_level_spin = SpinBox.new()
_level_spin.min_value = 1
_level_spin.max_value = PokemonInstance.MAX_LEVEL
_level_spin.step = 1
_level_spin.value = DEFAULT_LEVEL
level_row.add_child(_level_spin)
_filter = LineEdit.new()
_filter.placeholder_text = "Rechercher (nom, type, id)..."
_filter.clear_button_enabled = true
_filter.size_flags_horizontal = Control.SIZE_EXPAND_FILL
_filter.text_changed.connect(_on_filter_changed)
level_row.add_child(_filter)
_team_label = Label.new()
_team_label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
box.add_child(_team_label)
_scroll = ScrollContainer.new()
_scroll.size_flags_vertical = Control.SIZE_EXPAND_FILL
_scroll.horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED
_scroll.follow_focus = true
box.add_child(_scroll)
_list = VBoxContainer.new()
_list.size_flags_horizontal = Control.SIZE_EXPAND_FILL
_scroll.add_child(_list)
_message = Label.new()
box.add_child(_message)
var actions := HBoxContainer.new()
actions.add_theme_constant_override("separation", 8)
box.add_child(actions)
actions.add_child(_make_action_button("Soigner l'équipe", _on_heal_pressed))
actions.add_child(_make_action_button("Vider l'équipe", _on_clear_pressed))
actions.add_child(_make_action_button("Fermer", _close))
var hint := Label.new()
hint.text = "F3 / Select : ouvrir-fermer | Échap / B : fermer"
hint.modulate = Color(1.0, 1.0, 1.0, 0.5)
hint.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
box.add_child(hint)
func _make_action_button(label : String, callback : Callable) -> Button:
var button := Button.new()
button.text = label
button.size_flags_horizontal = Control.SIZE_EXPAND_FILL
button.pressed.connect(callback)
return button
func _populate() -> void:
_populated = true
for id in Pokedex.all_ids():
var data : PokemonData = Pokedex.get_pokemon(id)
if data == null: continue
var types_text : String = ", ".join(data.types.filter(func(t : TypeData) -> bool: return t != null).map(func(t : TypeData) -> String: return t.get_display_name()))
var button := Button.new()
button.alignment = HORIZONTAL_ALIGNMENT_LEFT
button.text = "#%d %s (%s)" % [data.id, data.get_display_name(), types_text]
button.icon = data.menu_sprite
button.expand_icon = true
button.add_theme_constant_override("icon_max_width", 32)
button.set_meta("search", ("%d %s %s %s" % [data.id, data.api_name, data.get_display_name(), types_text]).to_lower())
button.pressed.connect(_on_pokemon_pressed.bind(data))
_list.add_child(button)
_buttons.append(button)
if _buttons.is_empty():
_message.text = "Aucun Pokémon dans le Pokedex."
#---------- actions ----------
func _on_pokemon_pressed(data : PokemonData) -> void:
var team : PokemonTeam = GameData.player_team
if team.is_full():
_message.text = "Équipe pleine (%d/%d)" % [team.size(), PokemonTeam.MAX_SIZE]
return
var pokemon := PokemonInstance.create(data, int(_level_spin.value))
GameData.give_pokemon(pokemon)
_message.text = "%s Lv.%d ajouté (%d/%d)" % [pokemon.get_display_name(), pokemon.level, team.size(), PokemonTeam.MAX_SIZE]
_refresh_team()
func _on_clear_pressed() -> void:
var team : PokemonTeam = GameData.player_team
while !team.is_empty():
team.remove_at(team.size() - 1)
GameData.validate_selection()
_message.text = "Équipe vidée"
_refresh_team()
func _on_heal_pressed() -> void:
GameData.player_team.heal_all()
_message.text = "Équipe soignée"
func _on_filter_changed(text : String) -> void:
var needle : String = text.strip_edges().to_lower()
for b in _buttons:
b.visible = needle == "" or needle in String(b.get_meta("search"))
func _refresh_team() -> void:
var team : PokemonTeam = GameData.player_team
if team.is_empty():
_team_label.text = "Équipe : (vide)"
return
var names : Array[String] = []
for p in team.members:
names.append("%s Lv.%d" % [p.get_display_name(), p.level])
_team_label.text = "Équipe (%d/%d) : %s" % [team.size(), PokemonTeam.MAX_SIZE, ", ".join(names)]

View file

@ -0,0 +1 @@
uid://b3058rssf6ud5

171
game/mount/mount_rider.gd Normal file
View file

@ -0,0 +1,171 @@
class_name MountRider
extends Node
#composant a ajouter en enfant de PlayerCharacter (a cote de InputManagementComponent / RecallInput).
#gere la monte d'un SentPokemon dont l'espece a un MountProfile (voir MountRegistry) :
# - s'approcher + appuyer sur mount_action (A) pour monter, dismount_action pour descendre
# - le joueur garde ses etats Idle / Walk / Run / Jump / Aim / Throw
# - Dodge et Crouch sont refuses par la StateMachine tant qu'on est monte
# - vitesse, accel et saut sont remplaces par ceux du MountProfile
signal mounted(sent : SentPokemon)
signal dismounted(sent : SentPokemon)
signal candidate_changed(sent : SentPokemon) #pokemon montable a portee (null = aucun) : pour afficher "A : Monter" dans le HUD
@export var mount_action : StringName = &"player_interact" #A (manette) / E (clavier) : cree automatiquement s'il n'existe pas
@export var dismount_action : StringName = &"player_dismount" #Y (manette) / F (clavier) : cree automatiquement s'il n'existe pas
@export var mount_range : float = 2.5 #distance horizontale max entre le joueur et le pokemon
@export var max_height_diff : float = 2.0
@export var blocked_states : PackedStringArray = ["DodgeState", "CrouchState"] #etats refuses pendant la monte
@export var swallow_jump_on_mount : bool = true #si A sert aussi a sauter : l'appui qui monte ne declenche pas de saut
@export var camera_follow_speed : float = 8.0 #vitesse a laquelle la camera monte a hauteur de selle
const GROUNDED_STATES : Array[String] = ["Idle", "Walk", "Run"] #monter / descendre n'est possible que depuis ces etats
@onready var player : PlayerCharacter = get_parent()
@onready var visual_root : Node3D = %VisualRoot
@onready var cam_holder : Node3D = %CameraHolder
@onready var state_machine : StateMachine = %StateMachine
var mount : SentPokemon = null
var profile : MountProfile = null
var candidate : SentPokemon = null
var _seat_applied : Vector3 = Vector3.ZERO
var _cam_rise : float = 0.0
func _ready() -> void:
process_physics_priority = -10 #avant la StateMachine : l'appui qui monte peut ainsi etre intercepte avant le saut
_ensure_action(mount_action, func():
var pad := InputEventJoypadButton.new()
pad.button_index = JOY_BUTTON_A
InputMap.action_add_event(mount_action, pad)
var key := InputEventKey.new()
key.physical_keycode = KEY_E
InputMap.action_add_event(mount_action, key))
_ensure_action(dismount_action, func():
var pad := InputEventJoypadButton.new()
pad.button_index = JOY_BUTTON_Y
InputMap.action_add_event(dismount_action, pad)
var key := InputEventKey.new()
key.physical_keycode = KEY_F
InputMap.action_add_event(dismount_action, key))
func _ensure_action(action : StringName, add_events : Callable) -> void:
if InputMap.has_action(action): return
InputMap.add_action(action)
add_events.call()
func is_mounted() -> bool:
return mount != null
func _physics_process(_delta : float) -> void:
if mount != null:
if Input.is_action_just_pressed(dismount_action) and _can_switch_now():
dismount()
return
_set_candidate(_find_candidate() if _can_switch_now() else null)
if candidate != null and Input.is_action_just_pressed(mount_action):
mount_up(candidate)
func _process(delta : float) -> void:
if mount != null and !is_instance_valid(mount):
dismount() #le pokemon a disparu sans passer par recall()
var rise_target : float = 0.0
if mount != null:
#la monture suit le joueur (position + orientation du modele)
mount.global_position = player.global_position
var yaw : float = visual_root.global_rotation.y
if !SentPokemon.MODEL_FACES_PLUS_Z: yaw += PI
mount.global_rotation = Vector3(0.0, yaw, 0.0)
#le joueur est assis a la selle (seat_offset est exprime dans le repere de la monture)
var seat : Vector3 = mount.global_basis * profile.seat_offset
visual_root.position += seat - _seat_applied
_seat_applied = seat
rise_target = profile.seat_offset.y
#la camera monte progressivement a hauteur de selle (en delta : ne gene pas les autres reglages de hauteur)
var new_rise : float = lerpf(_cam_rise, rise_target, clampf(camera_follow_speed * delta, 0.0, 1.0))
if absf(new_rise - rise_target) < 0.001: new_rise = rise_target
cam_holder.position.y += new_rise - _cam_rise
_cam_rise = new_rise
#---------- detection ----------
func _can_switch_now() -> bool:
return player.is_on_floor() and state_machine.curr_state_name in GROUNDED_STATES
func _find_candidate() -> SentPokemon:
var best : SentPokemon = null
var best_dist : float = mount_range
for node in get_tree().get_nodes_in_group(SentPokemon.GROUP):
var s := node as SentPokemon
if s == null or s.is_queued_for_deletion() or s.rider != null: continue
if !_is_rideable_here(s): continue
var diff : Vector3 = s.global_position - player.global_position
if absf(diff.y) > max_height_diff: continue
var dist : float = Vector2(diff.x, diff.z).length()
if dist <= best_dist:
best_dist = dist
best = s
return best
func _is_rideable_here(s : SentPokemon) -> bool:
var p : MountProfile = MountRegistry.get_profile(s.pokemon.species)
if p == null: return false
#sur terre : une monture terrestre, ou volante (qui pourra decoller). Une monture aquatique seule reste a quai.
return p.can_use_surface(MountProfile.Surface.GROUND) or p.can_use_surface(MountProfile.Surface.AIR)
func _set_candidate(s : SentPokemon) -> void:
if s == candidate: return
candidate = s
candidate_changed.emit(s)
#---------- monter / descendre ----------
func mount_up(s : SentPokemon) -> void:
if mount != null: return
mount = s
profile = MountRegistry.get_profile(s.pokemon.species)
s.rider = player
s.recalled.connect(_on_mount_recalled)
_set_candidate(null)
player.is_mounted = true
player.enter_mount_stats(profile.mount_speed, profile.mount_accel, profile.mount_deccel,
-1.0 if profile.can_use_surface(MountProfile.Surface.AIR) else profile.mount_jump_height) #monture volante : le vol libre remplacera le saut
for state_name in blocked_states:
state_machine.set_state_blocked(state_name, true)
if swallow_jump_on_mount: _swallow_jump_this_frame()
mounted.emit(s)
func dismount() -> void:
if mount == null and profile == null: return
var s : SentPokemon = mount
mount = null
profile = null
player.is_mounted = false
player.exit_mount_stats()
for state_name in blocked_states:
state_machine.set_state_blocked(state_name, false)
visual_root.position -= _seat_applied
_seat_applied = Vector3.ZERO
if is_instance_valid(s):
s.rider = null
if s.recalled.is_connected(_on_mount_recalled): s.recalled.disconnect(_on_mount_recalled)
dismounted.emit(s)
func _on_mount_recalled() -> void:
dismount() #le pokemon monte vient d'etre rappele (ex : relance de ce meme pokemon depuis le HUD)
func _swallow_jump_this_frame() -> void:
state_machine.set_state_blocked("JumpState", true)
await get_tree().physics_frame
state_machine.set_state_blocked("JumpState", false)

View file

@ -0,0 +1 @@
uid://c4vkkdl0an244

View file

@ -15,6 +15,8 @@ var was_on_floor : bool = false
var walk_or_run : String = "WalkState" #keep in memory if play char was walking or running before being in the air
var is_dodging : bool = false #true while DodgeState is active ; hook this up to a hurtbox/i-frame check later
var is_crouching : bool = false #true while CrouchState is active ; hook this up to a collision-shape resize later
var is_mounted : bool = false #true tant que MountRider a le joueur sur un pokemon
var _base_ground_stats : Dictionary = {}
@export_group("Walk variables")
@export var walk_speed : float = 5.0
@ -166,6 +168,45 @@ func gravity_apply(delta : float):
if velocity.y >= 0.0: velocity.y -= jump_gravity * delta
elif velocity.y < 0.0: velocity.y -= fall_gravity * delta
func apply_jump_height(height : float) -> void:
#source unique des formules de saut (aussi utilisee pour les montures)
jump_velocity = ((2.0 * height) / jump_time_to_peak) * -1.0
jump_gravity = (2.0 * height) / (jump_time_to_peak * jump_time_to_peak)
fall_gravity = (2.0 * height) / (jump_time_to_descent * jump_time_to_descent)
func enter_mount_stats(speed : float, accel : float, deccel : float, mount_jump_height : float) -> void:
#mount_jump_height <= 0 : on garde le saut du joueur
if _base_ground_stats.is_empty():
_base_ground_stats = {
"walk_speed": walk_speed, "walk_accel": walk_accel, "walk_deccel": walk_deccel,
"run_speed": run_speed, "run_accel": run_accel, "run_deccel": run_deccel,
}
walk_speed = speed
run_speed = speed
walk_accel = accel
run_accel = accel
walk_deccel = deccel
run_deccel = deccel
if mount_jump_height > 0.0: apply_jump_height(mount_jump_height)
#l'etat courant lit move_* sans repasser par enter()
move_speed = speed
move_accel = accel
move_deccel = deccel
func exit_mount_stats() -> void:
if _base_ground_stats.is_empty(): return
walk_speed = _base_ground_stats["walk_speed"]
walk_accel = _base_ground_stats["walk_accel"]
walk_deccel = _base_ground_stats["walk_deccel"]
run_speed = _base_ground_stats["run_speed"]
run_accel = _base_ground_stats["run_accel"]
run_deccel = _base_ground_stats["run_deccel"]
_base_ground_stats.clear()
apply_jump_height(jump_height) #jump_height n'est jamais modifie : on revient aux valeurs du joueur
move_speed = walk_speed
move_accel = walk_accel
move_deccel = walk_deccel
func squash_and_strech(value : float, timing : float):
#create a tween that simulate a compression of the model (squash and strech ones)
#maily used to accentuate game feel/juice

View file

@ -13,6 +13,7 @@
[ext_resource type="Script" uid="uid://bwojkp7yrwswt" path="res://game/player/states/dodge_state.gd" id="9_6abew"]
[ext_resource type="Script" uid="uid://d0577tj0c23bu" path="res://game/player/states/crouch_state.gd" id="10_mi63v"]
[ext_resource type="Script" uid="uid://c820hnwuwpmlg" path="res://game/player/input/recall_input.gd" id="13_siyau"]
[ext_resource type="Script" uid="uid://c4vkkdl0an244" path="res://game/mount/mount_rider.gd" id="14_dkijf"]
[sub_resource type="Curve" id="Curve_kxr4l"]
_limits = [0.0, 10.0, 0.0, 1.0]
@ -86,18 +87,6 @@ script = ExtResource("6_lwgph")
[node name="AimState" type="Node" parent="StateMachine" unique_id=296560188]
script = ExtResource("7_kxr4l")
aim_action = null
switch_target_action = null
unlock_action = null
throw_action = null
throw_range = null
max_aim_angle = null
auto_lock_angle = null
lose_range_margin = null
check_line_of_sight = null
line_of_sight_mask = null
aim_move_speed = null
aim_move_accel = null
[node name="ThrowState" type="Node" parent="StateMachine" unique_id=1159570489]
script = ExtResource("8_k0r6x")
@ -116,3 +105,6 @@ script = ExtResource("2_r5dqo")
[node name="RecallInput" type="Node" parent="." unique_id=1544887696]
script = ExtResource("13_siyau")
[node name="MountRider" type="Node" parent="." unique_id=639128028]
script = ExtResource("14_dkijf")

View file

@ -10,6 +10,7 @@ const THROW_ENTRY_STATES : Array[String] = ["Idle", "Walk", "Run", "Crouch"] #et
var curr_state : State
var curr_state_name : String
var states : Dictionary = {}
var blocked_states : Dictionary = {} #noms (en minuscules) des etats dont l'entree est refusee
@onready var char_ref : CharacterBody3D = $".."
@ -62,6 +63,8 @@ func on_state_child_transition(state : State, new_state_name : String) -> void:
var new_state = states.get(new_state_name.to_lower())
if !new_state: return
if blocked_states.has(new_state_name.to_lower()): return
#exit the current state
if curr_state: curr_state.exit()
@ -70,3 +73,7 @@ func on_state_child_transition(state : State, new_state_name : String) -> void:
curr_state = new_state
curr_state_name = curr_state.state_name
func set_state_blocked(state_name : String, blocked : bool) -> void:
if blocked: blocked_states[state_name.to_lower()] = true
else: blocked_states.erase(state_name.to_lower())

View file

@ -8,12 +8,17 @@ signal recalled
const GROUP : StringName = &"sent_pokemon"
const MODEL_FACES_PLUS_Z : bool = true #true si tes modeles regardent vers +Z (cas des glTF) : sinon mets false
const HEIGHT_TO_METERS : float = 1.0 #PokeAPI donne la taille en decimetres ; mets 1.0 si ton import l'a deja convertie en metres
const MIN_HEIGHT : float = 0.3 #bornes de la capsule en metres (augmente MAX_HEIGHT pour une echelle fidele aux tres gros pokemon)
const MAX_HEIGHT : float = 8.0
const DEFAULT_HEIGHT : float = 1.0 #utilise si la taille n'est pas renseignee (0)
static var _counter : int = 0 #ordre d'envoi, pour retrouver le plus recent
var pokemon : PokemonInstance
var model : Node3D
var order : int = 0
var rider : Node3D = null
static func send(parent : Node, p : PokemonInstance, at : Vector3, look_at_pos : Vector3 = Vector3.INF) -> SentPokemon:
#un pokemon deja sorti est d'abord rappele (il "se deplace" a l'endroit du nouveau lancer)
@ -46,7 +51,7 @@ static func get_latest(tree : SceneTree) -> SentPokemon:
#le pokemon sorti le plus recemment
var latest : SentPokemon = null
for n in tree.get_nodes_in_group(GROUP):
if n is SentPokemon and !n.is_queued_for_deletion() and (latest == null or n.order > latest.order):
if n is SentPokemon and !n.is_queued_for_deletion() and (latest == null or n.order > latest.order) and n.rider == null:
latest = n
return latest
@ -70,20 +75,25 @@ static func create_model(p : PokemonInstance) -> Node3D:
static func _create_placeholder(p : PokemonInstance) -> Node3D:
var colors : Array[Color] = TypeColors.for_species(p.species)
#taille issue des donnees de l'espece ; le rayon suit la hauteur pour garder des proportions coherentes
var meters : float = p.species.height * HEIGHT_TO_METERS if p.species != null else 0.0
var height : float = clampf(meters if meters > 0.0 else DEFAULT_HEIGHT, MIN_HEIGHT, MAX_HEIGHT)
var radius : float = clampf(height * 0.3, 0.12, 1.5)
var body := MeshInstance3D.new()
var capsule := CapsuleMesh.new()
capsule.radius = 0.3
capsule.height = 1.0
capsule.radius = radius
capsule.height = maxf(height, radius * 2.0) #une capsule ne peut pas etre plus basse que son diametre
body.mesh = capsule
body.position.y = 0.5
body.position.y = capsule.height * 0.5 #les pieds posent sur le sol
body.material_override = _make_material(colors[0])
#deuxieme type : anneau autour de la capsule
if colors.size() > 1:
var ring := MeshInstance3D.new()
var torus := TorusMesh.new()
torus.inner_radius = 0.29
torus.outer_radius = 0.36
torus.inner_radius = radius * 0.97
torus.outer_radius = radius * 1.2
ring.mesh = torus
ring.material_override = _make_material(colors[1])
body.add_child(ring)

View file

@ -27,6 +27,8 @@ ControllerIcons="*uid://b7ho1rjcpht1d"
GameData="*uid://d4beiel88cwc7"
UiAudio="*uid://7e7fe2xk3aue"
Pokedex="*uid://dijnkrewbwgmx"
MountRegistry="*uid://u4gskwbwm0b0"
DebugPokemonPanel="*uid://b3058rssf6ud5"
[display]