From f927df37da777eb7f048fd9209c039653a3406bd Mon Sep 17 00:00:00 2001 From: Kaan Soral Date: Mon, 2 Mar 2026 02:03:38 +0300 Subject: [PATCH] No more App Engine --- README.md | 7 ++++++ config.py | 18 +++++++-------- design/dimensions.py | 5 +++++ design/drops.py | 3 +++ design/items.py | 34 +++++++++++++++++++++++++++++ design/precomputed.py | 2 +- docs/guide/event-lunarnewyear.html | 4 ++-- images/tiles/items/custom.pxd | Bin 459891 -> 459891 bytes js/html.js | 2 +- node/server.js | 2 +- node/server_functions.js | 2 +- scripts/data.js | 24 ++++++++++++-------- scripts/keep_alive.js | 4 ++-- scripts/list_commands.js | 2 +- scripts/run_servers.js | 2 +- scripts/update_machines.js | 2 +- 16 files changed, 83 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 394c2ae..e0107e1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,10 @@ +# Notice: Moved Out of Cloud + +New Live Project At: https://github.com/kaansoral/adventureland_mongodb + +Google Cloud became a joke with constant 500 errors that are not even propagated to the services - likely by design as reporting these issues result in "won't fix" responses. Performance was abysmal, costs were astronomical. The time to free Adventure Land was long overdue. With the switch to MongoDB, Adventure Land is free from any external service, no more random disconnects due to Cloudflare fluctuations or instance restarts either. Just snappy gameplay in an environment that can be managed eternally. + + # Adventure Land - The Open Source CODE MMORPG https://adventure.land diff --git a/config.py b/config.py index 3fc12c3..e812e9f 100644 --- a/config.py +++ b/config.py @@ -114,22 +114,19 @@ if is_production: #maps["desertland"]["key"]="jayson_desertland_copy" pass -game_version=835 +game_version=837 SALES=4+5+388+5101+125/20 #donation+manual+macos+steam+sales update_notes=[ "Valentine's Day Event!", "Lunar New Year Event!", - "Last Update [2nd of February]", - "PR: fix monster dimensions #211", - "PR: Fix miss so that it uses the value from the attack, instead of the attacker #220", - "PR: Update reject_deferred calls to include place for death and disappear events #227", - "PR: Update the two scaling healing skills to accurately reflect their output #223", - "PR: Add flag for implicit targets, and the implicit targets functionality #225", - "PR: Pass the target parameter to consume_mp for more skills #222", -] -next_notes=[ + "Last Update [12th of February]", "5X Co-op contribution points for home server characters", "Overdrop logic for co-op events", + "Smoothed coop contributions", + "Event update, new drops!", +] +next_notes=[ + ] ip_to_subdomain={ #IMPORTANT: SPECIAL PAGE RULES ARE NEEDED: https://dash.cloudflare.com/b6f5a13bded5fdd273e4a1cd3777162d/adventure.land/page-rules - uss1 / eus1 was best "35.187.255.184":"asia1", @@ -142,6 +139,7 @@ ip_to_subdomain={ #IMPORTANT: SPECIAL PAGE RULES ARE NEEDED: https://dash.cloudf "34.67.187.11":"uspvp", "195.201.181.245":"eud1", "158.69.23.127":"usd1", + "195.201.105.60":"euw1", } HTTPS_MODE=True #IMPORTANT: converts server IP's to subdomain urls at create_server_api [17/11/18] always_amazon_ses=True diff --git a/design/dimensions.py b/design/dimensions.py index 4136a22..b9adf7d 100644 --- a/design/dimensions.py +++ b/design/dimensions.py @@ -756,6 +756,11 @@ positions={ "greenenvelopev2":["custom",5,3], + #chinese new year 2026 + "brownenvelope":["custom",4,6], + "horsecapeg":["custom",6,6], + "horsecape":["custom",5,6], + #valentines "solitaire":["",5,16], diff --git a/design/drops.py b/design/drops.py index d4f0d6a..2b29cf6 100644 --- a/design/drops.py +++ b/design/drops.py @@ -267,6 +267,7 @@ drops={ ], "pinkgoblin":[ [1.0/24000,"bkey"], + [1.0/10,"horsecape"], ], "spider":[[0.001,"spidersilk"],[1.0/5000,"offeringp"],[1.0/10000,"spiderkey"]], "tinyp":[[1.0/1,"offeringp"]], @@ -372,6 +373,7 @@ drops={ [0.5,"lmace"], [2.0/4/1000/1000,"cxjar",1,"hat400"], [2.0/6/1000/1000,"chrysalis0"], + [1,"horsecapeg"], ], "ent":[ [1,"essenceofnature"], @@ -814,6 +816,7 @@ drops={ [1,"oxhelmet",None,None,"lucky"], [0.1,"cdragon",None,None,"lucky"], [0.1,"snakeoil"], #2025 + [0.3,"horsecapeg"], ], "eastereggs":[ [1,"egg0"], diff --git a/design/items.py b/design/items.py index 7ca333e..5e6a4f3 100644 --- a/design/items.py +++ b/design/items.py @@ -84,6 +84,40 @@ items={ "grades":[0,8], "g":20000, }, + "horsecape":{ + "type":"cape", + "skin":"horsecape", + "armor":10, + "stat":5, + "speed":1, + "name":"Horse Leather Cape", + "upgrade":{ + "armor":2, + "resistance":2, + "stat":0.10, + "speed":0.1, + }, + "grades":[0,5], + "g":1600000, + }, + "horsecapeg":{ + "type":"cape", + "skin":"horsecapeg", + "armor":10, + "gold":3, + "stat":5, + "speed":1, + "name":"Horse Leather Cape", + "upgrade":{ + "armor":2, + "resistance":2, + "stat":0.10, + "speed":0.1, + "gold":0.5, + }, + "grades":[0,0], + "g":1600000, + }, "fcape":{ "type":"cape", "skin":"fcape", diff --git a/design/precomputed.py b/design/precomputed.py index eba2068..4a566b5 100644 --- a/design/precomputed.py +++ b/design/precomputed.py @@ -1,2 +1,2 @@ -# Mon Feb 02 2026 18:13:18 GMT+0300 +# 2026-02-16T12:43:04.260Z images={"/images/tiles/characters/ninja_turtles.png":{"height":144,"width":312,"type":"png"},"/images/cosmetics/makeup/makeup1.png":{"height":120,"width":1134,"type":"png"},"/images/cosmetics/hairdo/bwhair.png":{"height":120,"width":27,"type":"png"},"/images/cosmetics/beardo/burningeyes1_anim.png":{"height":120,"width":81,"type":"png"},"/images/cosmetics/beardo/burningeyes2_anim.png":{"height":120,"width":81,"type":"png"},"/images/cosmetics/hats/bathat_anim.png":{"height":120,"width":81,"type":"png"},"/images/cosmetics/hats/gcandle_anim.png":{"height":120,"width":81,"type":"png"},"/images/cosmetics/hats/halo_anim.png":{"height":120,"width":81,"type":"png"},"/images/cosmetics/makeup/kunique.png":{"height":120,"width":108,"type":"png"},"/images/cosmetics/skins/mbw.png":{"height":144,"width":81,"type":"png"},"/images/cosmetics/armors/mabw.png":{"height":144,"width":162,"type":"png"},"/images/cosmetics/accessories/kglasses.png":{"height":120,"width":108,"type":"png"},"/images/cosmetics/gravestones/gravestone.png":{"height":64,"width":160,"type":"png"},"/images/tiles/monsters/deep_sea_king.png":{"height":320,"width":318,"type":"png"},"/images/tiles/characters/adversaries.png":{"height":288,"width":324,"type":"png"},"/images/tiles/characters/angel_wingless.png":{"height":288,"width":456,"type":"png"},"/images/tiles/characters/winners_jpa.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/winners_jpb.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/sheet_winnersa.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/sheet_winnersb.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/collection1.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/collection2.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/collection3.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/collectionx.png":{"height":288,"width":456,"type":"png"},"/images/tiles/monsters/snowman.png":{"height":144,"width":76,"type":"png"},"/images/tiles/monsters/Dragold.png":{"height":212,"width":156,"type":"png"},"/images/tiles/monsters/blackscorpion.png":{"height":256,"width":176,"type":"png"},"/images/tiles/monsters/coboldProto.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/liger_x.png":{"height":184,"width":150,"type":"png"},"/images/tiles/monsters/tiger.png":{"height":184,"width":150,"type":"png"},"/images/tiles/monsters/slenderman.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/frankenstein.png":{"height":144,"width":76,"type":"png"},"/images/tiles/characters/custom1.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/custom2.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/custom3.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/others/jsonX.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/mecha_gnome.png":{"height":144,"width":78,"type":"png"},"/images/tiles/monsters/harpy_b_1.png":{"height":212,"width":156,"type":"png"},"/images/tiles/monsters/harpy_b_fly_1.png":{"height":212,"width":156,"type":"png"},"/images/tiles/monsters/harpy_a_1.png":{"height":212,"width":156,"type":"png"},"/images/tiles/monsters/harpy_a_fly_1.png":{"height":212,"width":156,"type":"png"},"/images/tiles/characters/others/ship2.png":{"height":64,"width":201,"type":"png"},"/images/tiles/characters/others/newyear_tree.png":{"height":64,"width":144,"type":"png"},"/images/tiles/characters/bonus1.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/military2.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/military3.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/knights.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/chara2.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/chara3.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/chara4.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/chara6.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/chara7.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/chara8.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/automatron2.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/npc1.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/npc3.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/npc4.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/npc5.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/npc6.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/dwarf2.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/tristone_m.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/tristone_f.png":{"height":288,"width":312,"type":"png"},"/images/tiles/characters/mystics.png":{"height":144,"width":312,"type":"png"},"/images/tiles/monsters/creatures1.png":{"height":144,"width":312,"type":"png"},"/images/tiles/monsters/creatures2.png":{"height":424,"width":624,"type":"png"},"/images/tiles/monsters/jrpumpkins.png":{"height":144,"width":155,"type":"png"},"/images/tiles/characters/chara5.png":{"height":288,"width":312,"type":"png"},"/images/tiles/items/chests.png":{"height":288,"width":504,"type":"png"},"/images/tiles/characters/animationc.png":{"height":400,"width":564,"type":"png"},"/images/tiles/characters/animation1i.png":{"height":400,"width":564,"type":"png"},"/images/tiles/characters/animation2.png":{"height":400,"width":564,"type":"png"},"/images/tiles/characters/animation3.png":{"height":400,"width":564,"type":"png"},"/images/tiles/monsters/elemental.png":{"height":512,"width":720,"type":"png"},"/images/tiles/monsters/monster_dknight1.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/monster_dknight2.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/fairies.png":{"height":288,"width":312,"type":"png"},"/images/tiles/monsters/monster_bird1.png":{"height":228,"width":183,"type":"png"},"/images/tiles/monsters/monster_bird2.png":{"height":228,"width":183,"type":"png"},"/images/tiles/monsters/monster_bird3.png":{"height":228,"width":183,"type":"png"},"/images/tiles/monsters/monster_boar.png":{"height":264,"width":195,"type":"png"},"/images/tiles/monsters/monster_cacto.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/rudolphi.png":{"height":264,"width":195,"type":"png"},"/images/tiles/monsters/monster_elk.png":{"height":264,"width":195,"type":"png"},"/images/tiles/monsters/monster_golem1.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/monster_golem2.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/monster_lich.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/monster_lizardman1.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/monster_lizardman2.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/stompy3.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/monster_minotaur.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/monster_phoenix.png":{"height":228,"width":183,"type":"png"},"/images/tiles/monsters/monster_raptor1.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/monster_raptor2.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/grinch.png":{"height":144,"width":82,"type":"png"},"/images/tiles/monsters/monster_treant.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/monster_wolf1.png":{"height":264,"width":195,"type":"png"},"/images/tiles/monsters/monster_wolf2.png":{"height":264,"width":195,"type":"png"},"/images/tiles/monsters/json.png":{"height":228,"width":183,"type":"png"},"/images/tiles/monsters/custom1.png":{"height":512,"width":720,"type":"png"},"/images/tiles/monsters/custom2.png":{"height":512,"width":720,"type":"png"},"/images/tiles/monsters/goos.png":{"height":256,"width":360,"type":"png"},"/images/tiles/monsters/monster1.png":{"height":512,"width":720,"type":"png"},"/images/tiles/monsters/animals1.png":{"height":288,"width":312,"type":"png"},"/images/tiles/monsters/animals2.png":{"height":288,"width":504,"type":"png"},"/images/tiles/monsters/birds1_modded.png":{"height":288,"width":504,"type":"png"},"/images/tiles/monsters/goblinos.png":{"height":288,"width":312,"type":"png"},"/images/tiles/monsters/goblinkingb.png":{"height":212,"width":156,"type":"png"},"/images/tiles/monsters/monsterc6.png":{"height":512,"width":692,"type":"png"},"/images/tiles/monsters/tinyfairies.png":{"height":288,"width":312,"type":"png"},"/images/tiles/monsters/monsterc2.png":{"height":400,"width":564,"type":"png"},"/images/tiles/monsters/robots.png":{"height":288,"width":372,"type":"png"},"/images/tiles/monsters/mage.png":{"height":288,"width":312,"type":"png"},"/images/tiles/monsters/monster2.png":{"height":512,"width":720,"type":"png"},"/images/tiles/monsters/monster3c.png":{"height":512,"width":720,"type":"png"},"/images/tiles/monsters/monster4.png":{"height":512,"width":720,"type":"png"},"/images/tiles/monsters/vampire2d.png":{"height":288,"width":312,"type":"png"},"/images/tiles/monsters/mr_pumpkin.png":{"height":144,"width":80,"type":"png"},"/images/tiles/monsters/cbee.png":{"height":144,"width":78,"type":"png"},"/images/tiles/monsters/iceGolem.png":{"height":200,"width":141,"type":"png"},"/images/tiles/monsters/green.png":{"height":144,"width":80,"type":"png"},"/images/tiles/monsters/robots_walkin_B_1.png":{"height":288,"width":372,"type":"png"},"/images/tiles/monsters/dryad_green_1.png":{"height":144,"width":78,"type":"png"},"/images/tiles/monsters/mondinos_1.png":{"height":288,"width":456,"type":"png"},"/images/tiles/monsters/giantspider.png":{"height":384,"width":480,"type":"png"},"/images/sprites/emblems/emblems.png":{"height":96,"width":480,"type":"png"},"/images/cosmetics/skins/sskin1.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/skins/mskin1.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/skins/lskin1.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/sbody1.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/mbody1.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/mbody2.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/mbody3.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/mbody4.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/mbody5.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/mbody6.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/sarmor1.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/sarmor2.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor1.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor2.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor3.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor4.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor5.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor6.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor7.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor8.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor9.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor10.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor11.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/marmor12.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/armors/larmor1.png":{"height":288,"width":324,"type":"png"},"/images/all_characters/lchar1.png":{"height":288,"width":324,"type":"png"},"/images/all_characters/mchar16.png":{"height":288,"width":324,"type":"png"},"/images/all_characters/schar7.png":{"height":288,"width":324,"type":"png"},"/images/all_characters/xschar2.png":{"height":288,"width":324,"type":"png"},"/images/all_characters/xxschar2.png":{"height":288,"width":324,"type":"png"},"/images/cosmetics/hairdo/hairdo1.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/hairdo/hairdo2.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/hairdo/hairdo3.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/hairdo/hairdo4.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/hairdo/hairdo5.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/hairdo/hairdo6.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/hats/hats1.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/hats/hats2.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/hats/hats3.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/hats/hats4.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/wings/wings1.png":{"height":144,"width":185,"type":"png"},"/images/cosmetics/wings/wings2.png":{"height":144,"width":128,"type":"png"},"/images/cosmetics/wings/wings3.png":{"height":144,"width":185,"type":"png"},"/images/cosmetics/wings/backpacks.png":{"height":144,"width":185,"type":"png"},"/images/cosmetics/wings/backpack2.png":{"height":144,"width":185,"type":"png"},"/images/cosmetics/tails/wolftail.png":{"height":144,"width":108,"type":"png"},"/images/cosmetics/tails/wolftail2.png":{"height":144,"width":108,"type":"png"},"/images/cosmetics/tails/wolftail3.png":{"height":144,"width":108,"type":"png"},"/images/cosmetics/makeup/smakeup.png":{"height":120,"width":27,"type":"png"},"/images/cosmetics/makeup/malemakeup.png":{"height":120,"width":378,"type":"png"},"/images/cosmetics/makeup/femalemakeupv2.png":{"height":120,"width":351,"type":"png"},"/images/cosmetics/makeup/fmakeup.png":{"height":120,"width":351,"type":"png"},"/images/cosmetics/accessories/eyeglasses.png":{"height":120,"width":1107,"type":"png"},"/images/cosmetics/beardo/beard1.png":{"height":120,"width":1107,"type":"png"},"/images/cosmetics/beardo/mask1.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/beardo/facemakeup.png":{"height":120,"width":675,"type":"png"},"/images/cosmetics/makeup/male_makeup.png":{"height":120,"width":567,"type":"png"},"/images/cosmetics/makeup/female_makeup.png":{"height":120,"width":621,"type":"png"},"/images/cosmetics/makeup/unisex_makeup.png":{"height":120,"width":648,"type":"png"},"/images/tiles/items/pack_1a.png":{"height":2048,"width":256,"type":"png"},"/images/tiles/items/pack_20vt8.png":{"height":1280,"width":320,"type":"png"},"/images/tiles/items/skills_20v6.png":{"height":260,"width":320,"type":"png"},"/images/tiles/items/custom.png":{"height":180,"width":140,"type":"png"},"/images/tiles/items/community.png":{"height":180,"width":140,"type":"png"},"/images/tiles/map/castle.png":{"height":512,"width":544,"type":"png"},"/images/tiles/map/custom2.png":{"height":560,"width":752,"type":"png"},"/images/tiles/map/custom.png":{"height":480,"width":480,"type":"png"},"/images/tiles/map/custom_a.png":{"height":320,"width":320,"type":"png"},"/images/tiles/map/doors.png":{"height":256,"width":192,"type":"png"},"/images/tiles/map/dungeon.png":{"height":416,"width":912,"type":"png"},"/images/tiles/map/house.png":{"height":1168,"width":1104,"type":"png"},"/images/tiles/map/inside.png":{"height":816,"width":832,"type":"png"},"/images/tiles/map/outside.png":{"height":832,"width":904,"type":"png"},"/images/tiles/map/puzzle.png":{"height":320,"width":336,"type":"png"},"/images/tiles/map/water_updated.png":{"height":1200,"width":704,"type":"png"},"/images/tiles/map/winter.png":{"height":640,"width":912,"type":"png"},"/images/tiles/map/fort.png":{"height":832,"width":656,"type":"png"},"/images/tiles/map/beach_v2.png":{"height":416,"width":576,"type":"png"},"/images/tiles/map/world.png":{"height":288,"width":432,"type":"png"},"/images/tiles/items/stands.png":{"height":144,"width":78,"type":"png"},"/images/tiles/map/new.png":{"height":480,"width":672,"type":"png"},"/images/tiles/map/dark_dimension.png":{"height":336,"width":464,"type":"png"},"/images/tiles/map/jungle.png":{"height":336,"width":496,"type":"png"},"/images/tiles/map/ship.png":{"height":448,"width":864,"type":"png"},"/images/tiles/map/ashlands.png":{"height":336,"width":640,"type":"png"},"/images/tiles/map/ruins.png":{"height":832,"width":704,"type":"png"},"/images/tiles/map/tree.png":{"height":576,"width":544,"type":"png"},"/images/tiles/map/lights.png":{"height":480,"width":640,"type":"png"}} diff --git a/docs/guide/event-lunarnewyear.html b/docs/guide/event-lunarnewyear.html index af119d7..9703c28 100644 --- a/docs/guide/event-lunarnewyear.html +++ b/docs/guide/event-lunarnewyear.html @@ -2,7 +2,7 @@

