#Sanginir Tribe
1 messages · Page 4 of 1
also
one last thing
banan can you stop giving ranged weapons to units with 1 range it looks ass
thats all
bruh their early game is not difficult
literally just increase their starting stars to 6, 7 or 8
and they're good
no i didnt midjiwan did
How long on average does it take midjiwan to break a modded tribe
one update
so 1369 years
Ok
I will have to slightly delay 🗿 so that it releases after the ancients update in September 2029 then
What
fapingvin prophecized that ancients would be released december 2026
Yup
Why not both
december 14
Both is good
Also gld mods break rarer, but if polymod breaks everything does
yeah like osamaris
cuz they removed landfill from basic tech
and it was in basicosm
Btw if you don't overwrite the basic tech and overwrite the t1 techs instead it will be more sustainable
Cause basic changes more often
yeah but thats annoying
also i think osamaris had other unlocks in basic tech too
but im not sure
then again i have a theory based on aquarion
if i make it start with a tech that isnt used anywhere in tech unlocks similar to basic
it simply shouldnt show up
And if you want something so that they start with that, you can make a secret technology that they start with as well as basic
is that correct
Yes
yessss
big brain time
when i get to osamaris in the updates i will fix it
dw fapingvin
but in the case of rak gol this cant be done
I used that before, secrettech. I however don't know whether it is obtainable by others in ruins
unless i overrides one of the techs with "none" but that seems sus
I'd have to check
ummm how could it possibly be
ruins only unlocks a tech that u can unlocks
if its not in any techunlocks
u cant unlock it
Oh
even through ruins
I thought it was any random tech
if it were the case u could research living island as vengir
Lmao. Imagine discovering the walking on water tech for aquarion if it wasn’t basic tech
cuz techdata isnt specific to tribes, only the techs that are unlocked, and the techoverrides
@tacit pasture when city state polytopia mod
no monuments no capturing cities no diplomacy
Instead of capture you raze the city and salt the ground
or apostles
Polytopia Catholicism mod
And also some perks
christianize all the kingdoms
oh so like the enemies hate u cuz u believe in not burning heretics of other tribes cuz their cross is a different shape?
If you share a Way with another tribe they get opinion boost, if you have differing Ways then a minor opinion penalty. There are three Ways you can only choose one after building your first temple my plans are. Each Way granting unique bonuses in a tech-tree fashion
I think a cool idea for a religions mod is if religions had borders like cities and you could swap between the city borders view and religion regions view
I was thinking worldbox but prob same
Yeah and the mod would not be done till 2130
real
Cause I am trying really hard to make everything dynamic
Meaning nothing is stored
Rip
Basically
That wouldn't be stored anyways (so effects are okay)
Cause storing things is really messy
what if instead u had pantheons u could pick one of like a bit and u get it when capital reach a certain level or they can be unlocked by doing different things like a ruin or other things
and
they buff things
Wall gn
Let me search an image of what I mean
like perhaps one can be god of the sea that makes port give 2 pop
or god of the forge which makes swordsmen cost 4 stars
or god of the sun which turns ur tribe into mica
so like in my space mod it was, the idea is directly stolen from that btw. Just in this case the Ways will be a separate tech tree which i still got to figure out somehow
wtf tech trees can work like that?
I uh had to mangle it
Even do a forbidden Harmony.Unpatch of a polymod method lol
But what I mean is on the bottom half you could choose from three Ways
And once you choose the others' cost is visually 999 physically impossible
Nah I mean I coded it to not be possible
And the price is just for aesthetics reason
just to troll you should make it always cost 1 star more than the player has
Yeah well I might just make them entirely locked without a price in my diplomacy mod
This is a rather old screenshot btw since the mod is broken beyond repair
broken level 300
More, cause shitcode + time + 1 kloc + total conversion + before tribes were moved to backend
Bruh lmao
251 views
i have to support the ultimate hamburgerlord
53 likes
over 20% approval rate
this is a good video usually itsl ike 5-10%
ITS SO PEAK
instant subscribe
i am the 652nd sib
sub
everybody sub to "hamburgerlord"
the video is so peak
he actually makes the babylonian food from the delegation 🙏
apparently its pretty good
this youtuber is actually goated wtf
must underrated person of all time
legendary youtoube pull
not only is he a chef from what i can tell
but also
a musician
and an artist
tf
how is bro doing allat
He’s a Renaissance man 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa polyscript
yaay
guys so you know how this tribe has a bunch of techs and abilities that buff bats and stuff
so with all the buffs stacked and when attacking a unit with less hp
a bat has 3.5 attack
and heals 6 hp
vampire will have 5 attack
ig its a good thing that it only triggers on low hp enemies huh
bats having escape might be diabolical tho
ig i could remove their "surprise" ability and make the leech healing trigger after the attack
wait no that wouldnt make sense
idk how i will balance this
heal on kill?
on kill only?
but if the bat will have a total of 3.5 attack when attacking a unit with less hp than it, its basically guaranteed to heal anyway
but another issue is that it wont take retaliation damage when killing so the healing kinda goes to waste
idk
no cuz if you have wounded bat you can kill low hp unit for free heal
and if bats have escape thats good
ok but they cost 3 stars wouldnt that be a bit strong
stats?
dont
too many stats for a 3 star unit yeah
remove surprise
add persist
1,5 attack is pretty bad idk

