mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-07-19 11:02:31 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
client/verb/adminspice() // Essentially copy-pasted from virgo. -Erik
|
||||
set category = "Admin"
|
||||
set name = "Request Spice"
|
||||
set desc = "Request admins to spice round up for you"
|
||||
|
||||
//handle muting and automuting
|
||||
if(prefs.muted & MUTE_ADMINHELP)
|
||||
to_chat(usr, "<span class='danger'>Error: You cannot request spice (muted from adminhelps).</span>")
|
||||
return
|
||||
|
||||
if(alert(usr, "Are you sure you want to request the admins spice things up for you? You accept the consequences if you do.",,"No","Yes") != "No")
|
||||
message_admins("[key_name(usr)] has requested the round to be spiced up a little.")
|
||||
to_chat(usr, "<span class='notice'>You have requested some more spice in your round.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>Spice request cancelled.</span>")
|
||||
return
|
||||
|
||||
//if they requested spice, then remove spice verb temporarily to prevent spamming.
|
||||
usr.verbs -= /client/verb/adminspice
|
||||
spawn(6000)
|
||||
usr.verbs += /client/verb/adminspice // 10 minute cool-down for spice request.
|
||||
@@ -271,6 +271,12 @@
|
||||
display_name = "rabbit ears"
|
||||
path = /obj/item/clothing/head/rabbitears
|
||||
|
||||
//CHOMPStation Addition Start - TFF 17/10/19 - Add Nurse Hat for one point, no job lock
|
||||
/datum/gear/head/nurse_hat
|
||||
display_name = "hat, nurse"
|
||||
path = /obj/item/clothing/head/nursehat
|
||||
//CHOMPStation Addition End
|
||||
|
||||
/datum/gear/head/beanie
|
||||
display_name = "beanie"
|
||||
path = /obj/item/clothing/head/beanie
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Electrified Door", /datum/event/electrified_door, -5, list(ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_AI = 10)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 40), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Meteor Shower", /datum/event/meteor_wave, -20, list(ASSIGNMENT_ENGINEER = 50), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, -15, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5), 1),
|
||||
@@ -55,6 +54,8 @@
|
||||
)
|
||||
add_disabled_events(list(
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1),
|
||||
//Moved this to disabled for now, at least until meteors get a 10 minute delay. Might not happen as progress on Chomp Station Bayport continues.
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Meteor Shower", /datum/event/meteor_wave, -20, list(ASSIGNMENT_ENGINEER = 50), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "PDA Spam", /datum/event/pda_spam, 0, list(ASSIGNMENT_ANY = 4), 1, 25, 50),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 50, list(ASSIGNMENT_ENGINEER = 20), 1, 0, 50),
|
||||
@@ -99,7 +100,7 @@
|
||||
)
|
||||
add_disabled_events(list(
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School_NoRequirements", /datum/event/carp_migration, 100, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_SECURITY = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Escaped Slimes_NoRequirements", /datum/event/escaped_slimes, 30, list(ASSIGNMENT_SCIENTIST = 40, ASSIGNMENT_SECURITY = 30)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Escaped Slimes_NoRequirements", /datum/event/escaped_slimes, 30, list(ASSIGNMENT_SCIENTIST = 40, ASSIGNMENT_SECURITY = 30)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower_NoRequirements", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 20), 0),
|
||||
//Moved spider infestation to disabled for now due to CHOMP random event rebalancing.
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, -20, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_HOS = 20, ASSIGNMENT_WARDEN = 20), 0),
|
||||
@@ -119,18 +120,19 @@
|
||||
// TFF: Virgo event commented out. Technically meant for Tether maps, not Polaris.
|
||||
// new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, -110, list(ASSIGNMENT_ENGINEER = 50), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Metroid Infestation", /datum/event/metroid_infestation, -75, list(ASSIGNMENT_SECURITY = 35, ASSIGNMENT_SCIENCE = 20, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Metroid Infestation", /datum/event/metroid_infestation, -75, list(ASSIGNMENT_SECURITY = 35, ASSIGNMENT_SCIENCE = 20, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 20, list(ASSIGNMENT_ENGINEER = 15), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spider Infestation", /datum/event/spider_infestation, -45, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, -50, list(ASSIGNMENT_MEDICAL = 25), 1),
|
||||
)
|
||||
add_disabled_events(list(
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob_NoRequirements", /datum/event/blob, 10, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_ENGINEER = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration_NoRequirements", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 10), 1),
|
||||
//Moved escaped slimes to disabled for now due to CHOMP random event rebalancing.
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Escaped Slimes", /datum/event/escaped_slimes, -50, list(ASSIGNMENT_SCIENTIST = 30, ASSIGNMENT_SECURITY = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Escaped Slimes_NoRequirements", /datum/event/escaped_slimes, 30, list(ASSIGNMENT_SCIENTIST = 10, ASSIGNMENT_SECURITY = 5)),
|
||||
//Commenting this one out. This is easily abused and spawns too many slimes at once. Might bring back later.
|
||||
// new /datum/event_meta(EVENT_LEVEL_MAJOR, "Escaped Slimes", /datum/event/escaped_slimes, -50, list(ASSIGNMENT_SCIENTIST = 30, ASSIGNMENT_SECURITY = 30), 1),
|
||||
// new /datum/event_meta(EVENT_LEVEL_MAJOR, "Escaped Slimes_NoRequirements", /datum/event/escaped_slimes, 30, list(ASSIGNMENT_SCIENTIST = 10, ASSIGNMENT_SECURITY = 5)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave_NoRequirements", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 30), 1),
|
||||
//Moved to disabled because this was getting redundant with the amount of spiders occurring.
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spider Infestation", /datum/event/spider_infestation, -45, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spider Infestation_NoRequirements", /datum/event/spider_infestation, 30, list(ASSIGNMENT_SECURITY = 10), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection_NoRequirements", /datum/event/viral_infection, 50, list(ASSIGNMENT_MEDICAL = 50), 1),
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
/mob/living/simple_animal/hostile/piranhaplant/spitter/init_vore()
|
||||
..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.vore_verb = "slurped up"
|
||||
B.vore_verb = "slurp up"
|
||||
B.desc = "You're pulled into the tight mouth of the plant. The tongue mulls you about and squishes you around, coating you in a slurry of digestive fluides that burn hotly and smell foul."
|
||||
B.digest_burn = 5
|
||||
B.digest_brute = 0
|
||||
@@ -232,4 +232,4 @@
|
||||
B.digest_burn = 0.5
|
||||
B.digest_brute = 0
|
||||
B.vore_verb = "slurp up"
|
||||
B.name = "pitcher"
|
||||
B.name = "pitcher"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -26,3 +26,164 @@
|
||||
vore_active = 1
|
||||
vore_ignores_undigestable = 0
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
//CHOMPStation Addition Start TFF 26/10/19 - passive wolf addition - Amaterasu, nerf damage, increased size. Copy-pasted code from rat.dm
|
||||
/mob/living/simple_animal/hostile/wolf/passive
|
||||
follow_dist = 1
|
||||
var/mob/living/carbon/human/food
|
||||
var/hunger = 0
|
||||
var/life_since_foodscan = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/wolf/passive/Life()
|
||||
. = ..()
|
||||
if(!. || ai_inactive)
|
||||
return
|
||||
|
||||
if(hunger > 0 && life_since_foodscan++ > 5) //Only look for floor food when hungry.
|
||||
life_since_foodscan = 0
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/S in oview(src,3)) //Accept thrown offerings and scavenge surroundings.
|
||||
if(get_dist(src,S) <=1)
|
||||
visible_emote("hungrily devours \the [S].")
|
||||
playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
|
||||
qdel(S)
|
||||
hunger = 0
|
||||
food = null
|
||||
else
|
||||
WanderTowards(S.loc)
|
||||
break
|
||||
|
||||
if(!food)
|
||||
return
|
||||
|
||||
var/food_dist = get_dist(src,food)
|
||||
|
||||
if(food_dist > world.view) //Lose interest on this person.
|
||||
food = null
|
||||
hunger = Clamp(hunger+5, 0, 25)
|
||||
|
||||
if(food_dist > 1)
|
||||
if(stance == STANCE_IDLE)
|
||||
if(set_follow(food,10 SECONDS))
|
||||
handle_stance(STANCE_FOLLOW)
|
||||
if(resting)
|
||||
lay_down()
|
||||
|
||||
if(food_dist <= 1)
|
||||
if(hunger < 15)
|
||||
if(prob(25))
|
||||
visible_emote(pick("sniffs curiously at [food].",
|
||||
"stares at [food], seeming to want something.",
|
||||
"sniffs at [food]'s hands.",
|
||||
"sniffs curiously at [food]'s pockets.",
|
||||
"sits down for a moment, reaching towards [food] with its paws."))
|
||||
hunger += 5
|
||||
else if(hunger < 30)
|
||||
if(prob(25))
|
||||
visible_emote(pick("sniffs intently against [food], especially their pockets and gear.",
|
||||
"stands up to beg [food] for snacks.",
|
||||
"attempts to burrow into [food]'s pockets.",
|
||||
"leans against [food], licking its chops.",
|
||||
"hungrily nibbles onto [food]."))
|
||||
hunger += 5
|
||||
else if(hunger < 45)
|
||||
if(prob(25))
|
||||
visible_emote(pick("growls at [food], sounding rather hangry!",
|
||||
"aggressively bumps and nudges against [food], trying to make something fall out.",
|
||||
"salivates at [food] in an unsettling manner.",
|
||||
"pushes hard against [food], licking its chops.",
|
||||
"almost sinks its teeth into [food], just stopping to give them another chance."))
|
||||
hunger += 5
|
||||
else if(hunger < 50)
|
||||
visible_emote("appears to have had enough and prepares to strike!")
|
||||
else
|
||||
food.Weaken(5)
|
||||
food.visible_message("<span class='danger'>\the [src] pounces on \the [food]!</span>!")
|
||||
target_mob = food
|
||||
EatTarget()
|
||||
hunger = 0
|
||||
food = null
|
||||
|
||||
/mob/living/simple_animal/hostile/wolf/passive/attackby(var/obj/item/O, var/mob/user) // Feed the rat your food to satisfy it.
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks))
|
||||
qdel(O)
|
||||
playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
|
||||
hunger = 0
|
||||
food = null
|
||||
return
|
||||
. = ..()
|
||||
//TFF - Time to let Ammy react to newspapers. Yayyyyyyy!
|
||||
if(istype(O, /obj/item/weapon/newspaper))
|
||||
if (retaliate && prob(vore_pounce_chance/2)) // This is a gamble!
|
||||
user.Weaken(5) //They get tackled anyway whether they're edible or not.
|
||||
user.visible_message("<span class='danger'>\the [user] swats \the [src] with \the [O] and promptly gets tackled!</span>!")
|
||||
if (will_eat(user))
|
||||
stop_automated_movement = 1
|
||||
animal_nom(user)
|
||||
update_icon()
|
||||
stop_automated_movement = 0
|
||||
else if (!target_mob) // no using this to clear a retaliate mob's target
|
||||
target_mob = user //just because you're not tasty doesn't mean you get off the hook. A swat for a swat.
|
||||
AttackTarget()
|
||||
LoseTarget() // only make one attempt at an attack rather than going into full rage mode
|
||||
else
|
||||
user.visible_message("<span class='info'>\the [user] swats \the [src] with \the [O]!</span>!")
|
||||
release_vore_contents()
|
||||
for(var/mob/living/L in living_mobs(0)) //add everyone on the tile to the do-not-eat list for a while
|
||||
if(!(L in prey_excludes)) // Unless they're already on it, just to avoid fuckery.
|
||||
prey_excludes += L
|
||||
spawn(3600)
|
||||
if(src && L)
|
||||
prey_excludes -= L
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/wolf/passive/Found(var/atom/found_atom)
|
||||
if(!SA_attackable(found_atom))
|
||||
return null
|
||||
else if(ishuman(found_atom) && will_eat(found_atom))
|
||||
var/mob/living/carbon/human/H = found_atom
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/S in H)
|
||||
if(!food)
|
||||
visible_emote("sniffs around the air intently, seeming to have caught a whiff of food!")
|
||||
if(resting)
|
||||
lay_down()
|
||||
food = H
|
||||
return found_atom
|
||||
break
|
||||
return null
|
||||
|
||||
/mob/living/simple_animal/hostile/wolf/passive/FindTarget()
|
||||
var/atom/T = null
|
||||
for(var/atom/A in ListTargets(view_range))
|
||||
if(A == src)
|
||||
continue
|
||||
var/atom/F = Found(A)
|
||||
if(F)
|
||||
T = F
|
||||
break
|
||||
return T
|
||||
|
||||
/mob/living/simple_animal/hostile/wolf/passive/Amaterasu
|
||||
name = "Amaterasu"
|
||||
desc = "It's a very large canine wearing a collar inscribed with 'Amaterasu' on the tag."
|
||||
|
||||
//Nerf the damage, increase the size
|
||||
|
||||
size_multiplier = 1.5
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 2.5
|
||||
melee_damage_upper = 5
|
||||
|
||||
//Allow survival in vacuum. You're a goddess, technically.
|
||||
max_co2 = 0
|
||||
min_co2 = 0
|
||||
max_n2 = 0
|
||||
min_n2 = 0
|
||||
max_oxy = 0
|
||||
min_oxy = 0
|
||||
max_tox = 0
|
||||
min_tox = 0
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 350
|
||||
health = 50
|
||||
maxHealth = 50
|
||||
//CHOMPStation Addition End
|
||||
|
||||
@@ -417,7 +417,7 @@
|
||||
|
||||
// Prepare messages
|
||||
if(user == pred) //Feeding someone to yourself
|
||||
attempt_msg = text("<span class='warning'>[] is attemping to [] [] into their []!</span>",pred,lowertext(belly.vore_verb),prey,lowertext(belly.name))
|
||||
attempt_msg = text("<span class='warning'>[] is attempting to [] [] into their []!</span>",pred,lowertext(belly.vore_verb),prey,lowertext(belly.name))
|
||||
success_msg = text("<span class='warning'>[] manages to [] [] into their []!</span>",pred,lowertext(belly.vore_verb),prey,lowertext(belly.name))
|
||||
else //Feeding someone to another person
|
||||
attempt_msg = text("<span class='warning'>[] is attempting to make [] [] [] into their []!</span>",user,pred,lowertext(belly.vore_verb),prey,lowertext(belly.name))
|
||||
|
||||
Reference in New Issue
Block a user