1,956,747 events, 1,146,886 push events, 1,589,484 commit messages, 83,594,740 characters
2020-11-28 : bugfixes. 3ds repo fix. sorry guyz|Pretty sure god fucking hates me|
Locations and spell updates
- Switched Magic Sign mutations back to not having upgrades again. This is acceptable now that NO_FAIL allows for tinmkering with experience granted per cast, so cast-grinding is an actual option now. As a side benefit, this enables...
- Set it so that the arcanist scenarios can learn some of the magic signs you'd normally need a pattern scroll for. The above is needed for that so that selecting and unselecting that trait works correctly.
- Tweaked the spell selection so that the spell lists are a bit more unique between Seeker of The Arcane and Urban Awakening. Might, Agility, Insight, and Light are the only ones the two scenarios have in common now, the remaining spell choices for each are unique to that scenario.
- Added arcane variants to libraries, house_library, churches, and museums.
- Couple minor additions of arcana content to some newish vanilla itemgroups.
-wk war mace tooltip -gimli leap and axe throw tooltip. -MEDIUM_OR_ABOVE for one of the watcher spawn fxs. -elrond dmg gains reduced slightly for all levels and appaer in tooltip.. (so his scalars don't become fucked up at higher levels) -Windrider Fx now plays in the back of grofindel not in the ground. -watcher shit -farsight to fade out and better green. -elrond farsight to have a similar particle but bluer.
On the Path to Rome
Well Roads are a fucking thing again. My HEAVENS did i miss 2 small details... Gotta love programming!
Also moved them to better suit the directories
Culls Wizard Academy Outright (#10534)
-
test
-
Delete Academy.dmm
-
Update space.dm
-
where were you people on the other prs holy shit
-
like goddamn macaws. Readds Academy for blacklisting
misc fixes, mobile indicator (thanks gibbu)
Fucking hell bitchy ass discord
"3:55pm. I am pretty lost in thought.
4pm. How about I take off for a bit. I'll shut down the computer and spend some time in bed.
let add_package (s : PackageCoreState, infer_results' : Map<string,InferResult Stream>, dirty_nodes : Set<string>) (dir, x : AddPackageInput) =
let old_package = Map.tryFind dir s.packages
let is_dirty = x.links |> Map.exists (fun k _ -> Set.contains k dirty_nodes)
let env_in =
let f() =
let l = x.links |> Map.fold (fun l k v -> (s.packages.[k].env_out >>-* in_module v) :: l) [] |> Job.conCollect
l >>-* Seq.fold union package_env_default
if is_dirty then f()
else match old_package with Some x -> x.env_in | None -> f()
let id, package_ids =
if PersistentHashMap.containsKey dir s.package_ids then s.package_ids.[dir], s.package_ids
else s.package_ids.Count, s.package_ids.Add(dir,s.package_ids.Count)
let (infer_results, top_env_out), stream =
match old_package with
| Some _ when is_dirty -> (multi_file id (env_in >>-* package_to_top)).Run(x.files)
| Some p -> p.stream.Run(x.files)
| None -> (multi_file id (env_in >>-* package_to_top)).Run(x.files)
let env_out = top_env_out >>=* fun top_env_out -> env_in >>- fun env_in -> top_to_package id top_env_out env_in
let s = // Remove the current package dir from the parents based on the old links.
let old_links = match old_package with Some x -> x.links | None -> Map.empty
links_rev_remove old_links dir s
// Add the current package dir to the parents based on the new links.
|> links_rev_add x.links dir
let infer_results = Map.foldBack Map.add infer_results infer_results'
let package = {
links = x.links
rev_links = match old_package with Some x -> x.rev_links | None -> Set.empty
env_in = env_in
env_out = env_out
stream = stream
}
{ packages = Map.add dir package s.packages; package_ids = package_ids }, infer_results, Set.add dir dirty_nodes
let remove_package (s : PackageCoreState) x =
match Map.tryFind x s.packages with
| Some package ->
let s = links_rev_remove package.links x s
{s with packages = Map.remove x s.packages}
| None ->
s
let package_core =
let rec loop (s : PackageCoreState) =
{new PackageCoreStream with
member _.ReplacePackages(adds,removes) =
let s,b,_ = List.fold add_package (s,Map.empty,Set.empty) adds
b, loop (Set.fold remove_package s removes)
}
loop {packages=Map.empty; package_ids=PersistentHashMap.empty}
Here is the core of the packages as they are done during typechecking, but I am not inspired.
...Lethargy is attacking me whenver I think about this. I did have a decent bit of flow for the multi file stuff, but let me take off for a while.
4:55pm. After gathering my thoughts for a while I have some inspiration. I know how to do the package stream for the prepass.
// Rather than just throwing away the old results, diff returns the new tree with as much useful info from the old tree as is possible.
let diff_order_changed old new' =
let mutable same_files = true
let mutable same_order = true
let rec elem (o,n) =
match o,n with
// In `n`, `meta` and `tc` fields are None.
| File(path,name,(_,p,tc)) & o,File(path',name',(_,p',_)) when path = path' && name = name' ->
if same_files then
if Object.ReferenceEquals(p,p') then o
else same_files <- false; File(path,name,(None,p',tc))
else File(path,name,(None,p',None))
| Directory(name,l), Directory(name',l') when name = name' -> Directory(name,list (l,l'))
| _, n -> same_order <- false; n
and list = function
| o :: o', n :: n' -> elem (o,n) :: (if same_order then list (o', n') else n')
| [], [] -> []
| _, n -> same_order <- false; n
list (old,new')
Before I do that, let me revisit this for a bit. Now that I've generalized the file hierarchy that opens some doors for me.
| File(path,name,(_,p,tc)) & o,File(path',name',p') when path = path' && name = name' ->
I meant to simplify things by doing this, but that...
| _, n -> same_order <- false; n
...causes shortcutting to break down.
5:10pm. Had to take a break. Let me do it. Let me start work on the package stream. I am not sure if I'll be able to finish it today, but I should start it off so that I can finish it tomorrow. That will leave the rest of the day for the review.
type MultiFileStream = EditorStream<DiffableFileHierarchy list,bool * PrepassTopEnv Promise>
let multi_file package_id top_env =
let rec create files' =
{new MultiFileStream with
member _.Run files =
let files = diff_order_changed files' files
let x, l = multi_file_run top_env_empty prepass id Prepass.union Prepass.in_module package_id top_env files
(Map.isEmpty (fst x), snd x), create l
}
create []
As the initial step, let me do the multi file like this. I am going to need feedback on whether a package is dirty.
Now let me start the package.
type PackageStream = EditorStream<unit,unit>
What should the inputs be?
type TargetPackage = string
type PackageName = string
type PackageStream = EditorStream<Map<PackageName,InferResult Stream> * TargetPackage,unit>
I also need a map of package unadorned file hierarchies.
5:20pm.
open Spiral.ServerUtils
type TargetPackage = string
type PackageName = string
type PackageStream = EditorStream<Map<PackageName,InferResult Stream * ValidatedFileHierarchy> * TargetPackage,unit>
This is the ideal input, but it would be inefficient to transform the entire supervisor state just for this. Can't I do better?
type SupervisorState = {
modules : Map<string, TokRes * ParserRes Promise * ModuleStream>
infer_results : Map<string, InferResult Stream>
diff_stream : PackageDiffStream
packages : PackageMaps
}
type ResultMap<'a> = Map<string,Result<'a,string>>
type PackageMaps = {
package_schemas : PackageSchema ResultMap
package_links : MirroredGraph
validated_schemas : ValidatedSchema ResultMap
}
I really don't want to pass in this entire thing into PackageStream
.
Let me compromise a little. I'll do less work in the package stream.
type PackageStream = EditorStream<Map<PackageName,InferResult Stream * ValidatedFileHierarchy> * PackageName seq,unit>
It occurred to me that I am going to have to do a manual search in order to make sure that the target package has no errors.
I could construct the inputs for this stream while doing that. And while doing that I should also do a topological sort. That will get me what I need for the prepass in one move.
5:25pm. Lunch time.
6pm. And lunch is done.
6:05pm. Let me call it a day here. I certainly do not feel like programming now. I really wish I did more today, but I'll have to be satisfied with what I've got. Tomorrow I will try to get this current step out of the way.
Let me have some fun here."
Keyboard layout changes + removed some duplicate entries
The underscore and hyphen were listed in the file twice, so now they're not. I also fixed up the layout slightly.
I cheated and used my layout generator script to just recreate the file :).
Oh and sadly the "YO!! _\m/" was changed to "!!!" lol.
Also some things were in the wrong place, like some special characters like question mark was in between the "selection mode sequence" and the "space" button. They should just be with the other letters.
The letters are now all in the order you'd read them for each section, and this goes clockwise from the top right.
I've also put the Esperanto letters underneath the capital letters.
I've resubmitted the pull request because I'm stupid an uploaded the wrong file when I moved the Esperanto to be closer to the letters.
Luke fuck you man. Readss bay circuitry, in it's own folder.
v2.5.4.2 update
New: o Standalone ability "Shield Other" - ability to learn restricted to holy casters (paladin and priest); shield improves with caster's level o Standalone ability "Discord" - restricted to Bard; causes dramatic mental distortion o Arcane Forge recipe - infuse stone chunks with mana to form magicyte
Tweaks: o Totems no longer expand the home area o Transmutation for resources below .1 value and above 100 value are no longer valid o Elemental assault minimum event requirements increased: minimum population 4->5, earliest day 21->40 o Shaman: - Spirit Wolves summons a pack of wolves to briefly assist the shaman (instead of an animated pack of charging wolves) - Chain Lightning max hops, forks and damage has been reduced o Paladin: - Overwhelm no longer hits friendly targets and will apply a brief (1.5-2s) period of invulnerability to all nearby friendly pawns - Valiant Charge taunts enemies near the point of impact and applies a 50pt damage shield to the caster - Heal cast timer reduced .6s->.3s; Heal mana cost increased from 15->20 (also applies for cantrips) - Paladins have a 20% chance to apply 2-4 bonus holy damage when using a melee weapon; damage improves by 1 for every 10 levels - Ray of Hope (previously fire mage ability) has been added as a standard paladin ability o Fire mage: - Ray of Hope is now a Paladin ability; fire mages now get "Inner Fire" - an aura that periodically buffs allies, increasing their endurance and resistances - Fireball damage increased ~10% o Ice mage: - Soothing Breeze no longer reduces hunger or improves manipulation, consciousness buff scaling adjusted (5,10,15,20)->(10,12,14,15) - Frostray armor penetration increased - Snowball radius increased 4->6 cells o Gladiator: - Fortitude damage mitigation increased at early skill levels (2,4,6,8)->(5,6,7,8) - Grapple range increased by 3 for all ability levels - Whirlwind damage increased by 20% (from 50% of weapon damage to 60%) o Druid: - Beguile Animal has had max targets and effect size increases for all stages, mana cost reduced 40->35 - Cure Disease mana cost increased 35->45, cooldown increased 30s->60s - Regrowth surgery required mana potions increased 2->4 o Priest: - Purify mana cost increased 70->80, Unquestioned Purity reduction reduced from 7%->6% per skill point - Resurrection mana cost increased 90->100 o Death Knight: - Hate armor scaling has been increased at low levels and reduced at high levels - Lifesteal amount reduced from 20+4%->15+2% o Warlock/Succubus: - Dominate infection rate doubled; 4s->2s infection frequency - Shadowbolt damage increased 15->16 o Summoner: - Summon pylon cooldown reduced 40s->20s; fixed inconsistencies in scaling and added scaling accuracy, pylon health increased by 60 at all tiers; pylons now face their target - Summon explosive cooldown reduced 30s->20s - Summon elemental creates additional elementals at each stage: (1xLesser, 1xNormal, 1xGreater, 2xLesser + 1xGreater) -> (2xLesser, 2xLesser + 1xNormal, 2xLesser + 1xGreater, 2xNormal + 1xGreater) o Bard: - Greatly accelerates mood and mana regeneration of nearby pawns while playing musical instruments (royalty) o Psionic: - Will only use psionic leap attacks when ordered to melee attack - Psionic Barrier will no longer block projectiles originating from within the barrier; damage to energy efficiency increase ~20%; radius increased by .5 cells for all stages - Improved functionality to draw the psionic barrier (less flickering) o Technomancer: - Techno-bit grenades have been replaced with laser bolts o Sniper: - New standard ability "Shadow Slayer" - long duration invisibility but wears off quickly during combat; can improve sniper's damage while cloaked
Bug fixes: o Spirit animals should no longer be selected for quests o Sun Light displays an accurate effect radius when using the ability
Merge pull request #1 from laoqiu233/main
fuck you
Finish rewriting in C, haven't tried compiling yet C is the suckless language. Bjarne Stroustrup was a fucking evil idiot who tried to ruin a perfectly good programming language with shit like classes and templates in C++ to make code inefficient and messy. Wtf needs public and private variables and functions in C++ classes? Private variables are stupid pieces of shit that slow down programs by having to call getter and setter functions all the time just to access a fucking variable. Just use a struct. There's all the variables, pointers, and values stored in the struct that can be accessed directly without the overhead of a function that just fucking returns a value, and it makes the code confusing and more janky, which makes it run like shit. If you have any software projects in C++, I recommend you rewrite the whole fucking thing in C. It will be easier to work with and easier to optimize. If you think that optimization doesn't matter because modern computers are fast and have plenty of resources, go fuck yourself. You're the reason Fruit Ninja used to run fine on an iPhone 4, but now lags so much on my Galaxy A21. Modern computers would be capable of so much more if everyone still tried to optimize their code as well as possible. Fuck C++. Write in C.