a t3 tech gives bats and vampires +0.5 attack
by t3 its okay ish
fly is my main concern tho
not like it should be removed but that may lead to shennanigans
it can not not fly tho
yh ik
btw original sanginir was very op, especially on like water world maps
just because of bats
ok i think add static? vetting healing bats is kinda op
true you dont need veteran cannon fodder
you could also add
some shit like heli in militas
basically less damage on water tiles
so theyre not that busted on conti
peak
it just occured to me that
i think klipi's midnight elyrion reshade could help with that
bats are the primary unit of this tribe
replacing riders + roads ofc
they have a big weakness
persist and splash damage
so they cant really fight against bombers and knights
if u spam them
ofc knights remove the need for bat spam if u need to kill a lot of things quickly
so if i want to balance the bats all i need to do is remove knights
that way bats are spammed
but they get bombed
by bombers
yk
to fight those you'll need vampires or swordsmen bat swarm
sounds awfully similar to an infamous tribe
they solve knight problem by going on water
bomber?
ur not gonna have bombers and knights bbg
they wont be able to beat bombers cuz they will do like 4 dmg to it
if it has 15 hp
why not
i mean with zebasi t30 eco sure
on dry they suck but on any other map
reduce movement to 1
nah
frenzy restores it back to norma;
are you sick
its a rider alt for crying out loud
maybe they should only have 1 movement on water
increase cost once u research vampirism?
that
ok
no
fairly simple too
reverse amphibian
theres a tech in the water path that increases bat movement when adjacent to no other unit
no other enemy unit
so u can use bat swarm to travel ur land units across water more easily
but also
reducing movement on water
doesnt balance its high attack and healing
make it 1.4 then 🤷♀️
wtf is leech?
and why does it add 2.5 attack?
when the bat attacks a lower hp enemy unit, it gains +1 attack against it and heals 4 hp when attacking
it doesnt dawg thats the total
btw that is difficult to make in polyscript i think wasd? i mean that is how it worked in original sanginir but it was buggy
so like it deals more damage to recycled riders and wounded warriors
bat base attack: 1.5
add leech: 2.5
add empowerment: 3
add thirst: 3.5
no
yeah
2 bats would be able to 1 shot a warrior
thats not that powerful
omg 2 riders one shot a warrior!!!
op!!!!!
it was only buggy in my experience when the vampire hit another vampire and it went at 31 hp
do riders fly
do riders have 1.5 base attack
and can a rider heal to max hp when killing a 3 hp unit when at 4 hp
do riders have 2.5 base attack against lower hp units
ok well bottom line
im removing surprise
how do you check for what unit it is attacking while patching getattack? (it did it by going through actionstack iirc which is not advisable ig). BattleResults are a good method too but they no longer deal with attack value and simply with pure damage
that should be good enough
i think
ig you need to patch attackAction?
idk
now do note that when i made this i was like a year younger and more amateur but it was a pretty big dilemma for me at the time
also bats when they have frenzy
have 3 movement
when leech is triggered
it lasts 1 turn tho
is this op
or is it not op
can you win a conti 4 opp game by only spamming bats in less than 20 turns?
idk the polyscript isnt there yet
oh
rn bats are a decent unit and they dont have healing or attack bonus
they can just poke the enemy to death
but now that ive removed surprise
this might not be an issue
just like a rider alt should do
i think if you remove a movement on water it will be perfectly fine
If you run into any issues or don't know how to start calmly ping us (or me at least)
you can ping me angrily too
i have a question
so yk the conquistor nobuildability that i did for the colonizer improvement
yeah
k
call it sanguinirshrektallmcdonaldshomunculus
, "nobuildsanginiredition"
,"ok"
when i copy i dont wanna have to write down a comma and a space before so i just copy that too
ok well one patch is done 🎉
ig i will start with leech since it is super important
i could also rename it to "vampiric" but idk
i will start with the healing since that is more visual and the code for it still works
at least it did work when i tried
Oh yes that will
same enum entry will
k
this is the leech healing
it looks alright at first glance
tho all that stuff at the bottom i dont quite understand
like why is there heal(10)
and
health +=10
one is visual and one is not, but this is very old implementation of mine
for a unitability?
ah
also
can i just remove "flag" and "flag2"
with if statements
also this does not check whether it surpasses max hp
i can change that hold on
public static void HealUnit(GameState gameState, UnitState unit, int amount)
{
var maxhp = unit.GetMaxHealth(gameState);
var currhp = unit.health;
if (currhp >= maxhp)
{
return;
}
var diff = maxhp - currhp;
if (diff < amount)
{
amount = diff;
}
if (unit.HasEffect(UnitEffect.Poisoned))
{
amount = 0;
unit.RemoveEffect(UnitEffect.Poisoned);
}
unit.health += (ushort)amount;
Tile tile = MapRenderer.Current.GetTileInstance(unit.coordinates);
tile.Heal(amount);
}
boom
ez
not even an error so it must be right
wait
since theres an upgrade that increases its healing
i should make a variable for how much it heals
let me cook
flags store either a trueor a false value, and i just seemingly used those to simplify or idk
it isnt much nicer tho
bruhhhh
cuz i cant use "else" with this
how does one store numbers in a variable
doesnt this work?
cuz then

