123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 | #define init
global.numerals = ["I","Jr.","III","IV","V","VI","VII","VIII","IX","X","XI","XII","XIII","XIV","XV","XVI","XVII","XVIII","XIX","XX"];
//trace("Allies now have names.");
global.allynames = ["Bob", "Weave", "Rami", "JW", "Joonas", "Jukio", "Tam", "Azite", "Stef",
"Michael", "Jessica", "Christopher", "Ashley", "Matthew", "Emily", "Joshua", "Sarah", "Jacob", "Samantha",
"Nicholas", "Amanda", "Andrew", "Brittany", "Daniel", "Elizabeth", "Tyler", "Taylor", "Joseph", "Megan",
"Brandon", "Hannah", "David", "Kayla", "James", "Lauren", "Ryan", "Stephanie", "John", "Rachel",
"Zachary", "Jennifer", "Justin", "Nicole", "William", "Alexis", "Anthony", "Victoria", "Robert", "Amber",
"Jonathan", "Alyssa", "Austin", "Courtney", "Alexander", "Rebecca", "Kyle", "Danielle", "Kevin", "Jasmine",
"Thomas", "Brianna", "Cody", "Katherine", "Jordan", "Alexandra", "Eric", "Madison", "Benjamin", "Morgan",
"Aaron", "Melissa", "Christian", "Michelle", "Samuel", "Kelsey", "Dylan", "Chelsea", "Steven", "Anna",
"Brian", "Kimberly", "Jose", "Tiffany", "Timothy", "Olivia", "Nathan", "Mary", "Adam", "Christina",
"Richard", "Allison", "Patrick", "Abigail", "Charles", "Sara", "Sean", "Shelby", "Jason", "Heather",
"Cameron", "Haley", "Jeremy", "Maria", "Mark", "Kaitlyn", "Stephen", "Laura", "Jesse", "Erin", "Juan", "Andrea",
"Alex", "Natalie", "Travis", "Jordan", "Jeffrey", "Brooke", "Ethan", "Julia", "Caleb", "Emma", "Luis", "Vanessa",
"Jared", "Erica", "Logan", "Sydney", "Hunter", "Kelly", "Trevor", "Kristen", "Bryan", "Katelyn", "Evan", "Marissa",
"Paul", "Amy", "Taylor", "Crystal", "Kenneth", "Paige", "Connor", "Cassandra", "Dustin", "Gabrielle",
"Noah", "Katie", "Carlos", "Caitlin", "Devin", "Lindsey", "Gabriel", "Destiny", "Ian", "Kathryn",
"Nathaniel", "Jacqueline", "Gregory", "Shannon", "Derek", "Jenna", "Corey", "Angela", "Jesus", "Savannah",
"Scott", "Mariah", "Bradley", "Alexandria", "Dakota", "Sierra", "Antonio", "Alicia", "Marcus", "Briana",
"Blake", "Miranda", "Garrett", "Jamie", "Edward", "Catherine", "Luke", "Brittney", "Shawn", "Breanna",
"Peter", "Grace", "Seth", "Monica", "Mitchell", "Sabrina", "Adrian", "Madeline", "Victor", "Caroline",
"Miguel", "Molly", "Shane", "Erika", "Chase", "Mackenzie", "Isaac", "Leah", "Spencer", "Diana", "Lucas", "Whitney",
"Jack", "Cheyenne", "Tanner", "Bailey", "Angel", "Christine", "Vincent", "Meghan", "Isaiah", "Lindsay", "Dalton", "Angelica",
"Brett", "Cynthia", "George", "Margaret", "Alejandro", "Kaitlin", "Elijah", "Alexa", "Cory", "Hailey",
"Cole", "Veronica", "Joel", "Melanie", "Erik", "Bianca", "Jake", "Autumn", "Mason", "Ariel", "Jorge", "Kristin",
"Dillon", "Bethany", "Raymond", "Lisa", "Colton", "Kristina", "Ricardo", "Holly", "Casey", "Leslie", "Francisco", "Casey",
"Brendan", "Chloe", "Devon", "April", "Keith", "Julie", "Colin", "Claire", "Wesley", "Kaylee", "Phillip", "Brenda",
"Oscar", "Kathleen", "Julian", "Rachael", "Johnathan", "Karen", "Eduardo", "Sophia", "Chad", "Patricia",
"Donald", "Gabriela", "Bryce", "Kendra", "Ronald", "Dominique", "Alec", "Kara", "Dominic", "Ana", "Grant", "Desiree",
"Martin", "Tara", "Henry", "Michaela", "Mario", "Brandi", "Xavier", "Carly", "Manuel", "Kylie", "Alan", "Karina",
"Derrick", "Adriana", "Frank", "Valerie", "Tristan", "Caitlyn", "Collin", "Natasha", "Omar", "Hayley",
"Jeremiah", "Rebekah", "Jackson", "Jocelyn", "Troy", "Cassidy", "Edgar", "Jade", "Javier", "Gabriella",
"Douglas", "Makayla", "Clayton", "Daisy", "Jonathon", "Jillian", "Nicolas", "Alison", "Andre", "Audrey",
"Maxwell", "Faith", "Ivan", "Angel", "Philip", "Nancy", "Levi", "Dana", "Sergio", "Krystal", "Roberto", "Alejandra",
"Darius", "Ariana", "Andres", "Summer", "Cristian", "Isabella", "Hector", "Mikayla", "Fernando", "Raven",
"Drew", "Katrina", "Curtis", "Kiara", "Gary", "Sandra", "Riley", "Meagan", "Johnny", "Lydia", "Max", "Kirsten",
"Dennis", "Chelsey", "Malik", "Zoe", "Wyatt", "Monique", "Cesar", "Claudia", "Edwin", "Mallory", "Gavin", "Joanna",
"Preston", "Deanna", "Marco", "Isabel", "Allen", "Ashlee", "Ruben", "Felicia", "Calvin", "Marisa", "Mathew", "Mercedes",
"Randy", "Mckenzie", "Brent", "Jasmin", "Jerry", "Krista", "Hayden", "Yesenia", "Alexis", "Diamond", "Brady", "Evelyn",
"Parker", "Cindy", "Tony", "Selena", "Pedro", "Brandy", "Craig", "Gina", "Larry", "Mia", "Bruce",
"Archibald", "Gordo", "Spud", "George Foreman", "Lil' Bandit", "Pooter", "Scooter", "Axel", "Duffy", "Daddy",
"Buzz", "Froggy", "Charlie", "Mac", "Dee", "Spike", "Jet", "Faye", "Ed", "Alphonse", "Urethra", "Mal", "Jayne", "Inara", "Wash",
"Simon", "River", "Shep", "Derrial", "Georgia", "Winry", "Ripley", "Ash", "Jackie", "Bill", "Ted", "Elvis", "Roy", "Harry",
"Ron", "Hermione", "Snake", "Frodo", "Samwise", "Merry", "Pip", "Tuco", "Angeleyes", "Blondie", "Conan", "Lana",
"Arthur", "Ford", "Zaphod", "Aldo", "Joe", "Kiki", "Lawrence", "Leon", "Matilda", "Lupin", "Terry", "Graham",
"Donnie", "Nick", "Dorian", "Tommy", "Lola", "Jean-Luc", "Geordi", "Beverly", "Truman", "Wallace", "Wayne", "Garth",
"Toshiro", "Akira", "Tetsuo", "Sterling", "Malory", "Pam", "Cyril", "Ray", "Cheryl", "Woodhouse", "Gob", "George Michael",
"Tobias", "Rock", "Carl", "Neil", "Abed", "Annie", "Jeff", "Britta", "Pierce", "Ben", "Chang", "Shirley", "Eustice",
"Miriam", "Dirk", "Moss", "Russell", "Reinhardt", "Yang", "Yoko", "Maiza", "Miria", "Czeslaw", "Firo", "Ursula",
"Che", "Vladimir", "Fidel", "Starchy", "Finn"];
global.adjectives = ["Reckless","Timid","Potato-aim","Shield-shooter","Bulletsponge","Bodyguard","Skillful","Badass",
"Wimpy","Wussy","Ugly","One-eyed","Fearless","Brave","Bold","Lazy","Lively","Unkillable","Fat","Skinny","Tall","Short",
"Buff","Tough","Big","Lil'","Speedy","Ol'","Prof.","Dr.","Handsome","Slow","Fast"];
global.viewer_names = undefined;
reset_ally_generations();
global.color_index = 1;
#define game_start
reset_ally_generations();
global.color_index = 1;
#define step
with Ally {
if ("name" not in self) {
if (is_undefined(global.viewer_names)) {
var i = irandom(array_length_1d(global.allynames)-1);
name = global.allynames[i];
} else {
var i = irandom(ds_list_size(global.viewer_names)-1);
name = ds_list_find_value(global.viewer_names, i);
}
namealpha = 1;
namecolor = make_color_hsv(255*((global.color_index*(1 + sqrt(5))/2) mod 1), 50, 255);
global.color_index++;
switch (name) {
case "Tobias":
image_blend = make_color_rgb(125,125,255);
break;
}
if (random(1) < 1/20) {
var adj = global.adjectives[irandom(array_length_1d(global.adjectives)-1)];
switch (adj) {
case "Unkillable":
my_health = ceil(my_health * 2);
unkillable = true;
break;
case "Wussy":
case "Wimpy":
my_health = ceil(my_health * .5);
break;
case "Lively":
case "Tough":
my_health = ceil(my_health * 1.5);
break;
case "Lil'":
image_xscale *= 0.75;
image_yscale *= 0.75;
size *= .75;
my_health = ceil(my_health * .75);
break;
case "Big":
image_xscale *= 1.5;
image_yscale *= 1.5;
size *= 1.5;
my_health = ceil(my_health * 1.25);
break;
case "Fat":
image_xscale *= 1.25;
size *= 1.2;
my_health = ceil(my_health * 1.25);
break;
case "Skinny":
image_xscale *= .75;
size *= .8;
my_health = ceil(my_health * .75);
break;
case "Tall":
image_yscale *= 1.25;
size *= 1.2;
break;
case "Short":
size *= .8;
image_yscale *= .75;
break;
case "Dr.":
doctor = true;
break;
}
name = adj + " " + name;
}
var gen = global.generations[? name];
if (is_undefined(gen)) {
gen = 0;
}
global.generations[? name] = gen + 1;
if (gen > 0) {
var numeral = (gen < 20 ? global.numerals[gen] : string(gen));
name += " " + numeral;
}
} else {
namealpha -= 1/60;
if (namealpha < 0) {namealpha = 0;}
if ("unkillable" in self && my_health < 10) {
my_health += 1;
}
if ("doctor" in self) {
with HPPickup {
var hp = self;
if (place_meeting(x,y,other)) {
with Player {
if (race == "rebel") {
hp.x = x;
hp.y = y;
}
}
}
}
}
with Player {
if (point_distance(other.x,other.y,mouse_x[index],mouse_y[index]) < 30) {
other.namealpha = 1;
}
}
}
}
with Player {
var closest_ally;
var closest_distance = 999999;
with Ally {
var dist = point_distance(x,y,mouse_x[other.index],mouse_y[other.index]);
if (dist < closest_distance) {
closest_ally = self;
closest_distance = dist;
}
}
if (closest_ally != undefined && closest_distance < 50) {
closest_ally.namealpha = 1;
}
}
#define draw
with Ally {
if ("name" in self && namealpha > 0) {
draw_set_halign(fa_center);
draw_set_alpha(namealpha*.3);
draw_set_color(c_black);
draw_text(x+1,y-15,name);
draw_text(x,y-15+1,name);
draw_set_alpha(namealpha);
draw_set_color(namecolor);
draw_text(x,y-15,name);
draw_set_alpha(1);
}
}
#define chat_command(command, username)
if (command == "twitchallies") {
if (username == "") {
trace("Usage: /twitchallies <your channel name>");
return true;
}
username = string_lower(username);
if (!fork()) {
return true;
}
if (file_loaded("twitch.json")) {
file_unload("twitch.json");
}
trace("Loading Twitch viewers, this may hang the game for a bit...");
file_download("https://tmi.twitch.tv/group/user/"+username+"/chatters", "twitch.json");
while (!file_loaded("twitch.json")) wait 1;
var response_text = string_load("twitch.json");
var pos = string_pos('viewers', response_text)
if (!pos) {
return false;
}
pos += 12;
var done = false;
global.viewer_names = ds_list_create();
var response_len = string_length(response_text);
while (!done && pos < response_len) {
switch(string_char_at(response_text, pos)) {
case "]":
done = true;
break;
case '"': {// Quote mark
pos++;
var namelen = 0;
while (string_char_at(response_text, pos + namelen) != chr(34)) {
namelen++;
}
var viewer = string_copy(response_text, pos, namelen);
ds_list_add(global.viewer_names, viewer);
pos += namelen + 1;
break;
}
case "":
done = true;
break;
default:
pos++;
break;
}
}
trace("Loaded " + string(ds_list_size(global.viewer_names)) + " viewer names.");
}
#define reset_ally_generations
global.generations = ds_map_create();
var first_gens = ["Tam", "Azite", "Stef", "Rami", "JW", "Joonas", "Jukio", "Paul", "Bruce"];
for (var f=0; f<array_length_1d(first_gens); f++) {
global.generations[? first_gens[f]] = 1;
}
global.generations[? "Lupin"] = 2;
|