Lunar New Year on Adventure Land

-

Green Envelopes drop globally. You can exchange them from Xyn in Mainland.
+
Brown Envelopes drop globally. You can exchange them from Xyn in Mainland.

@@ -18,7 +18,7 @@ diff --git a/images/tiles/items/custom.pxd b/images/tiles/items/custom.pxd index f3c88326435a2e8dcb88813f5583d1223ad33d8e..3cdb2423696324b657bb6cfa9064d02567f343cb 100644 GIT binary patch delta 15235 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 m=4S"; - html+="

"+item_container({skin:"greenenvelope",bcolor:"black"})+"
"; + html+="
"+item_container({skin:"brownenvelope",bcolor:"black"})+"
"; html+="
INFO
"; html+=""; content=true; diff --git a/node/server.js b/node/server.js index 4a46a1f..fe765ff 100644 --- a/node/server.js +++ b/node/server.js @@ -33,7 +33,7 @@ eval("" + fs.readFileSync(variables.functions_path)); eval("" + fs.readFileSync(variables.data_path)); var base_url = variables.base_url; var server_id = "1"; -var server_auth = "123456"; +var server_auth = require("crypto").randomBytes(32).toString("hex"); var server_name = ""; var players = {}; var dc_players = {}; diff --git a/node/server_functions.js b/node/server_functions.js index 6b84115..1d00e2d 100644 --- a/node/server_functions.js +++ b/node/server_functions.js @@ -279,7 +279,7 @@ function sprocess_game_data() { } if (events.lunarnewyear) { - D.drops.maps.global.push([0.00005, "greenenvelope"]); + D.drops.maps.global.push([0.00005, "brownenvelope"]); D.drops.maps.global.push([0.000000005, "5bucks"]); } if (events.valentines) { diff --git a/scripts/data.js b/scripts/data.js index c93d168..55aa0ca 100644 --- a/scripts/data.js +++ b/scripts/data.js @@ -1,13 +1,19 @@ // Mappings: config.py + Cloudflare machines={ - "eud1":{ - "key":"~/thegame/design/docs/id_rsa.pem", - "ip":"195.201.181.245", + // "eud1":{ + // "key":"~/thegame/design/docs/id_rsa.pem", + // "ip":"195.201.181.245", + // "user":"root", + // "map":"eud1", + // }, + "euw1":{ + "key":"~/server_admin/keys/hetzner_dedicated", + "ip":"195.201.105.60", "user":"root", - "map":"eud1", + "map":"euw1", }, "usd1":{ - "key":"~/thegame/design/docs/id_rsa.pem", + "key":"~/server_admin/keys/usd1_dedicated", "ip":"158.69.23.127", "user":"ubuntu", "map":"usd1", @@ -68,19 +74,19 @@ servers=[ "region":"EU", "name":"I", "port":2053, - "machine":"eud1", + "machine":"euw1", }, { "region":"EU", "name":"II", "port":2083, - "machine":"eud1", + "machine":"euw1", }, { "region":"EU", "name":"PVP", "port":2087, - "machine":"eud1", + "machine":"euw1", }, // { // "region":"EU", @@ -92,7 +98,7 @@ servers=[ "region":"ASIA", "name":"I", "port":8443, - "machine":"eud1", + "machine":"euw1", }, { "region":"US", diff --git a/scripts/keep_alive.js b/scripts/keep_alive.js index 83c4939..2324c01 100644 --- a/scripts/keep_alive.js +++ b/scripts/keep_alive.js @@ -12,10 +12,10 @@ setInterval(function(){ servers.forEach(function(server){ if(server.machine!=id) return; var name=server.region+" "+server.name+" "+server.port; - if(output.indexOf("node server/server.js "+server.region+" "+server.name+" "+server.port)==-1) + if(output.indexOf("node adventureland/server.js "+server.region+" "+server.name+" "+server.port)==-1) { console.log("Server not running: "+name); - var command="ssh -i "+machine.key+" "+machine.user+"@"+machine.ip+" \"nohup node server/server.js "+server.region+" "+server.name+" "+server.port+" > s"+server.port+".out 2> s"+server.port+".err < /dev/null &\""; + var command="ssh -i "+machine.key+" "+machine.user+"@"+machine.ip+" \"nohup node adventureland/server.js "+server.region+" "+server.name+" "+server.port+" > s"+server.port+".out 2> s"+server.port+".err < /dev/null &\""; console.log(command); f.execso(command); } diff --git a/scripts/list_commands.js b/scripts/list_commands.js index 756296c..4649948 100644 --- a/scripts/list_commands.js +++ b/scripts/list_commands.js @@ -7,6 +7,6 @@ servers.forEach(function(server){ console.log(command); command="["+server.machine+" logs] scp -i "+machine.key+" "+machine.user+"@"+machine.ip+":s"+server.port+".out ."; console.log(command); - command="["+server.machine+" run] ssh -i "+machine.key+" "+machine.user+"@"+machine.ip+" \"nohup node server/server.js "+server.region+" "+server.name+" "+server.port+" > s"+server.port+".out 2> s"+server.port+".err < /dev/null &\""; + command="["+server.machine+" run] ssh -i "+machine.key+" "+machine.user+"@"+machine.ip+" \"nohup node adventureland/server.js "+server.region+" "+server.name+" "+server.port+" > s"+server.port+".out 2> s"+server.port+".err < /dev/null &\""; console.log(command); }); \ No newline at end of file diff --git a/scripts/run_servers.js b/scripts/run_servers.js index c237a0b..8ad302b 100644 --- a/scripts/run_servers.js +++ b/scripts/run_servers.js @@ -3,7 +3,7 @@ require(process.env.HOME+"/thegame/scripts/data.js"); servers.forEach(function(server){ var machine=machines[server.machine]; - var command="ssh -i "+machine.key+" "+machine.user+"@"+machine.ip+" \"nohup node server/server.js "+server.region+" "+server.name+" "+server.port+" > s"+server.port+".out 2> s"+server.port+".err < /dev/null &\""; + var command="ssh -i "+machine.key+" "+machine.user+"@"+machine.ip+" \"source ~/.nvm/nvm.sh && screen -dm bash -c 'node adventureland/server.js "+server.region+" "+server.name+" "+server.port+" > adventureland/s"+server.port+".out 2> adventureland/s"+server.port+".err'\""; console.log(command); f.execso(command); }); \ No newline at end of file diff --git a/scripts/update_machines.js b/scripts/update_machines.js index a43024a..22d1d28 100644 --- a/scripts/update_machines.js +++ b/scripts/update_machines.js @@ -8,7 +8,7 @@ for(var id in machines) { var machine=machines[id]; // var command="scp -qv -r -i "+machine.key+" ~/deploy/server "+machine.user+"@"+machine.ip+":./ 2>&1 | grep -e 'Sending file modes' -e 'Exit status'"; - var command="rsync -ru --exclude='node_modules/' ~/deploy/server -i "+machine.key+" "+machine.user+"@"+machine.ip+":./"; + var command="rsync -rui --exclude='node_modules/' --exclude='package-lock.json' -e 'ssh -i "+machine.key+"' ~/deploy/server/ "+machine.user+"@"+machine.ip+":./adventureland/"; //var command="rsync -ru ~/deploy/server -e \"ssh -i "+machine.key+"\" "+machine.user+"@"+machine.ip+":./"; // Spent 50 minutes on perfecting the scp output, bastards didn't provide a non-interactive output argument ... [05/08/18] // command+=" > /tmp/scp.log 2>&1";