"ushort"
LMAO SO EASY
TS DOESNT have an error
im a pro at polyscripting 😂
you can
ushort and int are basically convertible into one another using (ushort)variable if variable is int
with flag?
cant i just make it a ushort from the start
not just shat into there
its a bool
a boolean variable ye
wait yes i can use if statements
its just
flag is just
whatever would be in the bracket
but outside of it
and i dont understand
why
fapingvin did that
looks nicer according to some
i personally despise it
Bro i dont even remember
I made this mod like 12 months ago
thats like
Lot has changes since
a year
Not a full year idk
I still use flags but not that egregiously
Basically if you repeat the statement it is better to use a flag
is this cooking
You may not need to name it a flag btw
the only issue is player doesnt exist
And have it have a descriptive name
yeah lets just make this 189264716 character statement into a boolean cuz that helps readability
fix the error and ye
Yes well I suppose you have to acquire it from unit and gamestate
oh unit state is part of the tech unlocks?
unit is better
You still need gamestate for GameState.trygetplayer
you can get the owner of said unit
yh but getting it from unit is better cuz if the current player forces the enemy bat to attack it wont apply
cuz of currentplayer being non sanguinir
very important i know
?
idk what exactly u mean here but if a bat gets attacked leech doesnt apply
it only applies when the bat attacks
no if like for example theres a mod that makes it so a unit makes all nearby units attack it
for some reason
thats stupid
Bruh
nope
yeah
i domnt care about
but its good practice
Use unit.owner
scenarios that are that specifics
so um how do i fix the issue with player not existing in the current context even tho i have gamestate in the parameters
you get the player from the gamestate
you did this already
var success = gameState.TryGetPlayer(unitState.owner, out PlayerState player);
bro u already have
Btw success here is a flag 
i know
i have gamestate and attack command in leech healing
but not
playerstate
unit state i mean
unitstate is tile.unit btw
but you can also do __instance.Origin
this is too easy
And if you want to reference a unitstate you have to have it already
send code
ok what
are we deadass
i mean
i would assume so
considering i just made this
with no outside help (almost)
ok build and launch and look for red in the console
why not
based on what you need
rip
cuz harmony will give you a big fat error
nah itll work trust me
You cant just conjure them into existence ig lol
banan just do __instance.Origin.unit
it seems like i just did
oh ok
instead of unitState
it wont
well the compiler doesnt know what the original method has
thats why it allows
And check for nulls ig
yeah
but if __instance.Origin.unit is null then there are bigger problems
in the beginning
it wont even patch
on launch when it gets to injecting ur code it will throw an error
do this, way easier
did you build
yes
mwahaha
but it doesnt work so no matter
__instance.Origin.unit
where do i put this
idk what to do with this lump
ok im on my laptop now what do you have rn
trying to put this in __instance.Origin.unit
somewhere
so it works
in place of unitstate
wasd has been very helpful in telling me that i need it
but he has been useless in telling me how i need it
he's like a bool when i need a var 
ok so you see in first line you use unitState but it is never defined. And you see how later there is a bunch of TileData tile and TileData tile2 definitions. What wasd probably meant is to use the fact that you can get the unitstate from the tile. So tile2.unit is a unitstate of the origin so the attacker
but for that you'd need to put the tile and tile2 definitions at the start of the method
and replace unitState with this way of accessing the units

what u mean to say is that
i can just put
tile2.owner
instead of unitState.owner
wait no
No, tile is the tile the attacj happens on. If unit is on foreign territory tile owner is not the same as unit owner
thats not good
because
that means u have to own that tile
hmmm
aaa
wait would something like this work
if there wasnt
an error
aaaaaaaaaa
im cooked
wait quick question
var success = gameState.TryGetPlayer(tile2.owner, out PlayerState player);
success aint even used
i dont need this whole chunk
This TryGetPlayer method is tricky cause it has two outputs
The primary one is whether it worker or not, true or false
The secondary output is in the out PlayerState player meaning it creates a variable
i use player later so this is useful
Yes don't delete that
i also have no clue about this
cuz
tf
wait why was any of this necessary?
cuz like
it wasnt in the og version
why is there a need now
But don't overcomplicate it:
You have coordinates.
You can use coordinates to get tile.
You can use tile to get unit.
You can use unit to get player.
With player you can check if player has a tech
oh yeah to get the tech
got it
wait
no
this doesnt work
but
im trying something
You are trying to have a unit which is not of UnitState but of TileData
GetUnit is a method



You need to call it with parameters or if it doesn't have any then with ()
Btw you dont need getUnit
bruh

Just check whether it exists so if tile2.unit == null then return thus leave the method
🤔
Almost there
But
unut.owner is just the ID
Of the player
And thus you need TryGetPlayer which gets you a PlayerState from ID
TryGetPlayer is the peculiar method meaning here player is actually gonna be a bool
And you need out
couldnt i just have done this the whole time
To get real playerstate
Yes
Lol
ts dumb
ok so while i was failing at this i was attempting to fix the healing max hp thing
with this
theres just one error
What is the value of flag btw
btw the else one is if the unit has more hp than the max hp - heal amount so it would be going over max hp normally but not with this
its checking the leechability is there
i just fixed it by putting it directly in the if bracket
The error is most likely the types tho idk getmaxhealth returns an int i think so cast it to (ushort)that
that doesnt work too well
yeah um what???
it made more errors
dawg
its over
i cant even do simple polyscript
cant i
ushort val = (ushort)unit.GetMaxHealth(gameState);
this.HealAmount = ((this.FixedHealAmount > 0) ? this.FixedHealAmount : ActionUtils.GetHealAmount(gameState, tile));
ushort val2 = unit.health + this.HealAmount;
unit.health = Math.Min(val2, val);
technically copy this
at least parts of it
also i need to make it remove poison if the unit is poisoned
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
polyscript sucks
k im done fortoday
man its like i told you to watch a c# basics video
ok guys
tutorial time
do i pick the 10 minute tutorial
or the 1 hour tutorial
wait shit theres a four minute one
GOD DAMN SOMEONE MADE 100 SECONDS
nvm now we're back up to 4 hours
HEY the code monkey didnt list "ushort"
HE SAID INT WAS NUMBERS
WTF IS USHORT FOR
guys i locked tf in
i dont see an error
im such a chef
dawg what
ok well i'll just come back tomorrow
number but smaller
save
im pretty sure it was saved
it says theres an error stil
still
but
it doesnt show
like tf
also why is all the text blue i feel like there should be green and stuff too
Did you open it as a folder?
Screenshot
Yeah so close the project and reopen cause that is not normal
And happens usually when vs code does not know what is the content of the code
wait i know the issue
in one of the files
it was still called
polyscripttemplate
but i had switched it to "sanginir"
dawg i did that like 3 times
nothing is working 
whyyyy vscode
notepad superior ig
It is somehow an issue of vscode not sweing the project
vscode is bling
Like fix all names even ones in .sln file
yeah i did
these used to be PolyScriptTemplate
and i also changed the name of the csproj file accordinglu
Hmm
yea no ts sucks
i shouldve just kept it at polyscripttemplate
tf was i thinking
might have to restart ngl
i even tried getting a new polyscripttemplate and that didnt do anything 🙏
my vscode is broken
wait nvm
it works
damn even this strat doesnt work
wait thats cuz i did it wrong
YOOO
I GOT THIS
umm
💔
;polyscript hates me forever
mind sending the error?
cast whole thing into ushort
wtf that worked
(ushort)(blablabla)
Yeah ushort - ushort is int sometimes
thats dummm
crazy
i hope this works
faps strats are goated
REAL
fapingvin #1 polyscripter
IT DIDNT WORK
NOOOOOOOOOOOOOOOOOOOOOOOOOOO
MY UNIT AINT HEALING
AAAAAAAAAAAAAAAAAAaaaa
Any loading errors or any errors?
I TRIED SO HARD
In logd
AND GOT SO FAR
let me check
BUT IN THE END
IT DIDNT EVEN MATTER
it looks good
thats what i listen to while polyscript
it motivates me
:emo:
also
ok this is going in mod ideas
fone
?
"Check PolyMod's mod menu to ensure your script is toggled ON"
this is what polymodder said
tf
i didnt know i needed to toggle ts
could it be this "null" thats after checking if it has the ability
idk why its there
it just is
if this worked i could cook so hard on so many aspects of this tribe
its like 1/3 of the polyscript
most of it is just modifying this abilit
ability
the other 2/3 is vampire castle and transforming with bat swarm
oh and giving pop to city when killing unit
@tacit pasture brooo i need ur help it doesnt trigger at all and polymodder doesnt want to help me
:D
so
this the latest?
yes
it doesnt work 😭
it loads properly
no error
but
when it comes time to heal
nothing happens
how should that change anything
its not required for leech to work
yeah sorry im blind
thought that if was for whole thing cause of weird discrod indentation
ok so current code
like if bat has max hp of 5 and heal value is 2 and its current hp is 4
it will not execute
cause
you check for if current health is lower than 5-2=3
yes but
the else
checks for if its lower than max hp at all
no?
then it heals by max hp - current hp
lol its ok
im like going line by line and speaking too soon
it must be bad if you've been typing this long
or you simply have no clue and we're in the same boat
then again if its the bottom part thats the issue (which i shouldve tested) i could just make leech heal > max hp but that'd be goof
okay so healing looks kinda okay
first and foremost the method you are patching is attackcommand.execute. Maybe i was the one to patch this in the olden days, but something like AttackAction.Execute is probably better (and probably not change much but is safer)
try replacing typeof(AttackCommand) with typeof(AttackAction) and "Execute" with nameof(AttackAction.Execute), and also the AttackCommand in the parameters to AttackAction.
This probably won't solve it though. It is generally safer btw to use nameof(method) instead of typing the method in strings.
The bigger mistake is only now i realized, and this is why it is not working:
you put the if (tile2.unit != null ...) if-gate. the blue curly brackets indicate that if the unit exists, then it checks for the first kind of unit health comparison (hp is strictly less than maxhp-healamount).
And you check for the other unit health comparison in the else gate of this if-else, as in if the unit does not exist
the first "mistake" is not really a mistake, more like a good thing to always do
or at least I mean I prefer patching actions over commands personally
if you right click the code and press format document, you'll see why the if-else gates are incorrect
else
{
if (tile2.unit.health < tile2.unit.GetMaxHealth(gameState))
{
Tile tileInstance = MapRenderer.Current.GetTileInstance(tile2.coordinates);
UnitState unit = tile2.unit;
ushort maxHP = (ushort)tile2.unit.GetMaxHealth(gameState);
ushort currentHP = (ushort)tile2.unit.health;
healAmount = (ushort)(maxHP - currentHP);
tileInstance.Heal(healAmount);
unit.health += healAmount;
}
}
this is only checked if the unit does not exist
mhm?
typeof(AttackAction), nameof(AttackAction.Execute)
same structure as before
but different method
commands may not be executed if they are invalid. I like to patch action in these cases, since I want it to heal only and only if the attack has commenced
plus it is more predictable
ohhhhhhhhhh
so
and dont forget to replace the instance in the parameters with AttackAction __instance as well
imma soon sleep now tho
?
ye
ty fapingvin
the main issue was in the if-else part
yes mb
if you fix that it will probably work
aaaa i need to get better eyes
this helps
cause it makes indentations
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ok its logging time
wait
how does one put stuff in the logs
"logger" doesnt exist in the current context
rip to that ideaè
polyscript is ass 💔
im cooked
production of this tribe is halted until i can decipher the issue
@obtuse orchid do Harmony.PatchAll(Main);?
no sorry
not that
Harmony.CreateAndPatchAll(typeof(Main));
this
in load method
Plant orange tree today. Enjoy tasty bark and roots tomorrow. 😋
and you can burn the oranges for fuel if you want
leaves make for great furniture i heard
this person knows whats up
listening to mosshome ambience rn. Very good for working on projects. Coral gorge soundtrack too
affirmative
banan can u fix tho
trying
put this in load
will fix 100%
Oh my yeah ofc
later ig
the orange is simply not the tastiest part of the tree
CreateAndPatchAll
i cant count on 2 hands how many times i forgot that and wondered why nothing works
It's telling Harmony to do its job
I can since I just copy the Load method every time
good idea
btw
rewriting ur parsing
do we really need both cases?
cant it just be lower?
ye
so imma remove it for now, port everything over to utils and implement them there
I guess there are mods that depend on that but not the end of the wotld
Imagine updating gld mods, just like do it
unitAbilityWhitelist exists
Eh idk
but thats not in conquistor

WAIT I SEE SOMETHIGN
"PreFix" and "postFix"
only the non-functional heal leech code
uses pre
im replacing it with post

guys im cooking
ah
Changing prefix to postfix won't change much
Whether it executes before or after battle
mb
ooh
interesting
so for attack it would be prefix
attack increase i mean
yes
i mean
no?
not really
we use it mainly to replace existing methods/block them from ever firing
"extreme cases" as klipi put it once
i dont wanna increase attack of unit after it has attacked
Difference between pre and post is quite literally:
It executes before or after the method took place. Both have use cases
you dont increase attack on the attackAction tho
AT LEAST I HOPE NOT!
Yes there is GetAttack
ahhh
Also with prefix you can skip the original method telling poly to not execute it at all

That's why replacing method with your own is frowned upon cause it breaks compatibility
@obtuse orchid rename gameState to state in the leech patch
why does that change stuff🤔
yeah so
oh uppercase
mb
AHAHAHAHAHAHAHHHHHHHHHHHHHHH
IT WORKSSSSSSSSSSSSs
oh it works on every attack
thats... not good
or is it?
no its not good at all
wait
no it doesnt
AHAHAHAH IT WORKS AS INTENDED
EAHAHSASHAHAHA
EVEN FEAST WORKS
i love polyscript ❤️
my bats dont want to die
unless they are attacked
if u are smart u can win
GOOOO VAMPIRE
HEAL 6 HP PER TURN
holy shit sanginir is fun
i love the mass healing
ok its time to lock in on the attack increase
Nice
fapingvin you have no idea
how satisfying
it is
to bring a bat from 4 hp
back to full hp
after killing a catapult
sanginir actually S tier tribe
Can't wait to play this
I mean it is uh
unless it dont work